@syncfusion/ej2-base 24.2.7 → 25.1.35

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 (65) hide show
  1. package/CHANGELOG.md +0 -36
  2. package/bin/syncfusion-license.js +1 -1
  3. package/dist/ej2-base.min.js +2 -2
  4. package/dist/ej2-base.umd.min.js +2 -2
  5. package/dist/ej2-base.umd.min.js.map +1 -1
  6. package/dist/es6/ej2-base.es2015.js +121 -52
  7. package/dist/es6/ej2-base.es2015.js.map +1 -1
  8. package/dist/es6/ej2-base.es5.js +114 -43
  9. package/dist/es6/ej2-base.es5.js.map +1 -1
  10. package/dist/global/ej2-base.min.js +2 -2
  11. package/dist/global/ej2-base.min.js.map +1 -1
  12. package/dist/global/index.d.ts +1 -1
  13. package/e2e/protractor.config.js +58 -1
  14. package/package.json +59 -8
  15. package/src/ajax.js +0 -1
  16. package/src/animation.d.ts +6 -6
  17. package/src/animation.js +6 -6
  18. package/src/base.d.ts +2 -1
  19. package/src/base.js +9 -7
  20. package/src/component.d.ts +9 -3
  21. package/src/component.js +33 -2
  22. package/src/draggable.d.ts +2 -0
  23. package/src/draggable.js +26 -10
  24. package/src/event-handler.js +2 -1
  25. package/src/intl/date-parser.js +1 -0
  26. package/src/intl/intl-base.js +0 -8
  27. package/src/intl/number-formatter.d.ts +3 -0
  28. package/src/intl/number-formatter.js +7 -7
  29. package/src/intl/number-parser.js +1 -0
  30. package/src/module-loader.d.ts +12 -0
  31. package/src/module-loader.js +11 -0
  32. package/src/notify-property-change.js +3 -2
  33. package/src/observer.js +2 -0
  34. package/src/sanitize-helper.js +5 -0
  35. package/src/template-engine.js +1 -0
  36. package/src/template.js +3 -2
  37. package/src/validate-lic.d.ts +1 -1
  38. package/src/validate-lic.js +7 -5
  39. package/styles/_bds-dark-definition.scss +15 -0
  40. package/styles/_bds-definition.scss +15 -0
  41. package/styles/bootstrap-dark.css +10 -1
  42. package/styles/bootstrap.css +10 -1
  43. package/styles/bootstrap4.css +10 -1
  44. package/styles/bootstrap5-dark.css +10 -1
  45. package/styles/bootstrap5.css +10 -1
  46. package/styles/definition/_bds-dark.scss +1178 -0
  47. package/styles/definition/_bds.scss +1458 -0
  48. package/styles/fabric-dark.css +10 -1
  49. package/styles/fabric.css +10 -1
  50. package/styles/fluent-dark.css +10 -1
  51. package/styles/fluent.css +10 -1
  52. package/styles/highcontrast-light.css +10 -1
  53. package/styles/highcontrast.css +10 -1
  54. package/styles/material-dark.css +10 -1
  55. package/styles/material.css +10 -1
  56. package/styles/material3-dark.css +10 -1
  57. package/styles/material3.css +10 -1
  58. package/styles/offline-theme/material-dark.css +10 -1
  59. package/styles/offline-theme/material.css +10 -1
  60. package/styles/offline-theme/tailwind-dark.css +10 -1
  61. package/styles/offline-theme/tailwind.css +10 -1
  62. package/styles/tailwind-dark.css +10 -1
  63. package/styles/tailwind.css +10 -1
  64. package/.github/PULL_REQUEST_TEMPLATE/Bug.md +0 -60
  65. package/.github/PULL_REQUEST_TEMPLATE/feature.md +0 -42
@@ -1548,6 +1548,7 @@ class NumberFormat {
1548
1548
  * @param {number} value ?
1549
1549
  * @param {base.GenericFormatOptions} fOptions ?
1550
1550
  * @param {CommonOptions} dOptions ?
1551
+ * @param {NumberFormatOptions} [option] ?
1551
1552
  * @returns {string} ?
1552
1553
  */
1553
1554
  static intNumberFormatter(value, fOptions, dOptions, option) {
@@ -1599,7 +1600,7 @@ class NumberFormat {
1599
1600
  fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper$1[4]]);
1600
1601
  }
1601
1602
  fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper$1[3]]);
1602
- fValue = curData.format === "#,###,,;(#,###,,)" ? this.customPivotFormat(parseInt(fValue)) : fValue;
1603
+ fValue = curData.format === '#,###,,;(#,###,,)' ? this.customPivotFormat(parseInt(fValue, 10)) : fValue;
1603
1604
  if (curData.useGrouping) {
1604
1605
  /* eslint-disable @typescript-eslint/no-explicit-any */
1605
1606
  fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper$1[3]] || '.', curData.groupData.secondary);
@@ -1671,6 +1672,7 @@ class NumberFormat {
1671
1672
  * @param {number} value ?
1672
1673
  * @param {number} min ?
1673
1674
  * @param {number} max ?
1675
+ * @param {NumberFormatOptions} [option] ?
1674
1676
  * @returns {string} ?
1675
1677
  */
1676
1678
  static processFraction(value, min, max, option) {
@@ -1722,16 +1724,18 @@ class NumberFormat {
1722
1724
  * Returns custom format for pivot table
1723
1725
  *
1724
1726
  * @param {number} value ?
1727
+ * @returns {string} ?
1725
1728
  */
1726
1729
  static customPivotFormat(value) {
1727
1730
  if (value >= 500000) {
1728
1731
  value /= 1000000;
1729
- const [integer, decimal] = value.toString().split(".");
1732
+ // eslint-disable-next-line
1733
+ const [integer, decimal] = value.toString().split('.');
1730
1734
  return decimal && +decimal.substring(0, 1) >= 5
1731
1735
  ? Math.ceil(value).toString()
1732
1736
  : Math.floor(value).toString();
1733
1737
  }
1734
- return "";
1738
+ return '';
1735
1739
  }
1736
1740
  }
1737
1741
 
@@ -2069,6 +2073,7 @@ class DateParser {
2069
2073
  // eslint-disable-next-line
2070
2074
  matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))
2071
2075
  ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;
2076
+ // eslint-disable-next-line
2072
2077
  matchString = ((prop !== 'month') && (prop === 'designator') && parseOptions.culture && parseOptions.culture.indexOf('en-') !== -1 && cultureOptions.indexOf(parseOptions.culture) === -1)
2073
2078
  ? matchString.toLowerCase() : matchString;
2074
2079
  // eslint-disable-next-line
@@ -2146,6 +2151,7 @@ class DateParser {
2146
2151
  }
2147
2152
 
2148
2153
  const regExp$1 = RegExp;
2154
+ // eslint-disable-next-line
2149
2155
  const parseRegex = new regExp$1('^([^0-9]*)' + '(([0-9,]*[0-9]+)(\.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');
2150
2156
  const groupRegex = /,/g;
2151
2157
  const keys = ['minusSign', 'infinity'];
@@ -2444,10 +2450,12 @@ class Observer {
2444
2450
  * @returns {void} ?
2445
2451
  */
2446
2452
  offIntlEvents() {
2447
- let eventsArr = this.boundedEvents['notifyExternalChange'];
2453
+ // eslint-disable-next-line
2454
+ const eventsArr = this.boundedEvents['notifyExternalChange'];
2448
2455
  if (eventsArr) {
2449
2456
  for (let i = 0; i < eventsArr.length; i++) {
2450
- let curContext = eventsArr[`${i}`].context;
2457
+ // eslint-disable-next-line
2458
+ const curContext = eventsArr[`${i}`].context;
2451
2459
  if (curContext && curContext.detectFunction && curContext.randomId && !curContext.isRendered) {
2452
2460
  this.off('notifyExternalChange', curContext.detectFunction, curContext.randomId);
2453
2461
  i--;
@@ -3534,7 +3542,6 @@ var IntlBase;
3534
3542
  const ret = {};
3535
3543
  const pattern = matches[1].toUpperCase();
3536
3544
  ret.isAccount = (pattern === 'A');
3537
- // eslint-disable-next-line
3538
3545
  ret.type = IntlBase.patternMatcher[pattern];
3539
3546
  if (skeleton.length > 1) {
3540
3547
  ret.fractionDigits = parseInt(matches[2], 10);
@@ -3622,7 +3629,6 @@ var IntlBase;
3622
3629
  const formatSplit = format.split(';');
3623
3630
  const data = ['pData', 'nData', 'zeroData'];
3624
3631
  for (let i = 0; i < formatSplit.length; i++) {
3625
- // eslint-disable-next-line
3626
3632
  options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);
3627
3633
  }
3628
3634
  if (isNullOrUndefined(options.nData)) {
@@ -3682,7 +3688,6 @@ var IntlBase;
3682
3688
  if (!isNullOrUndefined(numObject)) {
3683
3689
  const symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);
3684
3690
  if (cOptions.useGrouping) {
3685
- // eslint-disable-next-line
3686
3691
  cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];
3687
3692
  cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);
3688
3693
  }
@@ -3707,9 +3712,7 @@ var IntlBase;
3707
3712
  const part = parts[parseInt(i.toString(), 10)];
3708
3713
  const loc = part.indexOf(actual);
3709
3714
  if ((loc !== -1) && ((loc < part.indexOf('\'')) || (loc > part.lastIndexOf('\'')))) {
3710
- // eslint-disable-next-line
3711
3715
  options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);
3712
- // eslint-disable-next-line
3713
3716
  options[typeMapper[actual]] = true;
3714
3717
  options.type = options.isCurrency ? 'currency' : 'percent';
3715
3718
  break;
@@ -3748,7 +3751,6 @@ var IntlBase;
3748
3751
  let actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);
3749
3752
  if (isExcelFormat) {
3750
3753
  actualPattern = actualPattern.replace(patternRegex, (pattern) => {
3751
- // eslint-disable-next-line
3752
3754
  return patternMatch[pattern];
3753
3755
  });
3754
3756
  if (actualPattern.indexOf('z') !== -1) {
@@ -3781,10 +3783,8 @@ var IntlBase;
3781
3783
  * @param {any} option ?
3782
3784
  * @returns {any} ?
3783
3785
  */
3784
- // eslint-disable-next-line
3785
3786
  function processSymbol(actual, option) {
3786
3787
  if (actual.indexOf(',') !== -1) {
3787
- // eslint-disable-next-line
3788
3788
  let split = actual.split(',');
3789
3789
  actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +
3790
3790
  split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));
@@ -4081,7 +4081,6 @@ class Ajax {
4081
4081
  if (!isNullOrUndefined(this.onUploadProgress)) {
4082
4082
  this.httpRequest.upload.onprogress = this.onUploadProgress;
4083
4083
  }
4084
- // eslint-disable-next-line
4085
4084
  this.httpRequest.open(this.type, this.url, this.mode);
4086
4085
  // Set default headers
4087
4086
  if (!isNullOrUndefined(this.data) && this.contentType !== null) {
@@ -4696,7 +4695,8 @@ class EventHandler {
4696
4695
  // eslint-disable-next-line
4697
4696
  copyData = extend([], copyData, eventData);
4698
4697
  for (let i = 0; i < copyData.length; i++) {
4699
- element.removeEventListener(copyData[parseInt(i.toString(), 10)].name, copyData[parseInt(i.toString(), 10)].debounce);
4698
+ const parseValue = copyData[parseInt(i.toString(), 10)];
4699
+ element.removeEventListener(parseValue.name, parseValue.debounce);
4700
4700
  eventData.shift();
4701
4701
  }
4702
4702
  }
@@ -5436,12 +5436,13 @@ class Base {
5436
5436
  destroy() {
5437
5437
  // eslint-disable-next-line
5438
5438
  this.element.ej2_instances =
5439
- this.element.ej2_instances ? this.element.ej2_instances.filter((i) => {
5440
- if (proxyToRaw) {
5441
- return proxyToRaw(i) !== proxyToRaw(this);
5442
- }
5443
- return i !== this;
5444
- })
5439
+ this.element.ej2_instances ?
5440
+ this.element.ej2_instances.filter((i) => {
5441
+ if (proxyToRaw) {
5442
+ return proxyToRaw(i) !== proxyToRaw(this);
5443
+ }
5444
+ return i !== this;
5445
+ })
5445
5446
  : [];
5446
5447
  removeClass([this.element], ['e-' + this.getModuleName()]);
5447
5448
  if (this.element.ej2_instances.length === 0) {
@@ -5503,7 +5504,7 @@ function removeChildInstance(element) {
5503
5504
  }
5504
5505
  }
5505
5506
  let proxyToRaw;
5506
- let setProxyToRaw = (toRaw) => { proxyToRaw = toRaw; };
5507
+ const setProxyToRaw = (toRaw) => { proxyToRaw = toRaw; };
5507
5508
 
5508
5509
  /**
5509
5510
  * Returns the Class Object
@@ -5745,8 +5746,9 @@ function complexArrayDefinedCallback(dFunc, curKey, type, prop) {
5745
5746
  switch (dFunc) {
5746
5747
  case 'push':
5747
5748
  for (let i = 0; i < newValue.length; i++) {
5748
- Array.prototype[`${dFunc}`].apply(prop, [newValue[parseInt(i.toString(), 10)]]);
5749
- const model = getArrayModel(keyString + (prop.length - 1), newValue[parseInt(i.toString(), 10)], !this.controlParent, dFunc);
5749
+ const newValueParse = newValue[parseInt(i.toString(), 10)];
5750
+ Array.prototype[`${dFunc}`].apply(prop, [newValueParse]);
5751
+ const model = getArrayModel(keyString + (prop.length - 1), newValueParse, !this.controlParent, dFunc);
5750
5752
  this.serverDataBind(model, newValue[parseInt(i.toString(), 10)], false, dFunc);
5751
5753
  }
5752
5754
  break;
@@ -6513,16 +6515,16 @@ function setGlobalAnimation(value) {
6513
6515
  var GlobalAnimationMode;
6514
6516
  (function (GlobalAnimationMode) {
6515
6517
  /**
6516
- * Defines the global animation mode as Default. Animation is enabled or disabled based on the component's animation settings.
6517
- */
6518
+ * Defines the global animation mode as Default. Animation is enabled or disabled based on the component's animation settings.
6519
+ */
6518
6520
  GlobalAnimationMode["Default"] = "Default";
6519
6521
  /**
6520
- * Defines the global animation mode as Enable. Enables the animation for all components, regardless of the individual component's animation settings.
6521
- */
6522
+ * Defines the global animation mode as Enable. Enables the animation for all components, regardless of the individual component's animation settings.
6523
+ */
6522
6524
  GlobalAnimationMode["Enable"] = "Enable";
6523
6525
  /**
6524
- * Defines the global animation mode as Disable. Disables the animation for all components, regardless of the individual component's animation settings.
6525
- */
6526
+ * Defines the global animation mode as Disable. Disables the animation for all components, regardless of the individual component's animation settings.
6527
+ */
6526
6528
  GlobalAnimationMode["Disable"] = "Disable";
6527
6529
  })(GlobalAnimationMode || (GlobalAnimationMode = {}));
6528
6530
 
@@ -6584,6 +6586,16 @@ class ModuleLoader {
6584
6586
  }
6585
6587
  this.loadedModules = [];
6586
6588
  }
6589
+ /**
6590
+ * Returns the array of modules that are not loaded in the component library.
6591
+ *
6592
+ * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required
6593
+ * @returns {ModuleDeclaration[]} ?
6594
+ * @private
6595
+ */
6596
+ getNonInjectedModules(requiredModules) {
6597
+ return requiredModules.filter((module) => !this.isModuleLoaded(module.member));
6598
+ }
6587
6599
  /**
6588
6600
  * Removes all unused modules
6589
6601
  *
@@ -6802,7 +6814,7 @@ class ChildProperty {
6802
6814
  }
6803
6815
  }
6804
6816
 
6805
- let componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];
6817
+ const componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];
6806
6818
  const bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,
6807
6819
  111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,
6808
6820
  105, 100, 97, 116, 101, 100];
@@ -6816,7 +6828,7 @@ class LicenseValidator {
6816
6828
  constructor(key) {
6817
6829
  this.isValidated = false;
6818
6830
  this.isLicensed = true;
6819
- this.version = '24';
6831
+ this.version = '25';
6820
6832
  this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats|essentialstudio/i;
6821
6833
  this.errors = {
6822
6834
  noLicense: '<span>This application was built using a trial version of Syncfusion Essential Studio.' +
@@ -6869,11 +6881,13 @@ class LicenseValidator {
6869
6881
  }
6870
6882
  /**
6871
6883
  * To validate the provided license key.
6872
- */
6884
+ *
6885
+ * @returns {boolean} ?
6886
+ */
6873
6887
  validate() {
6874
- let contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,
6888
+ const contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,
6875
6889
  108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];
6876
- let URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,
6890
+ const URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,
6877
6891
  99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];
6878
6892
  if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {
6879
6893
  let validateMsg;
@@ -6907,7 +6921,7 @@ class LicenseValidator {
6907
6921
  }
6908
6922
  }
6909
6923
  else {
6910
- let licenseContent = getValue(convertToChar(contentKey), containerObject);
6924
+ const licenseContent = getValue(convertToChar(contentKey), containerObject);
6911
6925
  validateURL = getValue(convertToChar(URLKey), containerObject);
6912
6926
  if (licenseContent && licenseContent !== '') {
6913
6927
  validateMsg = licenseContent;
@@ -6917,7 +6931,7 @@ class LicenseValidator {
6917
6931
  }
6918
6932
  }
6919
6933
  if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {
6920
- accountURL = (validateURL && validateURL !== '') ? validateURL : "https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=MjQ=&utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information";
6934
+ accountURL = (validateURL && validateURL !== '') ? validateURL : 'https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=MjU=&utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information';
6921
6935
  const errorDiv = createElement('div', {
6922
6936
  innerHTML: `<img src='data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwXzE5OV80KSI+CjxwYXRoIGQ9Ik0xMiAyMUMxNi45NzA2IDIxIDIxIDE2Ljk3MDYgMjEgMTJDMjEgNy4wMjk0NCAxNi45NzA2IDMgMTIgM0M3LjAyOTQ0IDMgMyA3LjAyOTQ0IDMgMTJDMyAxNi45NzA2IDcuMDI5NDQgMjEgMTIgMjFaIiBzdHJva2U9IiM3MzczNzMiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMS4yNSAxMS4yNUgxMlYxNi41SDEyLjc1IiBmaWxsPSIjNjE2MDYzIi8+CjxwYXRoIGQ9Ik0xMS4yNSAxMS4yNUgxMlYxNi41SDEyLjc1IiBzdHJva2U9IiM3MzczNzMiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+CjxwYXRoIGQ9Ik0xMS44MTI1IDlDMTIuNDMzOCA5IDEyLjkzNzUgOC40OTYzMiAxMi45Mzc1IDcuODc1QzEyLjkzNzUgNy4yNTM2OCAxMi40MzM4IDYuNzUgMTEuODEyNSA2Ljc1QzExLjE5MTIgNi43NSAxMC42ODc1IDcuMjUzNjggMTAuNjg3NSA3Ljg3NUMxMC42ODc1IDguNDk2MzIgMTEuMTkxMiA5IDExLjgxMjUgOVoiIGZpbGw9IiM3MzczNzMiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xOTlfNCI+CjxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiLz4KPC9jbGlwUGF0aD4KPC9kZWZzPgo8L3N2Zz4K' style="top: 6px;
6923
6937
  position: absolute;
@@ -6997,7 +7011,7 @@ class LicenseValidator {
6997
7011
  const charKey = decodeStr[decodeStr.length - 1];
6998
7012
  const decryptedKey = [];
6999
7013
  for (let i = 0; i < decodeStr.length; i++) {
7000
- decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0) - charKey.charCodeAt(0);
7014
+ decryptedKey[`${i}`] = decodeStr[`${i}`].charCodeAt(0) - charKey.charCodeAt(0);
7001
7015
  }
7002
7016
  for (let i = 0; i < decryptedKey.length; i++) {
7003
7017
  buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);
@@ -7034,7 +7048,7 @@ let licenseValidator = new LicenseValidator();
7034
7048
  * Converts the given number to characters.
7035
7049
  *
7036
7050
  * @param {number} cArr - Specifies the license key as number.
7037
- * @returns {string}
7051
+ * @returns {string} ?
7038
7052
  */
7039
7053
  function convertToChar(cArr) {
7040
7054
  let ret = '';
@@ -7063,7 +7077,7 @@ const getVersion = () => {
7063
7077
  };
7064
7078
  // Method for create overlay over the sample
7065
7079
  const createLicenseOverlay = () => {
7066
- let bannerTemplate = `
7080
+ const bannerTemplate = `
7067
7081
  <div style="
7068
7082
  position: fixed;
7069
7083
  width: 100%;
@@ -7257,7 +7271,7 @@ let Component = class Component extends Base {
7257
7271
  // tslint:disable-next-line:no-function-constructor-with-string-args
7258
7272
  onIntlChange.on('notifyExternalChange', this.detectFunction, this, this.randomId);
7259
7273
  // Based on the considered control list we have count the instance
7260
- if (typeof window !== "undefined" && typeof document !== "undefined" && !validateLicense()) {
7274
+ if (typeof window !== 'undefined' && typeof document !== 'undefined' && !validateLicense()) {
7261
7275
  if (componentList.indexOf(this.getModuleName()) !== -1) {
7262
7276
  instancecount = instancecount + 1;
7263
7277
  if (instancecount > 5) {
@@ -7347,6 +7361,8 @@ let Component = class Component extends Base {
7347
7361
  }
7348
7362
  /**
7349
7363
  * Adding unload event to persist data when enable persistence true
7364
+ *
7365
+ * @returns {void}
7350
7366
  */
7351
7367
  attachUnloadEvent() {
7352
7368
  this.handleUnload = this.handleUnload.bind(this);
@@ -7354,12 +7370,16 @@ let Component = class Component extends Base {
7354
7370
  }
7355
7371
  /**
7356
7372
  * Handling unload event to persist data when enable persistence true
7373
+ *
7374
+ * @returns {void}
7357
7375
  */
7358
7376
  handleUnload() {
7359
7377
  this.setPersistData();
7360
7378
  }
7361
7379
  /**
7362
7380
  * Removing unload event to persist data when enable persistence true
7381
+ *
7382
+ * @returns {void}
7363
7383
  */
7364
7384
  detachUnloadEvent() {
7365
7385
  window.removeEventListener('unload', this.handleUnload);
@@ -7394,7 +7414,31 @@ let Component = class Component extends Base {
7394
7414
  }
7395
7415
  this.preRender();
7396
7416
  this.injectModules();
7397
- // Checked weather cases are valid or not. If control leads to more than five counts
7417
+ // Throw a warning for the required modules to be injected.
7418
+ const ignoredComponents = {
7419
+ schedule: 'all',
7420
+ diagram: 'all',
7421
+ PdfViewer: 'all',
7422
+ grid: ['logger'],
7423
+ richtexteditor: ['link', 'table', 'image', 'audio', 'video', 'formatPainter', 'emojiPicker', 'pasteCleanup', 'htmlEditor', 'toolbar'],
7424
+ treegrid: ['filter'],
7425
+ gantt: ['tooltip'],
7426
+ chart: ['Export', 'Zoom'],
7427
+ accumulationchart: ['Export']
7428
+ };
7429
+ const component = this.getModuleName();
7430
+ if (this.requiredModules && (!ignoredComponents[`${component}`] || ignoredComponents[`${component}`] !== 'all')) {
7431
+ const modulesRequired = this.requiredModules();
7432
+ for (const module of this.moduleLoader.getNonInjectedModules(modulesRequired)) {
7433
+ const moduleName = module.name ? module.name : module.member;
7434
+ if (ignoredComponents[`${component}`] && ignoredComponents[`${component}`].indexOf(module.member) !== -1) {
7435
+ continue;
7436
+ }
7437
+ const componentName = component.charAt(0).toUpperCase() + component.slice(1); // To capitalize the component name
7438
+ console.warn(`[WARNING] :: Module "${moduleName}" is not available in ${componentName} component! You either misspelled the module name or forgot to load it.`);
7439
+ }
7440
+ }
7441
+ // Checked weather cases are valid or not. If control leads to more than five counts
7398
7442
  if (!isvalid && !isBannerAdded) {
7399
7443
  createLicenseOverlay();
7400
7444
  isBannerAdded = true;
@@ -7805,6 +7849,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
7805
7849
  return this.getScrollableParent(element.parentNode, axis);
7806
7850
  }
7807
7851
  }
7852
+ /* eslint-disable */
7808
7853
  getScrollableValues() {
7809
7854
  this.parentScrollX = 0;
7810
7855
  this.parentScrollY = 0;
@@ -7812,6 +7857,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
7812
7857
  const verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');
7813
7858
  const horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');
7814
7859
  }
7860
+ /* eslint-enable */
7815
7861
  initialize(evt, curTarget) {
7816
7862
  this.currentStateTarget = evt.target;
7817
7863
  if (this.isDragStarted()) {
@@ -7825,6 +7871,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
7825
7871
  this.dragProcessStarted = false;
7826
7872
  if (this.abort) {
7827
7873
  /* tslint:disable no-any */
7874
+ // eslint-disable-next-line
7828
7875
  let abortSelectors = this.abort;
7829
7876
  if (typeof abortSelectors === 'string') {
7830
7877
  abortSelectors = [abortSelectors];
@@ -7895,6 +7942,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
7895
7942
  }
7896
7943
  /* istanbul ignore next */
7897
7944
  if (this.isReplaceDragEle) {
7945
+ // eslint-disable-next-line
7898
7946
  element = this.currentStateCheck(evt.target, element);
7899
7947
  }
7900
7948
  this.offset = this.calculateParentPosition(element);
@@ -8047,6 +8095,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
8047
8095
  }
8048
8096
  }
8049
8097
  if (flag) {
8098
+ // eslint-disable-next-line
8050
8099
  eleObj.instance.dragData[this.scope] = this.droppables[this.scope];
8051
8100
  eleObj.instance.intOver(evt, eleObj.target);
8052
8101
  this.hoverObject = eleObj;
@@ -8125,7 +8174,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
8125
8174
  }
8126
8175
  else {
8127
8176
  if (this.dragArea) {
8128
- let isDialogEle = this.helperElement.classList.contains('e-dialog');
8177
+ const isDialogEle = this.helperElement.classList.contains('e-dialog');
8129
8178
  this.dragLimit.top = this.clone ? this.dragLimit.top : 0;
8130
8179
  draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);
8131
8180
  draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :
@@ -8196,6 +8245,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
8196
8245
  elements = this.getPathElements(evt);
8197
8246
  }
8198
8247
  /* tslint:disable no-any */
8248
+ // eslint-disable-next-line
8199
8249
  let scrollParent = this.getScrollParent(elements, false);
8200
8250
  if (this.elementInViewport(this.helperElement)) {
8201
8251
  this.getScrollPosition(scrollParent, draEleTop);
@@ -8218,8 +8268,10 @@ let Draggable = Draggable_1 = class Draggable extends Base {
8218
8268
  this.pageY = pagey;
8219
8269
  }
8220
8270
  /* tslint:disable no-any */
8271
+ // eslint-disable-next-line
8221
8272
  getScrollParent(node, reverse) {
8222
8273
  /* tslint:disable no-any */
8274
+ // eslint-disable-next-line
8223
8275
  const nodeEl = reverse ? node.reverse() : node;
8224
8276
  let hasScroll;
8225
8277
  for (let i = nodeEl.length - 1; i >= 0; i--) {
@@ -8246,10 +8298,12 @@ let Draggable = Draggable_1 = class Draggable extends Base {
8246
8298
  }
8247
8299
  }
8248
8300
  else if (nodeEle && nodeEle !== document.scrollingElement) {
8249
- if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight + document.scrollingElement.scrollTop) < draEleTop) {
8301
+ const docScrollTop = document.scrollingElement.scrollTop;
8302
+ const helperClientHeight = this.helperElement.clientHeight;
8303
+ if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - helperClientHeight + docScrollTop) < draEleTop) {
8250
8304
  nodeEle.scrollTop += this.helperElement.clientHeight;
8251
8305
  }
8252
- else if (nodeEle.getBoundingClientRect().top > (draEleTop - this.helperElement.clientHeight - document.scrollingElement.scrollTop)) {
8306
+ else if (nodeEle.getBoundingClientRect().top > (draEleTop - helperClientHeight - docScrollTop)) {
8253
8307
  nodeEle.scrollTop -= this.helperElement.clientHeight;
8254
8308
  }
8255
8309
  }
@@ -8301,6 +8355,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
8301
8355
  const eleObj = this.checkTargetElement(evt);
8302
8356
  if (eleObj.target && eleObj.instance) {
8303
8357
  eleObj.instance.dragStopCalled = true;
8358
+ // eslint-disable-next-line
8304
8359
  eleObj.instance.dragData[this.scope] = this.droppables[this.scope];
8305
8360
  eleObj.instance.intDrop(evt, eleObj.target);
8306
8361
  }
@@ -8308,8 +8363,11 @@ let Draggable = Draggable_1 = class Draggable extends Base {
8308
8363
  document.body.classList.remove('e-prevent-select');
8309
8364
  }
8310
8365
  /**
8366
+ * @param {MouseEvent | TouchEvent} evt ?
8367
+ * @returns {void}
8311
8368
  * @private
8312
8369
  */
8370
+ // eslint-disable-next-line
8313
8371
  intDestroy(evt) {
8314
8372
  this.dragProcessStarted = false;
8315
8373
  this.toggleEvents();
@@ -8324,6 +8382,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
8324
8382
  }
8325
8383
  }
8326
8384
  // triggers when property changed
8385
+ // eslint-disable-next-line
8327
8386
  onPropertyChanged(newProp, oldProp) {
8328
8387
  //No Code to handle
8329
8388
  }
@@ -8354,6 +8413,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
8354
8413
  eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;
8355
8414
  eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;
8356
8415
  const keys = ['Top', 'Left', 'Bottom', 'Right'];
8416
+ /* eslint-disable */
8357
8417
  const styles = getComputedStyle(ele);
8358
8418
  for (let i = 0; i < keys.length; i++) {
8359
8419
  const key = keys[parseInt(i.toString(), 10)];
@@ -8363,6 +8423,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
8363
8423
  this.borderWidth[`${lowerKey}`] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);
8364
8424
  this.padding[`${lowerKey}`] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);
8365
8425
  }
8426
+ /* eslint-enable */
8366
8427
  if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {
8367
8428
  top = elementArea.top + document.scrollingElement.scrollTop;
8368
8429
  }
@@ -8380,7 +8441,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
8380
8441
  const intCoord = this.getCoordinates(evt);
8381
8442
  let ele;
8382
8443
  const prevStyle = this.helperElement.style.pointerEvents || '';
8383
- let isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version) > 12;
8444
+ const isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version, 10) > 12;
8384
8445
  if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {
8385
8446
  this.helperElement.style.pointerEvents = 'none';
8386
8447
  ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);
@@ -8404,6 +8465,7 @@ let Draggable = Draggable_1 = class Draggable extends Base {
8404
8465
  }
8405
8466
  getMousePosition(evt, isdragscroll) {
8406
8467
  /* tslint:disable no-any */
8468
+ // eslint-disable-next-line
8407
8469
  const dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;
8408
8470
  const intCoord = this.getCoordinates(evt);
8409
8471
  let pageX;
@@ -8421,10 +8483,11 @@ let Draggable = Draggable_1 = class Draggable extends Base {
8421
8483
  pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;
8422
8484
  }
8423
8485
  if (document.scrollingElement && (!isdragscroll && !this.clone)) {
8424
- let isVerticalScroll = document.scrollingElement.scrollHeight > 0 && document.scrollingElement.scrollHeight > document.scrollingElement.clientHeight && document.scrollingElement.scrollTop > 0;
8425
- let isHorrizontalScroll = document.scrollingElement.scrollWidth > 0 && document.scrollingElement.scrollWidth > document.scrollingElement.clientWidth && document.scrollingElement.scrollLeft > 0;
8426
- pageX = isHorrizontalScroll ? pageX - document.scrollingElement.scrollLeft : pageX;
8427
- pageY = isVerticalScroll ? pageY - document.scrollingElement.scrollTop : pageY;
8486
+ const ele = document.scrollingElement;
8487
+ const isVerticalScroll = ele.scrollHeight > 0 && ele.scrollHeight > ele.clientHeight && ele.scrollTop > 0;
8488
+ const isHorrizontalScroll = ele.scrollWidth > 0 && ele.scrollWidth > ele.clientWidth && ele.scrollLeft > 0;
8489
+ pageX = isHorrizontalScroll ? pageX - ele.scrollLeft : pageX;
8490
+ pageY = isVerticalScroll ? pageY - ele.scrollTop : pageY;
8428
8491
  }
8429
8492
  return {
8430
8493
  left: pageX - (this.margin.left + this.cursorAt.left),
@@ -9362,7 +9425,7 @@ function compile$1(template, helper, ignorePrefix) {
9362
9425
  else {
9363
9426
  const argName = 'data';
9364
9427
  const evalExpResult = evalExp(template, argName, helper, ignorePrefix);
9365
- // eslint-disable-next-line
9428
+ /* eslint-disable */
9366
9429
  const condtion = `var valueRegEx = (/value=\\'([A-Za-z0-9 _]*)((.)([\\w)(!-;?-■\\s]+)['])/g);
9367
9430
  var hrefRegex = (/(?:href)([\\s='"./]+)([\\w-./?=&\\\\#"]+)((.)([\\w)(!-;/?-■\\s]+)['])/g);
9368
9431
  if(str.match(valueRegEx)){
@@ -9393,6 +9456,7 @@ function compile$1(template, helper, ignorePrefix) {
9393
9456
  }
9394
9457
  `;
9395
9458
  const fnCode = 'var str=\"' + evalExpResult + '\";' + condtion + ' return str;';
9459
+ /* eslint-enable */
9396
9460
  const fn = new Function(argName, fnCode);
9397
9461
  return fn.bind(helper);
9398
9462
  }
@@ -9539,7 +9603,7 @@ function evalExp(str, nameSpace, helper, ignorePrefix) {
9539
9603
  * @returns {string} ?
9540
9604
  */
9541
9605
  function addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {
9542
- return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== "true" && str !== "false") ? nameSpace + '.' + str : str);
9606
+ return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== 'true' && str !== 'false') ? nameSpace + '.' + str : str);
9543
9607
  }
9544
9608
  /**
9545
9609
  *
@@ -9761,6 +9825,7 @@ function getTemplateEngine() {
9761
9825
  * @returns {Function} ?
9762
9826
  * @private
9763
9827
  */
9828
+ // eslint-disable-next-line
9764
9829
  function initializeCSPTemplate(template, helper) {
9765
9830
  let boundFunc;
9766
9831
  template.prototype.CSPTemplate = true;
@@ -9901,6 +9966,9 @@ class SanitizeHtmlHelper {
9901
9966
  };
9902
9967
  }
9903
9968
  static sanitize(value) {
9969
+ if (isNullOrUndefined(value)) {
9970
+ return value;
9971
+ }
9904
9972
  const item = this.beforeSanitize();
9905
9973
  const output = this.serializeValue(item, value);
9906
9974
  return output;
@@ -9915,6 +9983,7 @@ class SanitizeHtmlHelper {
9915
9983
  this.removeXssAttrs();
9916
9984
  const tempEleValue = this.wrapElement.innerHTML;
9917
9985
  this.removeElement();
9986
+ this.wrapElement = null;
9918
9987
  return tempEleValue.replace(/&amp;/g, '&');
9919
9988
  }
9920
9989
  static removeElement() {