@syncfusion/ej2-inputs 32.2.7 → 33.1.44

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 (95) hide show
  1. package/dist/ej2-inputs.min.js +2 -2
  2. package/dist/ej2-inputs.umd.min.js +2 -2
  3. package/dist/ej2-inputs.umd.min.js.map +1 -1
  4. package/dist/es6/ej2-inputs.es2015.js +128 -76
  5. package/dist/es6/ej2-inputs.es2015.js.map +1 -1
  6. package/dist/es6/ej2-inputs.es5.js +106 -54
  7. package/dist/es6/ej2-inputs.es5.js.map +1 -1
  8. package/dist/global/ej2-inputs.min.js +2 -2
  9. package/dist/global/ej2-inputs.min.js.map +1 -1
  10. package/dist/global/index.d.ts +1 -1
  11. package/package.json +5 -5
  12. package/src/input/input.d.ts +1 -1
  13. package/src/input/input.js +46 -37
  14. package/src/maskedtextbox/maskedtextbox/maskedtextbox.js +2 -2
  15. package/src/numerictextbox/numerictextbox.js +3 -3
  16. package/src/textarea/textarea.js +3 -3
  17. package/src/textbox/textbox.js +3 -3
  18. package/src/uploader/uploader.js +49 -6
  19. package/styles/bds-lite.css +0 -11
  20. package/styles/bds.css +0 -11
  21. package/styles/bootstrap-dark-lite.css +0 -9
  22. package/styles/bootstrap-dark.css +0 -9
  23. package/styles/bootstrap-lite.css +0 -9
  24. package/styles/bootstrap.css +0 -9
  25. package/styles/bootstrap4-lite.css +0 -9
  26. package/styles/bootstrap4.css +0 -9
  27. package/styles/bootstrap5-dark-lite.css +0 -9
  28. package/styles/bootstrap5-dark.css +0 -9
  29. package/styles/bootstrap5-lite.css +0 -9
  30. package/styles/bootstrap5.3-lite.css +8 -19
  31. package/styles/bootstrap5.3.css +8 -19
  32. package/styles/bootstrap5.css +0 -9
  33. package/styles/color-picker/bds.css +0 -2
  34. package/styles/color-picker/bootstrap5.3.css +0 -2
  35. package/styles/color-picker/material3-dark.css +0 -6
  36. package/styles/color-picker/material3.css +0 -6
  37. package/styles/color-picker/tailwind3.css +0 -2
  38. package/styles/fabric-dark-lite.css +0 -9
  39. package/styles/fabric-dark.css +0 -9
  40. package/styles/fabric-lite.css +0 -9
  41. package/styles/fabric.css +0 -9
  42. package/styles/fluent-dark-lite.css +0 -9
  43. package/styles/fluent-dark.css +0 -9
  44. package/styles/fluent-lite.css +0 -9
  45. package/styles/fluent.css +0 -9
  46. package/styles/fluent2-lite.css +0 -10
  47. package/styles/fluent2.css +0 -10
  48. package/styles/highcontrast-light-lite.css +0 -9
  49. package/styles/highcontrast-light.css +0 -9
  50. package/styles/highcontrast-lite.css +0 -9
  51. package/styles/highcontrast.css +0 -9
  52. package/styles/input/_bootstrap5.3-definition.scss +3 -3
  53. package/styles/input/bootstrap5.3.css +8 -8
  54. package/styles/input/fluent2.css +0 -1
  55. package/styles/input/material3-dark.css +0 -2
  56. package/styles/input/material3.css +0 -2
  57. package/styles/material-dark-lite.css +0 -9
  58. package/styles/material-dark.css +0 -9
  59. package/styles/material-lite.css +0 -9
  60. package/styles/material.css +0 -9
  61. package/styles/material3-dark-lite.css +0 -19
  62. package/styles/material3-dark.css +0 -19
  63. package/styles/material3-lite.css +0 -19
  64. package/styles/material3.css +0 -19
  65. package/styles/rating/bds.css +0 -9
  66. package/styles/rating/bootstrap-dark.css +0 -9
  67. package/styles/rating/bootstrap.css +0 -9
  68. package/styles/rating/bootstrap4.css +0 -9
  69. package/styles/rating/bootstrap5-dark.css +0 -9
  70. package/styles/rating/bootstrap5.3.css +0 -9
  71. package/styles/rating/bootstrap5.css +0 -9
  72. package/styles/rating/fabric-dark.css +0 -9
  73. package/styles/rating/fabric.css +0 -9
  74. package/styles/rating/fluent-dark.css +0 -9
  75. package/styles/rating/fluent.css +0 -9
  76. package/styles/rating/fluent2.css +0 -9
  77. package/styles/rating/highcontrast-light.css +0 -9
  78. package/styles/rating/highcontrast.css +0 -9
  79. package/styles/rating/material-dark.css +0 -9
  80. package/styles/rating/material.css +0 -9
  81. package/styles/rating/material3-dark.css +0 -9
  82. package/styles/rating/material3.css +0 -9
  83. package/styles/rating/tailwind-dark.css +0 -9
  84. package/styles/rating/tailwind.css +0 -9
  85. package/styles/rating/tailwind3.css +0 -9
  86. package/styles/slider/material3-dark.css +0 -1
  87. package/styles/slider/material3.css +0 -1
  88. package/styles/tailwind-dark-lite.css +0 -9
  89. package/styles/tailwind-dark.css +0 -9
  90. package/styles/tailwind-lite.css +0 -9
  91. package/styles/tailwind.css +0 -9
  92. package/styles/tailwind3-lite.css +0 -11
  93. package/styles/tailwind3.css +0 -11
  94. package/styles/uploader/material3-dark.css +0 -1
  95. package/styles/uploader/material3.css +0 -1
@@ -116,27 +116,29 @@ var Input;
116
116
  args.element.addEventListener('focus', focusHandler);
117
117
  args.element.addEventListener('blur', blurHandler);
118
118
  args.element.addEventListener('input', inputHandler);
119
- args.element.__eventHandlers['inputFocusHandler'] = { focusHandler };
120
- args.element.__eventHandlers['inputBlurHandler'] = { blurHandler };
121
- args.element.__eventHandlers['inputHandler'] = { inputHandler };
119
+ args.element.__eventHandlers.inputFocusHandler = focusHandler;
120
+ args.element.__eventHandlers.inputBlurHandler = blurHandler;
121
+ args.element.__eventHandlers.inputHandler = inputHandler;
122
122
  }
123
123
  Input.bindInitialEvent = bindInitialEvent;
124
124
  function unbindInitialEvent(args) {
125
125
  if (!isNullOrUndefined(args.element)) {
126
126
  if (!isNullOrUndefined(args.element.__eventHandlers)) {
127
- if (!isNullOrUndefined(args.element.__eventHandlers['inputFocusHandler'])
128
- && !isNullOrUndefined(args.element.__eventHandlers['inputBlurHandler'])
129
- && !isNullOrUndefined(args.element.__eventHandlers['inputHandler'])) {
130
- const focusHandler = args.element.__eventHandlers['inputFocusHandler'].focusHandler;
131
- const blurHandler = args.element.__eventHandlers['inputBlurHandler'].blurHandler;
132
- const inputHandler = args.element.__eventHandlers['inputHandler'].inputHandler;
127
+ if (!isNullOrUndefined(args.element.__eventHandlers.inputFocusHandler)
128
+ && !isNullOrUndefined(args.element.__eventHandlers.inputBlurHandler)
129
+ && !isNullOrUndefined(args.element.__eventHandlers.inputHandler)) {
130
+ const focusHandler = args.element
131
+ .__eventHandlers.inputFocusHandler;
132
+ const blurHandler = args.element
133
+ .__eventHandlers.inputBlurHandler;
134
+ const inputHandler = args.element.__eventHandlers.inputHandler;
133
135
  args.element.removeEventListener('focus', focusHandler);
134
136
  args.element.removeEventListener('blur', blurHandler);
135
137
  args.element.removeEventListener('input', inputHandler);
136
138
  // Clean up stored bound functions
137
- delete args.element.__eventHandlers['inputFocusHandler'];
138
- delete args.element.__eventHandlers['inputBlurHandler'];
139
- delete args.element.__eventHandlers['inputHandler'];
139
+ args.element.__eventHandlers.inputFocusHandler = null;
140
+ args.element.__eventHandlers.inputBlurHandler = null;
141
+ args.element.__eventHandlers.inputHandler = null;
140
142
  }
141
143
  }
142
144
  }
@@ -261,8 +263,8 @@ var Input;
261
263
  args.element.addEventListener('input', inputFloatHandler);
262
264
  args.element.addEventListener('blur', blurFloatHandler);
263
265
  // Store the event handler functions to remove them later
264
- args.element.__eventHandlers['floatInputHandler'] = { inputFloatHandler };
265
- args.element.__eventHandlers['floatBlurHandler'] = { blurFloatHandler };
266
+ args.element.__eventHandlers.floatInputHandler = inputFloatHandler;
267
+ args.element.__eventHandlers.floatBlurHandler = blurFloatHandler;
266
268
  }
267
269
  else {
268
270
  unWireFloatLabelEvents(args);
@@ -274,16 +276,16 @@ var Input;
274
276
  function unWireFloatLabelEvents(args) {
275
277
  if (!isNullOrUndefined(args.element) &&
276
278
  !isNullOrUndefined(args.element.__eventHandlers)
277
- && !isNullOrUndefined(args.element.__eventHandlers['floatInputHandler'])
278
- && !isNullOrUndefined(args.element.__eventHandlers['floatBlurHandler'])) {
279
- const inputFloatHandler = args.element.__eventHandlers['floatInputHandler'].inputFloatHandler;
280
- const blurFloatHandler = args.element.__eventHandlers['floatBlurHandler'].blurFloatHandler;
279
+ && !isNullOrUndefined(args.element.__eventHandlers.floatInputHandler)
280
+ && !isNullOrUndefined(args.element.__eventHandlers.floatBlurHandler)) {
281
+ const inputFloatHandler = args.element.__eventHandlers.floatInputHandler;
282
+ const blurFloatHandler = args.element.__eventHandlers.floatBlurHandler;
281
283
  // Remove the event listeners using the defined functions
282
284
  args.element.removeEventListener('input', inputFloatHandler);
283
285
  args.element.removeEventListener('blur', blurFloatHandler);
284
286
  // Clean up stored event handler functions
285
- delete args.element.__eventHandlers['floatInputHandler'];
286
- delete args.element.__eventHandlers['floatBlurHandler'];
287
+ args.element.__eventHandlers.floatInputHandler = null;
288
+ args.element.__eventHandlers.floatBlurHandler = null;
287
289
  }
288
290
  }
289
291
  function checkFloatLabelType(type, container) {
@@ -400,7 +402,7 @@ var Input;
400
402
  if (isBindClearAction === undefined || isBindClearAction) {
401
403
  const clickHandlerEvent = (e) => clickHandler(e, element, button);
402
404
  button.addEventListener('click', clickHandlerEvent);
403
- element.__eventHandlers['clearClickHandler'] = { clickHandlerEvent };
405
+ element.__eventHandlers.clearClickHandler = clickHandlerEvent;
404
406
  }
405
407
  const inputHandlerEvent = () => inputHandler(element, button);
406
408
  const focusHandlerEvent = () => focusHandler(element, button);
@@ -409,36 +411,36 @@ var Input;
409
411
  element.addEventListener('focus', focusHandlerEvent);
410
412
  element.addEventListener('blur', blurHandlerEvent);
411
413
  // Store the bound functions to remove them later
412
- element.__eventHandlers['clearInputHandler'] = { inputHandlerEvent };
413
- element.__eventHandlers['clearFocusHandler'] = { focusHandlerEvent };
414
- element.__eventHandlers['clearBlurHandler'] = { blurHandlerEvent };
414
+ element.__eventHandlers.clearInputHandler = inputHandlerEvent;
415
+ element.__eventHandlers.clearFocusHandler = focusHandlerEvent;
416
+ element.__eventHandlers.clearBlurHandler = blurHandlerEvent;
415
417
  }
416
418
  Input.wireClearBtnEvents = wireClearBtnEvents;
417
419
  function unWireClearBtnEvents(element, button) {
418
420
  if (!isNullOrUndefined(element) &&
419
421
  !isNullOrUndefined(element.__eventHandlers)) {
420
- if (!isNullOrUndefined(element.__eventHandlers['clearClickHandler'])) {
421
- const clickHandlerEvent = element.__eventHandlers['clearClickHandler'].clickHandlerEvent;
422
+ if (!isNullOrUndefined(element.__eventHandlers.clearClickHandler)) {
423
+ const clickHandlerEvent = element.__eventHandlers.clearClickHandler;
422
424
  if (isBindClearAction === undefined || isBindClearAction) {
423
425
  if (!isNullOrUndefined(button)) {
424
426
  button.removeEventListener('click', clickHandlerEvent);
425
427
  }
426
428
  }
427
- delete element.__eventHandlers['clearClickHandler'];
429
+ element.__eventHandlers.clearClickHandler = null;
428
430
  }
429
- if (!isNullOrUndefined(element.__eventHandlers['clearInputHandler'])
430
- && !isNullOrUndefined(element.__eventHandlers['clearFocusHandler'])
431
- && !isNullOrUndefined(element.__eventHandlers['clearBlurHandler'])) {
432
- const inputHandlerEvent = element.__eventHandlers['clearInputHandler'].inputHandlerEvent;
433
- const focusHandlerEvent = element.__eventHandlers['clearFocusHandler'].focusHandlerEvent;
434
- const blurHandlerEvent = element.__eventHandlers['clearBlurHandler'].blurHandlerEvent;
431
+ if (!isNullOrUndefined(element.__eventHandlers.clearInputHandler)
432
+ && !isNullOrUndefined(element.__eventHandlers.clearFocusHandler)
433
+ && !isNullOrUndefined(element.__eventHandlers.clearBlurHandler)) {
434
+ const inputHandlerEvent = element.__eventHandlers.clearInputHandler;
435
+ const focusHandlerEvent = element.__eventHandlers.clearFocusHandler;
436
+ const blurHandlerEvent = element.__eventHandlers.clearBlurHandler;
435
437
  element.removeEventListener('input', inputHandlerEvent);
436
438
  element.removeEventListener('focus', focusHandlerEvent);
437
439
  element.removeEventListener('blur', blurHandlerEvent);
438
440
  // Clean up stored Event functions
439
- delete element.__eventHandlers['clearInputHandler'];
440
- delete element.__eventHandlers['clearFocusHandler'];
441
- delete element.__eventHandlers['clearBlurHandler'];
441
+ element.__eventHandlers.clearInputHandler = null;
442
+ element.__eventHandlers.clearFocusHandler = null;
443
+ element.__eventHandlers.clearBlurHandler = null;
442
444
  }
443
445
  }
444
446
  }
@@ -615,7 +617,11 @@ var Input;
615
617
  * @param {string} placeholder - Placeholder value which is need to add.
616
618
  * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the placeholder is need to add.
617
619
  */
618
- function setPlaceholder(placeholder, element) {
620
+ function setPlaceholder(placeholder, element, moduleName) {
621
+ const modules = [
622
+ 'textbox', 'numerictextbox', 'textarea', 'combobox',
623
+ 'datepicker', 'daterangepicker', 'datetimepicker'
624
+ ];
619
625
  placeholder = encodePlaceHolder(placeholder);
620
626
  const parentElement = getParentNode(element);
621
627
  if (parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {
@@ -624,6 +630,9 @@ var Input;
624
630
  if (floatTextContent && floatTextContent.children[0]) {
625
631
  floatTextContent.children[0].textContent = placeholder;
626
632
  }
633
+ else if (modules.indexOf(moduleName) !== -1 && floatTextContent) {
634
+ floatTextContent.textContent = placeholder;
635
+ }
627
636
  else {
628
637
  const floatText = parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0];
629
638
  if (!isNullOrUndefined(floatText)) {
@@ -1183,9 +1192,8 @@ let NumericTextBox = class NumericTextBox extends Component {
1183
1192
  }
1184
1193
  this.element.classList.remove('e-control', 'e-numerictextbox');
1185
1194
  this.element.appendChild(input);
1186
- setValue('ej2_instances', ejInstance, input);
1187
- setValue('ej2_instances', null, this.element);
1188
1195
  this.element = input;
1196
+ setValue('ej2_instances', ejInstance, this.element);
1189
1197
  }
1190
1198
  attributes(this.element, { 'role': 'spinbutton', 'tabindex': '0', 'autocomplete': 'off' });
1191
1199
  const localeText = {
@@ -2370,6 +2378,7 @@ let NumericTextBox = class NumericTextBox extends Component {
2370
2378
  floatLabelType: this.floatLabelType,
2371
2379
  properties: this.properties
2372
2380
  }, this.clearButton);
2381
+ setValue('ej2_instances', null, this.element);
2373
2382
  super.destroy();
2374
2383
  }
2375
2384
  /**
@@ -2454,7 +2463,7 @@ let NumericTextBox = class NumericTextBox extends Component {
2454
2463
  Input.validateInputType(this.container, this.element);
2455
2464
  break;
2456
2465
  case 'placeholder':
2457
- Input.setPlaceholder(newProp.placeholder, this.element);
2466
+ Input.setPlaceholder(newProp.placeholder, this.element, this.getModuleName());
2458
2467
  Input.calculateWidth(this.element, this.container);
2459
2468
  break;
2460
2469
  case 'step':
@@ -3931,9 +3940,8 @@ let MaskedTextBox = class MaskedTextBox extends Component {
3931
3940
  this.element.classList.remove('e-control', 'e-maskedtextbox');
3932
3941
  this.element.classList.add('e-mask-container');
3933
3942
  this.element.appendChild(input);
3934
- setValue('ej2_instances', ejInstance, input);
3935
- setValue('ej2_instances', null, this.element);
3936
3943
  this.element = input;
3944
+ setValue('ej2_instances', ejInstance, this.element);
3937
3945
  }
3938
3946
  this.updateHTMLAttrToElement();
3939
3947
  this.checkHtmlAttributes(false);
@@ -4413,6 +4421,7 @@ let MaskedTextBox = class MaskedTextBox extends Component {
4413
4421
  }, this.clearButton);
4414
4422
  this.changeEventArgs = null;
4415
4423
  this.inputObj = null;
4424
+ setValue('ej2_instances', null, this.element);
4416
4425
  super.destroy();
4417
4426
  }
4418
4427
  };
@@ -8714,6 +8723,7 @@ let Uploader = class Uploader extends Component {
8714
8723
  }
8715
8724
  }
8716
8725
  }
8726
+ element = null;
8717
8727
  }
8718
8728
  reRenderFileList() {
8719
8729
  if (this.listParent) {
@@ -8762,10 +8772,8 @@ let Uploader = class Uploader extends Component {
8762
8772
  inputElement.setAttribute('name', 'UploadFiles');
8763
8773
  }
8764
8774
  this.element.appendChild(inputElement);
8765
- setValue('ej2_instances', ejInstance, inputElement);
8766
- // Clear reference from this.element to avoid retaining component instance
8767
- setValue('ej2_instances', null, this.element);
8768
8775
  this.element = inputElement;
8776
+ setValue('ej2_instances', ejInstance, this.element);
8769
8777
  }
8770
8778
  /* istanbul ignore next */
8771
8779
  if (ejInstance[0].isPureReactComponent) {
@@ -9032,6 +9040,7 @@ let Uploader = class Uploader extends Component {
9032
9040
  if (!enableDropText && dropTextArea) {
9033
9041
  remove(dropTextArea);
9034
9042
  }
9043
+ element = null;
9035
9044
  }
9036
9045
  else if (!isNullOrUndefined(this.uploaderOptions) && this.uploaderOptions.dropArea === undefined) {
9037
9046
  this.createDropTextHint();
@@ -9340,7 +9349,7 @@ let Uploader = class Uploader extends Component {
9340
9349
  }
9341
9350
  getSelectedFiles(index) {
9342
9351
  const data = [];
9343
- const liElement = this.fileList[index];
9352
+ let liElement = this.fileList[index];
9344
9353
  const allFiles = this.getFilesData();
9345
9354
  const nameElements = +liElement.getAttribute('data-files-count');
9346
9355
  let startIndex = 0;
@@ -9350,15 +9359,16 @@ let Uploader = class Uploader extends Component {
9350
9359
  for (let j = startIndex; j < (startIndex + nameElements); j++) {
9351
9360
  data.push(allFiles[j]);
9352
9361
  }
9362
+ liElement = null;
9353
9363
  return data;
9354
9364
  }
9355
9365
  removeFiles(args) {
9356
9366
  if (!this.enabled) {
9357
9367
  return;
9358
9368
  }
9359
- const selectedElement = args.target.parentElement;
9369
+ let selectedElement = args.target.parentElement;
9360
9370
  const index = this.fileList.indexOf(selectedElement);
9361
- const liElement = this.fileList[index];
9371
+ let liElement = this.fileList[index];
9362
9372
  const formUpload = this.isFormUpload();
9363
9373
  const fileData = formUpload ? this.getSelectedFiles(index) : this.getFilesInArray(this.filesData[index]);
9364
9374
  if (isNullOrUndefined(fileData)) {
@@ -9393,6 +9403,8 @@ let Uploader = class Uploader extends Component {
9393
9403
  this.clearButton.removeAttribute('disabled');
9394
9404
  }
9395
9405
  }
9406
+ liElement = null;
9407
+ selectedElement = null;
9396
9408
  }
9397
9409
  removeFilesData(file, customTemplate) {
9398
9410
  let index;
@@ -9408,6 +9420,10 @@ let Uploader = class Uploader extends Component {
9408
9420
  return;
9409
9421
  }
9410
9422
  this.element.value = '';
9423
+ const iconElement = selectedElement.querySelector('.e-icons');
9424
+ if (iconElement) {
9425
+ EventHandler.remove(iconElement, 'click', this.removeFiles);
9426
+ }
9411
9427
  detach(selectedElement);
9412
9428
  index = this.fileList.indexOf(selectedElement);
9413
9429
  this.fileList.splice(index, 1);
@@ -9459,7 +9475,7 @@ let Uploader = class Uploader extends Component {
9459
9475
  removingEventCallback(eventArgs, formData, selectedFiles, file) {
9460
9476
  /* istanbul ignore next */
9461
9477
  const name = this.element.getAttribute('name');
9462
- const liElement = this.getLiElement(file);
9478
+ let liElement = this.getLiElement(file);
9463
9479
  if (!isNullOrUndefined(liElement) && (!isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON)) ||
9464
9480
  !isNullOrUndefined(liElement.querySelector('.' + REMOVE_ICON)))) {
9465
9481
  const spinnerTarget = liElement.querySelector('.' + DELETE_ICON) ?
@@ -9475,6 +9491,7 @@ let Uploader = class Uploader extends Component {
9475
9491
  formData.append(name, selectedFiles.name);
9476
9492
  }
9477
9493
  this.updateFormData(formData, eventArgs.customFormData);
9494
+ liElement = null;
9478
9495
  }
9479
9496
  /* istanbul ignore next */
9480
9497
  updateFormData(formData, customData) {
@@ -9526,7 +9543,7 @@ let Uploader = class Uploader extends Component {
9526
9543
  };
9527
9544
  if (!customTemplate) {
9528
9545
  const index = this.filesData.indexOf(files);
9529
- const rootElement = this.fileList[index];
9546
+ let rootElement = this.fileList[index];
9530
9547
  if (rootElement) {
9531
9548
  rootElement.classList.remove(UPLOAD_SUCCESS);
9532
9549
  rootElement.classList.add(UPLOAD_FAILED);
@@ -9536,16 +9553,18 @@ let Uploader = class Uploader extends Component {
9536
9553
  statusElement.classList.add(UPLOAD_FAILED);
9537
9554
  }
9538
9555
  }
9556
+ rootElement = null;
9539
9557
  this.checkActionButtonStatus();
9540
9558
  }
9541
9559
  this.trigger('failure', args);
9542
- const liElement = this.getLiElement(files);
9560
+ let liElement = this.getLiElement(files);
9543
9561
  /* istanbul ignore next */
9544
9562
  if (!isNullOrUndefined(liElement) && !isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON))) {
9545
9563
  const spinnerTarget = liElement.querySelector('.' + DELETE_ICON);
9546
9564
  hideSpinner(spinnerTarget);
9547
9565
  detach(liElement.querySelector('.e-spinner-pane'));
9548
9566
  }
9567
+ liElement = null;
9549
9568
  }
9550
9569
  /* istanbul ignore next */
9551
9570
  getFilesFromFolder(event) {
@@ -9813,6 +9832,10 @@ let Uploader = class Uploader extends Component {
9813
9832
  }
9814
9833
  clearData(singleUpload) {
9815
9834
  if (!isNullOrUndefined(this.listParent)) {
9835
+ const fileItems = this.listParent.querySelectorAll('.e-icons');
9836
+ for (let i = 0; i < fileItems.length; i++) {
9837
+ EventHandler.remove(fileItems[i], 'click', this.removeFiles);
9838
+ }
9816
9839
  detach(this.listParent);
9817
9840
  this.listParent = null;
9818
9841
  }
@@ -9820,13 +9843,14 @@ let Uploader = class Uploader extends Component {
9820
9843
  this.element.value = '';
9821
9844
  }
9822
9845
  if (this.isFormUpload() && this.uploadWrapper.querySelector('.' + INPUT_WRAPPER)) {
9823
- const hiddenElement = this.uploadWrapper.querySelector('.' + INPUT_WRAPPER).querySelector('.' + HIDDEN_INPUT);
9846
+ let hiddenElement = this.uploadWrapper.querySelector('.' + INPUT_WRAPPER).querySelector('.' + HIDDEN_INPUT);
9824
9847
  if (hiddenElement) {
9825
9848
  this.uploadWrapper.querySelector('.' + INPUT_WRAPPER).removeChild(hiddenElement);
9826
9849
  }
9850
+ hiddenElement = null;
9827
9851
  }
9828
- this.fileList = [];
9829
- this.filesData = [];
9852
+ this.fileList.length = 0;
9853
+ this.filesData.length = 0;
9830
9854
  this.removeActionButtons();
9831
9855
  }
9832
9856
  updateSortedFileList(filesData) {
@@ -9834,8 +9858,9 @@ let Uploader = class Uploader extends Component {
9834
9858
  let added = -1;
9835
9859
  if (this.listParent) {
9836
9860
  for (let i = 0; i < this.listParent.querySelectorAll('li').length; i++) {
9837
- const liElement = this.listParent.querySelectorAll('li')[i];
9861
+ let liElement = this.listParent.querySelectorAll('li')[i];
9838
9862
  previousListClone.appendChild(liElement.cloneNode(true));
9863
+ liElement = null;
9839
9864
  }
9840
9865
  this.removeActionButtons();
9841
9866
  const oldList = [].slice.call(previousListClone.childNodes);
@@ -9853,6 +9878,8 @@ let Uploader = class Uploader extends Component {
9853
9878
  this.internalCreateFileList([filesData[index]]);
9854
9879
  }
9855
9880
  }
9881
+ previousListClone.innerHTML = '';
9882
+ oldList.length = 0;
9856
9883
  }
9857
9884
  else {
9858
9885
  this.internalCreateFileList(filesData);
@@ -9937,7 +9964,7 @@ let Uploader = class Uploader extends Component {
9937
9964
  createCustomfileList(fileData) {
9938
9965
  this.createParentUL();
9939
9966
  for (const listItem of fileData) {
9940
- const listElement = this.createElement('li', { className: FILE, attrs: { 'data-file-name': listItem.name } });
9967
+ let listElement = this.createElement('li', { className: FILE, attrs: { 'data-file-name': listItem.name } });
9941
9968
  this.uploadTemplateFn = this.templateComplier(this.template);
9942
9969
  const liTempCompiler = this.uploadTemplateFn(listItem, this, 'template', this.element.id + 'Template', this.isStringTemplate, null, listElement);
9943
9970
  if (liTempCompiler) {
@@ -9961,6 +9988,7 @@ let Uploader = class Uploader extends Component {
9961
9988
  this.trigger('fileListRendering', eventsArgs);
9962
9989
  this.listParent.appendChild(listElement);
9963
9990
  this.fileList.push(listElement);
9991
+ listElement = null;
9964
9992
  }
9965
9993
  this.renderReactTemplates();
9966
9994
  }
@@ -10198,7 +10226,7 @@ let Uploader = class Uploader extends Component {
10198
10226
  }
10199
10227
  else {
10200
10228
  for (const listItem of fileData) {
10201
- const liElement = this.createElement('li', {
10229
+ let liElement = this.createElement('li', {
10202
10230
  className: FILE,
10203
10231
  attrs: { 'data-file-name': listItem.name, 'data-files-count': '1' }
10204
10232
  });
@@ -10278,6 +10306,7 @@ let Uploader = class Uploader extends Component {
10278
10306
  this.checkActionComplete(true);
10279
10307
  this.flag = preventActionComplete;
10280
10308
  }
10309
+ liElement = null;
10281
10310
  }
10282
10311
  }
10283
10312
  }
@@ -10337,6 +10366,7 @@ let Uploader = class Uploader extends Component {
10337
10366
  filterFiles.push(files[i]);
10338
10367
  }
10339
10368
  }
10369
+ li = null;
10340
10370
  return filterFiles;
10341
10371
  }
10342
10372
  updateStatus(files, status, statusCode, updateLiStatus = true) {
@@ -10345,12 +10375,13 @@ let Uploader = class Uploader extends Component {
10345
10375
  files.statusCode = statusCode;
10346
10376
  }
10347
10377
  if (updateLiStatus) {
10348
- const li = this.getLiElement(files);
10378
+ let li = this.getLiElement(files);
10349
10379
  if (!isNullOrUndefined(li)) {
10350
10380
  if (!isNullOrUndefined(li.querySelector('.' + STATUS)) && !((status === '' || isNullOrUndefined(status)))) {
10351
10381
  li.querySelector('.' + STATUS).textContent = status;
10352
10382
  }
10353
10383
  }
10384
+ li = null;
10354
10385
  }
10355
10386
  return files;
10356
10387
  }
@@ -10396,7 +10427,7 @@ let Uploader = class Uploader extends Component {
10396
10427
  li.querySelector('.' + PROGRESSBAR_TEXT).textContent = progressValue;
10397
10428
  }
10398
10429
  uploadInProgress(e, files, customUI, request) {
10399
- const li = this.getLiElement(files);
10430
+ let li = this.getLiElement(files);
10400
10431
  if (isNullOrUndefined(li) && (!customUI)) {
10401
10432
  return;
10402
10433
  }
@@ -10424,6 +10455,7 @@ let Uploader = class Uploader extends Component {
10424
10455
  }
10425
10456
  const args = { e, operation: 'upload', file: this.updateStatus(files, this.localizedTexts('inProgress'), '3') };
10426
10457
  this.trigger('progress', args);
10458
+ li = null;
10427
10459
  }
10428
10460
  /* istanbul ignore next */
10429
10461
  cancelUploadingFile(files, e, request, li) {
@@ -10473,7 +10505,7 @@ let Uploader = class Uploader extends Component {
10473
10505
  }
10474
10506
  }
10475
10507
  removecanceledFile(e, file) {
10476
- const liElement = this.getLiElement(file);
10508
+ let liElement = this.getLiElement(file);
10477
10509
  if (isNullOrUndefined(liElement) || liElement.querySelector('.' + RETRY_ICON) || isNullOrUndefined(liElement.querySelector('.' + ABORT_ICON))) {
10478
10510
  return;
10479
10511
  }
@@ -10489,6 +10521,7 @@ let Uploader = class Uploader extends Component {
10489
10521
  const requestResponse = e && e.currentTarget ? this.getResponse(e) : null;
10490
10522
  const args = { event: e, response: requestResponse, operation: 'cancel', file: file };
10491
10523
  this.trigger('success', args);
10524
+ liElement = null;
10492
10525
  }
10493
10526
  renderFailureState(e, file, liElement) {
10494
10527
  this.updateProgressBarClasses(liElement, UPLOAD_FAILED);
@@ -10574,7 +10607,7 @@ let Uploader = class Uploader extends Component {
10574
10607
  const args = {
10575
10608
  e, response: response, operation: 'upload', file: this.updateStatus(file, statusMessage, '2', false), statusText: statusMessage
10576
10609
  };
10577
- const liElement = this.getLiElement(file);
10610
+ let liElement = this.getLiElement(file);
10578
10611
  if (!isNullOrUndefined(liElement)) {
10579
10612
  const spinnerEle = liElement.querySelector('.' + SPINNER_PANE);
10580
10613
  if (!isNullOrUndefined(spinnerEle)) {
@@ -10606,9 +10639,10 @@ let Uploader = class Uploader extends Component {
10606
10639
  this.checkActionComplete(true);
10607
10640
  }
10608
10641
  });
10642
+ liElement = null;
10609
10643
  }
10610
10644
  uploadFailed(e, file) {
10611
- const li = this.getLiElement(file);
10645
+ let li = this.getLiElement(file);
10612
10646
  const response = e && e.currentTarget ? this.getResponse(e) : null;
10613
10647
  const statusMessage = this.localizedTexts('uploadFailedMessage');
10614
10648
  const args = {
@@ -10623,6 +10657,7 @@ let Uploader = class Uploader extends Component {
10623
10657
  this.uploadSequential();
10624
10658
  this.checkActionComplete(true);
10625
10659
  });
10660
+ li = null;
10626
10661
  }
10627
10662
  uploadSequential() {
10628
10663
  if (this.sequentialUpload) {
@@ -10884,7 +10919,7 @@ let Uploader = class Uploader extends Component {
10884
10919
  }
10885
10920
  eventArgs.fileData.statusCode = '5';
10886
10921
  eventArgs.fileData.status = this.localizedTexts('fileUploadCancel');
10887
- const liElement = this.getLiElement(eventArgs.fileData);
10922
+ let liElement = this.getLiElement(eventArgs.fileData);
10888
10923
  if (liElement) {
10889
10924
  if (!isNullOrUndefined(liElement.querySelector('.' + STATUS))) {
10890
10925
  liElement.querySelector('.' + STATUS).innerHTML = this.localizedTexts('fileUploadCancel');
@@ -10902,6 +10937,7 @@ let Uploader = class Uploader extends Component {
10902
10937
  }, false);
10903
10938
  this.checkActionButtonStatus();
10904
10939
  }
10940
+ liElement = null;
10905
10941
  }
10906
10942
  checkChunkUpload() {
10907
10943
  return (this.asyncSettings.chunkSize <= 0 || isNullOrUndefined(this.asyncSettings.chunkSize)) ? false : true;
@@ -10994,6 +11030,7 @@ let Uploader = class Uploader extends Component {
10994
11030
  else {
10995
11031
  this.chunkUploadFailed(e, metaData);
10996
11032
  }
11033
+ liElement = null;
10997
11034
  }
10998
11035
  sendNextRequest(metaData) {
10999
11036
  metaData.start = metaData.end;
@@ -11004,7 +11041,7 @@ let Uploader = class Uploader extends Component {
11004
11041
  }
11005
11042
  removeChunkFile(e, metaData, custom) {
11006
11043
  if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) && !custom)) {
11007
- const liElement = this.getLiElement(metaData.file);
11044
+ let liElement = this.getLiElement(metaData.file);
11008
11045
  const deleteIcon = liElement.querySelector('.' + ABORT_ICON);
11009
11046
  const spinnerTarget = deleteIcon;
11010
11047
  this.updateStatus(metaData.file, this.localizedTexts('fileUploadCancel'), '5');
@@ -11026,6 +11063,7 @@ let Uploader = class Uploader extends Component {
11026
11063
  hideSpinner(spinnerTarget);
11027
11064
  detach(liElement.querySelector('.e-spinner-pane'));
11028
11065
  }
11066
+ liElement = null;
11029
11067
  }
11030
11068
  }
11031
11069
  pauseUpload(metaData, e, custom) {
@@ -11049,7 +11087,7 @@ let Uploader = class Uploader extends Component {
11049
11087
  metaData.request.emitError = false;
11050
11088
  metaData.request.httpRequest.abort();
11051
11089
  }
11052
- const liElement = this.getLiElement(metaData.file);
11090
+ let liElement = this.getLiElement(metaData.file);
11053
11091
  if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom) && liElement) {
11054
11092
  const targetElement = liElement.querySelector('.' + PAUSE_UPLOAD);
11055
11093
  targetElement.classList.remove(PAUSE_UPLOAD);
@@ -11066,9 +11104,10 @@ let Uploader = class Uploader extends Component {
11066
11104
  }
11067
11105
  this.pausedData.push(metaData);
11068
11106
  this.trigger('pausing', eventArgs);
11107
+ liElement = null;
11069
11108
  }
11070
11109
  resumeUpload(metaData, e, custom) {
11071
- const liElement = this.getLiElement(metaData.file);
11110
+ let liElement = this.getLiElement(metaData.file);
11072
11111
  let targetElement;
11073
11112
  if (!isNullOrUndefined(liElement)) {
11074
11113
  targetElement = liElement.querySelector('.' + RESUME_UPLOAD);
@@ -11106,6 +11145,7 @@ let Uploader = class Uploader extends Component {
11106
11145
  }
11107
11146
  }
11108
11147
  }
11148
+ liElement = null;
11109
11149
  }
11110
11150
  updateMetaData(metaData) {
11111
11151
  if (this.uploadMetaData.indexOf(metaData) === -1) {
@@ -11117,7 +11157,7 @@ let Uploader = class Uploader extends Component {
11117
11157
  }
11118
11158
  }
11119
11159
  removeChunkProgressBar(metaData) {
11120
- const liElement = this.getLiElement(metaData.file);
11160
+ let liElement = this.getLiElement(metaData.file);
11121
11161
  if (!isNullOrUndefined(liElement)) {
11122
11162
  this.updateProgressBarClasses(liElement, UPLOAD_SUCCESS);
11123
11163
  this.removeProgressbar(liElement, 'success');
@@ -11128,6 +11168,7 @@ let Uploader = class Uploader extends Component {
11128
11168
  cancelButton.classList.remove(ABORT_ICON, UPLOAD_INPROGRESS);
11129
11169
  }
11130
11170
  }
11171
+ liElement = null;
11131
11172
  }
11132
11173
  chunkUploadFailed(e, metaData, custom) {
11133
11174
  const chunkCount = Math.max(Math.ceil(metaData.file.size / this.asyncSettings.chunkSize), 1);
@@ -11196,6 +11237,7 @@ let Uploader = class Uploader extends Component {
11196
11237
  }
11197
11238
  }
11198
11239
  });
11240
+ liElement = null;
11199
11241
  }
11200
11242
  retryRequest(liElement, metaData, custom) {
11201
11243
  if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom) && liElement) {
@@ -11253,7 +11295,7 @@ let Uploader = class Uploader extends Component {
11253
11295
  metaData.file.status = this.localizedTexts('inProgress');
11254
11296
  }
11255
11297
  this.updateMetaData(metaData);
11256
- const liElement = this.getLiElement(metaData.file);
11298
+ let liElement = this.getLiElement(metaData.file);
11257
11299
  if (isNullOrUndefined(liElement)) {
11258
11300
  return;
11259
11301
  }
@@ -11305,6 +11347,7 @@ let Uploader = class Uploader extends Component {
11305
11347
  this.checkPausePlayAction(e);
11306
11348
  }, false);
11307
11349
  }
11350
+ liElement = null;
11308
11351
  }
11309
11352
  /**
11310
11353
  * It is used to convert bytes value into kilobytes or megabytes depending on the size based
@@ -11381,15 +11424,23 @@ let Uploader = class Uploader extends Component {
11381
11424
  this.uploadWrapper.parentElement.appendChild(this.element);
11382
11425
  detach(this.uploadWrapper);
11383
11426
  }
11384
- this.uploadWrapper = null;
11427
+ this.fileList = [];
11428
+ this.filesData = [];
11429
+ this.fileList.length = 0;
11430
+ this.filesData.length = 0;
11385
11431
  this.uploadWrapper = null;
11386
11432
  this.browseButton = null;
11433
+ this.listParent = null;
11387
11434
  this.dropAreaWrapper = null;
11388
11435
  this.dropZoneElement = null;
11436
+ this.actionButtons = null;
11437
+ this.pauseButton = null;
11438
+ this.formElement = null;
11389
11439
  this.dropArea = null;
11390
11440
  this.keyboardModule = null;
11391
11441
  this.clearButton = null;
11392
11442
  this.uploadButton = null;
11443
+ setValue('ej2_instances', null, this.element);
11393
11444
  super.destroy();
11394
11445
  }
11395
11446
  /**
@@ -11563,7 +11614,7 @@ let Uploader = class Uploader extends Component {
11563
11614
  }
11564
11615
  }
11565
11616
  spliceFiles(liIndex) {
11566
- const liElement = this.fileList[liIndex];
11617
+ let liElement = this.fileList[liIndex];
11567
11618
  const allFiles = this.getFilesData();
11568
11619
  const nameElements = +liElement.getAttribute('data-files-count');
11569
11620
  let startIndex = 0;
@@ -11574,6 +11625,7 @@ let Uploader = class Uploader extends Component {
11574
11625
  for (let j = endIndex; j >= startIndex; j--) {
11575
11626
  allFiles.splice(j, 1);
11576
11627
  }
11628
+ liElement = null;
11577
11629
  }
11578
11630
  /* eslint-disable valid-jsdoc, jsdoc/require-param */
11579
11631
  /**
@@ -14142,7 +14194,7 @@ let TextBox = class TextBox extends Component {
14142
14194
  this.handleFloatLabel();
14143
14195
  break;
14144
14196
  case 'placeholder':
14145
- Input.setPlaceholder(this.placeholder, this.respectiveElement);
14197
+ Input.setPlaceholder(this.placeholder, this.respectiveElement, this.getModuleName());
14146
14198
  Input.calculateWidth(this.respectiveElement, this.textboxWrapper.container);
14147
14199
  break;
14148
14200
  case 'autocomplete':
@@ -14207,9 +14259,8 @@ let TextBox = class TextBox extends Component {
14207
14259
  }
14208
14260
  }
14209
14261
  this.element.appendChild(inputElement);
14210
- setValue('ej2_instances', ejInstance, inputElement);
14211
- setValue('ej2_instances', null, this.element);
14212
14262
  this.element = inputElement;
14263
+ setValue('ej2_instances', ejInstance, this.element);
14213
14264
  }
14214
14265
  this.updateHTMLAttributesToElement();
14215
14266
  this.checkAttributes(false);
@@ -14706,6 +14757,7 @@ let TextBox = class TextBox extends Component {
14706
14757
  floatLabelType: this.floatLabelType,
14707
14758
  properties: this.properties
14708
14759
  }, this.clearButton);
14760
+ setValue('ej2_instances', null, this.element);
14709
14761
  super.destroy();
14710
14762
  }
14711
14763
  /**
@@ -14997,7 +15049,7 @@ let TextArea = class TextArea extends Component {
14997
15049
  this.handleAdornmentFloatLabel();
14998
15050
  break;
14999
15051
  case 'placeholder':
15000
- Input.setPlaceholder(this.placeholder, this.element);
15052
+ Input.setPlaceholder(this.placeholder, this.element, this.getModuleName());
15001
15053
  Input.calculateWidth(this.element, this.textareaWrapper.container);
15002
15054
  break;
15003
15055
  case 'cssClass':
@@ -15091,9 +15143,8 @@ let TextArea = class TextArea extends Component {
15091
15143
  }
15092
15144
  }
15093
15145
  this.element.appendChild(inputElement);
15094
- setValue('ej2_instances', ejInstance, inputElement);
15095
- setValue('ej2_instances', null, this.element);
15096
15146
  this.element = inputElement;
15147
+ setValue('ej2_instances', ejInstance, this.element);
15097
15148
  }
15098
15149
  this.updateHTMLAttributesToElement();
15099
15150
  this.checkAttributes(false);
@@ -15408,6 +15459,7 @@ let TextArea = class TextArea extends Component {
15408
15459
  properties: this.properties
15409
15460
  }, this.clearButton);
15410
15461
  this.formElement = null;
15462
+ setValue('ej2_instances', null, this.element);
15411
15463
  super.destroy();
15412
15464
  }
15413
15465
  focusHandler(args) {