@syncfusion/ej2-inputs 24.2.9 → 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 (179) hide show
  1. package/CHANGELOG.md +0 -38
  2. package/dist/ej2-inputs.min.js +2 -2
  3. package/dist/ej2-inputs.umd.min.js +2 -2
  4. package/dist/ej2-inputs.umd.min.js.map +1 -1
  5. package/dist/es6/ej2-inputs.es2015.js +1095 -271
  6. package/dist/es6/ej2-inputs.es2015.js.map +1 -1
  7. package/dist/es6/ej2-inputs.es5.js +1121 -276
  8. package/dist/es6/ej2-inputs.es5.js.map +1 -1
  9. package/dist/global/ej2-inputs.min.js +2 -2
  10. package/dist/global/ej2-inputs.min.js.map +1 -1
  11. package/dist/global/index.d.ts +1 -1
  12. package/package.json +10 -10
  13. package/src/common/signature-base.d.ts +1 -0
  14. package/src/common/signature-base.js +4 -3
  15. package/src/index.d.ts +1 -0
  16. package/src/index.js +1 -0
  17. package/src/input/input.d.ts +18 -1
  18. package/src/input/input.js +234 -69
  19. package/src/maskedtextbox/base/mask-base.js +1 -0
  20. package/src/maskedtextbox/maskedtextbox/maskedtextbox.d.ts +1 -0
  21. package/src/maskedtextbox/maskedtextbox/maskedtextbox.js +8 -1
  22. package/src/numerictextbox/numerictextbox.d.ts +1 -0
  23. package/src/numerictextbox/numerictextbox.js +8 -1
  24. package/src/rating/rating.js +1 -0
  25. package/src/signature/signature.js +2 -0
  26. package/src/slider/slider-model.d.ts +3 -2
  27. package/src/slider/slider.d.ts +3 -2
  28. package/src/slider/slider.js +1 -1
  29. package/src/textarea/index.d.ts +5 -0
  30. package/src/textarea/index.js +4 -0
  31. package/src/textarea/textarea-model.d.ts +155 -0
  32. package/src/textarea/textarea.d.ts +231 -0
  33. package/src/textarea/textarea.js +696 -0
  34. package/src/textbox/textbox-model.d.ts +1 -1
  35. package/src/textbox/textbox.d.ts +3 -5
  36. package/src/textbox/textbox.js +21 -57
  37. package/styles/bootstrap-dark.css +69 -8
  38. package/styles/bootstrap-dark.scss +1 -0
  39. package/styles/bootstrap.css +69 -8
  40. package/styles/bootstrap.scss +1 -0
  41. package/styles/bootstrap4.css +69 -8
  42. package/styles/bootstrap4.scss +1 -0
  43. package/styles/bootstrap5-dark.css +69 -8
  44. package/styles/bootstrap5-dark.scss +1 -0
  45. package/styles/bootstrap5.css +69 -8
  46. package/styles/bootstrap5.scss +1 -0
  47. package/styles/color-picker/_bds-definition.scss +133 -0
  48. package/styles/color-picker/icons/_bds.scss +9 -0
  49. package/styles/data-form/_bds-definition.scss +41 -0
  50. package/styles/data-form/_layout.scss +3 -3
  51. package/styles/data-form/bootstrap-dark.css +8 -8
  52. package/styles/data-form/bootstrap.css +8 -8
  53. package/styles/data-form/bootstrap4.css +8 -8
  54. package/styles/data-form/bootstrap5-dark.css +8 -8
  55. package/styles/data-form/bootstrap5.css +8 -8
  56. package/styles/data-form/fabric-dark.css +8 -8
  57. package/styles/data-form/fabric.css +8 -8
  58. package/styles/data-form/fluent-dark.css +8 -8
  59. package/styles/data-form/fluent.css +8 -8
  60. package/styles/data-form/highcontrast-light.css +8 -8
  61. package/styles/data-form/highcontrast.css +8 -8
  62. package/styles/data-form/material-dark.css +8 -8
  63. package/styles/data-form/material.css +8 -8
  64. package/styles/data-form/material3-dark.css +8 -8
  65. package/styles/data-form/material3.css +8 -8
  66. package/styles/data-form/tailwind-dark.css +8 -8
  67. package/styles/data-form/tailwind.css +8 -8
  68. package/styles/fabric-dark.css +69 -8
  69. package/styles/fabric-dark.scss +1 -0
  70. package/styles/fabric.css +69 -8
  71. package/styles/fabric.scss +1 -0
  72. package/styles/fluent-dark.css +69 -8
  73. package/styles/fluent-dark.scss +1 -0
  74. package/styles/fluent.css +69 -8
  75. package/styles/fluent.scss +1 -0
  76. package/styles/highcontrast-light.css +69 -8
  77. package/styles/highcontrast-light.scss +1 -0
  78. package/styles/highcontrast.css +69 -8
  79. package/styles/highcontrast.scss +1 -0
  80. package/styles/input/_bds-definition.scss +482 -0
  81. package/styles/input/icons/_bds.scss +17 -0
  82. package/styles/maskedtextbox/_bds-definition.scss +7 -0
  83. package/styles/material-dark.css +75 -8
  84. package/styles/material-dark.scss +1 -0
  85. package/styles/material.css +83 -8
  86. package/styles/material.scss +1 -0
  87. package/styles/material3-dark.css +83 -8
  88. package/styles/material3-dark.scss +1 -0
  89. package/styles/material3.css +83 -8
  90. package/styles/material3.scss +1 -0
  91. package/styles/numerictextbox/_bds-definition.scss +3 -0
  92. package/styles/numerictextbox/icons/_bds.scss +11 -0
  93. package/styles/rating/_bds-definition.scss +47 -0
  94. package/styles/signature/_bds-definition.scss +3 -0
  95. package/styles/slider/_bds-definition.scss +88 -0
  96. package/styles/tailwind-dark.css +69 -8
  97. package/styles/tailwind-dark.scss +1 -0
  98. package/styles/tailwind.css +69 -8
  99. package/styles/tailwind.scss +1 -0
  100. package/styles/textarea/_all.scss +1 -0
  101. package/styles/textarea/_bds-definition.scss +1 -0
  102. package/styles/textarea/_bootstrap-dark-definition.scss +1 -0
  103. package/styles/textarea/_bootstrap-definition.scss +1 -0
  104. package/styles/textarea/_bootstrap4-definition.scss +1 -0
  105. package/styles/textarea/_bootstrap5-dark-definition.scss +1 -0
  106. package/styles/textarea/_bootstrap5-definition.scss +1 -0
  107. package/styles/textarea/_fabric-dark-definition.scss +1 -0
  108. package/styles/textarea/_fabric-definition.scss +1 -0
  109. package/styles/textarea/_fluent-dark-definition.scss +1 -0
  110. package/styles/textarea/_fluent-definition.scss +1 -0
  111. package/styles/textarea/_fusionnew-definition.scss +1 -0
  112. package/styles/textarea/_highcontrast-definition.scss +1 -0
  113. package/styles/textarea/_highcontrast-light-definition.scss +1 -0
  114. package/styles/textarea/_layout.scss +36 -0
  115. package/styles/textarea/_material-dark-definition.scss +1 -0
  116. package/styles/textarea/_material-definition.scss +1 -0
  117. package/styles/textarea/_material3-dark-definition.scss +1 -0
  118. package/styles/textarea/_material3-definition.scss +1 -0
  119. package/styles/textarea/_tailwind-dark-definition.scss +1 -0
  120. package/styles/textarea/_tailwind-definition.scss +1 -0
  121. package/styles/textarea/_theme.scss +1 -0
  122. package/styles/textarea/bootstrap-dark.css +33 -0
  123. package/styles/textarea/bootstrap-dark.scss +5 -0
  124. package/styles/textarea/bootstrap.css +33 -0
  125. package/styles/textarea/bootstrap.scss +5 -0
  126. package/styles/textarea/bootstrap4.css +33 -0
  127. package/styles/textarea/bootstrap4.scss +5 -0
  128. package/styles/textarea/bootstrap5-dark.css +33 -0
  129. package/styles/textarea/bootstrap5-dark.scss +5 -0
  130. package/styles/textarea/bootstrap5.css +33 -0
  131. package/styles/textarea/bootstrap5.scss +5 -0
  132. package/styles/textarea/fabric-dark.css +33 -0
  133. package/styles/textarea/fabric-dark.scss +5 -0
  134. package/styles/textarea/fabric.css +33 -0
  135. package/styles/textarea/fabric.scss +5 -0
  136. package/styles/textarea/fluent-dark.css +33 -0
  137. package/styles/textarea/fluent-dark.scss +5 -0
  138. package/styles/textarea/fluent.css +33 -0
  139. package/styles/textarea/fluent.scss +5 -0
  140. package/styles/textarea/highcontrast-light.css +33 -0
  141. package/styles/textarea/highcontrast-light.scss +5 -0
  142. package/styles/textarea/highcontrast.css +33 -0
  143. package/styles/textarea/highcontrast.scss +5 -0
  144. package/styles/textarea/material-dark.css +39 -0
  145. package/styles/textarea/material-dark.scss +5 -0
  146. package/styles/textarea/material.css +47 -0
  147. package/styles/textarea/material.scss +5 -0
  148. package/styles/textarea/material3-dark.css +102 -0
  149. package/styles/textarea/material3-dark.scss +6 -0
  150. package/styles/textarea/material3.css +158 -0
  151. package/styles/textarea/material3.scss +6 -0
  152. package/styles/textarea/tailwind-dark.css +33 -0
  153. package/styles/textarea/tailwind-dark.scss +5 -0
  154. package/styles/textarea/tailwind.css +33 -0
  155. package/styles/textarea/tailwind.scss +5 -0
  156. package/styles/textbox/_all.scss +1 -1
  157. package/styles/textbox/_bds-definition.scss +4 -0
  158. package/styles/textbox/_layout.scss +0 -11
  159. package/styles/textbox/bootstrap-dark.css +27 -1
  160. package/styles/textbox/bootstrap.css +27 -1
  161. package/styles/textbox/bootstrap4.css +27 -1
  162. package/styles/textbox/bootstrap5-dark.css +27 -1
  163. package/styles/textbox/bootstrap5.css +27 -1
  164. package/styles/textbox/fabric-dark.css +27 -1
  165. package/styles/textbox/fabric.css +27 -1
  166. package/styles/textbox/fluent-dark.css +27 -1
  167. package/styles/textbox/fluent.css +27 -1
  168. package/styles/textbox/highcontrast-light.css +27 -1
  169. package/styles/textbox/highcontrast.css +27 -1
  170. package/styles/textbox/material-dark.css +27 -1
  171. package/styles/textbox/material.css +27 -1
  172. package/styles/textbox/material3-dark.css +27 -1
  173. package/styles/textbox/material3.css +27 -1
  174. package/styles/textbox/tailwind-dark.css +27 -1
  175. package/styles/textbox/tailwind.css +27 -1
  176. package/styles/uploader/_bds-definition.scss +232 -0
  177. package/styles/uploader/icons/_bds.scss +34 -0
  178. package/textarea.d.ts +4 -0
  179. package/textarea.js +4 -0
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * filename: index.d.ts
3
- * version : 24.2.9
3
+ * version : 25.1.35
4
4
  * Copyright Syncfusion Inc. 2001 - 2023. All rights reserved.
5
5
  * Use of this code is subject to the terms of our license.
6
6
  * A copy of the current license can be obtained at any time by e-mailing
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "_from": "@syncfusion/ej2-inputs@*",
3
- "_id": "@syncfusion/ej2-inputs@24.2.7",
3
+ "_id": "@syncfusion/ej2-inputs@18.78.15",
4
4
  "_inBundle": false,
5
- "_integrity": "sha512-P/yEOFoayVt5EMQEmKRlsAk9CZbDfM2k+zqnieGtSPGazGLxhQiaVtoE98n36DHm3fwI7daGBLISdftIogXaIw==",
5
+ "_integrity": "sha512-rXgFizmLuWasLGwlHimRN2E8XhlAFp76EEUFDgV90QcQNrMt0mJYlOOHgEnSeNJxble4xPNfPKg/REgHoApb/w==",
6
6
  "_location": "/@syncfusion/ej2-inputs",
7
7
  "_phantomChildren": {},
8
8
  "_requested": {
@@ -39,19 +39,19 @@
39
39
  "/@syncfusion/ej2-schedule",
40
40
  "/@syncfusion/ej2-vue-inputs"
41
41
  ],
42
- "_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-hotfix-new/@syncfusion/ej2-inputs/-/ej2-inputs-24.2.7.tgz",
43
- "_shasum": "c1d5c0f397725e8b599df5051a99bcd32db96a94",
42
+ "_resolved": "https://nexus.syncfusioninternal.com/repository/ej2-release/@syncfusion/ej2-inputs/-/ej2-inputs-18.78.15.tgz",
43
+ "_shasum": "8ef93741dd68775ea404b54c10bfd6a17a331e7b",
44
44
  "_spec": "@syncfusion/ej2-inputs@*",
45
- "_where": "/jenkins/workspace/elease-automation_release_24.1.1/packages/included",
45
+ "_where": "/jenkins/workspace/elease-automation_release_25.1.1/packages/included",
46
46
  "author": {
47
47
  "name": "Syncfusion Inc."
48
48
  },
49
49
  "bundleDependencies": false,
50
50
  "dependencies": {
51
- "@syncfusion/ej2-base": "~24.2.7",
52
- "@syncfusion/ej2-buttons": "~24.2.7",
53
- "@syncfusion/ej2-popups": "~24.2.9",
54
- "@syncfusion/ej2-splitbuttons": "~24.2.7"
51
+ "@syncfusion/ej2-base": "~25.1.35",
52
+ "@syncfusion/ej2-buttons": "~25.1.35",
53
+ "@syncfusion/ej2-popups": "~25.1.35",
54
+ "@syncfusion/ej2-splitbuttons": "~25.1.35"
55
55
  },
56
56
  "deprecated": false,
57
57
  "description": "A package of Essential JS 2 input components such as Textbox, Color-picker, Masked-textbox, Numeric-textbox, Slider, Upload, and Form-validator that is used to get input from the users.",
@@ -119,7 +119,7 @@
119
119
  "url": "https://github.com/syncfusion/ej2-javascript-ui-controls/tree/master/controls/inputs"
120
120
  },
121
121
  "typings": "index.d.ts",
122
- "version": "24.2.9",
122
+ "version": "25.1.35",
123
123
  "sideEffects": false,
124
124
  "homepage": "https://www.syncfusion.com/javascript-ui-controls"
125
125
  }
@@ -30,6 +30,7 @@ export declare abstract class SignatureBase extends Component<HTMLCanvasElement>
30
30
  private signRatioPointsColl;
31
31
  private tempCanvas;
32
32
  private tempContext;
33
+ private canRedraw;
33
34
  /**
34
35
  * Gets or sets the background color of the component.
35
36
  *
@@ -29,6 +29,7 @@ var SignatureBase = /** @class */ (function (_super) {
29
29
  _this.isResponsive = false;
30
30
  _this.signPointsColl = [];
31
31
  _this.signRatioPointsColl = [];
32
+ _this.canRedraw = true;
32
33
  return _this;
33
34
  }
34
35
  /**
@@ -190,7 +191,7 @@ var SignatureBase = /** @class */ (function (_super) {
190
191
  SignatureBase.prototype.resizeHandler = function () {
191
192
  // eslint-disable-next-line @typescript-eslint/no-this-alias
192
193
  var proxy = this;
193
- if (this.isResponsive) {
194
+ if (this.isResponsive && this.canRedraw) {
194
195
  this.canvasContext.canvas.width = this.element.offsetWidth;
195
196
  this.canvasContext.canvas.height = this.element.offsetHeight;
196
197
  this.canvasContext.scale(1, 1);
@@ -570,7 +571,7 @@ var SignatureBase = /** @class */ (function (_super) {
570
571
  this.internalRefresh();
571
572
  this.signRatioPointsColl = [];
572
573
  this.updateSnapCollection(true);
573
- this.isSignatureEmpty = true;
574
+ this.isSignatureEmpty = this.canRedraw = true;
574
575
  if (!this.isBlazor) {
575
576
  this.trigger('change', args);
576
577
  }
@@ -734,7 +735,7 @@ var SignatureBase = /** @class */ (function (_super) {
734
735
  proxy.updateSnapCollection();
735
736
  });
736
737
  };
737
- this.isSignatureEmpty = false;
738
+ this.isSignatureEmpty = this.canRedraw = false;
738
739
  };
739
740
  SignatureBase.prototype.saveBackground = function (savebg) {
740
741
  var imageSrc;
package/src/index.d.ts CHANGED
@@ -9,6 +9,7 @@ export * from './form-validator/index';
9
9
  export * from './uploader/index';
10
10
  export * from './color-picker/index';
11
11
  export * from './textbox/index';
12
+ export * from './textarea/index';
12
13
  export * from './signature/index';
13
14
  export * from './rating/index';
14
15
  export * from './common/index';
package/src/index.js CHANGED
@@ -9,6 +9,7 @@ export * from './form-validator/index';
9
9
  export * from './uploader/index';
10
10
  export * from './color-picker/index';
11
11
  export * from './textbox/index';
12
+ export * from './textarea/index';
12
13
  export * from './signature/index';
13
14
  export * from './rating/index';
14
15
  export * from './common/index';
@@ -2,6 +2,14 @@
2
2
  * Defines floating label type of the input and decides how the label should float on the input.
3
3
  */
4
4
  export declare type FloatLabelType = 'Never' | 'Always' | 'Auto';
5
+ /**
6
+ * Defines the constant attributes for the input element container.
7
+ */
8
+ export declare const containerAttributes: string[];
9
+ /**
10
+ * Defines the constant focus class for the input element.
11
+ */
12
+ export declare const TEXTBOX_FOCUS: string;
5
13
  /**
6
14
  * Base for Input creation through util methods.
7
15
  */
@@ -17,7 +25,7 @@ export declare namespace Input {
17
25
  function bindInitialEvent(args: InputArgs): void;
18
26
  function wireFloatingEvents(element: HTMLInputElement | HTMLTextAreaElement): void;
19
27
  function wireClearBtnEvents(element: HTMLInputElement | HTMLTextAreaElement, button: HTMLElement, container: HTMLElement): void;
20
- function destroy(): void;
28
+ function destroy(args: InputArgs, button?: HTMLElement): void;
21
29
  /**
22
30
  * Sets the value to the input element.
23
31
  * ```
@@ -200,6 +208,15 @@ export declare namespace Input {
200
208
  */
201
209
  function appendSpan(iconClass: string, container: HTMLElement, internalCreateElement?: createElementParams): HTMLElement;
202
210
  function validateInputType(containerElement: HTMLElement, input: HTMLInputElement | HTMLTextAreaElement): void;
211
+ function updateHTMLAttributesToElement(htmlAttributes: {
212
+ [key: string]: string;
213
+ }, element: HTMLInputElement | HTMLTextAreaElement): void;
214
+ function updateCssClass(newClass: string, oldClass: string, container: HTMLElement): void;
215
+ function getInputValidClassList(inputClassName: string): string;
216
+ function updateHTMLAttributesToWrapper(htmlAttributes: {
217
+ [key: string]: string;
218
+ }, container: HTMLElement): void;
219
+ function isBlank(inputString: string): boolean;
203
220
  }
204
221
  export interface InputObject {
205
222
  container?: HTMLElement;
@@ -19,6 +19,14 @@ var CLASSNAMES = {
19
19
  INPUTCUSTOMTAG: 'e-input-custom-tag',
20
20
  FLOATCUSTOMTAG: 'e-float-custom-tag'
21
21
  };
22
+ /**
23
+ * Defines the constant attributes for the input element container.
24
+ */
25
+ export var containerAttributes = ['title', 'style', 'class'];
26
+ /**
27
+ * Defines the constant focus class for the input element.
28
+ */
29
+ export var TEXTBOX_FOCUS = 'e-input-focus';
22
30
  /**
23
31
  * Base for Input creation through util methods.
24
32
  */
@@ -40,6 +48,7 @@ export var Input;
40
48
  *
41
49
  */
42
50
  function createInput(args, internalCreateElement) {
51
+ args.element.__eventHandlers = {};
43
52
  var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;
44
53
  var inputObject = { container: null, buttons: [], clearButton: null };
45
54
  floatType = args.floatLabelType;
@@ -78,37 +87,64 @@ export var Input;
78
87
  return inputObject;
79
88
  }
80
89
  Input.createInput = createInput;
90
+ function bindFocusEventHandler(args) {
91
+ var parent = getParentNode(args.element);
92
+ if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline') || parent.classList.contains('e-filled')) {
93
+ parent.classList.add('e-input-focus');
94
+ }
95
+ if (args.floatLabelType === 'Auto') {
96
+ setTimeout(function () {
97
+ Input.calculateWidth(args.element, parent);
98
+ }, 80);
99
+ }
100
+ }
101
+ function bindBlurEventHandler(args) {
102
+ var parent = getParentNode(args.element);
103
+ if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline') || parent.classList.contains('e-filled')) {
104
+ parent.classList.remove('e-input-focus');
105
+ }
106
+ if (args.floatLabelType === 'Auto' && args.element.value === '') {
107
+ setTimeout(function () {
108
+ Input.calculateWidth(args.element, parent);
109
+ }, 80);
110
+ }
111
+ }
112
+ function bindInputEventHandler(args) {
113
+ checkInputValue(args.floatLabelType, args.element);
114
+ }
81
115
  function bindInitialEvent(args) {
82
116
  checkInputValue(args.floatLabelType, args.element);
83
- args.element.addEventListener('focus', function () {
84
- var parent = getParentNode(this);
85
- if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')
86
- || parent.classList.contains('e-filled')) {
87
- parent.classList.add('e-input-focus');
88
- }
89
- if (args.floatLabelType === 'Auto') {
90
- setTimeout(function () {
91
- Input.calculateWidth(args.element, parent);
92
- }, 80);
93
- }
94
- });
95
- args.element.addEventListener('blur', function () {
96
- var parent = getParentNode(this);
97
- if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')
98
- || parent.classList.contains('e-filled')) {
99
- parent.classList.remove('e-input-focus');
100
- }
101
- if (args.floatLabelType === 'Auto' && args.element.value === '') {
102
- setTimeout(function () {
103
- Input.calculateWidth(args.element, parent);
104
- }, 80);
105
- }
106
- });
107
- args.element.addEventListener('input', function () {
108
- checkInputValue(floatType, args.element);
109
- });
117
+ var focusHandler = function () { return bindFocusEventHandler(args); };
118
+ var blurHandler = function () { return bindBlurEventHandler(args); };
119
+ var inputHandler = function () { return bindInputEventHandler(args); };
120
+ args.element.addEventListener('focus', focusHandler);
121
+ args.element.addEventListener('blur', blurHandler);
122
+ args.element.addEventListener('input', inputHandler);
123
+ args.element.__eventHandlers["inputFocusHandler"] = { focusHandler: focusHandler };
124
+ args.element.__eventHandlers["inputBlurHandler"] = { blurHandler: blurHandler };
125
+ args.element.__eventHandlers["inputHandler"] = { inputHandler: inputHandler };
110
126
  }
111
127
  Input.bindInitialEvent = bindInitialEvent;
128
+ function unbindInitialEvent(args) {
129
+ if (!isNullOrUndefined(args.element)) {
130
+ if (!isNullOrUndefined(args.element.__eventHandlers)) {
131
+ if (!isNullOrUndefined(args.element.__eventHandlers["inputFocusHandler"])
132
+ && !isNullOrUndefined(args.element.__eventHandlers["inputBlurHandler"])
133
+ && !isNullOrUndefined(args.element.__eventHandlers["inputHandler"])) {
134
+ var focusHandler_1 = args.element.__eventHandlers["inputFocusHandler"].focusHandler;
135
+ var blurHandler_1 = args.element.__eventHandlers["inputBlurHandler"].blurHandler;
136
+ var inputHandler_1 = args.element.__eventHandlers["inputHandler"].inputHandler;
137
+ args.element.removeEventListener('focus', focusHandler_1);
138
+ args.element.removeEventListener('blur', blurHandler_1);
139
+ args.element.removeEventListener('input', inputHandler_1);
140
+ // Clean up stored bound functions
141
+ delete args.element.__eventHandlers["inputFocusHandler"];
142
+ delete args.element.__eventHandlers["inputBlurHandler"];
143
+ delete args.element.__eventHandlers["inputHandler"];
144
+ }
145
+ }
146
+ }
147
+ }
112
148
  function checkInputValue(floatLabelType, inputElement) {
113
149
  var inputValue = inputElement.value;
114
150
  var inputParent = inputElement.parentElement;
@@ -158,8 +194,16 @@ export var Input;
158
194
  }
159
195
  Input.wireFloatingEvents = wireFloatingEvents;
160
196
  function unwireFloatingEvents(element) {
161
- element.removeEventListener('focus', _focusFn);
162
- element.removeEventListener('blur', _blurFn);
197
+ if (!isNullOrUndefined(element)) {
198
+ element.removeEventListener('focus', _focusFn);
199
+ element.removeEventListener('blur', _blurFn);
200
+ }
201
+ }
202
+ function inputEventHandler(args) {
203
+ validateLabel(args.element, args.floatLabelType);
204
+ }
205
+ function blurEventHandler(args) {
206
+ validateLabel(args.element, args.floatLabelType);
163
207
  }
164
208
  function createFloatingInput(args, inputObject, internalCreateElement) {
165
209
  var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;
@@ -215,19 +259,36 @@ export var Input;
215
259
  addClass([floatLabelElement], CLASSNAMES.LABELTOP);
216
260
  }
217
261
  if (args.floatLabelType === 'Auto') {
218
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
219
- args.element.addEventListener('input', function (event) {
220
- validateLabel(args.element, args.floatLabelType);
221
- });
222
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
223
- args.element.addEventListener('blur', function (event) {
224
- validateLabel(args.element, args.floatLabelType);
225
- });
262
+ var inputFloatHandler = function () { return inputEventHandler(args); };
263
+ var blurFloatHandler = function () { return blurEventHandler(args); };
264
+ // Add event listeners using the defined functions
265
+ args.element.addEventListener('input', inputFloatHandler);
266
+ args.element.addEventListener('blur', blurFloatHandler);
267
+ // Store the event handler functions to remove them later
268
+ args.element.__eventHandlers["floatInputHandler"] = { inputFloatHandler: inputFloatHandler };
269
+ args.element.__eventHandlers["floatBlurHandler"] = { blurFloatHandler: blurFloatHandler };
270
+ }
271
+ else {
272
+ unWireFloatLabelEvents(args);
226
273
  }
227
274
  if (!isNullOrUndefined(args.element.getAttribute('id'))) {
228
275
  floatLabelElement.setAttribute('for', args.element.getAttribute('id'));
229
276
  }
230
277
  }
278
+ function unWireFloatLabelEvents(args) {
279
+ if (!isNullOrUndefined(args.element) && !isNullOrUndefined(args.element.__eventHandlers)
280
+ && !isNullOrUndefined(args.element.__eventHandlers["floatInputHandler"])
281
+ && !isNullOrUndefined(args.element.__eventHandlers["floatBlurHandler"])) {
282
+ var inputFloatHandler = args.element.__eventHandlers["floatInputHandler"].inputFloatHandler;
283
+ var blurFloatHandler = args.element.__eventHandlers["floatBlurHandler"].blurFloatHandler;
284
+ // Remove the event listeners using the defined functions
285
+ args.element.removeEventListener('input', inputFloatHandler);
286
+ args.element.removeEventListener('blur', blurFloatHandler);
287
+ // Clean up stored event handler functions
288
+ delete args.element.__eventHandlers["floatInputHandler"];
289
+ delete args.element.__eventHandlers["floatBlurHandler"];
290
+ }
291
+ }
231
292
  function checkFloatLabelType(type, container) {
232
293
  if (type === 'Always' && container.classList.contains('e-outline')) {
233
294
  container.classList.add('e-valid-input');
@@ -315,40 +376,89 @@ export var Input;
315
376
  button.setAttribute('aria-label', 'close');
316
377
  return button;
317
378
  }
379
+ function clickHandler(event, element, button) {
380
+ if (!(element.classList.contains(CLASSNAMES.DISABLE) || element.readOnly)) {
381
+ event.preventDefault();
382
+ if (element !== document.activeElement) {
383
+ element.focus();
384
+ }
385
+ element.value = '';
386
+ addClass([button], CLASSNAMES.CLEARICONHIDE);
387
+ }
388
+ }
389
+ function inputHandler(element, button) {
390
+ updateIconState(element.value, button);
391
+ }
392
+ function focusHandler(element, button) {
393
+ updateIconState(element.value, button, element.readOnly);
394
+ }
395
+ function blurHandler(element, button) {
396
+ setTimeout(function () {
397
+ if (!isNullOrUndefined(button)) {
398
+ addClass([button], CLASSNAMES.CLEARICONHIDE);
399
+ button = !isNullOrUndefined(element) && element.classList.contains('e-combobox') ? null : button;
400
+ }
401
+ }, 200);
402
+ }
318
403
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
319
404
  function wireClearBtnEvents(element, button, container) {
320
405
  if (isBindClearAction === undefined || isBindClearAction) {
321
- button.addEventListener('click', function (event) {
322
- if (!(element.classList.contains(CLASSNAMES.DISABLE) || element.readOnly)) {
323
- event.preventDefault();
324
- if (element !== document.activeElement) {
325
- element.focus();
406
+ var clickHandlerEvent = function (e) { return clickHandler(e, element, button); };
407
+ button.addEventListener('click', clickHandlerEvent);
408
+ element.__eventHandlers["clearClickHandler"] = { clickHandlerEvent: clickHandlerEvent };
409
+ }
410
+ var inputHandlerEvent = function () { return inputHandler(element, button); };
411
+ var focusHandlerEvent = function () { return focusHandler(element, button); };
412
+ var blurHandlerEvent = function () { return blurHandler(element, button); };
413
+ element.addEventListener('input', inputHandlerEvent);
414
+ element.addEventListener('focus', focusHandlerEvent);
415
+ element.addEventListener('blur', blurHandlerEvent);
416
+ // Store the bound functions to remove them later
417
+ element.__eventHandlers["clearInputHandler"] = { inputHandlerEvent: inputHandlerEvent };
418
+ element.__eventHandlers["clearFocusHandler"] = { focusHandlerEvent: focusHandlerEvent };
419
+ element.__eventHandlers["clearBlurHandler"] = { blurHandlerEvent: blurHandlerEvent };
420
+ }
421
+ Input.wireClearBtnEvents = wireClearBtnEvents;
422
+ function unWireClearBtnEvents(element, button) {
423
+ if (!isNullOrUndefined(element) && !isNullOrUndefined(element.__eventHandlers)) {
424
+ if (!isNullOrUndefined(element.__eventHandlers["clearClickHandler"])) {
425
+ var clickHandlerEvent = element.__eventHandlers["clearClickHandler"].clickHandlerEvent;
426
+ if (isBindClearAction === undefined || isBindClearAction) {
427
+ if (!isNullOrUndefined(button)) {
428
+ button.removeEventListener('click', clickHandlerEvent);
326
429
  }
327
- element.value = '';
328
- addClass([button], CLASSNAMES.CLEARICONHIDE);
329
430
  }
330
- });
431
+ delete element.__eventHandlers["clearClickHandler"];
432
+ }
433
+ if (!isNullOrUndefined(element.__eventHandlers["clearInputHandler"])
434
+ && !isNullOrUndefined(element.__eventHandlers["clearFocusHandler"])
435
+ && !isNullOrUndefined(element.__eventHandlers["clearBlurHandler"])) {
436
+ var inputHandlerEvent = element.__eventHandlers["clearInputHandler"].inputHandlerEvent;
437
+ var focusHandlerEvent = element.__eventHandlers["clearFocusHandler"].focusHandlerEvent;
438
+ var blurHandlerEvent = element.__eventHandlers["clearBlurHandler"].blurHandlerEvent;
439
+ element.removeEventListener('input', inputHandlerEvent);
440
+ element.removeEventListener('focus', focusHandlerEvent);
441
+ element.removeEventListener('blur', blurHandlerEvent);
442
+ // Clean up stored Event functions
443
+ delete element.__eventHandlers["clearInputHandler"];
444
+ delete element.__eventHandlers["clearFocusHandler"];
445
+ delete element.__eventHandlers["clearBlurHandler"];
446
+ }
331
447
  }
332
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
333
- element.addEventListener('input', function (event) {
334
- updateIconState(element.value, button);
335
- });
336
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
337
- element.addEventListener('focus', function (event) {
338
- updateIconState(element.value, button, element.readOnly);
339
- });
340
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
341
- element.addEventListener('blur', function (event) {
342
- setTimeout(function () {
343
- if (!isNullOrUndefined(button)) {
344
- addClass([button], CLASSNAMES.CLEARICONHIDE);
345
- button = !isNullOrUndefined(element) && element.classList.contains('e-combobox') ? null : button;
346
- }
347
- }, 200);
348
- });
349
448
  }
350
- Input.wireClearBtnEvents = wireClearBtnEvents;
351
- function destroy() {
449
+ function destroy(args, button) {
450
+ if (button === void 0) { button = null; }
451
+ unbindInitialEvent(args);
452
+ if (args.floatLabelType === 'Auto') {
453
+ unWireFloatLabelEvents(args);
454
+ }
455
+ if (args.properties.showClearButton) {
456
+ unWireClearBtnEvents(args.element, button);
457
+ }
458
+ unwireFloatingEvents(args.element);
459
+ if (!isNullOrUndefined(args.element)) {
460
+ delete args.element.__eventHandlers;
461
+ }
352
462
  privateInputObj = null;
353
463
  }
354
464
  Input.destroy = destroy;
@@ -569,7 +679,7 @@ export var Input;
569
679
  * - Element to be enabled or disabled.
570
680
  */
571
681
  function setEnabled(isEnable, element, floatLabelType, inputContainer) {
572
- var disabledAttrs = { 'disabled': 'disabled', 'aria-disabled': 'true' };
682
+ var disabledAttrs = { 'disabled': '', 'aria-disabled': 'true' };
573
683
  var considerWrapper = isNullOrUndefined(inputContainer) ? false : true;
574
684
  if (isEnable) {
575
685
  element.classList.remove(CLASSNAMES.DISABLE);
@@ -684,11 +794,11 @@ export var Input;
684
794
  var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;
685
795
  var container = closest(input, '.' + CLASSNAMES.INPUTGROUP);
686
796
  floatType = type;
797
+ var customTag = container.tagName;
798
+ customTag = customTag !== 'DIV' && customTag !== 'SPAN' ? customTag : null;
799
+ var args = { element: input, floatLabelType: type,
800
+ customTag: customTag, properties: { placeholder: placeholder } };
687
801
  if (type !== 'Never') {
688
- var customTag = container.tagName;
689
- customTag = customTag !== 'DIV' && customTag !== 'SPAN' ? customTag : null;
690
- var args = { element: input, floatLabelType: type,
691
- customTag: customTag, properties: { placeholder: placeholder } };
692
802
  var iconEle = container.querySelector('.e-clear-icon');
693
803
  var inputObj = { container: container };
694
804
  input.classList.remove(CLASSNAMES.INPUT);
@@ -719,6 +829,9 @@ export var Input;
719
829
  wrapper.insertBefore(floatText, iconEle);
720
830
  }
721
831
  }
832
+ else {
833
+ unWireFloatLabelEvents(args);
834
+ }
722
835
  checkFloatLabelType(type, input.parentElement);
723
836
  }
724
837
  Input.addFloating = addFloating;
@@ -902,5 +1015,57 @@ export var Input;
902
1015
  }
903
1016
  }
904
1017
  Input.validateInputType = validateInputType;
1018
+ function updateHTMLAttributesToElement(htmlAttributes, element) {
1019
+ if (!isNullOrUndefined(htmlAttributes)) {
1020
+ for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {
1021
+ var key = _a[_i];
1022
+ if (containerAttributes.indexOf(key) < 0) {
1023
+ element.setAttribute(key, htmlAttributes["" + key]);
1024
+ }
1025
+ }
1026
+ }
1027
+ }
1028
+ Input.updateHTMLAttributesToElement = updateHTMLAttributesToElement;
1029
+ function updateCssClass(newClass, oldClass, container) {
1030
+ setCssClass(getInputValidClassList(newClass), [container], getInputValidClassList(oldClass));
1031
+ }
1032
+ Input.updateCssClass = updateCssClass;
1033
+ function getInputValidClassList(inputClassName) {
1034
+ var result = inputClassName;
1035
+ if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {
1036
+ result = (inputClassName.replace(/\s+/g, ' ')).trim();
1037
+ }
1038
+ return result;
1039
+ }
1040
+ Input.getInputValidClassList = getInputValidClassList;
1041
+ function updateHTMLAttributesToWrapper(htmlAttributes, container) {
1042
+ if (!isNullOrUndefined(htmlAttributes)) {
1043
+ for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {
1044
+ var key = _a[_i];
1045
+ if (containerAttributes.indexOf(key) > -1) {
1046
+ if (key === 'class') {
1047
+ var updatedClassValues = this.getInputValidClassList(htmlAttributes["" + key]);
1048
+ if (updatedClassValues !== '') {
1049
+ addClass([container], updatedClassValues.split(' '));
1050
+ }
1051
+ }
1052
+ else if (key === 'style') {
1053
+ var setStyle = container.getAttribute(key);
1054
+ setStyle = !isNullOrUndefined(setStyle) ? (setStyle + htmlAttributes["" + key]) :
1055
+ htmlAttributes["" + key];
1056
+ container.setAttribute(key, setStyle);
1057
+ }
1058
+ else {
1059
+ container.setAttribute(key, htmlAttributes["" + key]);
1060
+ }
1061
+ }
1062
+ }
1063
+ }
1064
+ }
1065
+ Input.updateHTMLAttributesToWrapper = updateHTMLAttributesToWrapper;
1066
+ function isBlank(inputString) {
1067
+ return (!inputString || /^\s*$/.test(inputString));
1068
+ }
1069
+ Input.isBlank = isBlank;
905
1070
  })(Input || (Input = {}));
906
1071
  /* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */
@@ -162,6 +162,7 @@ export function unwireEvents() {
162
162
  EventHandler.remove(this.element, 'focus', maskInputFocusHandler);
163
163
  EventHandler.remove(this.element, 'blur', maskInputBlurHandler);
164
164
  EventHandler.remove(this.element, 'paste', maskInputPasteHandler);
165
+ EventHandler.remove(this.element, 'drop', maskInputDropHandler);
165
166
  EventHandler.remove(this.element, 'cut', maskInputCutHandler);
166
167
  EventHandler.remove(this.element, 'mousedown', maskInputMouseDownHandler);
167
168
  EventHandler.remove(this.element, 'mouseup', maskInputMouseUpHandler);
@@ -39,6 +39,7 @@ export declare class MaskedTextBox extends Component<HTMLInputElement> implement
39
39
  private isAngular;
40
40
  private preventChange;
41
41
  private isClicked;
42
+ private clearButton;
42
43
  /**
43
44
  * Gets or sets the CSS classes to root element of the MaskedTextBox which helps to customize the
44
45
  * complete UI styles for the MaskedTextBox component.
@@ -449,6 +449,9 @@ var MaskedTextBox = /** @class */ (function (_super) {
449
449
  */
450
450
  MaskedTextBox.prototype.destroy = function () {
451
451
  unwireEvents.call(this);
452
+ if (this.showClearButton) {
453
+ this.clearButton = document.getElementsByClassName('e-clear-icon')[0];
454
+ }
452
455
  var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',
453
456
  'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-invalid'];
454
457
  for (var i = 0; i < attrArray.length; i++) {
@@ -460,7 +463,11 @@ var MaskedTextBox = /** @class */ (function (_super) {
460
463
  detach(this.inputObj.container);
461
464
  }
462
465
  this.blurEventArgs = null;
463
- Input.destroy();
466
+ Input.destroy({
467
+ element: this.element,
468
+ floatLabelType: this.floatLabelType,
469
+ properties: this.properties
470
+ }, this.clearButton);
464
471
  this.changeEventArgs = null;
465
472
  this.inputObj = null;
466
473
  _super.prototype.destroy.call(this);
@@ -52,6 +52,7 @@ export declare class NumericTextBox extends Component<HTMLInputElement> implemen
52
52
  private isAngular;
53
53
  private isDynamicChange;
54
54
  private inputValue;
55
+ private clearButton;
55
56
  /**
56
57
  * Gets or Sets the CSS classes to root element of the NumericTextBox which helps to customize the
57
58
  * complete UI styles for the NumericTextBox component.
@@ -1114,6 +1114,9 @@ var NumericTextBox = /** @class */ (function (_super) {
1114
1114
  */
1115
1115
  NumericTextBox.prototype.destroy = function () {
1116
1116
  this.unwireEvents();
1117
+ if (this.showClearButton) {
1118
+ this.clearButton = document.getElementsByClassName('e-clear-icon')[0];
1119
+ }
1117
1120
  detach(this.hiddenInput);
1118
1121
  if (this.showSpinButton) {
1119
1122
  this.unwireSpinBtnEvents();
@@ -1137,7 +1140,11 @@ var NumericTextBox = /** @class */ (function (_super) {
1137
1140
  this.blurEventArgs = null;
1138
1141
  this.focusEventArgs = null;
1139
1142
  this.inputWrapper = null;
1140
- Input.destroy();
1143
+ Input.destroy({
1144
+ element: this.element,
1145
+ floatLabelType: this.floatLabelType,
1146
+ properties: this.properties
1147
+ }, this.clearButton);
1141
1148
  _super.prototype.destroy.call(this);
1142
1149
  };
1143
1150
  /* eslint-disable valid-jsdoc, jsdoc/require-returns */
@@ -587,6 +587,7 @@ var Rating = /** @class */ (function (_super) {
587
587
  });
588
588
  };
589
589
  Rating.prototype.keyActionHandler = function (e) {
590
+ e.preventDefault();
590
591
  if (this.disabled || this.readOnly) {
591
592
  return;
592
593
  }
@@ -60,6 +60,8 @@ var Signature = /** @class */ (function (_super) {
60
60
  this.initialize();
61
61
  };
62
62
  Signature.prototype.initialize = function () {
63
+ this.element.setAttribute('role', 'img');
64
+ this.element.setAttribute('aria-label', 'signature');
63
65
  addClass([this.element], 'e-' + this.getModuleName());
64
66
  _super.prototype.initialize.call(this, this.element);
65
67
  if (this.enablePersistence) {
@@ -342,9 +342,10 @@ export interface SliderModel extends ComponentModel{
342
342
  cssClass?: string;
343
343
 
344
344
  /**
345
- * Defines whether to allow the cross-scripting site or not.
345
+ * Specifies whether to display or remove the untrusted HTML values in the Slider component.
346
+ * If 'enableHtmlSanitizer' set to true, the component will sanitize any suspected untrusted strings and scripts before rendering them.
346
347
  *
347
- * @default false
348
+ * @default true
348
349
  */
349
350
  enableHtmlSanitizer?: boolean;
350
351