igniteui-webcomponents 6.1.2 → 6.2.0

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 (225) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/LICENSE +1 -1
  3. package/README.md +13 -1
  4. package/components/card/themes/content.js +7 -0
  5. package/components/card/themes/content.js.map +1 -1
  6. package/components/card/themes/shared/content/card.content.indigo.css.d.ts +1 -0
  7. package/components/card/themes/shared/content/card.content.indigo.css.js +3 -0
  8. package/components/card/themes/shared/content/card.content.indigo.css.js.map +1 -0
  9. package/components/carousel/carousel-indicator.d.ts +1 -1
  10. package/components/carousel/carousel-indicator.js.map +1 -1
  11. package/components/carousel/carousel-slide.d.ts +3 -3
  12. package/components/carousel/carousel-slide.js +7 -13
  13. package/components/carousel/carousel-slide.js.map +1 -1
  14. package/components/carousel/carousel.d.ts +39 -38
  15. package/components/carousel/carousel.js +160 -153
  16. package/components/carousel/carousel.js.map +1 -1
  17. package/components/checkbox/checkbox-base.d.ts +3 -5
  18. package/components/checkbox/checkbox-base.js +15 -21
  19. package/components/checkbox/checkbox-base.js.map +1 -1
  20. package/components/checkbox/checkbox.d.ts +3 -4
  21. package/components/checkbox/checkbox.js +18 -17
  22. package/components/checkbox/checkbox.js.map +1 -1
  23. package/components/checkbox/switch.d.ts +0 -1
  24. package/components/checkbox/switch.js +7 -10
  25. package/components/checkbox/switch.js.map +1 -1
  26. package/components/checkbox/themes/dark/checkbox/checkbox.bootstrap.css.js +1 -1
  27. package/components/checkbox/themes/dark/checkbox/checkbox.bootstrap.css.js.map +1 -1
  28. package/components/checkbox/themes/dark/checkbox/checkbox.fluent.css.js +1 -1
  29. package/components/checkbox/themes/dark/checkbox/checkbox.fluent.css.js.map +1 -1
  30. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js +1 -1
  31. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js.map +1 -1
  32. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js +1 -1
  33. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js.map +1 -1
  34. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
  35. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
  36. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js +1 -1
  37. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js.map +1 -1
  38. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js +1 -1
  39. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js.map +1 -1
  40. package/components/chip/chip.d.ts +11 -11
  41. package/components/chip/chip.js +61 -65
  42. package/components/chip/chip.js.map +1 -1
  43. package/components/combo/combo.d.ts +3 -3
  44. package/components/combo/combo.js +12 -6
  45. package/components/combo/combo.js.map +1 -1
  46. package/components/combo/themes/shared/combo.common.css.js +1 -1
  47. package/components/combo/themes/shared/combo.common.css.js.map +1 -1
  48. package/components/combo/themes/shared/combo.indigo.css.js +1 -1
  49. package/components/combo/themes/shared/combo.indigo.css.js.map +1 -1
  50. package/components/combo/themes/shared/combo.material.css.js +1 -1
  51. package/components/combo/themes/shared/combo.material.css.js.map +1 -1
  52. package/components/common/controllers/internals.d.ts +66 -2
  53. package/components/common/controllers/internals.js +21 -0
  54. package/components/common/controllers/internals.js.map +1 -1
  55. package/components/common/controllers/slot.d.ts +87 -0
  56. package/components/common/controllers/slot.js +75 -0
  57. package/components/common/controllers/slot.js.map +1 -0
  58. package/components/common/mixins/forms/associated.d.ts +1 -1
  59. package/components/common/mixins/forms/associated.js +91 -36
  60. package/components/common/mixins/forms/associated.js.map +1 -1
  61. package/components/common/mixins/forms/form-transformers.d.ts +21 -0
  62. package/components/common/mixins/forms/form-transformers.js +64 -0
  63. package/components/common/mixins/forms/form-transformers.js.map +1 -0
  64. package/components/common/mixins/forms/form-value.d.ts +7 -36
  65. package/components/common/mixins/forms/form-value.js +2 -64
  66. package/components/common/mixins/forms/form-value.js.map +1 -1
  67. package/components/common/mixins/forms/types.d.ts +19 -10
  68. package/components/common/mixins/forms/types.js +2 -1
  69. package/components/common/mixins/forms/types.js.map +1 -1
  70. package/components/common/util.d.ts +1 -0
  71. package/components/common/util.js +3 -0
  72. package/components/common/util.js.map +1 -1
  73. package/components/date-picker/date-picker.d.ts +1 -3
  74. package/components/date-picker/date-picker.js +11 -13
  75. package/components/date-picker/date-picker.js.map +1 -1
  76. package/components/date-picker/themes/dark/date-picker.indigo.css.js +1 -1
  77. package/components/date-picker/themes/dark/date-picker.indigo.css.js.map +1 -1
  78. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js +1 -1
  79. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js.map +1 -1
  80. package/components/date-picker/themes/shared/date-picker.common.css.js +1 -1
  81. package/components/date-picker/themes/shared/date-picker.common.css.js.map +1 -1
  82. package/components/date-picker/themes/shared/date-picker.fluent.css.js +1 -1
  83. package/components/date-picker/themes/shared/date-picker.fluent.css.js.map +1 -1
  84. package/components/date-picker/themes/shared/date-picker.indigo.css.js +1 -1
  85. package/components/date-picker/themes/shared/date-picker.indigo.css.js.map +1 -1
  86. package/components/date-picker/themes/shared/date-picker.material.css.js +1 -1
  87. package/components/date-picker/themes/shared/date-picker.material.css.js.map +1 -1
  88. package/components/date-range-picker/date-range-picker.d.ts +1 -3
  89. package/components/date-range-picker/date-range-picker.js +19 -26
  90. package/components/date-range-picker/date-range-picker.js.map +1 -1
  91. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js +1 -1
  92. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js.map +1 -1
  93. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js +1 -1
  94. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js.map +1 -1
  95. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js +1 -1
  96. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js.map +1 -1
  97. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js +1 -1
  98. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js.map +1 -1
  99. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js +1 -1
  100. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js.map +1 -1
  101. package/components/date-range-picker/themes/shared/date-range-picker.material.css.js +1 -1
  102. package/components/date-range-picker/themes/shared/date-range-picker.material.css.js.map +1 -1
  103. package/components/date-time-input/date-time-input.d.ts +1 -2
  104. package/components/date-time-input/date-time-input.js +7 -7
  105. package/components/date-time-input/date-time-input.js.map +1 -1
  106. package/components/dialog/dialog.d.ts +23 -25
  107. package/components/dialog/dialog.js +108 -115
  108. package/components/dialog/dialog.js.map +1 -1
  109. package/components/dialog/themes/dark/dialog.bootstrap.css.js +1 -1
  110. package/components/dialog/themes/dark/dialog.bootstrap.css.js.map +1 -1
  111. package/components/expansion-panel/expansion-panel.d.ts +12 -14
  112. package/components/expansion-panel/expansion-panel.js +43 -56
  113. package/components/expansion-panel/expansion-panel.js.map +1 -1
  114. package/components/file-input/file-input.d.ts +1 -3
  115. package/components/file-input/file-input.js +6 -11
  116. package/components/file-input/file-input.js.map +1 -1
  117. package/components/file-input/themes/shared/file-input.bootstrap.css.js +1 -1
  118. package/components/file-input/themes/shared/file-input.bootstrap.css.js.map +1 -1
  119. package/components/file-input/themes/shared/file-input.material.css.js +1 -1
  120. package/components/file-input/themes/shared/file-input.material.css.js.map +1 -1
  121. package/components/input/input.d.ts +1 -4
  122. package/components/input/input.js +7 -12
  123. package/components/input/input.js.map +1 -1
  124. package/components/input/themes/shared/input.bootstrap.css.js +1 -1
  125. package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
  126. package/components/input/themes/shared/input.common.css.js +1 -1
  127. package/components/input/themes/shared/input.common.css.js.map +1 -1
  128. package/components/input/themes/shared/input.fluent.css.js +1 -1
  129. package/components/input/themes/shared/input.fluent.css.js.map +1 -1
  130. package/components/input/themes/shared/input.indigo.css.js +1 -1
  131. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  132. package/components/input/themes/shared/input.material.css.js +1 -1
  133. package/components/input/themes/shared/input.material.css.js.map +1 -1
  134. package/components/mask-input/mask-input-base.js +1 -0
  135. package/components/mask-input/mask-input-base.js.map +1 -1
  136. package/components/mask-input/mask-input.d.ts +2 -3
  137. package/components/mask-input/mask-input.js +5 -8
  138. package/components/mask-input/mask-input.js.map +1 -1
  139. package/components/nav-drawer/nav-drawer-item.d.ts +3 -4
  140. package/components/nav-drawer/nav-drawer-item.js +15 -18
  141. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  142. package/components/nav-drawer/nav-drawer.d.ts +1 -2
  143. package/components/nav-drawer/nav-drawer.js +9 -11
  144. package/components/nav-drawer/nav-drawer.js.map +1 -1
  145. package/components/nav-drawer/themes/container.base.css.js +1 -1
  146. package/components/nav-drawer/themes/container.base.css.js.map +1 -1
  147. package/components/nav-drawer/themes/shared/container/nav-drawer.common.css.js +1 -1
  148. package/components/nav-drawer/themes/shared/container/nav-drawer.common.css.js.map +1 -1
  149. package/components/popover/popover.d.ts +17 -16
  150. package/components/popover/popover.js +81 -91
  151. package/components/popover/popover.js.map +1 -1
  152. package/components/progress/base.d.ts +8 -8
  153. package/components/progress/base.js +19 -23
  154. package/components/progress/base.js.map +1 -1
  155. package/components/progress/circular-gradient.js.map +1 -1
  156. package/components/progress/circular-progress.d.ts +3 -4
  157. package/components/progress/circular-progress.js +15 -18
  158. package/components/progress/circular-progress.js.map +1 -1
  159. package/components/progress/linear-progress.d.ts +1 -0
  160. package/components/progress/linear-progress.js +5 -1
  161. package/components/progress/linear-progress.js.map +1 -1
  162. package/components/radio/radio.d.ts +3 -5
  163. package/components/radio/radio.js +33 -31
  164. package/components/radio/radio.js.map +1 -1
  165. package/components/radio/themes/dark/radio.fluent.css.js +1 -1
  166. package/components/radio/themes/dark/radio.fluent.css.js.map +1 -1
  167. package/components/radio/themes/shared/radio.bootstrap.css.js +1 -1
  168. package/components/radio/themes/shared/radio.bootstrap.css.js.map +1 -1
  169. package/components/radio/themes/shared/radio.common.css.js +1 -1
  170. package/components/radio/themes/shared/radio.common.css.js.map +1 -1
  171. package/components/radio/themes/shared/radio.fluent.css.js +1 -1
  172. package/components/radio/themes/shared/radio.fluent.css.js.map +1 -1
  173. package/components/radio/themes/shared/radio.indigo.css.js +1 -1
  174. package/components/radio/themes/shared/radio.indigo.css.js.map +1 -1
  175. package/components/radio/themes/shared/radio.material.css.js +1 -1
  176. package/components/radio/themes/shared/radio.material.css.js.map +1 -1
  177. package/components/radio-group/radio-group.d.ts +4 -4
  178. package/components/radio-group/radio-group.js +24 -21
  179. package/components/radio-group/radio-group.js.map +1 -1
  180. package/components/rating/rating.d.ts +1 -2
  181. package/components/rating/rating.js +4 -3
  182. package/components/rating/rating.js.map +1 -1
  183. package/components/select/select.d.ts +35 -38
  184. package/components/select/select.js +138 -146
  185. package/components/select/select.js.map +1 -1
  186. package/components/select/themes/shared/select.bootstrap.css.js +1 -1
  187. package/components/select/themes/shared/select.bootstrap.css.js.map +1 -1
  188. package/components/select/themes/shared/select.common.css.js +1 -1
  189. package/components/select/themes/shared/select.common.css.js.map +1 -1
  190. package/components/select/themes/shared/select.fluent.css.js +1 -1
  191. package/components/select/themes/shared/select.fluent.css.js.map +1 -1
  192. package/components/select/themes/shared/select.indigo.css.js +1 -1
  193. package/components/select/themes/shared/select.indigo.css.js.map +1 -1
  194. package/components/select/themes/shared/select.material.css.js +1 -1
  195. package/components/select/themes/shared/select.material.css.js.map +1 -1
  196. package/components/slider/slider-label.js.map +1 -1
  197. package/components/slider/slider.d.ts +1 -2
  198. package/components/slider/slider.js +5 -2
  199. package/components/slider/slider.js.map +1 -1
  200. package/components/textarea/textarea.d.ts +13 -20
  201. package/components/textarea/textarea.js +66 -90
  202. package/components/textarea/textarea.js.map +1 -1
  203. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  204. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  205. package/components/textarea/themes/shared/textarea.common.css.js +1 -1
  206. package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
  207. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  208. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  209. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  210. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  211. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  212. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  213. package/components/tile-manager/position.js +2 -1
  214. package/components/tile-manager/position.js.map +1 -1
  215. package/components/tile-manager/tile.d.ts +8 -12
  216. package/components/tile-manager/tile.js +16 -37
  217. package/components/tile-manager/tile.js.map +1 -1
  218. package/components/validation-container/validation-container.d.ts +2 -1
  219. package/components/validation-container/validation-container.js +19 -14
  220. package/components/validation-container/validation-container.js.map +1 -1
  221. package/custom-elements.json +9346 -6470
  222. package/igniteui-webcomponents.css-data.json +1 -1
  223. package/igniteui-webcomponents.html-data.json +1 -1
  224. package/package.json +1 -1
  225. package/web-types.json +2 -2
@@ -6,21 +6,23 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  var IgcSelectComponent_1;
8
8
  import { html } from 'lit';
9
- import { property, query, queryAssignedElements, state, } from 'lit/decorators.js';
9
+ import { property, query, state } from 'lit/decorators.js';
10
10
  import { ifDefined } from 'lit/directives/if-defined.js';
11
11
  import { addThemingController } from '../../theming/theming-controller.js';
12
12
  import { addKeybindings, altKey, arrowDown, arrowLeft, arrowRight, arrowUp, endKey, enterKey, escapeKey, homeKey, spaceBar, tabKey, } from '../common/controllers/key-bindings.js';
13
13
  import { addRootClickController } from '../common/controllers/root-click.js';
14
14
  import { addRootScrollHandler } from '../common/controllers/root-scroll.js';
15
+ import { addSlotController, setSlots } from '../common/controllers/slot.js';
15
16
  import { blazorAdditionalDependencies } from '../common/decorators/blazorAdditionalDependencies.js';
16
17
  import { watch } from '../common/decorators/watch.js';
17
18
  import { registerComponent } from '../common/definitions/register.js';
18
19
  import { getActiveItems, getItems, getNextActiveItem, getPreviousActiveItem, IgcBaseComboBoxLikeComponent, setInitialSelectionState, } from '../common/mixins/combo-box.js';
19
20
  import { EventEmitterMixin } from '../common/mixins/event-emitter.js';
20
21
  import { FormAssociatedRequiredMixin } from '../common/mixins/forms/associated-required.js';
21
- import { createFormValueState, } from '../common/mixins/forms/form-value.js';
22
+ import { FormValueSelectTransformers } from '../common/mixins/forms/form-transformers.js';
23
+ import { createFormValueState } from '../common/mixins/forms/form-value.js';
22
24
  import { partMap } from '../common/part-map.js';
23
- import { addSafeEventListener, findElementFromEventPath, isEmpty, isString, } from '../common/util.js';
25
+ import { addSafeEventListener, findElementFromEventPath, isString, } from '../common/util.js';
24
26
  import IgcIconComponent from '../icon/icon.js';
25
27
  import IgcInputComponent from '../input/input.js';
26
28
  import IgcPopoverComponent from '../popover/popover.js';
@@ -32,20 +34,21 @@ import { styles } from './themes/select.base.css.js';
32
34
  import { styles as shared } from './themes/shared/select.common.css.js';
33
35
  import { all } from './themes/themes.js';
34
36
  import { selectValidators } from './validators.js';
37
+ const Slots = setSlots('prefix', 'suffix', 'header', 'footer', 'helper-text', 'toggle-icon', 'toggle-icon-expanded', 'value-missing', 'custom-error', 'invalid');
35
38
  let IgcSelectComponent = IgcSelectComponent_1 = class IgcSelectComponent extends FormAssociatedRequiredMixin(EventEmitterMixin(IgcBaseComboBoxLikeComponent)) {
36
39
  static register() {
37
40
  registerComponent(IgcSelectComponent_1, IgcIconComponent, IgcInputComponent, IgcPopoverComponent, IgcSelectGroupComponent, IgcSelectHeaderComponent, IgcSelectItemComponent);
38
41
  }
39
- get _activeItems() {
40
- return Array.from(getActiveItems(this, IgcSelectItemComponent.tagName));
41
- }
42
42
  get __validators() {
43
43
  return selectValidators;
44
44
  }
45
+ get _activeItems() {
46
+ return Array.from(getActiveItems(this, IgcSelectItemComponent.tagName));
47
+ }
45
48
  set value(value) {
46
49
  this._updateValue(value);
47
- const item = this.getItem(this._formValue.value);
48
- item ? this.setSelectedItem(item) : this.clearSelectedItem();
50
+ const item = this._getItem(this._formValue.value);
51
+ item ? this._setSelectedItem(item) : this._clearSelectedItem();
49
52
  }
50
53
  get value() {
51
54
  return this._formValue.value;
@@ -59,29 +62,27 @@ let IgcSelectComponent = IgcSelectComponent_1 = class IgcSelectComponent extends
59
62
  get selectedItem() {
60
63
  return this._selectedItem;
61
64
  }
62
- scrollStrategyChanged() {
65
+ _scrollStrategyChange() {
63
66
  this._rootScrollController.update({ resetListeners: true });
64
67
  }
65
- openChange() {
68
+ _openChange() {
66
69
  this._rootClickController.update();
67
70
  this._rootScrollController.update();
68
71
  }
69
72
  constructor() {
70
73
  super();
74
+ this._searchTerm = '';
75
+ this._lastKeyTime = 0;
76
+ this._slots = addSlotController(this, { slots: Slots });
77
+ this._rootScrollController = addRootScrollHandler(this, {
78
+ hideCallback: this._handleClosing,
79
+ });
71
80
  this._rootClickController = addRootClickController(this, {
72
- onHide: this.handleClosing,
81
+ onHide: this._handleClosing,
73
82
  });
74
83
  this._formValue = createFormValueState(this, {
75
84
  initialValue: undefined,
76
- transformers: {
77
- setValue: (value) => value || undefined,
78
- setDefaultValue: (value) => value || undefined,
79
- },
80
- });
81
- this._searchTerm = '';
82
- this._lastKeyTime = 0;
83
- this._rootScrollController = addRootScrollHandler(this, {
84
- hideCallback: this.handleClosing,
85
+ transformers: FormValueSelectTransformers,
85
86
  });
86
87
  this._selectedItem = null;
87
88
  this.outlined = false;
@@ -93,32 +94,27 @@ let IgcSelectComponent = IgcSelectComponent_1 = class IgcSelectComponent extends
93
94
  skip: () => this.disabled,
94
95
  bindingDefaults: { preventDefault: true, triggers: ['keydownRepeat'] },
95
96
  })
96
- .set([altKey, arrowDown], this.altArrowDown)
97
- .set([altKey, arrowUp], this.altArrowUp)
98
- .set(arrowDown, this.onArrowDown)
99
- .set(arrowUp, this.onArrowUp)
100
- .set(arrowLeft, this.onArrowUp)
101
- .set(arrowRight, this.onArrowDown)
102
- .set(tabKey, this.onTabKey, { preventDefault: false })
103
- .set(escapeKey, this.onEscapeKey)
104
- .set(homeKey, this.onHomeKey)
105
- .set(endKey, this.onEndKey)
106
- .set(spaceBar, this.onSpaceBarKey)
107
- .set(enterKey, this.onEnterKey);
108
- addSafeEventListener(this, 'keydown', this.handleSearch);
109
- addSafeEventListener(this, 'focusin', this.handleFocusIn);
110
- addSafeEventListener(this, 'focusout', this.handleFocusOut);
111
- }
112
- createRenderRoot() {
113
- const root = super.createRenderRoot();
114
- root.addEventListener('slotchange', () => this.requestUpdate());
115
- return root;
97
+ .set([altKey, arrowDown], this._handleAltArrowDown)
98
+ .set([altKey, arrowUp], this._handleAltArrowUp)
99
+ .set(arrowDown, this._handleArrowDown)
100
+ .set(arrowUp, this._handleArrowUp)
101
+ .set(arrowLeft, this._handleArrowUp)
102
+ .set(arrowRight, this._handleArrowDown)
103
+ .set(tabKey, this._handleTab, { preventDefault: false })
104
+ .set(escapeKey, this._handleEscape)
105
+ .set(homeKey, this._handleHome)
106
+ .set(endKey, this._handleEnd)
107
+ .set(spaceBar, this._handleSpace)
108
+ .set(enterKey, this._handleEnter);
109
+ addSafeEventListener(this, 'keydown', this._handleSearch);
110
+ addSafeEventListener(this, 'focusin', this._handleFocusIn);
111
+ addSafeEventListener(this, 'focusout', this._handleFocusOut);
116
112
  }
117
113
  async firstUpdated() {
118
114
  await this.updateComplete;
119
115
  const selected = setInitialSelectionState(this.items);
120
116
  if (this.value && !selected) {
121
- this._selectItem(this.getItem(this.value), false);
117
+ this._selectItem(this._getItem(this.value), false);
122
118
  }
123
119
  if (selected && selected.value !== this.value) {
124
120
  this.defaultValue = selected.value;
@@ -127,30 +123,9 @@ let IgcSelectComponent = IgcSelectComponent_1 = class IgcSelectComponent extends
127
123
  if (this.autofocus) {
128
124
  this.focus();
129
125
  }
130
- this._updateValidity();
131
- }
132
- handleFocusIn({ relatedTarget }) {
133
- this._dirty = true;
134
- if (this.contains(relatedTarget) || this.open) {
135
- return;
136
- }
137
- }
138
- handleFocusOut({ relatedTarget }) {
139
- if (this.contains(relatedTarget)) {
140
- return;
141
- }
142
- this.checkValidity();
143
- }
144
- handleClick(event) {
145
- const item = findElementFromEventPath(IgcSelectItemComponent.tagName, event);
146
- if (item && this._activeItems.includes(item)) {
147
- this._selectItem(item);
148
- }
149
- }
150
- handleChange(item) {
151
- return this.emitEvent('igcChange', { detail: item });
126
+ this._validate();
152
127
  }
153
- handleSearch(event) {
128
+ _handleSearch(event) {
154
129
  if (!/^.$/u.test(event.key)) {
155
130
  return;
156
131
  }
@@ -163,74 +138,99 @@ let IgcSelectComponent = IgcSelectComponent_1 = class IgcSelectComponent extends
163
138
  this._searchTerm += event.key.toLocaleLowerCase();
164
139
  const item = this._activeItems.find((item) => item.textContent?.trim().toLocaleLowerCase().startsWith(this._searchTerm));
165
140
  if (item) {
166
- this.open ? this.activateItem(item) : this._selectItem(item);
141
+ this.open ? this._activateItem(item) : this._selectItem(item);
167
142
  this._activeItem.focus();
168
143
  }
169
144
  }
170
- handleAnchorClick() {
171
- super.handleAnchorClick();
172
- this.focusItemOnOpen();
173
- }
174
- onEnterKey() {
145
+ _handleEnter() {
175
146
  this.open && this._activeItem
176
147
  ? this._selectItem(this._activeItem)
177
148
  : this.handleAnchorClick();
178
149
  }
179
- onSpaceBarKey() {
150
+ _handleSpace() {
180
151
  if (!this.open) {
181
152
  this.handleAnchorClick();
182
153
  }
183
154
  }
184
- onArrowDown() {
155
+ _handleArrowDown() {
185
156
  const item = getNextActiveItem(this.items, this._activeItem);
186
157
  this.open ? this._navigateToActiveItem(item) : this._selectItem(item);
187
158
  }
188
- onArrowUp() {
159
+ _handleArrowUp() {
189
160
  const item = getPreviousActiveItem(this.items, this._activeItem);
190
161
  this.open ? this._navigateToActiveItem(item) : this._selectItem(item);
191
162
  }
192
- altArrowDown() {
163
+ _handleAltArrowDown() {
193
164
  if (!this.open) {
194
165
  this._show(true);
195
- this.focusItemOnOpen();
166
+ this._focusItemOnOpen();
196
167
  }
197
168
  }
198
- async altArrowUp() {
169
+ async _handleAltArrowUp() {
199
170
  if (this.open && (await this._hide(true))) {
200
171
  this._input.focus();
201
172
  }
202
173
  }
203
- async onEscapeKey() {
174
+ async _handleEscape() {
204
175
  if (await this._hide(true)) {
205
176
  this._input.focus();
206
177
  }
207
178
  }
208
- onTabKey(event) {
179
+ _handleTab(event) {
209
180
  if (this.open) {
210
181
  event.preventDefault();
211
182
  this._selectItem(this._activeItem ?? this._selectedItem);
212
183
  this._hide(true);
213
184
  }
214
185
  }
215
- onHomeKey() {
186
+ _handleHome() {
216
187
  const item = this._activeItems.at(0);
217
188
  this.open ? this._navigateToActiveItem(item) : this._selectItem(item);
218
189
  }
219
- onEndKey() {
190
+ _handleEnd() {
220
191
  const item = this._activeItems.at(-1);
221
192
  this.open ? this._navigateToActiveItem(item) : this._selectItem(item);
222
193
  }
223
- handleClosing() {
194
+ _handleFocusIn() {
195
+ this._setTouchedState();
196
+ }
197
+ _handleFocusOut({ relatedTarget }) {
198
+ if (this.contains(relatedTarget)) {
199
+ return;
200
+ }
201
+ super._handleBlur();
202
+ }
203
+ _handleClick(event) {
204
+ const item = findElementFromEventPath(IgcSelectItemComponent.tagName, event);
205
+ if (item && this._activeItems.includes(item)) {
206
+ this._selectItem(item);
207
+ }
208
+ }
209
+ _handleChange(item) {
210
+ this._setTouchedState();
211
+ return this.emitEvent('igcChange', { detail: item });
212
+ }
213
+ _handleClosing() {
224
214
  this._hide(true);
225
215
  }
226
- activateItem(item) {
216
+ handleAnchorClick() {
217
+ super.handleAnchorClick();
218
+ this._focusItemOnOpen();
219
+ }
220
+ _restoreDefaultValue() {
221
+ super._restoreDefaultValue();
222
+ this._formValue.setValueAndFormState(this._formValue.defaultValue);
223
+ const item = this._getItem(this._formValue.value);
224
+ item ? this._setSelectedItem(item) : this._clearSelectedItem();
225
+ }
226
+ _activateItem(item) {
227
227
  if (this._activeItem) {
228
228
  this._activeItem.active = false;
229
229
  }
230
230
  this._activeItem = item;
231
231
  this._activeItem.active = true;
232
232
  }
233
- setSelectedItem(item) {
233
+ _setSelectedItem(item) {
234
234
  if (this._selectedItem) {
235
235
  this._selectedItem.selected = false;
236
236
  }
@@ -240,7 +240,7 @@ let IgcSelectComponent = IgcSelectComponent_1 = class IgcSelectComponent extends
240
240
  }
241
241
  _selectItem(item, emit = true) {
242
242
  if (!item) {
243
- this.clearSelectedItem();
243
+ this._clearSelectedItem();
244
244
  this._updateValue();
245
245
  return null;
246
246
  }
@@ -251,11 +251,11 @@ let IgcSelectComponent = IgcSelectComponent_1 = class IgcSelectComponent extends
251
251
  this._input.focus();
252
252
  return this._selectedItem;
253
253
  }
254
- const newItem = this.setSelectedItem(item);
255
- this.activateItem(newItem);
254
+ const newItem = this._setSelectedItem(item);
255
+ this._activateItem(newItem);
256
256
  this._updateValue(newItem.value);
257
257
  if (emit)
258
- this.handleChange(newItem);
258
+ this._handleChange(newItem);
259
259
  if (shouldFocus)
260
260
  this._input.focus();
261
261
  if (shouldHide)
@@ -264,26 +264,25 @@ let IgcSelectComponent = IgcSelectComponent_1 = class IgcSelectComponent extends
264
264
  }
265
265
  _navigateToActiveItem(item) {
266
266
  if (item) {
267
- this.activateItem(item);
267
+ this._activateItem(item);
268
268
  this._activeItem.focus({ preventScroll: true });
269
269
  item.scrollIntoView({ behavior: 'auto', block: 'nearest' });
270
270
  }
271
271
  }
272
272
  _updateValue(value) {
273
273
  this._formValue.setValueAndFormState(value);
274
- this._validate();
275
274
  }
276
- clearSelectedItem() {
275
+ _clearSelectedItem() {
277
276
  if (this._selectedItem) {
278
277
  this._selectedItem.selected = false;
279
278
  }
280
279
  this._selectedItem = null;
281
280
  }
282
- async focusItemOnOpen() {
281
+ async _focusItemOnOpen() {
283
282
  await this.updateComplete;
284
283
  (this._selectedItem || this._activeItem)?.focus();
285
284
  }
286
- getItem(value) {
285
+ _getItem(value) {
287
286
  return this.items.find((item) => item.value === value);
288
287
  }
289
288
  focus(options) {
@@ -299,57 +298,54 @@ let IgcSelectComponent = IgcSelectComponent_1 = class IgcSelectComponent extends
299
298
  return valid;
300
299
  }
301
300
  navigateTo(value) {
302
- const item = isString(value) ? this.getItem(value) : this.items[value];
301
+ const item = isString(value) ? this._getItem(value) : this.items[value];
303
302
  if (item) {
304
303
  this._navigateToActiveItem(item);
305
304
  }
306
305
  return item ?? null;
307
306
  }
308
307
  select(value) {
309
- const item = isString(value) ? this.getItem(value) : this.items[value];
308
+ const item = isString(value) ? this._getItem(value) : this.items[value];
310
309
  return item ? this._selectItem(item, false) : null;
311
310
  }
312
311
  clearSelection() {
313
312
  this._updateValue();
314
- this.clearSelectedItem();
313
+ this._clearSelectedItem();
315
314
  }
316
- renderInputSlots() {
317
- const prefixName = isEmpty(this._inputPrefix) ? '' : 'prefix';
318
- const suffixName = isEmpty(this._inputSuffix) ? '' : 'suffix';
315
+ _renderInputSlots() {
316
+ const prefix = this._slots.hasAssignedElements('prefix') ? 'prefix' : '';
317
+ const suffix = this._slots.hasAssignedElements('suffix') ? 'suffix' : '';
319
318
  return html `
320
- <span slot=${prefixName}>
319
+ <span slot=${prefix}>
321
320
  <slot name="prefix"></slot>
322
321
  </span>
323
322
 
324
- <span slot=${suffixName}>
323
+ <span slot=${suffix}>
325
324
  <slot name="suffix"></slot>
326
325
  </span>
327
326
  `;
328
327
  }
329
- renderToggleIcon() {
328
+ _renderToggleIcon() {
330
329
  const parts = { 'toggle-icon': true, filled: !!this.value };
331
- const iconHidden = this.open && !isEmpty(this._expandedIconSlot);
332
- const iconExpandedHidden = !iconHidden;
330
+ const iconName = this.open ? 'input_collapse' : 'input_expand';
331
+ const iconHidden = this.open && this._slots.hasAssignedElements('toggle-icon-expanded');
333
332
  return html `
334
333
  <span slot="suffix" part=${partMap(parts)} aria-hidden="true">
335
334
  <slot name="toggle-icon" ?hidden=${iconHidden}>
336
- <igc-icon
337
- name=${this.open ? 'input_collapse' : 'input_expand'}
338
- collection="default"
339
- ></igc-icon>
335
+ <igc-icon name=${iconName} collection="default"></igc-icon>
340
336
  </slot>
341
- <slot name="toggle-icon-expanded" ?hidden=${iconExpandedHidden}></slot>
337
+ <slot name="toggle-icon-expanded" ?hidden=${!iconHidden}></slot>
342
338
  </span>
343
339
  `;
344
340
  }
345
- renderHelperText() {
341
+ _renderHelperText() {
346
342
  return IgcValidationContainerComponent.create(this, {
347
343
  id: 'select-helper-text',
348
344
  slot: 'anchor',
349
345
  hasHelperText: true,
350
346
  });
351
347
  }
352
- renderInputAnchor() {
348
+ _renderInputAnchor() {
353
349
  const value = this.selectedItem?.textContent?.trim();
354
350
  return html `
355
351
  <igc-input
@@ -359,7 +355,7 @@ let IgcSelectComponent = IgcSelectComponent_1 = class IgcSelectComponent extends
359
355
  readonly
360
356
  aria-controls="dropdown"
361
357
  aria-describedby="select-helper-text"
362
- aria-expanded=${this.open ? 'true' : 'false'}
358
+ aria-expanded=${this.open}
363
359
  exportparts="container: input, input: native-input, label, prefix, suffix"
364
360
  tabIndex=${this.disabled ? -1 : 0}
365
361
  value=${ifDefined(value)}
@@ -371,37 +367,42 @@ let IgcSelectComponent = IgcSelectComponent_1 = class IgcSelectComponent extends
371
367
  .outlined=${this.outlined}
372
368
  @click=${this.handleAnchorClick}
373
369
  >
374
- ${this.renderInputSlots()} ${this.renderToggleIcon()}
370
+ ${this._renderInputSlots()} ${this._renderToggleIcon()}
375
371
  </igc-input>
376
372
 
377
- ${this.renderHelperText()}
373
+ ${this._renderHelperText()}
378
374
  `;
379
375
  }
380
- renderDropdown() {
381
- return html `<div part="base" .inert=${!this.open}>
382
- <div
383
- id="dropdown"
384
- role="listbox"
385
- part="list"
386
- aria-labelledby="input"
387
- @click=${this.handleClick}
388
- >
389
- <slot name="header"></slot>
390
- <slot></slot>
391
- <slot name="footer"></slot>
376
+ _renderDropdown() {
377
+ return html `
378
+ <div part="base" .inert=${!this.open}>
379
+ <div
380
+ id="dropdown"
381
+ role="listbox"
382
+ part="list"
383
+ aria-labelledby="input"
384
+ @click=${this._handleClick}
385
+ >
386
+ <slot name="header"></slot>
387
+ <slot></slot>
388
+ <slot name="footer"></slot>
389
+ </div>
392
390
  </div>
393
- </div>`;
391
+ `;
394
392
  }
395
393
  render() {
396
- return html `<igc-popover
397
- ?open=${this.open}
398
- flip
399
- shift
400
- same-width
401
- .offset=${this.distance}
402
- .placement=${this.placement}
403
- >${this.renderInputAnchor()} ${this.renderDropdown()}
404
- </igc-popover>`;
394
+ return html `
395
+ <igc-popover
396
+ ?open=${this.open}
397
+ flip
398
+ shift
399
+ same-width
400
+ .offset=${this.distance}
401
+ .placement=${this.placement}
402
+ >
403
+ ${this._renderInputAnchor()} ${this._renderDropdown()}
404
+ </igc-popover>
405
+ `;
405
406
  }
406
407
  };
407
408
  IgcSelectComponent.tagName = 'igc-select';
@@ -415,15 +416,6 @@ __decorate([
415
416
  __decorate([
416
417
  query(IgcInputComponent.tagName, true)
417
418
  ], IgcSelectComponent.prototype, "_input", void 0);
418
- __decorate([
419
- queryAssignedElements({ slot: 'suffix' })
420
- ], IgcSelectComponent.prototype, "_inputSuffix", void 0);
421
- __decorate([
422
- queryAssignedElements({ slot: 'prefix' })
423
- ], IgcSelectComponent.prototype, "_inputPrefix", void 0);
424
- __decorate([
425
- queryAssignedElements({ slot: 'toggle-icon-expanded' })
426
- ], IgcSelectComponent.prototype, "_expandedIconSlot", void 0);
427
419
  __decorate([
428
420
  property()
429
421
  ], IgcSelectComponent.prototype, "value", null);
@@ -450,10 +442,10 @@ __decorate([
450
442
  ], IgcSelectComponent.prototype, "scrollStrategy", void 0);
451
443
  __decorate([
452
444
  watch('scrollStrategy', { waitUntilFirstUpdate: true })
453
- ], IgcSelectComponent.prototype, "scrollStrategyChanged", null);
445
+ ], IgcSelectComponent.prototype, "_scrollStrategyChange", null);
454
446
  __decorate([
455
447
  watch('open', { waitUntilFirstUpdate: true })
456
- ], IgcSelectComponent.prototype, "openChange", null);
448
+ ], IgcSelectComponent.prototype, "_openChange", null);
457
449
  IgcSelectComponent = IgcSelectComponent_1 = __decorate([
458
450
  blazorAdditionalDependencies('IgcIconComponent, IgcInputComponent, IgcSelectGroupComponent, IgcSelectHeaderComponent, IgcSelectItemComponent')
459
451
  ], IgcSelectComponent);