@syncfusion/ej2-inputs 20.2.43 → 20.2.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 (37) hide show
  1. package/.eslintrc.json +244 -0
  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 +57 -2
  5. package/dist/es6/ej2-inputs.es2015.js.map +1 -1
  6. package/dist/es6/ej2-inputs.es5.js +57 -2
  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 +22 -0
  13. package/src/input/input.js +53 -2
  14. package/src/maskedtextbox/maskedtextbox/maskedtextbox.js +1 -0
  15. package/src/numerictextbox/numerictextbox.js +2 -0
  16. package/src/textbox/textbox.js +1 -0
  17. package/styles/bootstrap5-dark.css +2 -2
  18. package/styles/bootstrap5.css +2 -2
  19. package/styles/fluent-dark.css +2 -2
  20. package/styles/fluent.css +2 -2
  21. package/styles/input/_layout.scss +38 -1
  22. package/styles/input/material-dark.css +27 -0
  23. package/styles/input/material.css +27 -0
  24. package/styles/material-dark.css +27 -0
  25. package/styles/material.css +27 -0
  26. package/styles/tailwind-dark.css +2 -2
  27. package/styles/tailwind.css +2 -2
  28. package/styles/uploader/_bootstrap5-definition.scss +1 -1
  29. package/styles/uploader/_fluent-definition.scss +1 -1
  30. package/styles/uploader/_tailwind-definition.scss +1 -1
  31. package/styles/uploader/bootstrap5-dark.css +2 -2
  32. package/styles/uploader/bootstrap5.css +2 -2
  33. package/styles/uploader/fluent-dark.css +2 -2
  34. package/styles/uploader/fluent.css +2 -2
  35. package/styles/uploader/tailwind-dark.css +2 -2
  36. package/styles/uploader/tailwind.css +2 -2
  37. package/tslint.json +111 -0
@@ -12,6 +12,7 @@ const CLASSNAMES = {
12
12
  FLOATINPUT: 'e-float-input',
13
13
  FLOATLINE: 'e-float-line',
14
14
  FLOATTEXT: 'e-float-text',
15
+ FLOATTEXTCONTENT: 'e-float-text-content',
15
16
  CLEARICON: 'e-clear-icon',
16
17
  CLEARICONHIDE: 'e-clear-icon-hide',
17
18
  LABELTOP: 'e-label-top',
@@ -68,6 +69,7 @@ var Input;
68
69
  }
69
70
  validateInputType(inputObject.container, args.element);
70
71
  inputObject = setPropertyValue(args, inputObject);
72
+ createSpanElement(inputObject, makeElement);
71
73
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
72
74
  return inputObject;
73
75
  }
@@ -362,6 +364,9 @@ var Input;
362
364
  */
363
365
  function setValue$$1(value, element, floatLabelType, clearButton) {
364
366
  element.value = value;
367
+ if (isNullOrUndefined(element.getAttribute('value'))) {
368
+ calculateWidth(element, element.parentElement);
369
+ }
365
370
  if ((!isNullOrUndefined(floatLabelType)) && floatLabelType === 'Auto') {
366
371
  validateLabel(element, floatLabelType);
367
372
  }
@@ -402,6 +407,26 @@ var Input;
402
407
  }
403
408
  }
404
409
  Input.setCssClass = setCssClass;
410
+ /**
411
+ * Set the width to the placeholder when it overflows on the button such as spinbutton, clearbutton, icon etc
412
+ * ```
413
+ * E.g : Input.calculateWidth(element, container);
414
+ * ```
415
+ *
416
+ * @param {any} element - Input element which is need to add.
417
+ * @param {HTMLElement} container - The parent element which is need to get the label span to calculate width
418
+ */
419
+ function calculateWidth(element, container) {
420
+ if (!isNullOrUndefined(container.getElementsByClassName('e-float-text-content')[0])) {
421
+ if (container.getElementsByClassName('e-float-text-content')[0].classList.contains('e-float-text-overflow')) {
422
+ container.getElementsByClassName('e-float-text-content')[0].classList.remove('e-float-text-overflow');
423
+ }
424
+ if (element.clientWidth < container.getElementsByClassName('e-float-text-content')[0].clientWidth || container.getElementsByClassName('e-control')[0].clientWidth === container.getElementsByClassName('e-float-text-content')[0].clientWidth) {
425
+ container.getElementsByClassName('e-float-text-content')[0].classList.add('e-float-text-overflow');
426
+ }
427
+ }
428
+ }
429
+ Input.calculateWidth = calculateWidth;
405
430
  /**
406
431
  * Set the width to the wrapper of input element.
407
432
  * ```
@@ -418,6 +443,7 @@ var Input;
418
443
  else if (typeof width === 'string') {
419
444
  container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));
420
445
  }
446
+ calculateWidth(container.firstChild, container);
421
447
  }
422
448
  Input.setWidth = setWidth;
423
449
  /**
@@ -434,13 +460,13 @@ var Input;
434
460
  const parentElement = getParentNode(element);
435
461
  if (parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {
436
462
  if (!isNullOrUndefined(placeholder) && placeholder !== '') {
437
- parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;
463
+ parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = placeholder : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;
438
464
  parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);
439
465
  element.removeAttribute('placeholder');
440
466
  }
441
467
  else {
442
468
  parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);
443
- parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';
469
+ parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = '' : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';
444
470
  }
445
471
  }
446
472
  else {
@@ -631,6 +657,8 @@ var Input;
631
657
  const inputObj = { container: container };
632
658
  input.classList.remove(CLASSNAMES.INPUT);
633
659
  createFloatingInput(args, inputObj, makeElement);
660
+ createSpanElement(inputObj, makeElement);
661
+ calculateWidth(args.element, inputObj.container);
634
662
  const isPrependIcon = container.classList.contains('e-float-icon-left');
635
663
  if (isNullOrUndefined(iconEle)) {
636
664
  if (isPrependIcon) {
@@ -661,6 +689,26 @@ var Input;
661
689
  checkFloatLabelType(type, input.parentElement);
662
690
  }
663
691
  Input.addFloating = addFloating;
692
+ /**
693
+ * Create the span inside the label and add the label text into the span textcontent
694
+ * ```
695
+ * E.g : Input.createSpanElement(inputObject, makeElement);
696
+ * ```
697
+ *
698
+ * @param {InputObject} inputObject
699
+ * - Element which is need to get the label
700
+ * @param {createElementParams} makeElement
701
+ * - Element which is need to create the span
702
+ */
703
+ function createSpanElement(inputObject, makeElement) {
704
+ if (inputObject.container.classList.contains('e-outline') && inputObject.container.getElementsByClassName('e-float-text')[0]) {
705
+ const labelSpanElement = makeElement('span', { className: CLASSNAMES.FLOATTEXTCONTENT });
706
+ labelSpanElement.innerHTML = inputObject.container.getElementsByClassName('e-float-text')[0].innerHTML;
707
+ inputObject.container.getElementsByClassName('e-float-text')[0].innerHTML = '';
708
+ inputObject.container.getElementsByClassName('e-float-text')[0].appendChild(labelSpanElement);
709
+ }
710
+ }
711
+ Input.createSpanElement = createSpanElement;
664
712
  /**
665
713
  * Enable or Disable the ripple effect on the icons inside the Input. Ripple effect is only applicable for material theme.
666
714
  * ```
@@ -749,6 +797,9 @@ var Input;
749
797
  prependSpan(icon, container, input, internalCreate);
750
798
  }
751
799
  }
800
+ if (container.getElementsByClassName('e-input-group-icon')[0] && container.getElementsByClassName('e-float-text-overflow')[0]) {
801
+ container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');
802
+ }
752
803
  }
753
804
  Input.addIcon = addIcon;
754
805
  /**
@@ -1958,6 +2009,7 @@ let NumericTextBox = class NumericTextBox extends Component {
1958
2009
  switch (prop) {
1959
2010
  case 'width':
1960
2011
  this.setElementWidth(newProp.width);
2012
+ Input.calculateWidth(this.element, this.container);
1961
2013
  break;
1962
2014
  case 'cssClass':
1963
2015
  this.updateCssClass(newProp.cssClass, oldProp.cssClass);
@@ -1986,6 +2038,7 @@ let NumericTextBox = class NumericTextBox extends Component {
1986
2038
  break;
1987
2039
  case 'placeholder':
1988
2040
  Input.setPlaceholder(newProp.placeholder, this.element);
2041
+ Input.calculateWidth(this.element, this.container);
1989
2042
  break;
1990
2043
  case 'step':
1991
2044
  this.step = newProp.step;
@@ -3607,6 +3660,7 @@ let MaskedTextBox = class MaskedTextBox extends Component {
3607
3660
  break;
3608
3661
  case 'width':
3609
3662
  this.setWidth(newProp.width);
3663
+ Input.calculateWidth(this.element, this.inputObj.container);
3610
3664
  break;
3611
3665
  case 'cssClass':
3612
3666
  this.updateCssClass(newProp.cssClass, oldProp.cssClass);
@@ -12862,6 +12916,7 @@ let TextBox = class TextBox extends Component {
12862
12916
  break;
12863
12917
  case 'placeholder':
12864
12918
  Input.setPlaceholder(this.placeholder, this.respectiveElement);
12919
+ Input.calculateWidth(this.respectiveElement, this.textboxWrapper.container);
12865
12920
  break;
12866
12921
  case 'autocomplete':
12867
12922
  if (this.autocomplete !== 'on' && this.autocomplete !== '') {