@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
  */
@@ -972,9 +974,6 @@ class Guid {
972
974
  Created:
973
975
  2 Jun 2020
974
976
 
975
- Version:
976
- 1.0
977
-
978
977
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
979
978
  </file>
980
979
  */
@@ -1191,9 +1190,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1191
1190
  Created:
1192
1191
  13 Nov 2017
1193
1192
 
1194
- Version:
1195
- 1.0
1196
-
1197
1193
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1198
1194
  </file>
1199
1195
  */
@@ -1237,9 +1233,6 @@ class BaseApiService {
1237
1233
  getExternalTextFile(url) {
1238
1234
  return this.http.get(url);
1239
1235
  }
1240
- getExternalJsonFile(url) {
1241
- return this.http.get(url);
1242
- }
1243
1236
  getJsonFile(fileName) {
1244
1237
  const jsonsUrl = AppCoreSettings.jsonsUrl;
1245
1238
  const jsonVersion = AppCoreSettings.jsonVersion;
@@ -1254,6 +1247,20 @@ class BaseApiService {
1254
1247
  }
1255
1248
  return this.http.get(url).pipe(map(res => res));
1256
1249
  }
1250
+ getExternalJsonFile(libname, fileName) {
1251
+ const externalUrl = AppCoreSettings.externalUrl;
1252
+ const jsonVersion = AppCoreSettings.jsonVersion;
1253
+ const isCDNEnabled = AppCoreSettings.isCDNEnabled;
1254
+ const cdnSasToken = AppCoreSettings.cdnSasToken;
1255
+ let url = "";
1256
+ if (isCDNEnabled) {
1257
+ url = externalUrl + "/" + libname + "/jsons/" + fileName + cdnSasToken;
1258
+ }
1259
+ else {
1260
+ url = externalUrl + "/" + libname + "/jsons/" + fileName + '?' + jsonVersion;
1261
+ }
1262
+ return this.http.get(url).pipe(map(res => res));
1263
+ }
1257
1264
  }
1258
1265
  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 });
1259
1266
  BaseApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: BaseApiService });
@@ -1272,10 +1279,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1272
1279
 
1273
1280
  Created:
1274
1281
  26 Jun 2020
1275
-
1276
- Version:
1277
- 1.0
1278
-
1282
+
1279
1283
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1280
1284
  </file>
1281
1285
  */
@@ -1365,15 +1369,22 @@ class AppContextService extends BaseApiService {
1365
1369
  if (!context) {
1366
1370
  return;
1367
1371
  }
1368
- let lu = context.lastRequested;
1369
- if (lu) {
1372
+ let shouldBeUpdated = false;
1373
+ let lr = context.lastRequested;
1374
+ if (lr) {
1370
1375
  let now = new Date();
1371
1376
  let lastRequested = new Date(context.lastRequested);
1372
1377
  let in2Mins = new Date(lastRequested.getFullYear(), lastRequested.getMonth(), lastRequested.getDate(), lastRequested.getHours(), lastRequested.getMinutes() + 2, 0, 0);
1373
1378
  if (in2Mins.getTime() < now.getTime()) {
1374
- this.updateCurrent();
1379
+ shouldBeUpdated = true;
1375
1380
  }
1376
1381
  }
1382
+ else {
1383
+ shouldBeUpdated = true;
1384
+ }
1385
+ if (shouldBeUpdated) {
1386
+ this.updateCurrent();
1387
+ }
1377
1388
  }
1378
1389
  dataReceived(data) {
1379
1390
  this.current = data;
@@ -1422,7 +1433,6 @@ class AppContextService extends BaseApiService {
1422
1433
  return ContextInitState.isUserAdmin;
1423
1434
  }
1424
1435
  //Properties
1425
- //current
1426
1436
  get current() {
1427
1437
  this.updateCurrentIfExpired();
1428
1438
  return this.getCurrentFromSession();
@@ -1449,9 +1459,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1449
1459
  Created:
1450
1460
  26 Jun 2020
1451
1461
 
1452
- Version:
1453
- 1.0
1454
-
1455
1462
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1456
1463
  </file>
1457
1464
  */
@@ -1518,11 +1525,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1518
1525
  Anatoly Osovitny
1519
1526
 
1520
1527
  Created:
1521
- 29 Щсе 2020
1522
-
1523
- Version:
1524
- 1.0
1525
-
1528
+ 29 Nov 2020
1529
+
1526
1530
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1527
1531
  </file>
1528
1532
  */
@@ -1589,9 +1593,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1589
1593
  Created:
1590
1594
  29 Nov 2020
1591
1595
 
1592
- Version:
1593
- 1.0
1594
-
1595
1596
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1596
1597
  </file>
1597
1598
  */
@@ -1749,11 +1750,24 @@ class Utils {
1749
1750
  Anatoly Osovitny
1750
1751
 
1751
1752
  Created:
1752
- 29 Apr 2018
1753
+ 2 Aug 2022
1753
1754
 
1754
- Version:
1755
- 1.0
1755
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1756
+ </file>
1757
+ */
1758
+
1759
+ /*
1760
+ <file>
1761
+ Project:
1762
+ @osovitny/anatoly
1763
+
1764
+ Authors:
1765
+ Vadim Osovitny
1766
+ Anatoly Osovitny
1756
1767
 
1768
+ Created:
1769
+ 29 Apr 2018
1770
+
1757
1771
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1758
1772
  </file>
1759
1773
  */
@@ -1805,10 +1819,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1805
1819
 
1806
1820
  Created:
1807
1821
  29 Apr 2018
1808
-
1809
- Version:
1810
- 1.0
1811
-
1822
+
1812
1823
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1813
1824
  </file>
1814
1825
  */
@@ -1876,18 +1887,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1876
1887
  Created:
1877
1888
  30 April 2020
1878
1889
 
1879
- Version:
1880
- 1.0
1881
-
1882
1890
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1883
1891
  </file>
1884
1892
  */
1885
- const consts = {
1893
+ const Consts = {
1894
+ //core
1895
+ coreApiPath: 'api/core',
1886
1896
  //billing
1887
1897
  billingApiPath: 'api/billing',
1888
1898
  //emails
1889
1899
  emailsApiPath: 'api/emails',
1890
- //notifications
1900
+ //notifications
1891
1901
  notificationsApiPath: 'api/notifications'
1892
1902
  };
1893
1903
 
@@ -1903,9 +1913,6 @@ const consts = {
1903
1913
  Created:
1904
1914
  30 April 2020
1905
1915
 
1906
- Version:
1907
- 1.0
1908
-
1909
1916
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1910
1917
  </file>
1911
1918
  */
@@ -1913,7 +1920,7 @@ class NotificationsApiService extends BaseApiService {
1913
1920
  constructor(http) {
1914
1921
  super(http);
1915
1922
  this.http = http;
1916
- this.baseUrl = consts.notificationsApiPath;
1923
+ this.baseUrl = Consts.notificationsApiPath;
1917
1924
  }
1918
1925
  retrieveNotifications() {
1919
1926
  return this.get('retrieveNotifications');
@@ -1940,9 +1947,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1940
1947
  Created:
1941
1948
  12 Nov 2017
1942
1949
 
1943
- Version:
1944
- 1.0
1945
-
1946
1950
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
1947
1951
  </file>
1948
1952
  */
@@ -1950,7 +1954,7 @@ class BillingApiService extends BaseApiService {
1950
1954
  constructor(http) {
1951
1955
  super(http);
1952
1956
  this.http = http;
1953
- this.baseUrl = consts.billingApiPath;
1957
+ this.baseUrl = Consts.billingApiPath;
1954
1958
  }
1955
1959
  requestNewSubscription(requestedPlan, success, error) {
1956
1960
  this.postQS("requestNewSubscription", { requestedPlan: requestedPlan }).subscribe((data) => {
@@ -1996,11 +2000,98 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
1996
2000
  Anatoly Osovitny
1997
2001
 
1998
2002
  Created:
1999
- 28 Aug 2018
2003
+ 16 Jun 2022
2000
2004
 
2001
- Version:
2002
- 1.0
2005
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2006
+ </file>
2007
+ */
2008
+ class EmailsApiService extends BaseApiService {
2009
+ constructor(http) {
2010
+ super(http);
2011
+ this.http = http;
2012
+ this.baseUrl = Consts.emailsApiPath;
2013
+ }
2014
+ sendContactUs(captcha, name, email, topic, subject, message, success, error) {
2015
+ return this.post('sendContactUs', { captcha, name, email, topic, subject, message }).subscribe(data => {
2016
+ if (success)
2017
+ success(data);
2018
+ }, e => {
2019
+ if (error)
2020
+ error(e);
2021
+ });
2022
+ }
2023
+ }
2024
+ 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 });
2025
+ EmailsApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: EmailsApiService });
2026
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: EmailsApiService, decorators: [{
2027
+ type: Injectable
2028
+ }], ctorParameters: function () { return [{ type: i1$3.HttpClient }]; } });
2029
+
2030
+ /*
2031
+ <file>
2032
+ Project:
2033
+ @osovitny/anatoly
2034
+
2035
+ Authors:
2036
+ Vadim Osovitny
2037
+ Anatoly Osovitny
2038
+
2039
+ Created:
2040
+ 02 Aug 2022
2003
2041
 
2042
+ Copyright (c) 2017-2022 Osovitny Inc. All rights reserved.
2043
+ </file>
2044
+ */
2045
+ class CoreApiService extends BaseApiService {
2046
+ constructor(http) {
2047
+ super(http);
2048
+ this.http = http;
2049
+ this.baseUrl = Consts.coreApiPath;
2050
+ }
2051
+ getTimezonesJsonFile(done) {
2052
+ this.getExternalJsonFile('anatoly', 'timezones.json').subscribe(data => done(data));
2053
+ }
2054
+ getUSStatesJsonFile(done) {
2055
+ this.getExternalJsonFile('anatoly', 'usStates.json').subscribe(data => done(data));
2056
+ }
2057
+ getCountriesJsonFile(done) {
2058
+ this.getExternalJsonFile('anatoly', 'countries.json').subscribe(data => done(data));
2059
+ }
2060
+ }
2061
+ 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 });
2062
+ CoreApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CoreApiService });
2063
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CoreApiService, decorators: [{
2064
+ type: Injectable
2065
+ }], ctorParameters: function () { return [{ type: i1$3.HttpClient }]; } });
2066
+
2067
+ /*
2068
+ <file>
2069
+ Project:
2070
+ @osovitny/anatoly
2071
+
2072
+ Authors:
2073
+ Vadim Osovitny
2074
+ Anatoly Osovitny
2075
+
2076
+ Created:
2077
+ 2 Aug 2022
2078
+
2079
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2080
+ </file>
2081
+ */
2082
+
2083
+ /*
2084
+ <file>
2085
+ Project:
2086
+ @osovitny/anatoly
2087
+
2088
+ Authors:
2089
+ Vadim Osovitny
2090
+ Anatoly Osovitny
2091
+
2092
+ Created:
2093
+ 28 Aug 2018
2094
+
2004
2095
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2005
2096
  </file>
2006
2097
  */
@@ -2039,9 +2130,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2039
2130
  Created:
2040
2131
  20 Nov 2017
2041
2132
 
2042
- Version:
2043
- 1.0
2044
-
2045
2133
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2046
2134
  </file>
2047
2135
  */
@@ -2176,10 +2264,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2176
2264
 
2177
2265
  Created:
2178
2266
  24 Jan 2022
2179
-
2180
- Version:
2181
- 1.0
2182
-
2267
+
2183
2268
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2184
2269
  </file>
2185
2270
  */
@@ -2221,9 +2306,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2221
2306
  Created:
2222
2307
  4 Jul 2018
2223
2308
 
2224
- Version:
2225
- 1.0
2226
-
2227
2309
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2228
2310
  </file>
2229
2311
  */
@@ -2311,9 +2393,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2311
2393
  Created:
2312
2394
  12 Nov 2017
2313
2395
 
2314
- Version:
2315
- 1.0
2316
-
2317
2396
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2318
2397
  </file>
2319
2398
  */
@@ -2357,10 +2436,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2357
2436
 
2358
2437
  Created:
2359
2438
  1 Jun 2018
2360
-
2361
- Version:
2362
- 1.0
2363
-
2439
+
2364
2440
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2365
2441
  </file>
2366
2442
  */
@@ -2414,9 +2490,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2414
2490
  Created:
2415
2491
  12 Dec 2017
2416
2492
 
2417
- Version:
2418
- 1.0
2419
-
2420
2493
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2421
2494
  </file>
2422
2495
  */
@@ -2503,9 +2576,6 @@ const DefaultEditorOptions = {
2503
2576
  Created:
2504
2577
  12 Dec 2017
2505
2578
 
2506
- Version:
2507
- 1.0
2508
-
2509
2579
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2510
2580
  </file>
2511
2581
  */
@@ -2607,9 +2677,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2607
2677
  Created:
2608
2678
  28 Jun 2020
2609
2679
 
2610
- Version:
2611
- 1.0
2612
-
2613
2680
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2614
2681
  </file>
2615
2682
  */
@@ -2644,9 +2711,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2644
2711
  Created:
2645
2712
  8 Dec 2017
2646
2713
 
2647
- Version:
2648
- 1.0
2649
-
2650
2714
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2651
2715
  </file>
2652
2716
  */
@@ -2767,10 +2831,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2767
2831
 
2768
2832
  Created:
2769
2833
  6 Dec 2017
2770
-
2771
- Version:
2772
- 1.0
2773
-
2834
+
2774
2835
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2775
2836
  </file>
2776
2837
  */
@@ -2801,10 +2862,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2801
2862
 
2802
2863
  Created:
2803
2864
  12 Dec 2017
2804
-
2805
- Version:
2806
- 1.0
2807
-
2865
+
2808
2866
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2809
2867
  </file>
2810
2868
  */
@@ -2840,9 +2898,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2840
2898
  Created:
2841
2899
  12 Dec 2017
2842
2900
 
2843
- Version:
2844
- 1.0
2845
-
2846
2901
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2847
2902
  </file>
2848
2903
  */
@@ -2886,9 +2941,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2886
2941
  Created:
2887
2942
  4 Jul 2018
2888
2943
 
2889
- Version:
2890
- 1.0
2891
-
2892
2944
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2893
2945
  </file>
2894
2946
  */
@@ -2916,9 +2968,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2916
2968
  Created:
2917
2969
  4 Jul 2018
2918
2970
 
2919
- Version:
2920
- 1.0
2921
-
2922
2971
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2923
2972
  </file>
2924
2973
  */
@@ -2981,9 +3030,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
2981
3030
  Created:
2982
3031
  9 May 2020
2983
3032
 
2984
- Version:
2985
- 1.0
2986
-
2987
3033
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
2988
3034
  </file>
2989
3035
  */
@@ -3208,32 +3254,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3208
3254
  Anatoly Osovitny
3209
3255
 
3210
3256
  Created:
3211
- 16 Jun 2022
3257
+ 2 Aug 2022
3212
3258
 
3213
3259
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3214
3260
  </file>
3215
- */
3216
- class EmailsApiService extends BaseApiService {
3217
- constructor(http) {
3218
- super(http);
3219
- this.http = http;
3220
- this.baseUrl = consts.emailsApiPath;
3221
- }
3222
- sendContactUs(captcha, name, email, topic, subject, message, success, error) {
3223
- return this.post('sendContactUs', { captcha, name, email, topic, subject, message }).subscribe(data => {
3224
- if (success)
3225
- success(data);
3226
- }, e => {
3227
- if (error)
3228
- error(e);
3229
- });
3230
- }
3231
- }
3232
- 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 });
3233
- EmailsApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: EmailsApiService });
3234
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: EmailsApiService, decorators: [{
3235
- type: Injectable
3236
- }], ctorParameters: function () { return [{ type: i1$3.HttpClient }]; } });
3261
+ */
3237
3262
 
3238
3263
  /*
3239
3264
  <file>
@@ -3247,9 +3272,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3247
3272
  Created:
3248
3273
  7 Dec 2017
3249
3274
 
3250
- Version:
3251
- 1.0
3252
-
3253
3275
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3254
3276
  </file>
3255
3277
  */
@@ -3306,9 +3328,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3306
3328
  Anatoly Osovitny
3307
3329
 
3308
3330
  Created:
3309
- 29 June 2020
3331
+ 02 Aug 2022
3310
3332
 
3311
- Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3333
+ Copyright (c) 2017-2022 Osovitny Inc. All rights reserved.
3312
3334
  </file>
3313
3335
  */
3314
3336
  class ContactUsForm extends BaseEditComponent {
@@ -3453,32 +3475,149 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3453
3475
  Anatoly Osovitny
3454
3476
 
3455
3477
  Created:
3456
- 26 Jun 2020
3478
+ 2 Aug 2022
3479
+
3480
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3481
+ </file>
3482
+ */
3483
+
3484
+ /*
3485
+ <file>
3486
+ Project:
3487
+ @osovitny/anatoly
3457
3488
 
3458
- Version:
3459
- 1.0
3489
+ Authors:
3490
+ Vadim Osovitny
3491
+ Anatoly Osovitny
3492
+
3493
+ Created:
3494
+ 2 Aug 2022
3460
3495
 
3461
3496
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3462
3497
  </file>
3498
+ */
3499
+
3500
+ /*
3501
+ <file>
3502
+ Project:
3503
+ @osovitny/anatoly
3504
+
3505
+ Authors:
3506
+ Vadim Osovitny
3507
+ Anatoly Osovitny
3508
+
3509
+ Created:
3510
+ 02 Aug 2022
3511
+
3512
+ Copyright (c) 2017-2022 Osovitny Inc. All rights reserved.
3513
+ </file>
3463
3514
  */
3464
- class ReplaceTextPipe {
3465
- transform(inputData, search, replacement) {
3466
- if (inputData) {
3467
- return inputData.replace(new RegExp(search, "g"), replacement);
3515
+ class AddressComponent extends BaseEditComponent {
3516
+ constructor(fb, api) {
3517
+ super();
3518
+ this.fb = fb;
3519
+ this.api = api;
3520
+ this.formGroupGenerated = false;
3521
+ this.countryData = [];
3522
+ this.usStateData = [];
3523
+ this.currentCountry = 'US';
3524
+ this.currentUSState = 'NY';
3525
+ //Inputs
3526
+ this.title = 'Address';
3527
+ this.isTitleVisible = true;
3528
+ //Outputs
3529
+ this.change = new EventEmitter();
3530
+ }
3531
+ get address() {
3532
+ return this._address;
3533
+ }
3534
+ set address(value) {
3535
+ this._address = value;
3536
+ if (value) {
3537
+ this.init();
3538
+ }
3539
+ }
3540
+ ngOnInit() {
3541
+ this.api.getCountriesJsonFile(data => {
3542
+ this.countryData = data;
3543
+ });
3544
+ this.api.getUSStatesJsonFile(data => {
3545
+ this.usStateData = data;
3546
+ });
3547
+ this.createFormGroup();
3548
+ this.init();
3549
+ }
3550
+ createFormGroup() {
3551
+ let isRequired = Convert.stringToBoolean(this.isRequired);
3552
+ if (isRequired) {
3553
+ this.formGroup.addControl('street', this.fb.control('', [Validators.required])),
3554
+ this.formGroup.addControl('street2', this.fb.control('', [])),
3555
+ this.formGroup.addControl('city', this.fb.control('', [Validators.required])),
3556
+ this.formGroup.addControl('stateOrRegion', this.fb.control(this.currentUSState, [Validators.required])),
3557
+ this.formGroup.addControl('country', this.fb.control(this.currentCountry, [Validators.required])),
3558
+ this.formGroup.addControl('zipcode', this.fb.control('', [Validators.required]));
3468
3559
  }
3469
3560
  else {
3470
- return inputData;
3561
+ this.formGroup.addControl('street', this.fb.control('', [])),
3562
+ this.formGroup.addControl('street2', this.fb.control('', [])),
3563
+ this.formGroup.addControl('city', this.fb.control('', [])),
3564
+ this.formGroup.addControl('stateOrRegion', this.fb.control(this.currentUSState, [])),
3565
+ this.formGroup.addControl('country', this.fb.control(this.currentCountry, [])),
3566
+ this.formGroup.addControl('zipcode', this.fb.control('', []));
3567
+ }
3568
+ this.formGroupGenerated = true;
3569
+ }
3570
+ init() {
3571
+ if (!this.formGroupGenerated) {
3572
+ return;
3573
+ }
3574
+ if (this._address !== undefined) {
3575
+ let address = JSON.parse(this._address);
3576
+ this.setFormValue('street', address.street);
3577
+ this.setFormValue('street2', address.street2);
3578
+ this.setFormValue('city', address.city);
3579
+ this.setFormValue('stateOrRegion', address.stateOrRegion);
3580
+ this.setFormValue('zipcode', address.zipcode);
3581
+ this.setFormValue('country', address.country);
3471
3582
  }
3472
3583
  }
3584
+ getAddress() {
3585
+ const data = {
3586
+ street: this.getFormValue('street') || null,
3587
+ street2: this.getFormValue('street2') || null,
3588
+ city: this.getFormValue('city') || null,
3589
+ stateOrRegion: this.getFormValue('stateOrRegion') || null,
3590
+ zipcode: this.getFormValue('zipcode') || null,
3591
+ country: this.getFormValue('country') || null
3592
+ };
3593
+ return JSON.stringify(data);
3594
+ }
3595
+ //Events
3596
+ onCountryChange(event) {
3597
+ let country = event.target.value;
3598
+ this.change.emit(country);
3599
+ }
3600
+ onUSStateChange(event) {
3601
+ let usState = event.target.value;
3602
+ this.change.emit(usState);
3603
+ }
3473
3604
  }
3474
- ReplaceTextPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ReplaceTextPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3475
- ReplaceTextPipepipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: ReplaceTextPipe, name: "replaceText" });
3476
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ReplaceTextPipe, decorators: [{
3477
- type: Pipe,
3478
- args: [{
3479
- name: "replaceText",
3480
- }]
3481
- }] });
3605
+ 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 });
3606
+ 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"] }] });
3607
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AddressComponent, decorators: [{
3608
+ type: Component,
3609
+ 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" }]
3610
+ }], ctorParameters: function () { return [{ type: i1$6.FormBuilder }, { type: CoreApiService }]; }, propDecorators: { title: [{
3611
+ type: Input
3612
+ }], isTitleVisible: [{
3613
+ type: Input
3614
+ }], isRequired: [{
3615
+ type: Input
3616
+ }], address: [{
3617
+ type: Input
3618
+ }], change: [{
3619
+ type: Output
3620
+ }] } });
3482
3621
 
3483
3622
  /*
3484
3623
  <file>
@@ -3490,10 +3629,222 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3490
3629
  Anatoly Osovitny
3491
3630
 
3492
3631
  Created:
3493
- 26 Jun 2020
3632
+ 02 Aug 2022
3494
3633
 
3495
- Version:
3496
- 1.0
3634
+ Copyright (c) 2017-2022 Osovitny Inc. All rights reserved.
3635
+ </file>
3636
+ */
3637
+ class CompanyComponent extends BaseEditComponent {
3638
+ constructor(fb) {
3639
+ super();
3640
+ this.fb = fb;
3641
+ this.formGroupGenerated = false;
3642
+ //Inputs
3643
+ this.title = 'Company / Organization';
3644
+ this.isTitleVisible = true;
3645
+ }
3646
+ get company() {
3647
+ return this._company;
3648
+ }
3649
+ set company(value) {
3650
+ this._company = value;
3651
+ if (value) {
3652
+ this.init();
3653
+ }
3654
+ }
3655
+ ngOnInit() {
3656
+ this.createFormGroup();
3657
+ this.init();
3658
+ }
3659
+ createFormGroup() {
3660
+ this.formGroup = this.fb.group({
3661
+ name: new FormControl('', []),
3662
+ phone: new FormControl('', []),
3663
+ email: new FormControl('', []),
3664
+ websiteUrl: new FormControl('', []),
3665
+ });
3666
+ this.formGroupGenerated = true;
3667
+ }
3668
+ init() {
3669
+ if (!this.formGroupGenerated) {
3670
+ return;
3671
+ }
3672
+ if (this._company !== undefined) {
3673
+ let company = JSON.parse(this._company);
3674
+ this.setFormValue('name', company.name);
3675
+ this.setFormValue('phone', company.phone);
3676
+ this.setFormValue('email', company.email);
3677
+ this.setFormValue('websiteUrl', company.websiteUrl);
3678
+ }
3679
+ }
3680
+ getCompany() {
3681
+ const data = {
3682
+ name: this.getFormValue('name') || null,
3683
+ phone: this.getFormValue('phone') || null,
3684
+ email: this.getFormValue('email') || null,
3685
+ websiteUrl: this.getFormValue('websiteUrl') || null
3686
+ };
3687
+ return JSON.stringify(data);
3688
+ }
3689
+ }
3690
+ 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 });
3691
+ 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"] }] });
3692
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: CompanyComponent, decorators: [{
3693
+ type: Component,
3694
+ 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" }]
3695
+ }], ctorParameters: function () { return [{ type: i1$6.FormBuilder }]; }, propDecorators: { title: [{
3696
+ type: Input
3697
+ }], isTitleVisible: [{
3698
+ type: Input
3699
+ }], company: [{
3700
+ type: Input
3701
+ }] } });
3702
+
3703
+ /*
3704
+ <file>
3705
+ Project:
3706
+ @osovitny/anatoly
3707
+
3708
+ Authors:
3709
+ Vadim Osovitny
3710
+ Anatoly Osovitny
3711
+
3712
+ Created:
3713
+ 02 Aug 2022
3714
+
3715
+ Copyright (c) 2017-2022 Osovitny Inc. All rights reserved.
3716
+ </file>
3717
+ */
3718
+ class UrlSlugComponent extends BaseEditComponent {
3719
+ constructor() {
3720
+ super();
3721
+ //Inputs
3722
+ this.title = 'Permalink';
3723
+ this.isTitleVisible = true;
3724
+ }
3725
+ ngOnInit() {
3726
+ this.setWatchers();
3727
+ }
3728
+ setWatchers() {
3729
+ this.formGroup.get(this.watchedControlName).valueChanges.subscribe(val => {
3730
+ this.generateUrlSlug();
3731
+ });
3732
+ }
3733
+ generateUrlSlug() {
3734
+ let name = this.getFormValue(this.watchedControlName);
3735
+ let slugedText = Utils.slugify(name);
3736
+ this.setFormValue(this.controlName, slugedText);
3737
+ }
3738
+ }
3739
+ UrlSlugComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UrlSlugComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3740
+ 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"] }] });
3741
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: UrlSlugComponent, decorators: [{
3742
+ type: Component,
3743
+ 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" }]
3744
+ }], ctorParameters: function () { return []; }, propDecorators: { title: [{
3745
+ type: Input
3746
+ }], isTitleVisible: [{
3747
+ type: Input
3748
+ }], controlName: [{
3749
+ type: Input
3750
+ }], controlTitle: [{
3751
+ type: Input
3752
+ }], class: [{
3753
+ type: Input
3754
+ }], watchedControlName: [{
3755
+ type: Input
3756
+ }], urlPrefix: [{
3757
+ type: Input
3758
+ }] } });
3759
+
3760
+ /*
3761
+ <file>
3762
+ Project:
3763
+ @osovitny/anatoly
3764
+
3765
+ Authors:
3766
+ Vadim Osovitny
3767
+ Anatoly Osovitny
3768
+
3769
+ Created:
3770
+ 02 Aug 2022
3771
+
3772
+ Copyright (c) 2017-2022 Osovitny Inc. All rights reserved.
3773
+ </file>
3774
+ */
3775
+ class TimezoneDropdownlist extends BaseEditComponent {
3776
+ constructor(api, appContext) {
3777
+ super();
3778
+ this.api = api;
3779
+ this.appContext = appContext;
3780
+ //Inputs
3781
+ this.title = 'Timezone';
3782
+ this.isTitleVisible = true;
3783
+ this.controlName = 'timezone';
3784
+ }
3785
+ ngOnInit() {
3786
+ this.setValues();
3787
+ }
3788
+ setValues() {
3789
+ var _a;
3790
+ this.api.getTimezonesJsonFile(data => {
3791
+ this.timezoneListItems = data.reverse();
3792
+ });
3793
+ try {
3794
+ let timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
3795
+ this.setFormValue(this.controlName, timeZone);
3796
+ }
3797
+ catch (_b) {
3798
+ }
3799
+ let context = this.appContext.current;
3800
+ let timeZone = (_a = context === null || context === void 0 ? void 0 : context.account) === null || _a === void 0 ? void 0 : _a.timezone;
3801
+ if (timeZone) {
3802
+ this.setFormValue(this.controlName, timeZone);
3803
+ }
3804
+ }
3805
+ }
3806
+ 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 });
3807
+ 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]" }] });
3808
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: TimezoneDropdownlist, decorators: [{
3809
+ type: Component,
3810
+ 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" }]
3811
+ }], ctorParameters: function () { return [{ type: CoreApiService }, { type: AppContextService }]; }, propDecorators: { title: [{
3812
+ type: Input
3813
+ }], isTitleVisible: [{
3814
+ type: Input
3815
+ }], controlName: [{
3816
+ type: Input
3817
+ }], controlTitle: [{
3818
+ type: Input
3819
+ }] } });
3820
+
3821
+ /*
3822
+ <file>
3823
+ Project:
3824
+ @osovitny/anatoly
3825
+
3826
+ Authors:
3827
+ Vadim Osovitny
3828
+ Anatoly Osovitny
3829
+
3830
+ Created:
3831
+ 2 Aug 2022
3832
+
3833
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3834
+ </file>
3835
+ */
3836
+
3837
+ /*
3838
+ <file>
3839
+ Project:
3840
+ @osovitny/anatoly
3841
+
3842
+ Authors:
3843
+ Vadim Osovitny
3844
+ Anatoly Osovitny
3845
+
3846
+ Created:
3847
+ 26 Jun 2020
3497
3848
 
3498
3849
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3499
3850
  </file>
@@ -3532,10 +3883,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3532
3883
  Anatoly Osovitny
3533
3884
 
3534
3885
  Created:
3535
- 27 Oct 2019
3886
+ 26 Jun 2020
3887
+
3888
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3889
+ </file>
3890
+ */
3891
+ class ReplaceTextPipe {
3892
+ transform(inputData, search, replacement) {
3893
+ if (inputData) {
3894
+ return inputData.replace(new RegExp(search, "g"), replacement);
3895
+ }
3896
+ else {
3897
+ return inputData;
3898
+ }
3899
+ }
3900
+ }
3901
+ ReplaceTextPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ReplaceTextPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
3902
+ ReplaceTextPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: ReplaceTextPipe, name: "replaceText" });
3903
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ReplaceTextPipe, decorators: [{
3904
+ type: Pipe,
3905
+ args: [{
3906
+ name: "replaceText",
3907
+ }]
3908
+ }] });
3909
+
3910
+ /*
3911
+ <file>
3912
+ Project:
3913
+ @osovitny/anatoly
3536
3914
 
3537
- Version:
3538
- 1.0
3915
+ Authors:
3916
+ Vadim Osovitny
3917
+ Anatoly Osovitny
3918
+
3919
+ Created:
3920
+ 27 Oct 2019
3539
3921
 
3540
3922
  Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3541
3923
  </file>
@@ -3555,6 +3937,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3555
3937
  args: [{ name: 'safeHtml' }]
3556
3938
  }], ctorParameters: function () { return [{ type: i1$4.DomSanitizer }]; } });
3557
3939
 
3940
+ /*
3941
+ <file>
3942
+ Project:
3943
+ @osovitny/anatoly
3944
+
3945
+ Authors:
3946
+ Vadim Osovitny
3947
+ Anatoly Osovitny
3948
+
3949
+ Created:
3950
+ 2 Aug 2022
3951
+
3952
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3953
+ </file>
3954
+ */
3955
+
3956
+ /*
3957
+ <file>
3958
+ Project:
3959
+ @osovitny/anatoly
3960
+
3961
+ Authors:
3962
+ Vadim Osovitny
3963
+ Anatoly Osovitny
3964
+
3965
+ Created:
3966
+ 2 Aug 2022
3967
+
3968
+ Copyright (c) 2016-2022 Osovitny Inc. All rights reserved.
3969
+ </file>
3970
+ */
3971
+
3558
3972
  /*
3559
3973
  <file>
3560
3974
  Project:
@@ -3637,6 +4051,7 @@ class AnatolyDataModule {
3637
4051
  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 });
3638
4052
  AnatolyDataModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.6", ngImport: i0, type: AnatolyDataModule, imports: [CommonModule] });
3639
4053
  AnatolyDataModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: AnatolyDataModule, providers: [
4054
+ CoreApiService,
3640
4055
  BillingApiService,
3641
4056
  EmailsApiService
3642
4057
  ], imports: [CommonModule] });
@@ -3647,6 +4062,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3647
4062
  CommonModule
3648
4063
  ],
3649
4064
  providers: [
4065
+ CoreApiService,
3650
4066
  BillingApiService,
3651
4067
  EmailsApiService
3652
4068
  ]
@@ -3700,6 +4116,10 @@ AnatolyUIModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version
3700
4116
  //Directives
3701
4117
  NativeElementDirective,
3702
4118
  //Forms
4119
+ AddressComponent,
4120
+ CompanyComponent,
4121
+ UrlSlugComponent,
4122
+ TimezoneDropdownlist,
3703
4123
  ContactUsForm,
3704
4124
  //Dialogs
3705
4125
  ContactUsDialog,
@@ -3735,6 +4155,10 @@ AnatolyUIModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version
3735
4155
  //Directives
3736
4156
  NativeElementDirective,
3737
4157
  //Forms
4158
+ AddressComponent,
4159
+ CompanyComponent,
4160
+ UrlSlugComponent,
4161
+ TimezoneDropdownlist,
3738
4162
  ContactUsForm,
3739
4163
  //Dialogs
3740
4164
  ContactUsDialog,
@@ -3788,6 +4212,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3788
4212
  //Directives
3789
4213
  NativeElementDirective,
3790
4214
  //Forms
4215
+ AddressComponent,
4216
+ CompanyComponent,
4217
+ UrlSlugComponent,
4218
+ TimezoneDropdownlist,
3791
4219
  ContactUsForm,
3792
4220
  //Dialogs
3793
4221
  ContactUsDialog,
@@ -3821,6 +4249,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3821
4249
  //Directives
3822
4250
  NativeElementDirective,
3823
4251
  //Forms
4252
+ AddressComponent,
4253
+ CompanyComponent,
4254
+ UrlSlugComponent,
4255
+ TimezoneDropdownlist,
3824
4256
  ContactUsForm,
3825
4257
  //Dialogs
3826
4258
  ContactUsDialog,
@@ -3843,5 +4275,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
3843
4275
  * Generated bundle index. Do not edit.
3844
4276
  */
3845
4277
 
3846
- 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 };
4278
+ 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 };
3847
4279
  //# sourceMappingURL=osovitny-anatoly.mjs.map