@osovitny/anatoly 2.14.12 → 2.14.14

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 (91) hide show
  1. package/assets/jsons/countries.json +994 -0
  2. package/assets/jsons/timezones.json +554 -0
  3. package/assets/jsons/usStates.json +202 -0
  4. package/esm2020/lib/core/convert.mjs +39 -1
  5. package/esm2020/lib/core/go/base-go.service.mjs +2 -5
  6. package/esm2020/lib/core/guards/once-import.guard.mjs +2 -5
  7. package/esm2020/lib/core/index.mjs +40 -0
  8. package/esm2020/lib/core/interceptors/httpInterceptor.mjs +2 -5
  9. package/esm2020/lib/core/localization/localization.module.mjs +2 -5
  10. package/esm2020/lib/core/localization/localization.service.mjs +2 -5
  11. package/esm2020/lib/core/localization/localizationSettings.module.mjs +1 -4
  12. package/esm2020/lib/core/localization/localize.pipe.mjs +2 -5
  13. package/esm2020/lib/core/localization/utils.mjs +2 -5
  14. package/esm2020/lib/core/logging/globalErrorHandler.mjs +1 -4
  15. package/esm2020/lib/core/logging/logging.service.mjs +1 -4
  16. package/esm2020/lib/core/notifications/alerts.mjs +2 -5
  17. package/esm2020/lib/core/notifications/interfaces/notification.mjs +1 -4
  18. package/esm2020/lib/core/notifications/services/notification-service.mjs +1 -4
  19. package/esm2020/lib/core/services/appcontext.service.mjs +11 -5
  20. package/esm2020/lib/core/services/dm.service.mjs +3 -6
  21. package/esm2020/lib/core/services/google-analytics.service.mjs +1 -4
  22. package/esm2020/lib/core/services/idle.service.mjs +1 -4
  23. package/esm2020/lib/core/services/loading.service.mjs +2 -5
  24. package/esm2020/lib/core/services/web-storage.service.mjs +2 -5
  25. package/esm2020/lib/data/base/base-api.service.mjs +15 -7
  26. package/esm2020/lib/data/base/grid/base-grid-edit.service.mjs +2 -5
  27. package/esm2020/lib/data/base/grid/base-grid-read.service.mjs +2 -5
  28. package/esm2020/lib/data/consts.mjs +5 -6
  29. package/esm2020/lib/data/data.module.mjs +4 -1
  30. package/esm2020/lib/data/index.mjs +23 -0
  31. package/esm2020/lib/data/services/billing-api.service.mjs +3 -6
  32. package/esm2020/lib/data/services/core-api.service.mjs +44 -0
  33. package/esm2020/lib/data/services/emails-api.service.mjs +3 -3
  34. package/esm2020/lib/data/services/notifications/notifications-api-service.mjs +3 -6
  35. package/esm2020/lib/ui/components/base-edit.component.mjs +1 -4
  36. package/esm2020/lib/ui/components/base.component.mjs +2 -5
  37. package/esm2020/lib/ui/components/base.dialog.mjs +2 -5
  38. package/esm2020/lib/ui/components/billing/subscribe-plan-button.component.mjs +2 -5
  39. package/esm2020/lib/ui/components/billing/upgrade-plan-button.component.mjs +1 -4
  40. package/esm2020/lib/ui/components/html-editor/base-html-editor.component.mjs +1 -4
  41. package/esm2020/lib/ui/components/html-editor/forms-html-editor.component.mjs +2 -5
  42. package/esm2020/lib/ui/components/html-editor/html-editor.component.mjs +1 -4
  43. package/esm2020/lib/ui/components/html-editor/html-editor.defaultoptions.mjs +1 -4
  44. package/esm2020/lib/ui/components/identity/signin-button.component.mjs +1 -4
  45. package/esm2020/lib/ui/components/identity/signout-button.component.mjs +1 -4
  46. package/esm2020/lib/ui/components/identity/signup-button.component.mjs +1 -4
  47. package/esm2020/lib/ui/components/index.mjs +38 -0
  48. package/esm2020/lib/ui/components/spinners/loading/loading.component.mjs +1 -4
  49. package/esm2020/lib/ui/dialogs/contact-us/contact-us.dialog.mjs +1 -1
  50. package/esm2020/lib/ui/dialogs/index.mjs +17 -0
  51. package/esm2020/lib/ui/directives/index.mjs +17 -0
  52. package/esm2020/lib/ui/directives/native-element.directive.mjs +1 -4
  53. package/esm2020/lib/ui/forms/components/address/address.component.mjs +136 -0
  54. package/esm2020/lib/ui/forms/components/company/company.component.mjs +93 -0
  55. package/esm2020/lib/ui/forms/components/dropdownlists/timezone/timezone.dropdownlist.mjs +70 -0
  56. package/esm2020/lib/ui/forms/components/urlslug/urlslug.component.mjs +67 -0
  57. package/esm2020/lib/ui/forms/contact-us/contact-us.mjs +3 -3
  58. package/esm2020/lib/ui/forms/index.mjs +24 -0
  59. package/esm2020/lib/ui/pipes/filesize.pipe.mjs +1 -4
  60. package/esm2020/lib/ui/pipes/index.mjs +19 -0
  61. package/esm2020/lib/ui/pipes/replace-text.pipe.mjs +1 -4
  62. package/esm2020/lib/ui/pipes/safeHtml.pipe.mjs +1 -4
  63. package/esm2020/lib/ui/ui.module.mjs +18 -2
  64. package/esm2020/lib/ui/validation/form-validation-summary.component.mjs +1 -4
  65. package/esm2020/lib/ui/validation/index.mjs +19 -0
  66. package/esm2020/lib/ui/validation/item-validation-summary.component.mjs +2 -5
  67. package/esm2020/lib/ui/validation/validation-summary.component.mjs +1 -4
  68. package/esm2020/public-api.mjs +9 -61
  69. package/fesm2015/osovitny-anatoly.mjs +628 -196
  70. package/fesm2015/osovitny-anatoly.mjs.map +1 -1
  71. package/fesm2020/osovitny-anatoly.mjs +627 -199
  72. package/fesm2020/osovitny-anatoly.mjs.map +1 -1
  73. package/lib/core/convert.d.ts +5 -0
  74. package/lib/core/index.d.ts +24 -0
  75. package/lib/data/base/base-api.service.d.ts +1 -1
  76. package/lib/data/consts.d.ts +2 -1
  77. package/lib/data/index.d.ts +7 -0
  78. package/lib/data/services/core-api.service.d.ts +12 -0
  79. package/lib/ui/components/index.d.ts +20 -0
  80. package/lib/ui/dialogs/index.d.ts +1 -0
  81. package/lib/ui/directives/index.d.ts +1 -0
  82. package/lib/ui/forms/components/address/address.component.d.ts +35 -0
  83. package/lib/ui/forms/components/company/company.component.d.ts +20 -0
  84. package/lib/ui/forms/components/dropdownlists/timezone/timezone.dropdownlist.d.ts +26 -0
  85. package/lib/ui/forms/components/urlslug/urlslug.component.d.ts +18 -0
  86. package/lib/ui/forms/index.d.ts +5 -0
  87. package/lib/ui/pipes/index.d.ts +3 -0
  88. package/lib/ui/ui.module.d.ts +18 -14
  89. package/lib/ui/validation/index.d.ts +3 -0
  90. package/package.json +1 -1
  91. package/public-api.d.ts +8 -58
@@ -76,10 +76,7 @@ const Urls = {
76
76
 
77
77
  Created:
78
78
  17 Jun 2018
79
-
80
- Version:
81
- 1.0
82
-
79
+
83
80
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
84
81
  </file>
85
82
  */
@@ -114,10 +111,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
114
111
 
115
112
  Created:
116
113
  26 Jun 2020
117
-
118
- Version:
119
- 1.0
120
-
114
+
121
115
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
122
116
  </file>
123
117
  */
@@ -138,10 +132,7 @@ function throwIfAlreadyLoaded(parentModule, moduleName) {
138
132
 
139
133
  Created:
140
134
  26 Jun 2020
141
-
142
- Version:
143
- 1.0
144
-
135
+
145
136
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
146
137
  </file>
147
138
  */
@@ -205,9 +196,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
205
196
  Created:
206
197
  26 Jun 2020
207
198
 
208
- Version:
209
- 1.0
210
-
211
199
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
212
200
  </file>
213
201
  */
@@ -240,10 +228,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
240
228
 
241
229
  Created:
242
230
  25 March 2020
243
-
244
- Version:
245
- 1.0
246
-
231
+
247
232
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
248
233
  </file>
249
234
  */
@@ -343,6 +328,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
343
328
  </file>
344
329
  */
345
330
  class Convert {
331
+ static pad(number) {
332
+ if (number < 10) {
333
+ return '0' + number;
334
+ }
335
+ return number;
336
+ }
346
337
  static toLocalizedDateTime(value) {
347
338
  if (value) {
348
339
  return new Date(Date.UTC(value.getFullYear(), value.getMonth(), value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds()));
@@ -387,6 +378,38 @@ class Convert {
387
378
  }
388
379
  return [];
389
380
  }
381
+ static address2String(adr) {
382
+ let address = JSON.parse(adr);
383
+ let addressAsString = `${address.street} ${address.street2} ${address.city} ${address.stateOrRegion} ${address.zipcode} ${address.country}`;
384
+ return addressAsString;
385
+ }
386
+ static dateToString(date) {
387
+ return date.getFullYear() +
388
+ '-' + this.pad(date.getMonth() + 1) +
389
+ '-' + this.pad(date.getDate()) +
390
+ ' ' + this.pad(date.getHours()) +
391
+ ':' + this.pad(date.getMinutes()) +
392
+ ':' + this.pad(date.getSeconds());
393
+ }
394
+ static utcDateToLocalDate(d) {
395
+ let date = new Date(d);
396
+ return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()));
397
+ }
398
+ static stringToBoolean(value) {
399
+ switch (value.toLowerCase().trim()) {
400
+ case "true":
401
+ case "yes":
402
+ case "1":
403
+ return true;
404
+ case "false":
405
+ case "no":
406
+ case "0":
407
+ case null:
408
+ return false;
409
+ default:
410
+ return Boolean(value);
411
+ }
412
+ }
390
413
  }
391
414
 
392
415
  /*
@@ -400,10 +423,7 @@ class Convert {
400
423
 
401
424
  Created:
402
425
  05 May 2020
403
-
404
- Version:
405
- 1.0
406
-
426
+
407
427
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
408
428
  </file>
409
429
  */
@@ -574,10 +594,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
574
594
 
575
595
  Created:
576
596
  10 May 2020
577
-
578
- Version:
579
- 1.0
580
-
597
+
581
598
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
582
599
  </file>
583
600
  */
@@ -649,9 +666,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
649
666
  Created:
650
667
  05 May 2020
651
668
 
652
- Version:
653
- 1.0
654
-
655
669
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
656
670
  </file>
657
671
  */
@@ -725,10 +739,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
725
739
 
726
740
  Created:
727
741
  12 May 2020
728
-
729
- Version:
730
- 1.0
731
-
742
+
732
743
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
733
744
  </file>
734
745
  */
@@ -767,9 +778,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
767
778
  Created:
768
779
  26 Jun 2020
769
780
 
770
- Version:
771
- 1.0
772
-
773
781
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
774
782
  </file>
775
783
  */
@@ -801,10 +809,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
801
809
 
802
810
  Created:
803
811
  2 July 2020
804
-
805
- Version:
806
- 1.0
807
-
812
+
808
813
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
809
814
  </file>
810
815
  */
@@ -843,10 +848,7 @@ class L10nUtils {
843
848
 
844
849
  Created:
845
850
  3 March 2020
846
-
847
- Version:
848
- 1.0
849
-
851
+
850
852
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
851
853
  </file>
852
854
  */
@@ -951,9 +953,6 @@ class Alerts {
951
953
  Created:
952
954
  2 Jun 2020
953
955
 
954
- Version:
955
- 1.0
956
-
957
956
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
958
957
  </file>
959
958
  */
@@ -991,9 +990,6 @@ class Guid {
991
990
  Created:
992
991
  2 Jun 2020
993
992
 
994
- Version:
995
- 1.0
996
-
997
993
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
998
994
  </file>
999
995
  */
@@ -1210,9 +1206,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1210
1206
  Created:
1211
1207
  13 Nov 2017
1212
1208
 
1213
- Version:
1214
- 1.0
1215
-
1216
1209
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1217
1210
  </file>
1218
1211
  */
@@ -1256,9 +1249,6 @@ class BaseApiService {
1256
1249
  getExternalTextFile(url) {
1257
1250
  return this.http.get(url);
1258
1251
  }
1259
- getExternalJsonFile(url) {
1260
- return this.http.get(url);
1261
- }
1262
1252
  getJsonFile(fileName) {
1263
1253
  const jsonsUrl = AppCoreSettings.jsonsUrl;
1264
1254
  const jsonVersion = AppCoreSettings.jsonVersion;
@@ -1273,6 +1263,20 @@ class BaseApiService {
1273
1263
  }
1274
1264
  return this.http.get(url).pipe(map(res => res));
1275
1265
  }
1266
+ getExternalJsonFile(libname, fileName) {
1267
+ const externalUrl = AppCoreSettings.externalUrl;
1268
+ const jsonVersion = AppCoreSettings.jsonVersion;
1269
+ const isCDNEnabled = AppCoreSettings.isCDNEnabled;
1270
+ const cdnSasToken = AppCoreSettings.cdnSasToken;
1271
+ let url = "";
1272
+ if (isCDNEnabled) {
1273
+ url = externalUrl + "/" + libname + "/jsons/" + fileName + cdnSasToken;
1274
+ }
1275
+ else {
1276
+ url = externalUrl + "/" + libname + "/jsons/" + fileName + '?' + jsonVersion;
1277
+ }
1278
+ return this.http.get(url).pipe(map(res => res));
1279
+ }
1276
1280
  }
1277
1281
  BaseApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: BaseApiService, deps: [{ token: i1$3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
1278
1282
  BaseApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: BaseApiService });
@@ -1291,10 +1295,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1291
1295
 
1292
1296
  Created:
1293
1297
  26 Jun 2020
1294
-
1295
- Version:
1296
- 1.0
1297
-
1298
+
1298
1299
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1299
1300
  </file>
1300
1301
  */
@@ -1384,15 +1385,22 @@ class AppContextService extends BaseApiService {
1384
1385
  if (!context) {
1385
1386
  return;
1386
1387
  }
1387
- let lu = context.lastRequested;
1388
- if (lu) {
1388
+ let shouldBeUpdated = false;
1389
+ let lr = context.lastRequested;
1390
+ if (lr) {
1389
1391
  let now = new Date();
1390
1392
  let lastRequested = new Date(context.lastRequested);
1391
1393
  let in2Mins = new Date(lastRequested.getFullYear(), lastRequested.getMonth(), lastRequested.getDate(), lastRequested.getHours(), lastRequested.getMinutes() + 2, 0, 0);
1392
1394
  if (in2Mins.getTime() < now.getTime()) {
1393
- this.updateCurrent();
1395
+ shouldBeUpdated = true;
1394
1396
  }
1395
1397
  }
1398
+ else {
1399
+ shouldBeUpdated = true;
1400
+ }
1401
+ if (shouldBeUpdated) {
1402
+ this.updateCurrent();
1403
+ }
1396
1404
  }
1397
1405
  dataReceived(data) {
1398
1406
  this.current = data;
@@ -1441,7 +1449,6 @@ class AppContextService extends BaseApiService {
1441
1449
  return ContextInitState.isUserAdmin;
1442
1450
  }
1443
1451
  //Properties
1444
- //current
1445
1452
  get current() {
1446
1453
  this.updateCurrentIfExpired();
1447
1454
  return this.getCurrentFromSession();
@@ -1468,9 +1475,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1468
1475
  Created:
1469
1476
  26 Jun 2020
1470
1477
 
1471
- Version:
1472
- 1.0
1473
-
1474
1478
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1475
1479
  </file>
1476
1480
  */
@@ -1537,11 +1541,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1537
1541
  Anatoly Osovitny
1538
1542
 
1539
1543
  Created:
1540
- 29 Щсе 2020
1541
-
1542
- Version:
1543
- 1.0
1544
-
1544
+ 29 Nov 2020
1545
+
1545
1546
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1546
1547
  </file>
1547
1548
  */
@@ -1606,9 +1607,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1606
1607
  Created:
1607
1608
  29 Nov 2020
1608
1609
 
1609
- Version:
1610
- 1.0
1611
-
1612
1610
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1613
1611
  </file>
1614
1612
  */
@@ -1766,11 +1764,24 @@ class Utils {
1766
1764
  Anatoly Osovitny
1767
1765
 
1768
1766
  Created:
1769
- 29 Apr 2018
1767
+ 2 Aug 2022
1770
1768
 
1771
- Version:
1772
- 1.0
1769
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1770
+ </file>
1771
+ */
1772
+
1773
+ /*
1774
+ <file>
1775
+ Project:
1776
+ @osovitny/anatoly
1777
+
1778
+ Authors:
1779
+ Vadim Osovitny
1780
+ Anatoly Osovitny
1773
1781
 
1782
+ Created:
1783
+ 29 Apr 2018
1784
+
1774
1785
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1775
1786
  </file>
1776
1787
  */
@@ -1822,10 +1833,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1822
1833
 
1823
1834
  Created:
1824
1835
  29 Apr 2018
1825
-
1826
- Version:
1827
- 1.0
1828
-
1836
+
1829
1837
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1830
1838
  </file>
1831
1839
  */
@@ -1893,18 +1901,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1893
1901
  Created:
1894
1902
  30 April 2020
1895
1903
 
1896
- Version:
1897
- 1.0
1898
-
1899
1904
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1900
1905
  </file>
1901
1906
  */
1902
- const consts = {
1907
+ const Consts = {
1908
+ //core
1909
+ coreApiPath: 'api/core',
1903
1910
  //billing
1904
1911
  billingApiPath: 'api/billing',
1905
1912
  //emails
1906
1913
  emailsApiPath: 'api/emails',
1907
- //notifications
1914
+ //notifications
1908
1915
  notificationsApiPath: 'api/notifications'
1909
1916
  };
1910
1917
 
@@ -1920,9 +1927,6 @@ const consts = {
1920
1927
  Created:
1921
1928
  30 April 2020
1922
1929
 
1923
- Version:
1924
- 1.0
1925
-
1926
1930
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1927
1931
  </file>
1928
1932
  */
@@ -1930,7 +1934,7 @@ class NotificationsApiService extends BaseApiService {
1930
1934
  constructor(http) {
1931
1935
  super(http);
1932
1936
  this.http = http;
1933
- this.baseUrl = consts.notificationsApiPath;
1937
+ this.baseUrl = Consts.notificationsApiPath;
1934
1938
  }
1935
1939
  retrieveNotifications() {
1936
1940
  return this.get('retrieveNotifications');
@@ -1957,9 +1961,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1957
1961
  Created:
1958
1962
  12 Nov 2017
1959
1963
 
1960
- Version:
1961
- 1.0
1962
-
1963
1964
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1964
1965
  </file>
1965
1966
  */
@@ -1967,7 +1968,7 @@ class BillingApiService extends BaseApiService {
1967
1968
  constructor(http) {
1968
1969
  super(http);
1969
1970
  this.http = http;
1970
- this.baseUrl = consts.billingApiPath;
1971
+ this.baseUrl = Consts.billingApiPath;
1971
1972
  }
1972
1973
  requestNewSubscription(requestedPlan, success, error) {
1973
1974
  this.postQS("requestNewSubscription", { requestedPlan: requestedPlan }).subscribe((data) => {
@@ -2013,11 +2014,98 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2013
2014
  Anatoly Osovitny
2014
2015
 
2015
2016
  Created:
2016
- 28 Aug 2018
2017
+ 16 Jun 2022
2018
+
2019
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2020
+ </file>
2021
+ */
2022
+ class EmailsApiService extends BaseApiService {
2023
+ constructor(http) {
2024
+ super(http);
2025
+ this.http = http;
2026
+ this.baseUrl = Consts.emailsApiPath;
2027
+ }
2028
+ sendContactUs(captcha, name, email, topic, subject, message, success, error) {
2029
+ return this.post('sendContactUs', { captcha, name, email, topic, subject, message }).subscribe(data => {
2030
+ if (success)
2031
+ success(data);
2032
+ }, e => {
2033
+ if (error)
2034
+ error(e);
2035
+ });
2036
+ }
2037
+ }
2038
+ EmailsApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: EmailsApiService, deps: [{ token: i1$3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
2039
+ EmailsApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: EmailsApiService });
2040
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: EmailsApiService, decorators: [{
2041
+ type: Injectable
2042
+ }], ctorParameters: function () { return [{ type: i1$3.HttpClient }]; } });
2043
+
2044
+ /*
2045
+ <file>
2046
+ Project:
2047
+ @osovitny/anatoly
2048
+
2049
+ Authors:
2050
+ Vadim Osovitny
2051
+ Anatoly Osovitny
2052
+
2053
+ Created:
2054
+ 02 Aug 2022
2055
+
2056
+ Copyright (c) 2017-2022 Osovitny Inc. All rights reserved.
2057
+ </file>
2058
+ */
2059
+ class CoreApiService extends BaseApiService {
2060
+ constructor(http) {
2061
+ super(http);
2062
+ this.http = http;
2063
+ this.baseUrl = Consts.coreApiPath;
2064
+ }
2065
+ getTimezonesJsonFile(done) {
2066
+ this.getExternalJsonFile('anatoly', 'timezones.json').subscribe(data => done(data));
2067
+ }
2068
+ getUSStatesJsonFile(done) {
2069
+ this.getExternalJsonFile('anatoly', 'usStates.json').subscribe(data => done(data));
2070
+ }
2071
+ getCountriesJsonFile(done) {
2072
+ this.getExternalJsonFile('anatoly', 'countries.json').subscribe(data => done(data));
2073
+ }
2074
+ }
2075
+ CoreApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CoreApiService, deps: [{ token: i1$3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
2076
+ CoreApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CoreApiService });
2077
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CoreApiService, decorators: [{
2078
+ type: Injectable
2079
+ }], ctorParameters: function () { return [{ type: i1$3.HttpClient }]; } });
2080
+
2081
+ /*
2082
+ <file>
2083
+ Project:
2084
+ @osovitny/anatoly
2085
+
2086
+ Authors:
2087
+ Vadim Osovitny
2088
+ Anatoly Osovitny
2089
+
2090
+ Created:
2091
+ 2 Aug 2022
2017
2092
 
2018
- Version:
2019
- 1.0
2093
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2094
+ </file>
2095
+ */
2096
+
2097
+ /*
2098
+ <file>
2099
+ Project:
2100
+ @osovitny/anatoly
2020
2101
 
2102
+ Authors:
2103
+ Vadim Osovitny
2104
+ Anatoly Osovitny
2105
+
2106
+ Created:
2107
+ 28 Aug 2018
2108
+
2021
2109
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2022
2110
  </file>
2023
2111
  */
@@ -2056,9 +2144,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2056
2144
  Created:
2057
2145
  20 Nov 2017
2058
2146
 
2059
- Version:
2060
- 1.0
2061
-
2062
2147
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2063
2148
  </file>
2064
2149
  */
@@ -2191,10 +2276,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2191
2276
 
2192
2277
  Created:
2193
2278
  24 Jan 2022
2194
-
2195
- Version:
2196
- 1.0
2197
-
2279
+
2198
2280
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2199
2281
  </file>
2200
2282
  */
@@ -2236,9 +2318,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2236
2318
  Created:
2237
2319
  4 Jul 2018
2238
2320
 
2239
- Version:
2240
- 1.0
2241
-
2242
2321
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2243
2322
  </file>
2244
2323
  */
@@ -2326,9 +2405,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2326
2405
  Created:
2327
2406
  12 Nov 2017
2328
2407
 
2329
- Version:
2330
- 1.0
2331
-
2332
2408
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2333
2409
  </file>
2334
2410
  */
@@ -2372,10 +2448,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2372
2448
 
2373
2449
  Created:
2374
2450
  1 Jun 2018
2375
-
2376
- Version:
2377
- 1.0
2378
-
2451
+
2379
2452
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2380
2453
  </file>
2381
2454
  */
@@ -2429,9 +2502,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2429
2502
  Created:
2430
2503
  12 Dec 2017
2431
2504
 
2432
- Version:
2433
- 1.0
2434
-
2435
2505
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2436
2506
  </file>
2437
2507
  */
@@ -2518,9 +2588,6 @@ const DefaultEditorOptions = {
2518
2588
  Created:
2519
2589
  12 Dec 2017
2520
2590
 
2521
- Version:
2522
- 1.0
2523
-
2524
2591
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2525
2592
  </file>
2526
2593
  */
@@ -2622,9 +2689,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2622
2689
  Created:
2623
2690
  28 Jun 2020
2624
2691
 
2625
- Version:
2626
- 1.0
2627
-
2628
2692
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2629
2693
  </file>
2630
2694
  */
@@ -2659,9 +2723,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2659
2723
  Created:
2660
2724
  8 Dec 2017
2661
2725
 
2662
- Version:
2663
- 1.0
2664
-
2665
2726
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2666
2727
  </file>
2667
2728
  */
@@ -2781,10 +2842,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2781
2842
 
2782
2843
  Created:
2783
2844
  6 Dec 2017
2784
-
2785
- Version:
2786
- 1.0
2787
-
2845
+
2788
2846
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2789
2847
  </file>
2790
2848
  */
@@ -2815,10 +2873,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2815
2873
 
2816
2874
  Created:
2817
2875
  12 Dec 2017
2818
-
2819
- Version:
2820
- 1.0
2821
-
2876
+
2822
2877
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2823
2878
  </file>
2824
2879
  */
@@ -2854,9 +2909,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2854
2909
  Created:
2855
2910
  12 Dec 2017
2856
2911
 
2857
- Version:
2858
- 1.0
2859
-
2860
2912
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2861
2913
  </file>
2862
2914
  */
@@ -2900,9 +2952,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2900
2952
  Created:
2901
2953
  4 Jul 2018
2902
2954
 
2903
- Version:
2904
- 1.0
2905
-
2906
2955
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2907
2956
  </file>
2908
2957
  */
@@ -2930,9 +2979,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2930
2979
  Created:
2931
2980
  4 Jul 2018
2932
2981
 
2933
- Version:
2934
- 1.0
2935
-
2936
2982
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2937
2983
  </file>
2938
2984
  */
@@ -2995,9 +3041,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2995
3041
  Created:
2996
3042
  9 May 2020
2997
3043
 
2998
- Version:
2999
- 1.0
3000
-
3001
3044
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3002
3045
  </file>
3003
3046
  */
@@ -3220,32 +3263,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3220
3263
  Anatoly Osovitny
3221
3264
 
3222
3265
  Created:
3223
- 16 Jun 2022
3266
+ 2 Aug 2022
3224
3267
 
3225
3268
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3226
3269
  </file>
3227
- */
3228
- class EmailsApiService extends BaseApiService {
3229
- constructor(http) {
3230
- super(http);
3231
- this.http = http;
3232
- this.baseUrl = consts.emailsApiPath;
3233
- }
3234
- sendContactUs(captcha, name, email, topic, subject, message, success, error) {
3235
- return this.post('sendContactUs', { captcha, name, email, topic, subject, message }).subscribe(data => {
3236
- if (success)
3237
- success(data);
3238
- }, e => {
3239
- if (error)
3240
- error(e);
3241
- });
3242
- }
3243
- }
3244
- EmailsApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: EmailsApiService, deps: [{ token: i1$3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
3245
- EmailsApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: EmailsApiService });
3246
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: EmailsApiService, decorators: [{
3247
- type: Injectable
3248
- }], ctorParameters: function () { return [{ type: i1$3.HttpClient }]; } });
3270
+ */
3249
3271
 
3250
3272
  /*
3251
3273
  <file>
@@ -3259,9 +3281,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3259
3281
  Created:
3260
3282
  7 Dec 2017
3261
3283
 
3262
- Version:
3263
- 1.0
3264
-
3265
3284
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3266
3285
  </file>
3267
3286
  */
@@ -3318,9 +3337,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3318
3337
  Anatoly Osovitny
3319
3338
 
3320
3339
  Created:
3321
- 29 June 2020
3340
+ 02 Aug 2022
3322
3341
 
3323
- Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3342
+ Copyright (c) 2017-2022 Osovitny Inc. All rights reserved.
3324
3343
  </file>
3325
3344
  */
3326
3345
  class ContactUsForm extends BaseEditComponent {
@@ -3464,32 +3483,149 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3464
3483
  Anatoly Osovitny
3465
3484
 
3466
3485
  Created:
3467
- 26 Jun 2020
3486
+ 2 Aug 2022
3487
+
3488
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3489
+ </file>
3490
+ */
3491
+
3492
+ /*
3493
+ <file>
3494
+ Project:
3495
+ @osovitny/anatoly
3496
+
3497
+ Authors:
3498
+ Vadim Osovitny
3499
+ Anatoly Osovitny
3468
3500
 
3469
- Version:
3470
- 1.0
3501
+ Created:
3502
+ 2 Aug 2022
3471
3503
 
3472
3504
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3473
3505
  </file>
3506
+ */
3507
+
3508
+ /*
3509
+ <file>
3510
+ Project:
3511
+ @osovitny/anatoly
3512
+
3513
+ Authors:
3514
+ Vadim Osovitny
3515
+ Anatoly Osovitny
3516
+
3517
+ Created:
3518
+ 02 Aug 2022
3519
+
3520
+ Copyright (c) 2017-2022 Osovitny Inc. All rights reserved.
3521
+ </file>
3474
3522
  */
3475
- class ReplaceTextPipe {
3476
- transform(inputData, search, replacement) {
3477
- if (inputData) {
3478
- return inputData.replace(new RegExp(search, "g"), replacement);
3523
+ class AddressComponent extends BaseEditComponent {
3524
+ constructor(fb, api) {
3525
+ super();
3526
+ this.fb = fb;
3527
+ this.api = api;
3528
+ this.formGroupGenerated = false;
3529
+ this.countryData = [];
3530
+ this.usStateData = [];
3531
+ this.currentCountry = 'US';
3532
+ this.currentUSState = 'NY';
3533
+ //Inputs
3534
+ this.title = 'Address';
3535
+ this.isTitleVisible = true;
3536
+ //Outputs
3537
+ this.change = new EventEmitter();
3538
+ }
3539
+ get address() {
3540
+ return this._address;
3541
+ }
3542
+ set address(value) {
3543
+ this._address = value;
3544
+ if (value) {
3545
+ this.init();
3546
+ }
3547
+ }
3548
+ ngOnInit() {
3549
+ this.api.getCountriesJsonFile(data => {
3550
+ this.countryData = data;
3551
+ });
3552
+ this.api.getUSStatesJsonFile(data => {
3553
+ this.usStateData = data;
3554
+ });
3555
+ this.createFormGroup();
3556
+ this.init();
3557
+ }
3558
+ createFormGroup() {
3559
+ let isRequired = Convert.stringToBoolean(this.isRequired);
3560
+ if (isRequired) {
3561
+ this.formGroup.addControl('street', this.fb.control('', [Validators.required])),
3562
+ this.formGroup.addControl('street2', this.fb.control('', [])),
3563
+ this.formGroup.addControl('city', this.fb.control('', [Validators.required])),
3564
+ this.formGroup.addControl('stateOrRegion', this.fb.control(this.currentUSState, [Validators.required])),
3565
+ this.formGroup.addControl('country', this.fb.control(this.currentCountry, [Validators.required])),
3566
+ this.formGroup.addControl('zipcode', this.fb.control('', [Validators.required]));
3479
3567
  }
3480
3568
  else {
3481
- return inputData;
3569
+ this.formGroup.addControl('street', this.fb.control('', [])),
3570
+ this.formGroup.addControl('street2', this.fb.control('', [])),
3571
+ this.formGroup.addControl('city', this.fb.control('', [])),
3572
+ this.formGroup.addControl('stateOrRegion', this.fb.control(this.currentUSState, [])),
3573
+ this.formGroup.addControl('country', this.fb.control(this.currentCountry, [])),
3574
+ this.formGroup.addControl('zipcode', this.fb.control('', []));
3575
+ }
3576
+ this.formGroupGenerated = true;
3577
+ }
3578
+ init() {
3579
+ if (!this.formGroupGenerated) {
3580
+ return;
3482
3581
  }
3582
+ if (this._address !== undefined) {
3583
+ let address = JSON.parse(this._address);
3584
+ this.setFormValue('street', address.street);
3585
+ this.setFormValue('street2', address.street2);
3586
+ this.setFormValue('city', address.city);
3587
+ this.setFormValue('stateOrRegion', address.stateOrRegion);
3588
+ this.setFormValue('zipcode', address.zipcode);
3589
+ this.setFormValue('country', address.country);
3590
+ }
3591
+ }
3592
+ getAddress() {
3593
+ const data = {
3594
+ street: this.getFormValue('street') || null,
3595
+ street2: this.getFormValue('street2') || null,
3596
+ city: this.getFormValue('city') || null,
3597
+ stateOrRegion: this.getFormValue('stateOrRegion') || null,
3598
+ zipcode: this.getFormValue('zipcode') || null,
3599
+ country: this.getFormValue('country') || null
3600
+ };
3601
+ return JSON.stringify(data);
3602
+ }
3603
+ //Events
3604
+ onCountryChange(event) {
3605
+ let country = event.target.value;
3606
+ this.change.emit(country);
3607
+ }
3608
+ onUSStateChange(event) {
3609
+ let usState = event.target.value;
3610
+ this.change.emit(usState);
3483
3611
  }
3484
3612
  }
3485
- ReplaceTextPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ReplaceTextPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3486
- ReplaceTextPipepipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: ReplaceTextPipe, name: "replaceText" });
3487
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ReplaceTextPipe, decorators: [{
3488
- type: Pipe,
3489
- args: [{
3490
- name: "replaceText",
3491
- }]
3492
- }] });
3613
+ AddressComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AddressComponent, deps: [{ token: i1$6.FormBuilder }, { token: CoreApiService }], target: i0.ɵɵFactoryTarget.Component });
3614
+ AddressComponentcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: AddressComponent, selector: "anatoly-forms-address", inputs: { title: "title", isTitleVisible: "isTitleVisible", isRequired: "isRequired", address: "address" }, outputs: { change: "change" }, usesInheritance: true, ngImport: i0, template: "<anatoly-card [class]=\"'card-primary card-outline'\">\r\n <anatoly-card-header *ngIf='isTitleVisible' [title]='title'></anatoly-card-header>\r\n <anatoly-card-body>\r\n <div [formGroup]='formGroup' class='row'>\r\n <div [ngClass]=\"{'has-error': isControlInvalid('street')}\" class='form-group col-12'>\r\n <label class='col-form-label required'>Street Address</label>\r\n <input class='form-control '\r\n formControlName='street'\r\n placeholder='Street Address'\r\n type='text'>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='street'\r\n controlTitle='street'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n <div [ngClass]=\"{'has-error': isControlInvalid('street2')}\" class='form-group col-12'>\r\n <input class='form-control'\r\n formControlName='street2'\r\n placeholder='Apartment, suite, unit, building, floor, etc.'\r\n type='text'>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='street2'\r\n controlTitle='street2'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n <div [ngClass]=\"{'has-error': isControlInvalid('city')}\" class='form-group col-3'>\r\n <label class='col-form-label required'>City</label>\r\n <input class='form-control'\r\n formControlName='city'\r\n placeholder=' City'\r\n type='text'>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='city'\r\n controlTitle='City'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n <div *ngIf=\"formGroup.value.country == 'US'\" [ngClass]=\"{'has-error': isControlInvalid('stateOrRegion')}\"\r\n class='form-group col-3'>\r\n <label class='col-form-label required'>State</label>\r\n <select (change)='onUSStateChange($event)' class='form-control' formControlName='stateOrRegion'>\r\n <option *ngFor='let state of usStateData' [value]='state.code'>{{state.name}}</option>\r\n </select>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='stateOrRegion'\r\n controlTitle='State'>\r\n </anatoly-item-validation-summary>\r\n </div> \r\n\r\n <div [ngClass]=\"{'has-error': isControlInvalid('zipcode')}\" class='form-group col-3'>\r\n <label class='col-form-label required'>zipcode</label>\r\n <input class='form-control'\r\n formControlName='zipcode'\r\n placeholder='zipcode'\r\n type='text'>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='zipcode'\r\n controlTitle='zipcode'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n <div [ngClass]=\"{'has-error': isControlInvalid('country')}\" class='form-group col-3'>\r\n <label class='col-form-label required'>Country</label>\r\n <select (change)='onCountryChange($event)' class='form-control'\r\n data-placeholder='Select a Country'\r\n formControlName='country'>\r\n <option *ngFor='let country of countryData' [value]='country.code'>{{country.name}}</option>\r\n </select>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='country'\r\n controlTitle='Country'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n </div>\r\n </anatoly-card-body>\r\n</anatoly-card>\r\n", dependencies: [{ kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: CardComponent, selector: "anatoly-card", inputs: ["class"] }, { kind: "component", type: CardHeaderComponent, selector: "anatoly-card-header", inputs: ["class", "title"] }, { kind: "component", type: CardBodyComponent, selector: "anatoly-card-body", inputs: ["class", "styles"] }, { kind: "directive", type: NativeElementDirective, selector: "[formControl], [formControlName]" }, { kind: "component", type: ItemValidationSummaryComponent, selector: "anatoly-item-validation-summary", inputs: ["controlName", "controlTitle"] }] });
3615
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AddressComponent, decorators: [{
3616
+ type: Component,
3617
+ args: [{ selector: 'anatoly-forms-address', template: "<anatoly-card [class]=\"'card-primary card-outline'\">\r\n <anatoly-card-header *ngIf='isTitleVisible' [title]='title'></anatoly-card-header>\r\n <anatoly-card-body>\r\n <div [formGroup]='formGroup' class='row'>\r\n <div [ngClass]=\"{'has-error': isControlInvalid('street')}\" class='form-group col-12'>\r\n <label class='col-form-label required'>Street Address</label>\r\n <input class='form-control '\r\n formControlName='street'\r\n placeholder='Street Address'\r\n type='text'>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='street'\r\n controlTitle='street'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n <div [ngClass]=\"{'has-error': isControlInvalid('street2')}\" class='form-group col-12'>\r\n <input class='form-control'\r\n formControlName='street2'\r\n placeholder='Apartment, suite, unit, building, floor, etc.'\r\n type='text'>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='street2'\r\n controlTitle='street2'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n <div [ngClass]=\"{'has-error': isControlInvalid('city')}\" class='form-group col-3'>\r\n <label class='col-form-label required'>City</label>\r\n <input class='form-control'\r\n formControlName='city'\r\n placeholder=' City'\r\n type='text'>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='city'\r\n controlTitle='City'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n <div *ngIf=\"formGroup.value.country == 'US'\" [ngClass]=\"{'has-error': isControlInvalid('stateOrRegion')}\"\r\n class='form-group col-3'>\r\n <label class='col-form-label required'>State</label>\r\n <select (change)='onUSStateChange($event)' class='form-control' formControlName='stateOrRegion'>\r\n <option *ngFor='let state of usStateData' [value]='state.code'>{{state.name}}</option>\r\n </select>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='stateOrRegion'\r\n controlTitle='State'>\r\n </anatoly-item-validation-summary>\r\n </div> \r\n\r\n <div [ngClass]=\"{'has-error': isControlInvalid('zipcode')}\" class='form-group col-3'>\r\n <label class='col-form-label required'>zipcode</label>\r\n <input class='form-control'\r\n formControlName='zipcode'\r\n placeholder='zipcode'\r\n type='text'>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='zipcode'\r\n controlTitle='zipcode'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n <div [ngClass]=\"{'has-error': isControlInvalid('country')}\" class='form-group col-3'>\r\n <label class='col-form-label required'>Country</label>\r\n <select (change)='onCountryChange($event)' class='form-control'\r\n data-placeholder='Select a Country'\r\n formControlName='country'>\r\n <option *ngFor='let country of countryData' [value]='country.code'>{{country.name}}</option>\r\n </select>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='country'\r\n controlTitle='Country'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n </div>\r\n </anatoly-card-body>\r\n</anatoly-card>\r\n" }]
3618
+ }], ctorParameters: function () { return [{ type: i1$6.FormBuilder }, { type: CoreApiService }]; }, propDecorators: { title: [{
3619
+ type: Input
3620
+ }], isTitleVisible: [{
3621
+ type: Input
3622
+ }], isRequired: [{
3623
+ type: Input
3624
+ }], address: [{
3625
+ type: Input
3626
+ }], change: [{
3627
+ type: Output
3628
+ }] } });
3493
3629
 
3494
3630
  /*
3495
3631
  <file>
@@ -3501,10 +3637,221 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3501
3637
  Anatoly Osovitny
3502
3638
 
3503
3639
  Created:
3504
- 26 Jun 2020
3640
+ 02 Aug 2022
3505
3641
 
3506
- Version:
3507
- 1.0
3642
+ Copyright (c) 2017-2022 Osovitny Inc. All rights reserved.
3643
+ </file>
3644
+ */
3645
+ class CompanyComponent extends BaseEditComponent {
3646
+ constructor(fb) {
3647
+ super();
3648
+ this.fb = fb;
3649
+ this.formGroupGenerated = false;
3650
+ //Inputs
3651
+ this.title = 'Company / Organization';
3652
+ this.isTitleVisible = true;
3653
+ }
3654
+ get company() {
3655
+ return this._company;
3656
+ }
3657
+ set company(value) {
3658
+ this._company = value;
3659
+ if (value) {
3660
+ this.init();
3661
+ }
3662
+ }
3663
+ ngOnInit() {
3664
+ this.createFormGroup();
3665
+ this.init();
3666
+ }
3667
+ createFormGroup() {
3668
+ this.formGroup = this.fb.group({
3669
+ name: new FormControl('', []),
3670
+ phone: new FormControl('', []),
3671
+ email: new FormControl('', []),
3672
+ websiteUrl: new FormControl('', []),
3673
+ });
3674
+ this.formGroupGenerated = true;
3675
+ }
3676
+ init() {
3677
+ if (!this.formGroupGenerated) {
3678
+ return;
3679
+ }
3680
+ if (this._company !== undefined) {
3681
+ let company = JSON.parse(this._company);
3682
+ this.setFormValue('name', company.name);
3683
+ this.setFormValue('phone', company.phone);
3684
+ this.setFormValue('email', company.email);
3685
+ this.setFormValue('websiteUrl', company.websiteUrl);
3686
+ }
3687
+ }
3688
+ getCompany() {
3689
+ const data = {
3690
+ name: this.getFormValue('name') || null,
3691
+ phone: this.getFormValue('phone') || null,
3692
+ email: this.getFormValue('email') || null,
3693
+ websiteUrl: this.getFormValue('websiteUrl') || null
3694
+ };
3695
+ return JSON.stringify(data);
3696
+ }
3697
+ }
3698
+ CompanyComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CompanyComponent, deps: [{ token: i1$6.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
3699
+ CompanyComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: CompanyComponent, selector: "anatoly-forms-company", inputs: { title: "title", isTitleVisible: "isTitleVisible", company: "company" }, usesInheritance: true, ngImport: i0, template: "<anatoly-card [class]=\"'card-primary card-outline'\">\r\n <anatoly-card-header *ngIf='isTitleVisible' [title]='title'></anatoly-card-header>\r\n <anatoly-card-body>\r\n <div [formGroup]='formGroup' class='row'>\r\n <div class='form-group col-6' [ngClass]=\"{'has-error': isControlInvalid('name') }\">\r\n <label class='col-form-label'>Name</label>\r\n <input type='text' class='form-control' formControlName='name' placeholder='Company Name'>\r\n <anatoly-item-validation-summary controlName='name'\r\n controlTitle='name'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div class='form-group col-6' [ngClass]=\"{'has-error': isControlInvalid('phone') }\">\r\n <label class='col-form-label'>Phone</label>\r\n <input type='tel' class='form-control' formControlName='phone' placeholder='Office Phone'>\r\n <anatoly-item-validation-summary controlName='phone'\r\n controlTitle='phone'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div class='form-group col-6' [ngClass]=\"{'has-error': isControlInvalid('email') }\">\r\n <label class='col-form-label'>Email</label>\r\n <input type='email' class='form-control' formControlName='email' placeholder='email'>\r\n <anatoly-item-validation-summary controlName='email'\r\n controlTitle='email'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div class='form-group col-6' [ngClass]=\"{'has-error': isControlInvalid('websiteUrl') }\">\r\n <label class='col-form-label'>Website Url</label>\r\n <input type='url' placeholder='https://example.com' pattern='https://.*' size='30'\r\n class='form-control' formControlName='websiteUrl'>\r\n <anatoly-item-validation-summary controlName='websiteUrl'\r\n controlTitle='websiteUrl'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n </div>\r\n </anatoly-card-body>\r\n</anatoly-card>\r\n", dependencies: [{ kind: "directive", type: i1$5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$6.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1$6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: CardComponent, selector: "anatoly-card", inputs: ["class"] }, { kind: "component", type: CardHeaderComponent, selector: "anatoly-card-header", inputs: ["class", "title"] }, { kind: "component", type: CardBodyComponent, selector: "anatoly-card-body", inputs: ["class", "styles"] }, { kind: "directive", type: NativeElementDirective, selector: "[formControl], [formControlName]" }, { kind: "component", type: ItemValidationSummaryComponent, selector: "anatoly-item-validation-summary", inputs: ["controlName", "controlTitle"] }] });
3700
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CompanyComponent, decorators: [{
3701
+ type: Component,
3702
+ args: [{ selector: 'anatoly-forms-company', template: "<anatoly-card [class]=\"'card-primary card-outline'\">\r\n <anatoly-card-header *ngIf='isTitleVisible' [title]='title'></anatoly-card-header>\r\n <anatoly-card-body>\r\n <div [formGroup]='formGroup' class='row'>\r\n <div class='form-group col-6' [ngClass]=\"{'has-error': isControlInvalid('name') }\">\r\n <label class='col-form-label'>Name</label>\r\n <input type='text' class='form-control' formControlName='name' placeholder='Company Name'>\r\n <anatoly-item-validation-summary controlName='name'\r\n controlTitle='name'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div class='form-group col-6' [ngClass]=\"{'has-error': isControlInvalid('phone') }\">\r\n <label class='col-form-label'>Phone</label>\r\n <input type='tel' class='form-control' formControlName='phone' placeholder='Office Phone'>\r\n <anatoly-item-validation-summary controlName='phone'\r\n controlTitle='phone'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div class='form-group col-6' [ngClass]=\"{'has-error': isControlInvalid('email') }\">\r\n <label class='col-form-label'>Email</label>\r\n <input type='email' class='form-control' formControlName='email' placeholder='email'>\r\n <anatoly-item-validation-summary controlName='email'\r\n controlTitle='email'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div class='form-group col-6' [ngClass]=\"{'has-error': isControlInvalid('websiteUrl') }\">\r\n <label class='col-form-label'>Website Url</label>\r\n <input type='url' placeholder='https://example.com' pattern='https://.*' size='30'\r\n class='form-control' formControlName='websiteUrl'>\r\n <anatoly-item-validation-summary controlName='websiteUrl'\r\n controlTitle='websiteUrl'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n </div>\r\n </anatoly-card-body>\r\n</anatoly-card>\r\n" }]
3703
+ }], ctorParameters: function () { return [{ type: i1$6.FormBuilder }]; }, propDecorators: { title: [{
3704
+ type: Input
3705
+ }], isTitleVisible: [{
3706
+ type: Input
3707
+ }], company: [{
3708
+ type: Input
3709
+ }] } });
3710
+
3711
+ /*
3712
+ <file>
3713
+ Project:
3714
+ @osovitny/anatoly
3715
+
3716
+ Authors:
3717
+ Vadim Osovitny
3718
+ Anatoly Osovitny
3719
+
3720
+ Created:
3721
+ 02 Aug 2022
3722
+
3723
+ Copyright (c) 2017-2022 Osovitny Inc. All rights reserved.
3724
+ </file>
3725
+ */
3726
+ class UrlSlugComponent extends BaseEditComponent {
3727
+ constructor() {
3728
+ super();
3729
+ //Inputs
3730
+ this.title = 'Permalink';
3731
+ this.isTitleVisible = true;
3732
+ }
3733
+ ngOnInit() {
3734
+ this.setWatchers();
3735
+ }
3736
+ setWatchers() {
3737
+ this.formGroup.get(this.watchedControlName).valueChanges.subscribe(val => {
3738
+ this.generateUrlSlug();
3739
+ });
3740
+ }
3741
+ generateUrlSlug() {
3742
+ let name = this.getFormValue(this.watchedControlName);
3743
+ let slugedText = Utils.slugify(name);
3744
+ this.setFormValue(this.controlName, slugedText);
3745
+ }
3746
+ }
3747
+ UrlSlugComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UrlSlugComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3748
+ UrlSlugComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: UrlSlugComponent, selector: "anatoly-forms-urlslug", inputs: { title: "title", isTitleVisible: "isTitleVisible", controlName: "controlName", controlTitle: "controlTitle", class: "class", watchedControlName: "watchedControlName", urlPrefix: "urlPrefix" }, usesInheritance: true, ngImport: i0, template: "<div [formGroup]='formGroup' class=\"{'has-error': isControlInvalid(controlName)} form-group {{class}}\">\r\n <label *ngIf='isTitleVisible' class='col-form-label'>{{ title }} <strong>{{ urlPrefix }} </strong></label>\r\n <input [formControlName]='controlName' type='text' placeholder='Type url slug here' class='form-control' />\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n [controlName]='controlName'\r\n [controlTitle]='controlTitle'>\r\n </anatoly-item-validation-summary>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: NativeElementDirective, selector: "[formControl], [formControlName]" }, { kind: "component", type: ItemValidationSummaryComponent, selector: "anatoly-item-validation-summary", inputs: ["controlName", "controlTitle"] }] });
3749
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UrlSlugComponent, decorators: [{
3750
+ type: Component,
3751
+ args: [{ selector: 'anatoly-forms-urlslug', template: "<div [formGroup]='formGroup' class=\"{'has-error': isControlInvalid(controlName)} form-group {{class}}\">\r\n <label *ngIf='isTitleVisible' class='col-form-label'>{{ title }} <strong>{{ urlPrefix }} </strong></label>\r\n <input [formControlName]='controlName' type='text' placeholder='Type url slug here' class='form-control' />\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n [controlName]='controlName'\r\n [controlTitle]='controlTitle'>\r\n </anatoly-item-validation-summary>\r\n</div>\r\n" }]
3752
+ }], ctorParameters: function () { return []; }, propDecorators: { title: [{
3753
+ type: Input
3754
+ }], isTitleVisible: [{
3755
+ type: Input
3756
+ }], controlName: [{
3757
+ type: Input
3758
+ }], controlTitle: [{
3759
+ type: Input
3760
+ }], class: [{
3761
+ type: Input
3762
+ }], watchedControlName: [{
3763
+ type: Input
3764
+ }], urlPrefix: [{
3765
+ type: Input
3766
+ }] } });
3767
+
3768
+ /*
3769
+ <file>
3770
+ Project:
3771
+ @osovitny/anatoly
3772
+
3773
+ Authors:
3774
+ Vadim Osovitny
3775
+ Anatoly Osovitny
3776
+
3777
+ Created:
3778
+ 02 Aug 2022
3779
+
3780
+ Copyright (c) 2017-2022 Osovitny Inc. All rights reserved.
3781
+ </file>
3782
+ */
3783
+ class TimezoneDropdownlist extends BaseEditComponent {
3784
+ constructor(api, appContext) {
3785
+ super();
3786
+ this.api = api;
3787
+ this.appContext = appContext;
3788
+ //Inputs
3789
+ this.title = 'Timezone';
3790
+ this.isTitleVisible = true;
3791
+ this.controlName = 'timezone';
3792
+ }
3793
+ ngOnInit() {
3794
+ this.setValues();
3795
+ }
3796
+ setValues() {
3797
+ this.api.getTimezonesJsonFile(data => {
3798
+ this.timezoneListItems = data.reverse();
3799
+ });
3800
+ try {
3801
+ let timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
3802
+ this.setFormValue(this.controlName, timeZone);
3803
+ }
3804
+ catch {
3805
+ }
3806
+ let context = this.appContext.current;
3807
+ let timeZone = context?.account?.timezone;
3808
+ if (timeZone) {
3809
+ this.setFormValue(this.controlName, timeZone);
3810
+ }
3811
+ }
3812
+ }
3813
+ TimezoneDropdownlist.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TimezoneDropdownlist, deps: [{ token: CoreApiService }, { token: AppContextService }], target: i0.ɵɵFactoryTarget.Component });
3814
+ TimezoneDropdownlist.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: TimezoneDropdownlist, selector: "anatoly-forms-timezone-dropdownlist", inputs: { title: "title", isTitleVisible: "isTitleVisible", controlName: "controlName", controlTitle: "controlTitle" }, usesInheritance: true, ngImport: i0, template: "<div [formGroup]='formGroup' class='form-group'>\r\n <label *ngIf='isTitleVisible' class='col-form-label'>Timezone</label>\r\n <select [formControlName]='controlName' class='form-control'>\r\n <option *ngFor='let timezone of timezoneListItems'\r\n [value]='timezone.code'>\r\n ({{timezone.offset}}) {{timezone.name}}\r\n </option>\r\n </select>\r\n</div>\r\n", dependencies: [{ kind: "directive", type: i1$5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$6.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$6.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$6.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$6.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: NativeElementDirective, selector: "[formControl], [formControlName]" }] });
3815
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TimezoneDropdownlist, decorators: [{
3816
+ type: Component,
3817
+ args: [{ selector: 'anatoly-forms-timezone-dropdownlist', template: "<div [formGroup]='formGroup' class='form-group'>\r\n <label *ngIf='isTitleVisible' class='col-form-label'>Timezone</label>\r\n <select [formControlName]='controlName' class='form-control'>\r\n <option *ngFor='let timezone of timezoneListItems'\r\n [value]='timezone.code'>\r\n ({{timezone.offset}}) {{timezone.name}}\r\n </option>\r\n </select>\r\n</div>\r\n" }]
3818
+ }], ctorParameters: function () { return [{ type: CoreApiService }, { type: AppContextService }]; }, propDecorators: { title: [{
3819
+ type: Input
3820
+ }], isTitleVisible: [{
3821
+ type: Input
3822
+ }], controlName: [{
3823
+ type: Input
3824
+ }], controlTitle: [{
3825
+ type: Input
3826
+ }] } });
3827
+
3828
+ /*
3829
+ <file>
3830
+ Project:
3831
+ @osovitny/anatoly
3832
+
3833
+ Authors:
3834
+ Vadim Osovitny
3835
+ Anatoly Osovitny
3836
+
3837
+ Created:
3838
+ 2 Aug 2022
3839
+
3840
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3841
+ </file>
3842
+ */
3843
+
3844
+ /*
3845
+ <file>
3846
+ Project:
3847
+ @osovitny/anatoly
3848
+
3849
+ Authors:
3850
+ Vadim Osovitny
3851
+ Anatoly Osovitny
3852
+
3853
+ Created:
3854
+ 26 Jun 2020
3508
3855
 
3509
3856
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3510
3857
  </file>
@@ -3543,10 +3890,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3543
3890
  Anatoly Osovitny
3544
3891
 
3545
3892
  Created:
3546
- 27 Oct 2019
3893
+ 26 Jun 2020
3894
+
3895
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3896
+ </file>
3897
+ */
3898
+ class ReplaceTextPipe {
3899
+ transform(inputData, search, replacement) {
3900
+ if (inputData) {
3901
+ return inputData.replace(new RegExp(search, "g"), replacement);
3902
+ }
3903
+ else {
3904
+ return inputData;
3905
+ }
3906
+ }
3907
+ }
3908
+ ReplaceTextPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ReplaceTextPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3909
+ ReplaceTextPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: ReplaceTextPipe, name: "replaceText" });
3910
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ReplaceTextPipe, decorators: [{
3911
+ type: Pipe,
3912
+ args: [{
3913
+ name: "replaceText",
3914
+ }]
3915
+ }] });
3916
+
3917
+ /*
3918
+ <file>
3919
+ Project:
3920
+ @osovitny/anatoly
3547
3921
 
3548
- Version:
3549
- 1.0
3922
+ Authors:
3923
+ Vadim Osovitny
3924
+ Anatoly Osovitny
3925
+
3926
+ Created:
3927
+ 27 Oct 2019
3550
3928
 
3551
3929
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3552
3930
  </file>
@@ -3566,6 +3944,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3566
3944
  args: [{ name: 'safeHtml' }]
3567
3945
  }], ctorParameters: function () { return [{ type: i1$4.DomSanitizer }]; } });
3568
3946
 
3947
+ /*
3948
+ <file>
3949
+ Project:
3950
+ @osovitny/anatoly
3951
+
3952
+ Authors:
3953
+ Vadim Osovitny
3954
+ Anatoly Osovitny
3955
+
3956
+ Created:
3957
+ 2 Aug 2022
3958
+
3959
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3960
+ </file>
3961
+ */
3962
+
3963
+ /*
3964
+ <file>
3965
+ Project:
3966
+ @osovitny/anatoly
3967
+
3968
+ Authors:
3969
+ Vadim Osovitny
3970
+ Anatoly Osovitny
3971
+
3972
+ Created:
3973
+ 2 Aug 2022
3974
+
3975
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3976
+ </file>
3977
+ */
3978
+
3569
3979
  /*
3570
3980
  <file>
3571
3981
  Project:
@@ -3646,6 +4056,7 @@ class AnatolyDataModule {
3646
4056
  AnatolyDataModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AnatolyDataModule, deps: [{ token: AnatolyDataModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule });
3647
4057
  AnatolyDataModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: AnatolyDataModule, imports: [CommonModule] });
3648
4058
  AnatolyDataModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AnatolyDataModule, providers: [
4059
+ CoreApiService,
3649
4060
  BillingApiService,
3650
4061
  EmailsApiService
3651
4062
  ], imports: [CommonModule] });
@@ -3656,6 +4067,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3656
4067
  CommonModule
3657
4068
  ],
3658
4069
  providers: [
4070
+ CoreApiService,
3659
4071
  BillingApiService,
3660
4072
  EmailsApiService
3661
4073
  ]
@@ -3707,6 +4119,10 @@ AnatolyUIModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version
3707
4119
  //Directives
3708
4120
  NativeElementDirective,
3709
4121
  //Forms
4122
+ AddressComponent,
4123
+ CompanyComponent,
4124
+ UrlSlugComponent,
4125
+ TimezoneDropdownlist,
3710
4126
  ContactUsForm,
3711
4127
  //Dialogs
3712
4128
  ContactUsDialog,
@@ -3742,6 +4158,10 @@ AnatolyUIModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version
3742
4158
  //Directives
3743
4159
  NativeElementDirective,
3744
4160
  //Forms
4161
+ AddressComponent,
4162
+ CompanyComponent,
4163
+ UrlSlugComponent,
4164
+ TimezoneDropdownlist,
3745
4165
  ContactUsForm,
3746
4166
  //Dialogs
3747
4167
  ContactUsDialog,
@@ -3795,6 +4215,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3795
4215
  //Directives
3796
4216
  NativeElementDirective,
3797
4217
  //Forms
4218
+ AddressComponent,
4219
+ CompanyComponent,
4220
+ UrlSlugComponent,
4221
+ TimezoneDropdownlist,
3798
4222
  ContactUsForm,
3799
4223
  //Dialogs
3800
4224
  ContactUsDialog,
@@ -3828,6 +4252,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3828
4252
  //Directives
3829
4253
  NativeElementDirective,
3830
4254
  //Forms
4255
+ AddressComponent,
4256
+ CompanyComponent,
4257
+ UrlSlugComponent,
4258
+ TimezoneDropdownlist,
3831
4259
  ContactUsForm,
3832
4260
  //Dialogs
3833
4261
  ContactUsDialog,
@@ -3850,5 +4278,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3850
4278
  * Generated bundle index. Do not edit.
3851
4279
  */
3852
4280
 
3853
- export { Alerts, AnatolyCoreModule, AnatolyDataModule, AnatolyHttpInterceptor, AnatolyUIModule, AppContextService, AppCoreSettings, BaseApiService, BaseComponent, BaseDialog, BaseEditComponent, BaseGoService, BaseGridEditService, BaseGridReadService, BaseHtmlEditorComponent, BillingApiService, BuyAccessButtonComponent, CardBodyComponent, CardComponent, CardFooterComponent, CardHeaderComponent, ContactUsDialog, ContactUsForm, ContextInitState, Convert, DefaultEditorOptions, DigitalMarketingService, FileSizePipe, FormValidationSummaryComponent, FormsHtmlEditorComponent, FroalaEditorModuleWithProviders, FroalaViewModuleWithProviders, GlobalErrorHandler, GoogleAnalyticsService, Guid, HtmlEditorComponent, IdleService, InjectorInstance, ItemValidationSummaryComponent, LoadingComponent, LoadingService, LocalStorageService, LocalizationInjectorInstance, LocalizationModule, LocalizationService, LocalizationSettingsModule, LocalizePipe, LoggingService, NativeElementDirective, NodataComponent, NotificationService, NotificationsApiService, PageSpinnerComponent, ReplaceTextPipe, SafeHtmlPipe, SessionStorageService, SignInButtonComponent, SignOutButtonComponent, SignUpButtonComponent, Subs, SubscribePlanButtonComponent, TranslateModuleAtRoot, UpgradePlanButtonComponent, Urls, Utils, ValidationSummaryComponent, customTranslateLoaderFactory, localizationInitializerFactory, throwIfAlreadyLoaded };
4281
+ export { AddressComponent, Alerts, AnatolyCoreModule, AnatolyDataModule, AnatolyHttpInterceptor, AnatolyUIModule, AppContextService, AppCoreSettings, BaseApiService, BaseComponent, BaseDialog, BaseEditComponent, BaseGoService, BaseGridEditService, BaseGridReadService, BaseHtmlEditorComponent, BillingApiService, BuyAccessButtonComponent, CardBodyComponent, CardComponent, CardFooterComponent, CardHeaderComponent, CompanyComponent, ContactUsDialog, ContactUsForm, ContextInitState, Convert, CoreApiService, DefaultEditorOptions, DigitalMarketingService, EmailsApiService, FileSizePipe, FormValidationSummaryComponent, FormsHtmlEditorComponent, FroalaEditorModuleWithProviders, FroalaViewModuleWithProviders, GlobalErrorHandler, GoogleAnalyticsService, Guid, HtmlEditorComponent, IdleService, InjectorInstance, ItemValidationSummaryComponent, LoadingComponent, LoadingService, LocalStorageService, LocalizationInjectorInstance, LocalizationModule, LocalizationService, LocalizationSettingsModule, LocalizePipe, LoggingService, NativeElementDirective, NodataComponent, NotificationService, NotificationsApiService, PageSpinnerComponent, ReplaceTextPipe, SafeHtmlPipe, SessionStorageService, SignInButtonComponent, SignOutButtonComponent, SignUpButtonComponent, Subs, SubscribePlanButtonComponent, TimezoneDropdownlist, TranslateModuleAtRoot, UpgradePlanButtonComponent, UrlSlugComponent, Urls, Utils, ValidationSummaryComponent, customTranslateLoaderFactory, localizationInitializerFactory, throwIfAlreadyLoaded };
3854
4282
  //# sourceMappingURL=osovitny-anatoly.mjs.map