zek 14.2.38 → 14.2.48

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 (72) hide show
  1. package/esm2020/lib/components/base.component.mjs +3 -2
  2. package/esm2020/lib/components/core-ui.component.mjs +20 -5
  3. package/esm2020/lib/modules/age/age.pipe.mjs +2 -3
  4. package/esm2020/lib/modules/alert/alert/alert.component.mjs +1 -1
  5. package/esm2020/lib/modules/bb/bb-modal-base.component.mjs +9 -2
  6. package/esm2020/lib/modules/bb/bb-modal-toolbar.mjs +9 -2
  7. package/esm2020/lib/modules/bb/bb.component.mjs +32 -8
  8. package/esm2020/lib/modules/card/card/card.component.mjs +1 -1
  9. package/esm2020/lib/modules/edit-toolbar/edit-toolbar.component.mjs +23 -4
  10. package/esm2020/lib/modules/file/file-size.pipe.mjs +3 -3
  11. package/esm2020/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.component.mjs +72 -11
  12. package/esm2020/lib/modules/index.mjs +3 -1
  13. package/esm2020/lib/modules/list-toolbar/list-toolbar.component.mjs +44 -7
  14. package/esm2020/lib/modules/modal/modal/modal.component.mjs +72 -8
  15. package/esm2020/lib/modules/page-title/page-title.component.mjs +11 -1
  16. package/esm2020/lib/modules/pager/pager/pager.component.mjs +9 -2
  17. package/esm2020/lib/modules/password/password.component.mjs +9 -2
  18. package/esm2020/lib/modules/radio/radio-button.component.mjs +3 -3
  19. package/esm2020/lib/modules/readonly/readonly.directive.mjs +5 -5
  20. package/esm2020/lib/modules/select/index.mjs +3 -0
  21. package/esm2020/lib/modules/select/model.mjs +4 -0
  22. package/esm2020/lib/modules/select/module.mjs +28 -0
  23. package/esm2020/lib/modules/select/select.mjs +198 -0
  24. package/esm2020/lib/modules/select2/select2.component.mjs +1 -1
  25. package/esm2020/lib/modules/select2-multiple/select2-multiple.component.mjs +1 -1
  26. package/esm2020/lib/modules/validator/field-validator.component.mjs +1 -1
  27. package/esm2020/lib/modules/validators/directive.mjs +75 -0
  28. package/esm2020/lib/modules/validators/index.mjs +4 -0
  29. package/esm2020/lib/modules/validators/module.mjs +22 -0
  30. package/esm2020/lib/modules/validators/validator.mjs +72 -0
  31. package/esm2020/lib/modules/wizard/wizard/wizard.component.mjs +1 -1
  32. package/esm2020/lib/services/auth.service.mjs +2 -2
  33. package/esm2020/lib/utils/array-helper.mjs +25 -9
  34. package/esm2020/lib/utils/bitwise-helper.mjs +3 -3
  35. package/esm2020/lib/utils/convert.mjs +1 -1
  36. package/esm2020/lib/utils/date-helper.mjs +2 -2
  37. package/esm2020/lib/utils/filter-helper.mjs +2 -2
  38. package/esm2020/lib/utils/object-helper.mjs +17 -4
  39. package/esm2020/lib/utils/string-helper.mjs +9 -18
  40. package/esm2020/lib/utils/time-helper.mjs +2 -2
  41. package/fesm2015/zek.mjs +734 -91
  42. package/fesm2015/zek.mjs.map +1 -1
  43. package/fesm2020/zek.mjs +734 -91
  44. package/fesm2020/zek.mjs.map +1 -1
  45. package/lib/components/base.component.d.ts +3 -2
  46. package/lib/components/core-ui.component.d.ts +9 -4
  47. package/lib/modules/bb/bb-modal-base.component.d.ts +4 -2
  48. package/lib/modules/bb/bb-modal-toolbar.d.ts +4 -1
  49. package/lib/modules/bb/bb.component.d.ts +13 -10
  50. package/lib/modules/edit-toolbar/edit-toolbar.component.d.ts +10 -3
  51. package/lib/modules/grid-toolbar/grid-toolbar/grid-toolbar.component.d.ts +31 -10
  52. package/lib/modules/index.d.ts +2 -0
  53. package/lib/modules/list-toolbar/list-toolbar.component.d.ts +19 -6
  54. package/lib/modules/modal/modal/modal.component.d.ts +31 -11
  55. package/lib/modules/page-title/page-title.component.d.ts +4 -1
  56. package/lib/modules/pager/pager/pager.component.d.ts +4 -1
  57. package/lib/modules/password/password.component.d.ts +4 -1
  58. package/lib/modules/radio/radio-button.component.d.ts +0 -6
  59. package/lib/modules/readonly/readonly.directive.d.ts +3 -2
  60. package/lib/modules/select/index.d.ts +2 -0
  61. package/lib/modules/select/model.d.ts +5 -0
  62. package/lib/modules/select/module.d.ts +9 -0
  63. package/lib/modules/select/select.d.ts +42 -0
  64. package/lib/modules/validators/directive.d.ts +67 -0
  65. package/lib/modules/validators/index.d.ts +3 -0
  66. package/lib/modules/validators/module.d.ts +8 -0
  67. package/lib/modules/validators/validator.d.ts +33 -0
  68. package/lib/utils/array-helper.d.ts +2 -1
  69. package/lib/utils/bitwise-helper.d.ts +2 -2
  70. package/lib/utils/object-helper.d.ts +6 -0
  71. package/lib/utils/string-helper.d.ts +3 -3
  72. package/package.json +1 -1
package/fesm2015/zek.mjs CHANGED
@@ -11,7 +11,7 @@ import { __awaiter } from 'tslib';
11
11
  import * as i1$3 from '@angular/common';
12
12
  import { CommonModule, DatePipe } from '@angular/common';
13
13
  import * as i1$5 from '@angular/forms';
14
- import { NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';
14
+ import { NG_VALUE_ACCESSOR, FormsModule, NG_VALIDATORS } from '@angular/forms';
15
15
  import * as i1$4 from '@angular/platform-browser';
16
16
  import { finalize, map, takeWhile } from 'rxjs/operators';
17
17
 
@@ -30,15 +30,31 @@ class ArrayHelper {
30
30
  return false;
31
31
  }
32
32
  ;
33
- static distinct(value) {
34
- var arr = [];
35
- for (var i = 0; i < value.length; i++) {
36
- let val = value[i];
37
- if (!this.contains(arr, val)) {
38
- arr.push(val);
39
- }
33
+ // static distinct(value: any[]) {
34
+ // var arr: any[] = [];
35
+ // for (var i = 0; i < value.length; i++) {
36
+ // let val = value[i];
37
+ // if (!this.contains(arr, val)) {
38
+ // arr.push(val);
39
+ // }
40
+ // }
41
+ // return arr;
42
+ // }
43
+ static distinct(source) {
44
+ let length = source.length, result = [], seen = new Set();
45
+ for (let index = 0; index < length; index++) {
46
+ let value = source[index];
47
+ if (seen.has(value))
48
+ continue;
49
+ seen.add(value);
50
+ result.push(value);
40
51
  }
41
- return arr;
52
+ return result;
53
+ }
54
+ static filterByKey(filterValue, key, array) {
55
+ if (typeof filterValue === 'undefined' || filterValue == null || (typeof key === 'string' && key.length === 0))
56
+ return array;
57
+ return array.filter(x => x !== undefined && x !== null && x[key] === filterValue);
42
58
  }
43
59
  static flattenArray(value) {
44
60
  let result = [];
@@ -123,10 +139,10 @@ class Base64Helper {
123
139
  }
124
140
 
125
141
  class BitwiseHelper {
126
- static HasFlag(flags, flagToCheck) {
142
+ static hasFlag(flags, flagToCheck) {
127
143
  return (flags & flagToCheck) === flagToCheck;
128
144
  }
129
- static AddFlags(flags, ...flagsToAdd) {
145
+ static addFlags(flags, ...flagsToAdd) {
130
146
  if (!flagsToAdd)
131
147
  return flags;
132
148
  flagsToAdd.forEach(flag => {
@@ -154,17 +170,11 @@ class StringHelper {
154
170
  return v;
155
171
  return v.charAt(0).toUpperCase() + v.slice(1);
156
172
  }
157
- static isNullOrEmpty(val) {
158
- if (val === undefined || val === null || val === '') {
159
- return true;
160
- }
161
- return false;
173
+ static isNullOrEmpty(value) {
174
+ return typeof value === 'undefined' || value == null || ((typeof value === 'string') && value.length === 0);
162
175
  }
163
- static isNullOrWhiteSpace(val) {
164
- if (val === undefined || val === null || val.trim() === '') {
165
- return true;
166
- }
167
- return false;
176
+ static isNullOrWhiteSpace(value) {
177
+ return typeof value === 'undefined' || value == null || ((typeof value === 'string') && value.trim().length === 0);
168
178
  }
169
179
  static tryTrim(val) {
170
180
  if (val === undefined || val === null) {
@@ -172,17 +182,14 @@ class StringHelper {
172
182
  }
173
183
  return val.trim();
174
184
  }
175
- static ifNullEmpty(val) {
176
- if (val === undefined || val === null || val === '') {
177
- return '';
178
- }
179
- return val;
185
+ static ifNullEmpty(value) {
186
+ return typeof value === 'undefined' || value == null ? '' : value;
180
187
  }
181
188
  static join(val, separator, part) {
182
- if (val === undefined || val === null || val === '') {
189
+ if (this.isNullOrEmpty(val)) {
183
190
  return part;
184
191
  }
185
- if (part === undefined || part === null || part === '') {
192
+ if (this.isNullOrEmpty(part)) {
186
193
  return val;
187
194
  }
188
195
  return val + separator + part;
@@ -446,7 +453,7 @@ class OverlapHelper {
446
453
 
447
454
  class TimeHelper {
448
455
  static parseTime(value) {
449
- if (value == null || value === undefined || value === '')
456
+ if (typeof value === 'undefined' || value == null || value === '')
450
457
  return null;
451
458
  return this.toTime(value);
452
459
  }
@@ -624,7 +631,7 @@ class DateHelper {
624
631
  ;
625
632
  // 1 2 3 4 5 6 7 8 9 10 11
626
633
  static parseDate(value) {
627
- if (value == null || value === undefined || value === '')
634
+ if (typeof value === 'undefined' || value == null || value === '')
628
635
  return null;
629
636
  return this.toDate(value);
630
637
  }
@@ -741,13 +748,26 @@ class ObjectHelper {
741
748
  static isObject(value) {
742
749
  return this.isDefined(value) && typeof value === 'object';
743
750
  }
751
+ /**
752
+ * Check if the object is a string or array before evaluating the length attribute.
753
+ * This avoids falsely rejecting objects that contain a custom length attribute.
754
+ * For example, the object {id: 1, length: 0, width: 0} should not be returned as empty.
755
+ */
756
+ static isEmptyValue(value) {
757
+ return !this.isDefined(value) || ((typeof value === 'string' || Array.isArray(value)) && value.length === 0);
758
+ }
744
759
  static isEmpty(obj) {
745
- if (obj === undefined || obj === null)
760
+ if (!this.isDefined(obj))
746
761
  return true;
762
+ // if (typeof obj === 'undefined' || obj === null)
763
+ // return true;
747
764
  for (let prop in obj) {
748
- if (obj[prop] !== undefined && obj[prop] !== null && obj[prop] != '') {
765
+ let v = obj[prop];
766
+ if (!this.isEmptyValue(v))
749
767
  return false;
750
- }
768
+ // if (typeof (obj[prop]) !== undefined && obj[prop] !== null && obj[prop] !== '') {
769
+ // return false;
770
+ // }
751
771
  }
752
772
  return true;
753
773
  }
@@ -790,7 +810,7 @@ class ObjectHelper {
790
810
 
791
811
  class FilterHelper {
792
812
  static isEmpty(obj) {
793
- if (obj === undefined || obj === null)
813
+ if (typeof obj === 'undefined' || obj === null)
794
814
  return true;
795
815
  let tmp = Object.assign({}, obj);
796
816
  delete tmp.page;
@@ -1159,7 +1179,7 @@ class AuthService {
1159
1179
  const p = permissions[i];
1160
1180
  let found = userPermissions[p];
1161
1181
  if (found) {
1162
- let hasPermission = BitwiseHelper.HasFlag(found, value);
1182
+ let hasPermission = BitwiseHelper.hasFlag(found, value);
1163
1183
  if (hasPermission)
1164
1184
  return true;
1165
1185
  }
@@ -1775,7 +1795,7 @@ class BaseComponent extends CoreComponent {
1775
1795
  return this._readOnly;
1776
1796
  }
1777
1797
  set readOnly(v) {
1778
- this._readOnly = v;
1798
+ this._readOnly = Convert.toBoolean(v);
1779
1799
  }
1780
1800
  getParam(name) {
1781
1801
  return this.route.snapshot.paramMap.get(name);
@@ -1845,7 +1865,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
1845
1865
  type: Input
1846
1866
  }] } });
1847
1867
 
1848
- let uniqueId$2 = 0;
1868
+ let uniqueId$3 = 0;
1849
1869
  class CoreUiComponent extends CoreComponent {
1850
1870
  constructor(_renderer, _elementRef
1851
1871
  //private _changeDetector: ChangeDetectorRef
@@ -1853,9 +1873,6 @@ class CoreUiComponent extends CoreComponent {
1853
1873
  super();
1854
1874
  this._renderer = _renderer;
1855
1875
  this._elementRef = _elementRef;
1856
- this._isInitialized = false;
1857
- this._disabled = false;
1858
- this._required = false;
1859
1876
  /** The method to be called in order to update ngModel */
1860
1877
  this._onChange = () => { };
1861
1878
  /**
@@ -1865,8 +1882,12 @@ class CoreUiComponent extends CoreComponent {
1865
1882
  this._onTouched = () => { };
1866
1883
  this.change = new EventEmitter();
1867
1884
  this.changing = new EventEmitter();
1868
- this._name = `zek-${++uniqueId$2}`;
1885
+ this._name = `zek-${++uniqueId$3}`;
1886
+ this._isInitialized = false;
1869
1887
  this._value = null;
1888
+ this._readonly = false;
1889
+ this._disabled = false;
1890
+ this._required = false;
1870
1891
  }
1871
1892
  /**
1872
1893
  * Helper method that sets a property on a target element using the current Renderer
@@ -1924,6 +1945,18 @@ class CoreUiComponent extends CoreComponent {
1924
1945
  }
1925
1946
  }
1926
1947
  /** Whether the component is disabled */
1948
+ get readonly() {
1949
+ return this._readonly;
1950
+ }
1951
+ set readonly(value) {
1952
+ let v = Convert.toBoolean(value);
1953
+ if (this._readonly !== v) {
1954
+ this._readonly = v;
1955
+ this.onReadOnlyChanged();
1956
+ }
1957
+ }
1958
+ onReadOnlyChanged() { }
1959
+ /** Whether the component is disabled */
1927
1960
  get disabled() {
1928
1961
  return this._disabled;
1929
1962
  }
@@ -2003,7 +2036,7 @@ class CoreUiComponent extends CoreComponent {
2003
2036
  }
2004
2037
  }
2005
2038
  CoreUiComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CoreUiComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
2006
- CoreUiComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: CoreUiComponent, inputs: { name: "name", value: "value", disabled: "disabled", required: "required" }, outputs: { change: "change", changing: "changing" }, usesInheritance: true, ngImport: i0 });
2039
+ CoreUiComponent.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: CoreUiComponent, inputs: { name: "name", value: "value", readonly: "readonly", disabled: "disabled", required: "required" }, outputs: { change: "change", changing: "changing" }, usesInheritance: true, ngImport: i0 });
2007
2040
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: CoreUiComponent, decorators: [{
2008
2041
  type: Directive
2009
2042
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { change: [{
@@ -2014,6 +2047,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
2014
2047
  type: Input
2015
2048
  }], value: [{
2016
2049
  type: Input
2050
+ }], readonly: [{
2051
+ type: Input
2017
2052
  }], disabled: [{
2018
2053
  type: Input
2019
2054
  }], required: [{
@@ -2530,12 +2565,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
2530
2565
 
2531
2566
  class AgePipe {
2532
2567
  transform(value, now) {
2533
- if (value === undefined || value === null || value === '' || value !== value)
2568
+ if (typeof value === 'undefined' || value === null || value === '' || value !== value)
2534
2569
  return null;
2535
2570
  const date = DateHelper.toDate(value);
2536
2571
  let timeDiff = (now ? DateHelper.toDate(now).getTime() : Date.now()) - date.getTime();
2537
2572
  return Math.floor((timeDiff / (1000 * 3600 * 24)) / 365.25);
2538
- //return value.getAge();
2539
2573
  }
2540
2574
  }
2541
2575
  AgePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AgePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
@@ -2856,9 +2890,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
2856
2890
  }]
2857
2891
  }] });
2858
2892
 
2859
- let uniqueId$1 = 0;
2893
+ let uniqueId$2 = 0;
2860
2894
  /**
2861
- * Provider Expression that allows mat-radio-group to register as a ControlValueAccessor. This
2895
+ * Provider Expression that allows bb to register as a ControlValueAccessor. This
2862
2896
  * allows it to support [(ngModel)] and ngControl.
2863
2897
  * @docs-private
2864
2898
  */
@@ -2870,16 +2904,16 @@ const ZEK_BB_CONTROL_VALUE_ACCESSOR = {
2870
2904
  class ButtonBrowseComponent extends CoreUiComponent {
2871
2905
  constructor() {
2872
2906
  super(...arguments);
2873
- this._uniqueId = `zek-bb-${++uniqueId$1}`;
2907
+ this._uniqueId = `zek-bb-${++uniqueId$2}`;
2874
2908
  /** The unique ID for the bb. */
2875
2909
  this.id = this._uniqueId;
2876
2910
  this.filter = {};
2877
2911
  this.data = new PagedList();
2878
2912
  this._text = null;
2879
- this.readOnly = false;
2880
- this.hide = false;
2881
- this.showInput = true;
2882
- this.multiSelect = false;
2913
+ this._readOnly = false;
2914
+ this._hide = false;
2915
+ this._showInput = true;
2916
+ this._multiSelect = false;
2883
2917
  this.onShowModal = new EventEmitter();
2884
2918
  this.onChooseAll = new EventEmitter();
2885
2919
  this.onKeyPairChange = new EventEmitter();
@@ -2916,6 +2950,30 @@ class ButtonBrowseComponent extends CoreUiComponent {
2916
2950
  onTextChanged() {
2917
2951
  this.onKeyPairChange.emit({ key: this._value, value: this._text });
2918
2952
  }
2953
+ get readOnly() {
2954
+ return this._readOnly;
2955
+ }
2956
+ set readOnly(v) {
2957
+ this._readOnly = Convert.toBoolean(v);
2958
+ }
2959
+ get hide() {
2960
+ return this._hide;
2961
+ }
2962
+ set hide(v) {
2963
+ this._hide = Convert.toBoolean(v);
2964
+ }
2965
+ get showInput() {
2966
+ return this._showInput;
2967
+ }
2968
+ set showInput(v) {
2969
+ this._showInput = Convert.toBoolean(v);
2970
+ }
2971
+ get multiSelect() {
2972
+ return this._multiSelect;
2973
+ }
2974
+ set multiSelect(v) {
2975
+ this._multiSelect = Convert.toBoolean(v);
2976
+ }
2919
2977
  get modal() {
2920
2978
  if (!this._modal) {
2921
2979
  let modalEl = document.getElementById(this.modalId);
@@ -2975,7 +3033,6 @@ class ButtonBrowseComponent extends CoreUiComponent {
2975
3033
  onValueChanged() {
2976
3034
  if (typeof this._value !== 'undefined' && this._value !== null &&
2977
3035
  typeof this._type !== 'undefined' && this._type !== null) {
2978
- console.log('onValueChanged', this._value);
2979
3036
  this.bindText();
2980
3037
  }
2981
3038
  else {
@@ -3019,7 +3076,7 @@ class ButtonBrowseModalToolbarComponent {
3019
3076
  constructor() {
3020
3077
  this.onSearch = new EventEmitter();
3021
3078
  this.onReset = new EventEmitter();
3022
- this.multiSelect = false;
3079
+ this._multiSelect = false;
3023
3080
  this.onChooseAll = new EventEmitter();
3024
3081
  }
3025
3082
  search() {
@@ -3028,6 +3085,12 @@ class ButtonBrowseModalToolbarComponent {
3028
3085
  reset() {
3029
3086
  this.onReset.emit();
3030
3087
  }
3088
+ get multiSelect() {
3089
+ return this._multiSelect;
3090
+ }
3091
+ set multiSelect(v) {
3092
+ this._multiSelect = Convert.toBoolean(v);
3093
+ }
3031
3094
  chooseAll() {
3032
3095
  if (!this.multiSelect)
3033
3096
  return;
@@ -3083,10 +3146,16 @@ class ButtonBrowseModalBaseComponent extends CoreComponent {
3083
3146
  constructor() {
3084
3147
  super(...arguments);
3085
3148
  this.filter = {};
3086
- this.multiSelect = false;
3149
+ this._multiSelect = false;
3087
3150
  this.onChoose = new EventEmitter();
3088
3151
  this.onChooseAll = new EventEmitter();
3089
3152
  }
3153
+ get multiSelect() {
3154
+ return this._multiSelect;
3155
+ }
3156
+ set multiSelect(v) {
3157
+ this._multiSelect = Convert.toBoolean(v);
3158
+ }
3090
3159
  choose(value) {
3091
3160
  this.onChoose.emit(value);
3092
3161
  }
@@ -3517,9 +3586,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
3517
3586
  class EditToolbarComponent {
3518
3587
  constructor() {
3519
3588
  this.printType = PrintType;
3520
- this.showExport = false;
3521
- this.showPrint = false;
3522
- this.readOnly = false;
3589
+ this._showExport = false;
3590
+ this._showPrint = false;
3591
+ this._readOnly = false;
3523
3592
  this.onSave = new EventEmitter();
3524
3593
  // save(navigateToReturnUrl: boolean) {
3525
3594
  // this.onSave.emit(navigateToReturnUrl);
@@ -3533,6 +3602,24 @@ class EditToolbarComponent {
3533
3602
  this.onPrint = new EventEmitter();
3534
3603
  this.onExport = new EventEmitter();
3535
3604
  }
3605
+ get showExport() {
3606
+ return this._showExport;
3607
+ }
3608
+ set showExport(v) {
3609
+ this._showExport = Convert.toBoolean(v);
3610
+ }
3611
+ get showPrint() {
3612
+ return this._showPrint;
3613
+ }
3614
+ set showPrint(v) {
3615
+ this._showPrint = Convert.toBoolean(v);
3616
+ }
3617
+ get readOnly() {
3618
+ return this._readOnly;
3619
+ }
3620
+ set readOnly(v) {
3621
+ this._readOnly = Convert.toBoolean(v);
3622
+ }
3536
3623
  cancel() {
3537
3624
  this.onCancel.emit();
3538
3625
  }
@@ -3609,9 +3696,9 @@ class FileSizePipe {
3609
3696
  ];
3610
3697
  }
3611
3698
  transform(bytes = 0, precision = 0) {
3612
- if (bytes == null || bytes == undefined)
3699
+ if (typeof bytes === 'undefined' || bytes == null)
3613
3700
  bytes = 0;
3614
- if (precision == null || precision == undefined)
3701
+ if (typeof precision === 'undefined' || precision == null)
3615
3702
  precision = 0;
3616
3703
  if (isNaN(parseFloat(String(bytes))) || !isFinite(bytes))
3617
3704
  return '?';
@@ -3653,16 +3740,20 @@ class ModalComponent extends CoreComponent {
3653
3740
  constructor(translate) {
3654
3741
  super();
3655
3742
  this.translate = translate;
3656
- this.showOk = true;
3657
- this.disabledOk = false;
3658
- this.showCancel = true;
3659
- this.autoHide = true;
3743
+ this._showOk = true;
3744
+ this._disabledOk = false;
3745
+ this._showCancel = true;
3746
+ this._autoHide = true;
3660
3747
  this.onShown = new EventEmitter();
3661
3748
  this.onHidden = new EventEmitter();
3662
3749
  this.onOk = new EventEmitter();
3663
3750
  this.componentType = ComponentType.Primary;
3664
- this.showHeader = true;
3665
- this.showFooter = true;
3751
+ this._large = false;
3752
+ this._xl = false;
3753
+ this._scrollable = false;
3754
+ this._fullscreen = false;
3755
+ this._showHeader = true;
3756
+ this._showFooter = true;
3666
3757
  this.onValidating = new EventEmitter(false);
3667
3758
  this.elementId = RandomHelper.randomHex();
3668
3759
  }
@@ -3702,6 +3793,66 @@ class ModalComponent extends CoreComponent {
3702
3793
  }
3703
3794
  }, 1);
3704
3795
  }
3796
+ get showOk() {
3797
+ return this._showOk;
3798
+ }
3799
+ set showOk(v) {
3800
+ this._showOk = Convert.toBoolean(v);
3801
+ }
3802
+ get disabledOk() {
3803
+ return this._disabledOk;
3804
+ }
3805
+ set disabledOk(v) {
3806
+ this._disabledOk = Convert.toBoolean(v);
3807
+ }
3808
+ get showCancel() {
3809
+ return this._showCancel;
3810
+ }
3811
+ set showCancel(v) {
3812
+ this._showCancel = Convert.toBoolean(v);
3813
+ }
3814
+ get autoHide() {
3815
+ return this._autoHide;
3816
+ }
3817
+ set autoHide(v) {
3818
+ this._autoHide = Convert.toBoolean(v);
3819
+ }
3820
+ get large() {
3821
+ return this._large;
3822
+ }
3823
+ set large(v) {
3824
+ this._large = Convert.toBoolean(v);
3825
+ }
3826
+ get xl() {
3827
+ return this._xl;
3828
+ }
3829
+ set xl(v) {
3830
+ this._xl = Convert.toBoolean(v);
3831
+ }
3832
+ get scrollable() {
3833
+ return this._scrollable;
3834
+ }
3835
+ set scrollable(v) {
3836
+ this._scrollable = Convert.toBoolean(v);
3837
+ }
3838
+ get fullscreen() {
3839
+ return this._fullscreen;
3840
+ }
3841
+ set fullscreen(v) {
3842
+ this._fullscreen = Convert.toBoolean(v);
3843
+ }
3844
+ get showHeader() {
3845
+ return this._showHeader;
3846
+ }
3847
+ set showHeader(v) {
3848
+ this._showHeader = Convert.toBoolean(v);
3849
+ }
3850
+ get showFooter() {
3851
+ return this._showFooter;
3852
+ }
3853
+ set showFooter(v) {
3854
+ this._showFooter = Convert.toBoolean(v);
3855
+ }
3705
3856
  // public get modal(): any {
3706
3857
  // if (!this._modal) {
3707
3858
  // this.getModal();
@@ -4107,24 +4258,84 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
4107
4258
 
4108
4259
  class GridToolbarComponent {
4109
4260
  constructor() {
4110
- this.showEdit = true;
4111
- this.editEnabled = true;
4112
- this.showDelete = true;
4113
- this.deleteEnabled = true;
4114
- this.showRestore = false;
4115
- this.restoreEnabled = true;
4261
+ this._showEdit = true;
4262
+ this._editEnabled = true;
4263
+ this._showDelete = true;
4264
+ this._deleteEnabled = true;
4265
+ this._showRestore = false;
4266
+ this._restoreEnabled = true;
4116
4267
  this.approveText = 'Action.Approve';
4117
- this.showApprove = false;
4118
- this.approveEnabled = false;
4268
+ this._showApprove = false;
4269
+ this._approveEnabled = false;
4119
4270
  this.disapproveText = 'Action.Disapprove';
4120
- this.showDisapprove = false;
4121
- this.disapproveEnabled = false;
4271
+ this._showDisapprove = false;
4272
+ this._disapproveEnabled = false;
4122
4273
  this.onEdit = new EventEmitter();
4123
4274
  this.onDelete = new EventEmitter();
4124
4275
  this.onApprove = new EventEmitter();
4125
4276
  this.onDisapprove = new EventEmitter();
4126
4277
  this.onRestore = new EventEmitter();
4127
4278
  }
4279
+ get showEdit() {
4280
+ return this._showEdit;
4281
+ }
4282
+ set showEdit(v) {
4283
+ this._showEdit = Convert.toBoolean(v);
4284
+ }
4285
+ get editEnabled() {
4286
+ return this._editEnabled;
4287
+ }
4288
+ set editEnabled(v) {
4289
+ this._editEnabled = Convert.toBoolean(v);
4290
+ }
4291
+ get showDelete() {
4292
+ return this._showDelete;
4293
+ }
4294
+ set showDelete(v) {
4295
+ this._showDelete = Convert.toBoolean(v);
4296
+ }
4297
+ get deleteEnabled() {
4298
+ return this._deleteEnabled;
4299
+ }
4300
+ set deleteEnabled(v) {
4301
+ this._deleteEnabled = Convert.toBoolean(v);
4302
+ }
4303
+ get showRestore() {
4304
+ return this._showRestore;
4305
+ }
4306
+ set showRestore(v) {
4307
+ this._showRestore = Convert.toBoolean(v);
4308
+ }
4309
+ get restoreEnabled() {
4310
+ return this._restoreEnabled;
4311
+ }
4312
+ set restoreEnabled(v) {
4313
+ this._restoreEnabled = Convert.toBoolean(v);
4314
+ }
4315
+ get showApprove() {
4316
+ return this._showApprove;
4317
+ }
4318
+ set showApprove(v) {
4319
+ this._showApprove = Convert.toBoolean(v);
4320
+ }
4321
+ get approveEnabled() {
4322
+ return this._approveEnabled;
4323
+ }
4324
+ set approveEnabled(v) {
4325
+ this._approveEnabled = Convert.toBoolean(v);
4326
+ }
4327
+ get showDisapprove() {
4328
+ return this._showDisapprove;
4329
+ }
4330
+ set showDisapprove(v) {
4331
+ this._showDisapprove = Convert.toBoolean(v);
4332
+ }
4333
+ get disapproveEnabled() {
4334
+ return this._disapproveEnabled;
4335
+ }
4336
+ set disapproveEnabled(v) {
4337
+ this._disapproveEnabled = Convert.toBoolean(v);
4338
+ }
4128
4339
  edit() {
4129
4340
  //this.router.navigate([this.router.url, this.model]);
4130
4341
  this.onEdit.emit(this.model);
@@ -4225,18 +4436,54 @@ class ListToolbarComponent {
4225
4436
  constructor(router) {
4226
4437
  this.router = router;
4227
4438
  this.printType = PrintType;
4228
- this.isFiltered = false;
4229
- this.showCreate = true;
4230
- this.showFilter = true;
4231
- this.showPrint = false;
4232
- this.showSum = false;
4233
- this.showExport = false;
4439
+ this._isFiltered = false;
4440
+ this._showCreate = true;
4441
+ this._showFilter = true;
4442
+ this._showPrint = false;
4443
+ this._showSum = false;
4444
+ this._showExport = false;
4234
4445
  this.onRefresh = new EventEmitter();
4235
4446
  this.onFilter = new EventEmitter();
4236
4447
  this.onPrint = new EventEmitter();
4237
4448
  this.onSum = new EventEmitter();
4238
4449
  this.onExport = new EventEmitter();
4239
4450
  }
4451
+ get isFiltered() {
4452
+ return this._isFiltered;
4453
+ }
4454
+ set isFiltered(v) {
4455
+ this._isFiltered = Convert.toBoolean(v);
4456
+ }
4457
+ get showCreate() {
4458
+ return this._showCreate;
4459
+ }
4460
+ set showCreate(v) {
4461
+ this._showCreate = Convert.toBoolean(v);
4462
+ }
4463
+ get showFilter() {
4464
+ return this._showFilter;
4465
+ }
4466
+ set showFilter(v) {
4467
+ this._showFilter = Convert.toBoolean(v);
4468
+ }
4469
+ get showPrint() {
4470
+ return this._showPrint;
4471
+ }
4472
+ set showPrint(v) {
4473
+ this._showPrint = Convert.toBoolean(v);
4474
+ }
4475
+ get showSum() {
4476
+ return this._showSum;
4477
+ }
4478
+ set showSum(v) {
4479
+ this._showSum = Convert.toBoolean(v);
4480
+ }
4481
+ get showExport() {
4482
+ return this._showExport;
4483
+ }
4484
+ set showExport(v) {
4485
+ this._showExport = Convert.toBoolean(v);
4486
+ }
4240
4487
  refresh() {
4241
4488
  this.onRefresh.emit();
4242
4489
  }
@@ -4440,6 +4687,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
4440
4687
  // export * from './loading-interceptor';
4441
4688
 
4442
4689
  class PageTitleComponent {
4690
+ constructor() {
4691
+ this._isEditPage = true;
4692
+ }
4693
+ get isEditPage() {
4694
+ return this._isEditPage;
4695
+ }
4696
+ set isEditPage(v) {
4697
+ this._isEditPage = Convert.toBoolean(v);
4698
+ }
4443
4699
  }
4444
4700
  PageTitleComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: PageTitleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
4445
4701
  PageTitleComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: PageTitleComponent, selector: "zek-page-title", inputs: { icon: "icon", title: "title", isEditPage: "isEditPage", modelId: "modelId" }, ngImport: i0, template: "<h1 class=\"h2 pt-3 pb-2 mb-3 border-bottom\">\r\n <i *ngIf=\"icon\" class=\"{{icon}}\"></i><ng-container *ngIf=\"icon\">&nbsp;</ng-container>{{ title }}&nbsp;<ng-container *ngIf=\"isEditPage\">\r\n <small class=\"text-muted\" *ngIf=\"modelId && modelId > 0 else elseBlock\">[<ng-container>{{ 'Action.Edit' | translate }}</ng-container>]</small>\r\n <ng-template #elseBlock>\r\n <small class=\"text-muted\">[<ng-container>{{ 'Action.Create' | translate }}</ng-container>]</small>\r\n </ng-template>\r\n </ng-container>\r\n</h1>", dependencies: [{ kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$1.TranslatePipe, name: "translate" }] });
@@ -4480,11 +4736,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
4480
4736
  class PagerComponent {
4481
4737
  constructor() {
4482
4738
  this.pager = new Pager();
4483
- this.showPageSize = true;
4739
+ this._showPageSize = true;
4484
4740
  this.pagerAlign = 'start';
4485
4741
  this.onPageChange = new EventEmitter();
4486
4742
  this.onPageSizeChange = new EventEmitter();
4487
4743
  }
4744
+ get showPageSize() {
4745
+ return this._showPageSize;
4746
+ }
4747
+ set showPageSize(v) {
4748
+ this._showPageSize = Convert.toBoolean(v);
4749
+ }
4488
4750
  setPage(page) {
4489
4751
  // if (!this.pager) return;
4490
4752
  if (page === this.pager.pageNumber)
@@ -4555,12 +4817,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
4555
4817
  class PasswordComponent {
4556
4818
  constructor() {
4557
4819
  this.name = 'Password';
4558
- this.required = false;
4820
+ this._required = false;
4559
4821
  this.minlength = null;
4560
4822
  this.maxlength = null;
4561
4823
  this.onChange = new EventEmitter();
4562
4824
  this._type = 'password';
4563
4825
  }
4826
+ get required() {
4827
+ return this._required;
4828
+ }
4829
+ set required(v) {
4830
+ this._required = Convert.toBoolean(v);
4831
+ }
4564
4832
  get type() {
4565
4833
  return this._type;
4566
4834
  }
@@ -4633,9 +4901,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
4633
4901
  }]
4634
4902
  }] });
4635
4903
 
4636
- let uniqueId = 0;
4904
+ let uniqueId$1 = 0;
4637
4905
  /**
4638
- * Provider Expression that allows mat-radio-group to register as a ControlValueAccessor. This
4906
+ * Provider Expression that allows zek-radio to register as a ControlValueAccessor. This
4639
4907
  * allows it to support [(ngModel)] and ngControl.
4640
4908
  * @docs-private
4641
4909
  */
@@ -4648,7 +4916,7 @@ class RadioComponent extends CoreUiComponent {
4648
4916
  constructor(_changeDetector, _renderer, _elementRef) {
4649
4917
  super(_renderer, _elementRef);
4650
4918
  this._changeDetector = _changeDetector;
4651
- this._uniqueId = `zek-radio-${++uniqueId}`;
4919
+ this._uniqueId = `zek-radio-${++uniqueId$1}`;
4652
4920
  /** The unique ID for the radio button. */
4653
4921
  this.id = this._uniqueId;
4654
4922
  this.inline = false;
@@ -4771,12 +5039,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
4771
5039
 
4772
5040
  class ReadOnlyDirective {
4773
5041
  constructor() {
4774
- this._isReadonly = false;
5042
+ this._readonly = false;
4775
5043
  }
4776
- set readonly(v) {
4777
- this._isReadonly = v == true || v == '';
5044
+ readonly(v) {
5045
+ this._readonly = Convert.toBoolean(v);
4778
5046
  }
4779
- ;
4780
5047
  }
4781
5048
  ReadOnlyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ReadOnlyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
4782
5049
  ReadOnlyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: ReadOnlyDirective, selector: "[readonly],[readOnly]", inputs: { readonly: "readonly" }, host: { properties: { "attr.readonly": "_isReadonly ? \"\" : null" } }, ngImport: i0 });
@@ -4966,6 +5233,221 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
4966
5233
  }]
4967
5234
  }] });
4968
5235
 
5236
+ let uniqueId = 0;
5237
+ const ZEK_SELECT_MULTIPLE_CONTROL_VALUE_ACCESSOR = {
5238
+ provide: NG_VALUE_ACCESSOR,
5239
+ useExisting: forwardRef(() => ZekSelectMultiple),
5240
+ multi: true,
5241
+ };
5242
+ class ZekSelectMultiple extends CoreUiComponent {
5243
+ constructor(renderer, elementRef) {
5244
+ super(renderer, elementRef);
5245
+ this._uniqueId = `zek-select-${++uniqueId}`;
5246
+ /** The unique ID for the radio button. */
5247
+ this.id = this._uniqueId;
5248
+ this.css = 'primary';
5249
+ this._placeholder = '';
5250
+ this._label = '';
5251
+ this._multiple = true;
5252
+ this._selected = [];
5253
+ this._data = [];
5254
+ this.normalized = [];
5255
+ this._text = '';
5256
+ }
5257
+ get placeholder() {
5258
+ return this._placeholder;
5259
+ }
5260
+ set placeholder(value) {
5261
+ if (value)
5262
+ this._placeholder = value;
5263
+ else
5264
+ this._placeholder = '';
5265
+ }
5266
+ get label() {
5267
+ return this._label;
5268
+ }
5269
+ set label(value) {
5270
+ if (value)
5271
+ this._label = value;
5272
+ else
5273
+ this._label = '';
5274
+ }
5275
+ get multiple() {
5276
+ return this._multiple;
5277
+ }
5278
+ set multiple(value) {
5279
+ this._multiple = Convert.toBoolean(value);
5280
+ }
5281
+ get data() {
5282
+ return this._data;
5283
+ }
5284
+ set data(value) {
5285
+ if (this._data !== value) {
5286
+ this._data = value;
5287
+ this.onDataChanged();
5288
+ }
5289
+ }
5290
+ onDataChanged() {
5291
+ this._setSelectionByValue(this._value);
5292
+ if (this.isInitialized) {
5293
+ this._normalizeData();
5294
+ }
5295
+ }
5296
+ onValueChanged() {
5297
+ if (Array.isArray(this._data)) {
5298
+ this._setSelectionByValue(this._value);
5299
+ }
5300
+ }
5301
+ init() {
5302
+ this._normalizeData();
5303
+ }
5304
+ _normalizeData() {
5305
+ this.normalized = [];
5306
+ if (Array.isArray(this._data)) {
5307
+ if (this.valueField && this.textField) {
5308
+ for (const item of this._data) {
5309
+ this.normalized.push({ key: item[this.valueField], value: item[this.textField], checked: this._selected.includes(item), item: item });
5310
+ }
5311
+ }
5312
+ else {
5313
+ for (const item of this._data) {
5314
+ this.normalized.push({ key: item, value: item, checked: this._selected.includes(item), item });
5315
+ }
5316
+ }
5317
+ }
5318
+ }
5319
+ /**
5320
+ * Sets the selected option based on a value. If no option can be
5321
+ * found with the designated value, the select trigger is cleared.
5322
+ */
5323
+ _setSelectionByValue(value) {
5324
+ this._selected = [];
5325
+ if (this.multiple && value) {
5326
+ if (!Array.isArray(value)) {
5327
+ throw new Error("value is not array");
5328
+ }
5329
+ if (Array.isArray(this._data)) {
5330
+ let notUnique = [];
5331
+ if (this.valueField) {
5332
+ for (const currentValue of value) {
5333
+ let items = ArrayHelper.filterByKey(currentValue, this.valueField, this._data);
5334
+ notUnique = notUnique.concat(items);
5335
+ }
5336
+ }
5337
+ else {
5338
+ for (const currentValue of value) {
5339
+ let items = this._data.filter(x => x === currentValue);
5340
+ notUnique = notUnique.concat(items);
5341
+ }
5342
+ }
5343
+ this._selected = ArrayHelper.distinct(notUnique);
5344
+ }
5345
+ }
5346
+ else {
5347
+ if (Array.isArray(this._data)) {
5348
+ if (this.valueField) {
5349
+ this._selected = ArrayHelper.filterByKey(value, this.valueField, this._data);
5350
+ }
5351
+ else {
5352
+ this._selected = this._data.filter(x => x === value);
5353
+ }
5354
+ }
5355
+ }
5356
+ for (const norm of this.normalized) {
5357
+ norm.checked = this._selected.includes(norm.item);
5358
+ }
5359
+ this._initText();
5360
+ }
5361
+ toggleChecked(v) {
5362
+ if (v && !this.disabled && !this.readonly) {
5363
+ if (!v.checked) {
5364
+ v.checked = true;
5365
+ if (this.multiple) {
5366
+ let tmp = [];
5367
+ for (const item of this.normalized) {
5368
+ if (item.checked) {
5369
+ tmp.push(item.key);
5370
+ }
5371
+ }
5372
+ this.setNgModel(tmp);
5373
+ // this.value = tmp;
5374
+ }
5375
+ else {
5376
+ //this.value = v.key;
5377
+ this.setNgModel(v.key);
5378
+ }
5379
+ }
5380
+ else {
5381
+ v.checked = false;
5382
+ if (this.multiple) {
5383
+ if (Array.isArray(this._value)) {
5384
+ this.setNgModel(this._value.filter(x => x !== v.key));
5385
+ }
5386
+ }
5387
+ else {
5388
+ this.setNgModel(null);
5389
+ }
5390
+ }
5391
+ }
5392
+ }
5393
+ _initText() {
5394
+ let field = this.checkedTextField || this.textField || '';
5395
+ if (field) {
5396
+ this._text = this._selected.filter(x => x !== undefined && x !== null).map(x => x[field]).join(', ');
5397
+ }
5398
+ else {
5399
+ this._text = this._selected.join(', ');
5400
+ }
5401
+ }
5402
+ }
5403
+ ZekSelectMultiple.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ZekSelectMultiple, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
5404
+ ZekSelectMultiple.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: ZekSelectMultiple, selector: "zek-select,[zek-select]", inputs: { id: "id", valueField: "valueField", textField: "textField", checkedTextField: "checkedTextField", css: "css", placeholder: "placeholder", label: "label", multiple: "multiple", data: "data" }, providers: [ZEK_SELECT_MULTIPLE_CONTROL_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0, template: "<div class=\"dropdown\" id=\"dropdown-{{id}}\">\r\n <button class=\"btn btn-{{css}} dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n {{label}} <ng-container *ngIf=\"!_text\">{{placeholder}}</ng-container> {{_text}}\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <ng-container *ngIf=\"normalized\">\r\n <li><a class=\"dropdown-item\" href=\"javascript:void(0)\" *ngFor=\"let item of normalized\" (click)=\"toggleChecked(item)\">\r\n <span *ngIf=\"item.checked\"><i class=\"fa-regular fa-square-check\"></i></span>\r\n <span *ngIf=\"!item.checked\"><i class=\"fa-regular fa-square\"></i></span>\r\n {{item.value}}\r\n </a></li>\r\n </ng-container>\r\n </ul>\r\n</div>", dependencies: [{ kind: "directive", type: i1$3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
5405
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ZekSelectMultiple, decorators: [{
5406
+ type: Component,
5407
+ args: [{ selector: 'zek-select,[zek-select]', providers: [ZEK_SELECT_MULTIPLE_CONTROL_VALUE_ACCESSOR], template: "<div class=\"dropdown\" id=\"dropdown-{{id}}\">\r\n <button class=\"btn btn-{{css}} dropdown-toggle\" type=\"button\" data-bs-toggle=\"dropdown\" aria-expanded=\"false\">\r\n {{label}} <ng-container *ngIf=\"!_text\">{{placeholder}}</ng-container> {{_text}}\r\n </button>\r\n <ul class=\"dropdown-menu\">\r\n <ng-container *ngIf=\"normalized\">\r\n <li><a class=\"dropdown-item\" href=\"javascript:void(0)\" *ngFor=\"let item of normalized\" (click)=\"toggleChecked(item)\">\r\n <span *ngIf=\"item.checked\"><i class=\"fa-regular fa-square-check\"></i></span>\r\n <span *ngIf=\"!item.checked\"><i class=\"fa-regular fa-square\"></i></span>\r\n {{item.value}}\r\n </a></li>\r\n </ng-container>\r\n </ul>\r\n</div>" }]
5408
+ }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }]; }, propDecorators: { id: [{
5409
+ type: Input
5410
+ }], valueField: [{
5411
+ type: Input
5412
+ }], textField: [{
5413
+ type: Input
5414
+ }], checkedTextField: [{
5415
+ type: Input
5416
+ }], css: [{
5417
+ type: Input
5418
+ }], placeholder: [{
5419
+ type: Input
5420
+ }], label: [{
5421
+ type: Input
5422
+ }], multiple: [{
5423
+ type: Input
5424
+ }], data: [{
5425
+ type: Input
5426
+ }] } });
5427
+
5428
+ class ZekSelectModule {
5429
+ }
5430
+ ZekSelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ZekSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
5431
+ ZekSelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: ZekSelectModule, declarations: [ZekSelectMultiple], imports: [CommonModule,
5432
+ FormsModule], exports: [ZekSelectMultiple] });
5433
+ ZekSelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ZekSelectModule, imports: [CommonModule,
5434
+ FormsModule] });
5435
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ZekSelectModule, decorators: [{
5436
+ type: NgModule,
5437
+ args: [{
5438
+ imports: [
5439
+ CommonModule,
5440
+ FormsModule
5441
+ ],
5442
+ declarations: [
5443
+ ZekSelectMultiple
5444
+ ],
5445
+ exports: [
5446
+ ZekSelectMultiple
5447
+ ],
5448
+ }]
5449
+ }] });
5450
+
4969
5451
  class Select2Component {
4970
5452
  constructor() {
4971
5453
  this.elementId = RandomHelper.randomHex();
@@ -5666,6 +6148,167 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
5666
6148
  type: Input
5667
6149
  }] } });
5668
6150
 
6151
+ // import { AbstractControl, Validators, ValidatorFn, ValidationErrors } from '@angular/forms'
6152
+ // export const range = (range?: Array<number> | null): ValidatorFn => {
6153
+ // return (control: AbstractControl): { [key: string]: any } | null => {
6154
+ // if (!range) return null;
6155
+ // if (Validators.required(control)) return null;
6156
+ // let v: number = +control.value;
6157
+ // return v >= range[0] && v <= range[1] ? null : { actualValue: v, requiredValue: range, range: true };
6158
+ // };
6159
+ // };
6160
+ // export function blue(): ValidatorFn {
6161
+ // return (control: AbstractControl): { [key: string]: any } | null =>
6162
+ // control.value?.toLowerCase() === 'blue'
6163
+ // ? null : { wrongColor: control.value };
6164
+ // }
6165
+ function isEmptyInputValue(value) {
6166
+ /**
6167
+ * Check if the object is a string or array before evaluating the length attribute.
6168
+ * This avoids falsely rejecting objects that contain a custom length attribute.
6169
+ * For example, the object {id: 1, length: 0, width: 0} should not be returned as empty.
6170
+ */
6171
+ return typeof value === 'undefined' || value == null || ((typeof value === 'string' || Array.isArray(value)) && value.length === 0);
6172
+ }
6173
+ /**
6174
+ * Function that has `ValidatorFn` shape, but performs no operation.
6175
+ */
6176
+ function nullValidator(control) {
6177
+ return null;
6178
+ }
6179
+ class Validators {
6180
+ /**
6181
+ * @description
6182
+ * Validator that requires the control's value to be less than or equal to the provided number.
6183
+ *
6184
+ * @usageNotes
6185
+ *
6186
+ * ### Validate against a range 0 - 15
6187
+ *
6188
+ * ```typescript
6189
+ * const control = new FormControl(16, Validators.max([0,15]));
6190
+ *
6191
+ * console.log(control.errors); // {range: {min: 0, max: 15, actual: 16}}
6192
+ * ```
6193
+ *
6194
+ * @returns A validator function that returns an error map with the
6195
+ * `range` property if the validation check fails, otherwise `null`.
6196
+ *
6197
+ * @see `updateValueAndValidity()`
6198
+ *
6199
+ */
6200
+ static range(min, max) {
6201
+ return rangeValidator([min, max]);
6202
+ }
6203
+ }
6204
+ /**
6205
+ * Validator that requires the control's value to be between provided numbers.
6206
+ * See `Validators.range` for additional information.
6207
+ */
6208
+ function rangeValidator(range) {
6209
+ return (control) => {
6210
+ if (isEmptyInputValue(control.value) || isEmptyInputValue(range) || range.length < 2) {
6211
+ return null; // don't validate empty values to allow optional controls
6212
+ }
6213
+ const value = parseFloat(control.value);
6214
+ let max = range[0];
6215
+ let min = range[1];
6216
+ if (!isNaN(value) && (value < min || value > max)) {
6217
+ return { 'range': { 'min': min, 'max': max, 'actual': control.value } };
6218
+ }
6219
+ return null;
6220
+ };
6221
+ }
6222
+
6223
+ const RANGE_VALIDATOR = {
6224
+ provide: NG_VALIDATORS,
6225
+ useExisting: forwardRef(() => RangeValidator),
6226
+ multi: true
6227
+ };
6228
+ function toFloat(value) {
6229
+ return typeof value === 'number' ? value : parseFloat(value);
6230
+ }
6231
+ class AbstractValidatorDirective {
6232
+ constructor() {
6233
+ this._validator = nullValidator;
6234
+ }
6235
+ /** @nodoc */
6236
+ ngOnChanges(changes) {
6237
+ if (this.inputName in changes) {
6238
+ const input = this.normalizeInput(changes[this.inputName].currentValue);
6239
+ this._enabled = this.enabled(input);
6240
+ this._validator = this._enabled ? this.createValidator(input) : nullValidator;
6241
+ if (this._onChange) {
6242
+ this._onChange();
6243
+ }
6244
+ }
6245
+ }
6246
+ /** @nodoc */
6247
+ validate(control) {
6248
+ return this._validator(control);
6249
+ }
6250
+ /** @nodoc */
6251
+ registerOnValidatorChange(fn) {
6252
+ this._onChange = fn;
6253
+ }
6254
+ /**
6255
+ * @description
6256
+ * Determines whether this validator should be active or not based on an input.
6257
+ * Base class implementation checks whether an input is defined (if the value is different from
6258
+ * `null` and `undefined`). Validator classes that extend this base class can override this
6259
+ * function with the logic specific to a particular validator directive.
6260
+ */
6261
+ enabled(input) {
6262
+ return input != null /* both `null` and `undefined` */;
6263
+ }
6264
+ }
6265
+ AbstractValidatorDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbstractValidatorDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
6266
+ AbstractValidatorDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: AbstractValidatorDirective, usesOnChanges: true, ngImport: i0 });
6267
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: AbstractValidatorDirective, decorators: [{
6268
+ type: Directive
6269
+ }] });
6270
+ class RangeValidator extends AbstractValidatorDirective {
6271
+ constructor() {
6272
+ super(...arguments);
6273
+ /** @internal */
6274
+ this.inputName = 'range';
6275
+ /** @internal */
6276
+ this.normalizeInput = (input) => toFloat(input);
6277
+ /** @internal */
6278
+ this.createValidator = (range) => rangeValidator(range);
6279
+ }
6280
+ }
6281
+ RangeValidator.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: RangeValidator, deps: null, target: i0.ɵɵFactoryTarget.Directive });
6282
+ RangeValidator.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.0", type: RangeValidator, selector: "input[type=number][range][formControlName],input[type=number][range][formControl],input[type=number][range][ngModel]", inputs: { range: "range" }, host: { properties: { "attr.range": "_enabled ? range : null" } }, providers: [RANGE_VALIDATOR], usesInheritance: true, ngImport: i0 });
6283
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: RangeValidator, decorators: [{
6284
+ type: Directive,
6285
+ args: [{
6286
+ selector: 'input[type=number][range][formControlName],input[type=number][range][formControl],input[type=number][range][ngModel]',
6287
+ providers: [RANGE_VALIDATOR],
6288
+ host: { '[attr.range]': '_enabled ? range : null' }
6289
+ }]
6290
+ }], propDecorators: { range: [{
6291
+ type: Input
6292
+ }] } });
6293
+
6294
+ class ValidatorsModule {
6295
+ }
6296
+ ValidatorsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ValidatorsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
6297
+ ValidatorsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.0", ngImport: i0, type: ValidatorsModule, declarations: [RangeValidator], imports: [CommonModule], exports: [RangeValidator] });
6298
+ ValidatorsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ValidatorsModule, imports: [CommonModule] });
6299
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: ValidatorsModule, decorators: [{
6300
+ type: NgModule,
6301
+ args: [{
6302
+ imports: [
6303
+ CommonModule
6304
+ ],
6305
+ declarations: [
6306
+ RangeValidator,
6307
+ ],
6308
+ exports: [RangeValidator]
6309
+ }]
6310
+ }] });
6311
+
5669
6312
  class WizardComponent {
5670
6313
  constructor() {
5671
6314
  this.progress = 0;
@@ -5773,5 +6416,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImpor
5773
6416
  * Generated bundle index. Do not edit.
5774
6417
  */
5775
6418
 
5776
- export { API_BASE_URL, AgeModule, AgePipe, Alert, AlertComponent, AlertModule, AlertService, AlertType, AppBaseModule, ApproveModalComponent, ArrayHelper, AuthGuardService, AuthService, AutoCompleteDirective, AutoCompleteModule, Base64Helper, BaseAlert, BaseComponent, BaseService, BitwiseHelper, BootstrapHelper, ButtonBrowseComponent, ButtonBrowseModalBaseComponent, ButtonBrowseModalToolbarComponent, ButtonBrowseModule, CallbackModule, CallbackPipe, CardComponent, CardModule, Color, ComponentType, Convert, CoreComponent, CoreUiComponent, CrudService, CssHelper, CustomHttpParamEncoder, DATE_FORMAT, DateAgoModule, DateAgoPipe, DateHelper, DateValueAccessor, DatepickerModule, DeleteModalComponent, DisapproveModalComponent, EditBase, EditBaseComponent, EditComponent, EditFormComponent, EditToolbarComponent, EditToolbarModule, FieldValidatorComponent, FileBase, FileBytes, FileHelper, FileModule, FileSizePipe, FileString, FileViewerComponent, FileViewerModule, FilterBase, FilterHelper, FilterModalComponent, Gender, GridToolbarBarComponent, GridToolbarComponent, GridToolbarModule, HtmlHelper, HttpErrorHandler, KeyPair, KeyPairChecked, KeyPairEx, KeyPairRequired, LANGUAGE, ListBase, ListBaseComponent, ListToolbarComponent, ListToolbarModule, LoadingComponent, LoadingModule, MathHelper, ModalComponent, ModalModule, Month, ObjectHelper, OverlapHelper, PageTitleComponent, PageTitleModule, PagedList, PagedListBase, Pager, PagerBase, PagerComponent, PagerHelper, PagerModule, PasswordComponent, PasswordModule, PeriodRelation, PrintType, RECAPTCHA_SITE_KEY, RadioComponent, RadioModule, RandomHelper, ReCaptchaService, ReadOnlyDirective, ReadOnlyModule, RecaptchaModule, RestoreModalComponent, SafeModule, SafePipe, Select2Component, Select2Module, Select2MultipleComponent, Select2MultipleModule, SortButtonGroupComponent, SortDirective, SortModule, StorageHelper, StringHelper, SubmitModalComponent, SumComponent, TimeHelper, TimeModule, TimePipe, TimerService, Toast, ToastComponent, Tree, ValidEventArgs, ValidationComponent, ValidatorModule, WebApiClient, WebApiModule, WizardComponent, WizardComponent2, WizardModule, ZEK_BB_CONTROL_VALUE_ACCESSOR, ZEK_RADIO_CONTROL_VALUE_ACCESSOR, firstBy, handler };
6419
+ export { API_BASE_URL, AgeModule, AgePipe, Alert, AlertComponent, AlertModule, AlertService, AlertType, AppBaseModule, ApproveModalComponent, ArrayHelper, AuthGuardService, AuthService, AutoCompleteDirective, AutoCompleteModule, Base64Helper, BaseAlert, BaseComponent, BaseService, BitwiseHelper, BootstrapHelper, ButtonBrowseComponent, ButtonBrowseModalBaseComponent, ButtonBrowseModalToolbarComponent, ButtonBrowseModule, CallbackModule, CallbackPipe, CardComponent, CardModule, Color, ComponentType, Convert, CoreComponent, CoreUiComponent, CrudService, CssHelper, CustomHttpParamEncoder, DATE_FORMAT, DateAgoModule, DateAgoPipe, DateHelper, DateValueAccessor, DatepickerModule, DeleteModalComponent, DisapproveModalComponent, EditBase, EditBaseComponent, EditComponent, EditFormComponent, EditToolbarComponent, EditToolbarModule, FieldValidatorComponent, FileBase, FileBytes, FileHelper, FileModule, FileSizePipe, FileString, FileViewerComponent, FileViewerModule, FilterBase, FilterHelper, FilterModalComponent, Gender, GridToolbarBarComponent, GridToolbarComponent, GridToolbarModule, HtmlHelper, HttpErrorHandler, KeyPair, KeyPairChecked, KeyPairEx, KeyPairRequired, LANGUAGE, ListBase, ListBaseComponent, ListToolbarComponent, ListToolbarModule, LoadingComponent, LoadingModule, MathHelper, ModalComponent, ModalModule, Month, ObjectHelper, OverlapHelper, PageTitleComponent, PageTitleModule, PagedList, PagedListBase, Pager, PagerBase, PagerComponent, PagerHelper, PagerModule, PasswordComponent, PasswordModule, PeriodRelation, PrintType, RECAPTCHA_SITE_KEY, RadioComponent, RadioModule, RandomHelper, RangeValidator, ReCaptchaService, ReadOnlyDirective, ReadOnlyModule, RecaptchaModule, RestoreModalComponent, SafeModule, SafePipe, Select2Component, Select2Module, Select2MultipleComponent, Select2MultipleModule, SortButtonGroupComponent, SortDirective, SortModule, StorageHelper, StringHelper, SubmitModalComponent, SumComponent, TimeHelper, TimeModule, TimePipe, TimerService, Toast, ToastComponent, Tree, ValidEventArgs, ValidationComponent, ValidatorModule, Validators, ValidatorsModule, WebApiClient, WebApiModule, WizardComponent, WizardComponent2, WizardModule, ZekSelectModule, ZekSelectMultiple, firstBy, handler, nullValidator, rangeValidator };
5777
6420
  //# sourceMappingURL=zek.mjs.map