igniteui-webcomponents 7.3.0-beta.0 → 7.3.0-beta.1

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 (293) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/animations/player.d.ts +7 -2
  3. package/animations/player.js +1 -2
  4. package/animations/player.js.map +1 -1
  5. package/components/accordion/accordion.js +4 -16
  6. package/components/accordion/accordion.js.map +1 -1
  7. package/components/avatar/avatar.d.ts +0 -1
  8. package/components/avatar/avatar.js +5 -9
  9. package/components/avatar/avatar.js.map +1 -1
  10. package/components/badge/badge.d.ts +1 -3
  11. package/components/badge/badge.js +4 -8
  12. package/components/badge/badge.js.map +1 -1
  13. package/components/banner/banner.d.ts +6 -5
  14. package/components/banner/banner.js +19 -17
  15. package/components/banner/banner.js.map +1 -1
  16. package/components/button/button-base.d.ts +1 -1
  17. package/components/button/button-base.js.map +1 -1
  18. package/components/button-group/button-group.d.ts +0 -1
  19. package/components/button-group/button-group.js +12 -17
  20. package/components/button-group/button-group.js.map +1 -1
  21. package/components/calendar/base.d.ts +3 -13
  22. package/components/calendar/base.js +10 -31
  23. package/components/calendar/base.js.map +1 -1
  24. package/components/calendar/calendar.d.ts +2 -2
  25. package/components/calendar/months-view/months-view.d.ts +1 -1
  26. package/components/calendar/months-view/months-view.js.map +1 -1
  27. package/components/carousel/carousel-indicator.d.ts +1 -1
  28. package/components/carousel/carousel-indicator.js +13 -13
  29. package/components/carousel/carousel-indicator.js.map +1 -1
  30. package/components/carousel/carousel-slide.d.ts +0 -2
  31. package/components/carousel/carousel-slide.js +7 -9
  32. package/components/carousel/carousel-slide.js.map +1 -1
  33. package/components/carousel/carousel.d.ts +52 -35
  34. package/components/carousel/carousel.js +136 -122
  35. package/components/carousel/carousel.js.map +1 -1
  36. package/components/carousel/themes/carousel.base.css.js +1 -1
  37. package/components/carousel/themes/carousel.base.css.js.map +1 -1
  38. package/components/chat/chat-input.d.ts +1 -1
  39. package/components/chat/chat-input.js +21 -21
  40. package/components/chat/chat-input.js.map +1 -1
  41. package/components/chat/chat.d.ts +0 -2
  42. package/components/chat/chat.js +6 -12
  43. package/components/chat/chat.js.map +1 -1
  44. package/components/checkbox/checkbox-base.d.ts +1 -1
  45. package/components/checkbox/checkbox.d.ts +3 -5
  46. package/components/checkbox/checkbox.js +33 -44
  47. package/components/checkbox/checkbox.js.map +1 -1
  48. package/components/checkbox/switch.d.ts +1 -1
  49. package/components/checkbox/switch.js +23 -34
  50. package/components/checkbox/switch.js.map +1 -1
  51. package/components/chip/chip.d.ts +1 -14
  52. package/components/chip/chip.js +12 -33
  53. package/components/chip/chip.js.map +1 -1
  54. package/components/combo/combo-item.d.ts +1 -3
  55. package/components/combo/combo-item.js +5 -12
  56. package/components/combo/combo-item.js.map +1 -1
  57. package/components/combo/combo.d.ts +7 -20
  58. package/components/combo/combo.js +59 -81
  59. package/components/combo/combo.js.map +1 -1
  60. package/components/date-picker/date-picker.base.d.ts +12 -9
  61. package/components/date-picker/date-picker.base.js +24 -31
  62. package/components/date-picker/date-picker.base.js.map +1 -1
  63. package/components/date-picker/date-picker.d.ts +1 -1
  64. package/components/date-picker/date-picker.js +3 -5
  65. package/components/date-picker/date-picker.js.map +1 -1
  66. package/components/date-range-picker/date-range-input.d.ts +2 -4
  67. package/components/date-range-picker/date-range-input.js +6 -37
  68. package/components/date-range-picker/date-range-input.js.map +1 -1
  69. package/components/date-range-picker/date-range-picker.d.ts +2 -5
  70. package/components/date-range-picker/date-range-picker.js +15 -28
  71. package/components/date-range-picker/date-range-picker.js.map +1 -1
  72. package/components/date-range-picker/predefined-ranges-area.d.ts +2 -2
  73. package/components/date-range-picker/predefined-ranges-area.js +4 -6
  74. package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
  75. package/components/date-range-picker/validators.d.ts +1 -1
  76. package/components/date-range-picker/validators.js +5 -18
  77. package/components/date-range-picker/validators.js.map +1 -1
  78. package/components/date-time-input/date-part.d.ts +2 -1
  79. package/components/date-time-input/date-part.js +38 -75
  80. package/components/date-time-input/date-part.js.map +1 -1
  81. package/components/date-time-input/date-time-input.base.d.ts +31 -12
  82. package/components/date-time-input/date-time-input.base.js +43 -11
  83. package/components/date-time-input/date-time-input.base.js.map +1 -1
  84. package/components/date-time-input/date-time-input.d.ts +1 -3
  85. package/components/date-time-input/date-time-input.js +7 -40
  86. package/components/date-time-input/date-time-input.js.map +1 -1
  87. package/components/date-time-input/datetime-mask-parser.d.ts +8 -0
  88. package/components/date-time-input/datetime-mask-parser.js +8 -8
  89. package/components/date-time-input/datetime-mask-parser.js.map +1 -1
  90. package/components/date-time-input/validators.js +3 -14
  91. package/components/date-time-input/validators.js.map +1 -1
  92. package/components/dialog/dialog.d.ts +6 -7
  93. package/components/dialog/dialog.js +21 -26
  94. package/components/dialog/dialog.js.map +1 -1
  95. package/components/divider/divider.d.ts +1 -4
  96. package/components/divider/divider.js +8 -17
  97. package/components/divider/divider.js.map +1 -1
  98. package/components/dropdown/dropdown-group.js +1 -6
  99. package/components/dropdown/dropdown-group.js.map +1 -1
  100. package/components/expansion-panel/expansion-panel.d.ts +15 -5
  101. package/components/expansion-panel/expansion-panel.js +23 -34
  102. package/components/expansion-panel/expansion-panel.js.map +1 -1
  103. package/components/file-input/file-input.d.ts +2 -14
  104. package/components/file-input/file-input.js +5 -23
  105. package/components/file-input/file-input.js.map +1 -1
  106. package/components/highlight/highlight.d.ts +6 -8
  107. package/components/highlight/highlight.js +12 -20
  108. package/components/highlight/highlight.js.map +1 -1
  109. package/components/icon/icon.d.ts +1 -1
  110. package/components/icon/registry/types.d.ts +1 -1
  111. package/components/icon/registry/types.js.map +1 -1
  112. package/components/input/input.d.ts +9 -19
  113. package/components/input/input.js +30 -60
  114. package/components/input/input.js.map +1 -1
  115. package/components/mask-input/mask-input.d.ts +1 -1
  116. package/components/mask-input/mask-input.js +2 -4
  117. package/components/mask-input/mask-input.js.map +1 -1
  118. package/components/nav-drawer/nav-drawer.d.ts +7 -7
  119. package/components/nav-drawer/nav-drawer.js +12 -23
  120. package/components/nav-drawer/nav-drawer.js.map +1 -1
  121. package/components/progress/base.d.ts +4 -7
  122. package/components/progress/base.js +21 -45
  123. package/components/progress/base.js.map +1 -1
  124. package/components/qr-code/qr-code.d.ts +1 -1
  125. package/components/qr-code/qr-code.js +3 -2
  126. package/components/qr-code/qr-code.js.map +1 -1
  127. package/components/qr-code/types.d.ts +1 -1
  128. package/components/qr-code/types.js.map +1 -1
  129. package/components/radio/controller.d.ts +2 -30
  130. package/components/radio/controller.js +8 -94
  131. package/components/radio/controller.js.map +1 -1
  132. package/components/radio/radio.d.ts +5 -5
  133. package/components/radio/radio.js +48 -58
  134. package/components/radio/radio.js.map +1 -1
  135. package/components/radio-group/radio-group.d.ts +1 -2
  136. package/components/radio-group/radio-group.js +2 -9
  137. package/components/radio-group/radio-group.js.map +1 -1
  138. package/components/rating/rating.d.ts +24 -12
  139. package/components/rating/rating.js +79 -73
  140. package/components/rating/rating.js.map +1 -1
  141. package/components/resize-container/default-ghost.js +4 -3
  142. package/components/resize-container/default-ghost.js.map +1 -1
  143. package/components/resize-container/resize-container.d.ts +1 -1
  144. package/components/resize-container/resize-container.js +5 -3
  145. package/components/resize-container/resize-container.js.map +1 -1
  146. package/components/resize-container/resize-controller.js +4 -3
  147. package/components/resize-container/resize-controller.js.map +1 -1
  148. package/components/select/select-group.d.ts +2 -1
  149. package/components/select/select-group.js +7 -11
  150. package/components/select/select-group.js.map +1 -1
  151. package/components/select/select.d.ts +3 -4
  152. package/components/select/select.js +23 -28
  153. package/components/select/select.js.map +1 -1
  154. package/components/slider/range-slider.d.ts +3 -2
  155. package/components/slider/range-slider.js +22 -70
  156. package/components/slider/range-slider.js.map +1 -1
  157. package/components/slider/slider-base.d.ts +9 -6
  158. package/components/slider/slider-base.js +27 -28
  159. package/components/slider/slider-base.js.map +1 -1
  160. package/components/slider/slider.js +9 -5
  161. package/components/slider/slider.js.map +1 -1
  162. package/components/splitter/splitter.d.ts +1 -1
  163. package/components/splitter/splitter.js.map +1 -1
  164. package/components/stepper/step.d.ts +3 -0
  165. package/components/stepper/step.js +9 -5
  166. package/components/stepper/step.js.map +1 -1
  167. package/components/stepper/stepper.d.ts +0 -11
  168. package/components/stepper/stepper.js +21 -86
  169. package/components/stepper/stepper.js.map +1 -1
  170. package/components/tabs/tab.d.ts +1 -1
  171. package/components/tabs/tab.js +6 -5
  172. package/components/tabs/tab.js.map +1 -1
  173. package/components/tabs/tabs.d.ts +1 -5
  174. package/components/tabs/tabs.js +12 -34
  175. package/components/tabs/tabs.js.map +1 -1
  176. package/components/textarea/textarea.d.ts +6 -7
  177. package/components/textarea/textarea.js +3 -10
  178. package/components/textarea/textarea.js.map +1 -1
  179. package/components/theme-provider/theme-provider.d.ts +2 -4
  180. package/components/theme-provider/theme-provider.js +11 -21
  181. package/components/theme-provider/theme-provider.js.map +1 -1
  182. package/components/tile-manager/tile-manager.d.ts +10 -21
  183. package/components/tile-manager/tile-manager.js +43 -74
  184. package/components/tile-manager/tile-manager.js.map +1 -1
  185. package/components/tile-manager/tile.d.ts +10 -18
  186. package/components/tile-manager/tile.js +50 -67
  187. package/components/tile-manager/tile.js.map +1 -1
  188. package/components/tooltip/tooltip.d.ts +4 -7
  189. package/components/tooltip/tooltip.js +20 -28
  190. package/components/tooltip/tooltip.js.map +1 -1
  191. package/components/tree/tree.d.ts +1 -14
  192. package/components/tree/tree.js +5 -23
  193. package/components/tree/tree.js.map +1 -1
  194. package/components/tree/tree.navigation.d.ts +1 -1
  195. package/components/tree/tree.navigation.js.map +1 -1
  196. package/components/validation-container/validation-container.d.ts +1 -2
  197. package/components/validation-container/validation-container.js.map +1 -1
  198. package/components/virtualization/engine.d.ts +40 -38
  199. package/components/virtualization/engine.js.map +1 -1
  200. package/components/virtualization/types.d.ts +6 -5
  201. package/components/virtualization/types.js.map +1 -1
  202. package/components/virtualization/virtualization.d.ts +94 -80
  203. package/components/virtualization/virtualization.js +10 -2
  204. package/components/virtualization/virtualization.js.map +1 -1
  205. package/custom-elements.json +9940 -7738
  206. package/igniteui-webcomponents.css-data.json +1 -1
  207. package/igniteui-webcomponents.html-data.json +1 -1
  208. package/internals/controllers/aria-projection.d.ts +6 -6
  209. package/internals/controllers/aria-projection.js.map +1 -1
  210. package/internals/controllers/context-provider.d.ts +48 -0
  211. package/internals/controllers/context-provider.js +29 -0
  212. package/internals/controllers/context-provider.js.map +1 -0
  213. package/internals/controllers/drag.js +6 -6
  214. package/internals/controllers/drag.js.map +1 -1
  215. package/internals/controllers/gestures.js +3 -0
  216. package/internals/controllers/gestures.js.map +1 -1
  217. package/internals/controllers/group.d.ts +64 -0
  218. package/internals/controllers/group.js +104 -0
  219. package/internals/controllers/group.js.map +1 -0
  220. package/internals/controllers/internals.d.ts +16 -3
  221. package/internals/controllers/internals.js +10 -3
  222. package/internals/controllers/internals.js.map +1 -1
  223. package/internals/controllers/key-bindings.d.ts +6 -0
  224. package/internals/controllers/key-bindings.js +3 -0
  225. package/internals/controllers/key-bindings.js.map +1 -1
  226. package/internals/controllers/roving-focus.d.ts +72 -0
  227. package/internals/controllers/roving-focus.js +61 -0
  228. package/internals/controllers/roving-focus.js.map +1 -0
  229. package/internals/controllers/slot.d.ts +8 -0
  230. package/internals/controllers/slot.js +4 -0
  231. package/internals/controllers/slot.js.map +1 -1
  232. package/internals/controllers/toggle.d.ts +96 -0
  233. package/internals/controllers/toggle.js +65 -0
  234. package/internals/controllers/toggle.js.map +1 -0
  235. package/internals/date/converters.js +2 -5
  236. package/internals/date/converters.js.map +1 -1
  237. package/internals/date/model.d.ts +4 -0
  238. package/internals/date/model.js +6 -0
  239. package/internals/date/model.js.map +1 -1
  240. package/internals/decorators/coerced-property.d.ts +47 -0
  241. package/internals/decorators/coerced-property.js +36 -0
  242. package/internals/decorators/coerced-property.js.map +1 -0
  243. package/internals/i18n/i18n-controller.d.ts +22 -3
  244. package/internals/i18n/i18n-controller.js +28 -6
  245. package/internals/i18n/i18n-controller.js.map +1 -1
  246. package/internals/mixins/alert.d.ts +1 -1
  247. package/internals/mixins/alert.js +5 -3
  248. package/internals/mixins/alert.js.map +1 -1
  249. package/internals/mixins/combo-box.d.ts +3 -12
  250. package/internals/mixins/combo-box.js +6 -32
  251. package/internals/mixins/combo-box.js.map +1 -1
  252. package/internals/mixins/forms/associated.js +18 -0
  253. package/internals/mixins/forms/associated.js.map +1 -1
  254. package/internals/mixins/forms/types.d.ts +20 -1
  255. package/internals/mixins/forms/types.js.map +1 -1
  256. package/internals/mixins/i18n.d.ts +31 -0
  257. package/internals/mixins/i18n.js +36 -0
  258. package/internals/mixins/i18n.js.map +1 -0
  259. package/internals/mixins/mask-behavior.d.ts +6 -5
  260. package/internals/mixins/mask-behavior.js +1 -2
  261. package/internals/mixins/mask-behavior.js.map +1 -1
  262. package/internals/mixins/option.js +4 -2
  263. package/internals/mixins/option.js.map +1 -1
  264. package/internals/templates/masked-input.d.ts +1 -1
  265. package/internals/templates/masked-input.js.map +1 -1
  266. package/internals/templates/slotted-icon.d.ts +32 -0
  267. package/internals/templates/slotted-icon.js +19 -0
  268. package/internals/templates/slotted-icon.js.map +1 -0
  269. package/internals/templates/toggle-shell.d.ts +46 -0
  270. package/internals/templates/toggle-shell.js +38 -0
  271. package/internals/templates/toggle-shell.js.map +1 -0
  272. package/internals/timing.d.ts +32 -0
  273. package/internals/timing.js +20 -0
  274. package/internals/timing.js.map +1 -0
  275. package/internals/utils/arrays.d.ts +2 -2
  276. package/internals/utils/arrays.js.map +1 -1
  277. package/internals/utils/dom.d.ts +22 -0
  278. package/internals/utils/dom.js +15 -1
  279. package/internals/utils/dom.js.map +1 -1
  280. package/internals/utils/math.d.ts +1 -1
  281. package/internals/utils/math.js.map +1 -1
  282. package/internals/utils/types.d.ts +1 -1
  283. package/internals/utils/types.js.map +1 -1
  284. package/internals/validators.d.ts +23 -0
  285. package/internals/validators.js +21 -0
  286. package/internals/validators.js.map +1 -1
  287. package/package.json +1 -1
  288. package/theming/theming-controller.d.ts +3 -3
  289. package/theming/theming-controller.js.map +1 -1
  290. package/web-types.json +2 -2
  291. package/internals/decorators/watch.d.ts +0 -5
  292. package/internals/decorators/watch.js +0 -19
  293. package/internals/decorators/watch.js.map +0 -1
@@ -4,10 +4,10 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
4
4
  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
- import { ContextProvider } from '@lit/context';
8
7
  import { html, LitElement, } from 'lit';
9
8
  import { property } from 'lit/decorators.js';
10
- import { buttonGroupContext } from '#internals/context.js';
9
+ import { buttonGroupContext, } from '#internals/context.js';
10
+ import { addContextProvider } from '#internals/controllers/context-provider.js';
11
11
  import { addSlotController, setSlots } from '#internals/controllers/slot.js';
12
12
  import { registerComponent } from '#internals/definitions/register.js';
13
13
  import { EventEmitterMixin } from '#internals/mixins/event-emitter.js';
@@ -51,13 +51,6 @@ export default class IgcButtonGroupComponent extends EventEmitterMixin(LitElemen
51
51
  constructor() {
52
52
  super();
53
53
  this._selectedItems = new Set();
54
- this._context = new ContextProvider(this, {
55
- context: buttonGroupContext,
56
- initialValue: {
57
- instance: this,
58
- syncSelection: (button) => this._syncSelection(button),
59
- },
60
- });
61
54
  this._slots = addSlotController(this, {
62
55
  slots: setSlots(),
63
56
  onChange: this._enforceSingleSelection,
@@ -66,16 +59,18 @@ export default class IgcButtonGroupComponent extends EventEmitterMixin(LitElemen
66
59
  this.alignment = 'horizontal';
67
60
  this.selection = 'single';
68
61
  addThemingController(this, all);
62
+ const context = {
63
+ instance: this,
64
+ syncSelection: (button) => this._syncSelection(button),
65
+ };
66
+ addContextProvider(this, {
67
+ context: buttonGroupContext,
68
+ watch: ['selection', 'disabled'],
69
+ value: () => context,
70
+ });
69
71
  }
70
72
  willUpdate(changedProperties) {
71
- if (!this.hasUpdated) {
72
- return;
73
- }
74
- const selectionChanged = changedProperties.has('selection');
75
- if (selectionChanged || changedProperties.has('disabled')) {
76
- this._context.updateObservers();
77
- }
78
- if (selectionChanged) {
73
+ if (this.hasUpdated && changedProperties.has('selection')) {
79
74
  this._selectedItems.clear();
80
75
  this._applySelection([]);
81
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"button-group.js","sourceRoot":"","sources":["../../../src/components/button-group/button-group.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContextProvider } from '@lit/context';\nimport {\n html,\n LitElement,\n type PropertyValues,\n type TemplateResult,\n} from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { buttonGroupContext } from '#internals/context.js';\nimport { addSlotController, setSlots } from '#internals/controllers/slot.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport type { Constructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { asArray, isEmpty, lastOf } from '#internals/utils/arrays.js';\nimport { getElementFromPath } from '#internals/utils/events.js';\nimport { isDefined } from '#internals/utils/types.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport type { ButtonGroupSelection, ContentOrientation } from '../types.js';\nimport { styles } from './themes/group.base.css.js';\nimport { all } from './themes/group.js';\nimport { styles as shared } from './themes/shared/group/group.common.css.js';\nimport IgcToggleButtonComponent from './toggle-button.js';\n\nexport interface IgcButtonGroupComponentEventMap {\n igcSelect: CustomEvent<string | undefined>;\n igcDeselect: CustomEvent<string | undefined>;\n}\n\n/* blazorAdditionalDependency: IgcToggleButtonComponent */\n/**\n * Groups a series of toggle buttons together, exposing features such as layout and selection.\n *\n * @element igc-button-group\n *\n * @slot - Renders the toggle buttons of the group.\n *\n * @fires igcSelect - Emitted when a button is selected through user interaction.\n * @fires igcDeselect - Emitted when a button is deselected through user interaction.\n *\n * @csspart group - The button group container.\n */\nexport default class IgcButtonGroupComponent extends EventEmitterMixin<\n IgcButtonGroupComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-button-group';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcButtonGroupComponent, IgcToggleButtonComponent);\n }\n\n //#region Internal state & properties\n\n /** The values set through the `selectedItems` API, applied once the buttons are rendered. */\n private _selectedItems = new Set<string>();\n\n private readonly _context = new ContextProvider(this, {\n context: buttonGroupContext,\n initialValue: {\n instance: this,\n syncSelection: (button) => this._syncSelection(button),\n },\n });\n\n private readonly _slots = addSlotController(this, {\n slots: setSlots(),\n onChange: this._enforceSingleSelection,\n });\n\n /**\n * The toggle buttons of the group, in DOM order. There are none to report\n * before the first render, when the slot they are assigned to does not exist yet.\n */\n private get _buttons(): IgcToggleButtonComponent[] {\n if (!this.hasUpdated) {\n return [];\n }\n\n return this._slots.getAssignedElements('[default]', {\n selector: IgcToggleButtonComponent.tagName,\n });\n }\n\n private get _isMultiple(): boolean {\n return this.selection === 'multiple';\n }\n\n private get _selectedButtons(): IgcToggleButtonComponent[] {\n return this._buttons.filter((button) => button.selected);\n }\n\n //#endregion\n\n //#region Public properties\n\n /**\n * Disables all buttons inside the group.\n *\n * @attr disabled\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n /**\n * The orientation of the buttons in the group.\n *\n * @attr alignment\n * @default 'horizontal'\n */\n @property({ reflect: true })\n public alignment: ContentOrientation = 'horizontal';\n\n /**\n * Controls the mode of selection for the button group.\n *\n * @attr selection\n * @default 'single'\n */\n @property({ reflect: false })\n public selection: ButtonGroupSelection = 'single';\n\n /**\n * Gets/Sets the currently selected buttons (their values).\n * @attr\n */\n @property({ attribute: 'selected-items', type: Array, reflect: false })\n public get selectedItems(): string[] {\n // Buttons are not required to have a value, in which case they report none.\n return this._selectedButtons\n .map((button) => button.value)\n .filter(isDefined);\n }\n\n public set selectedItems(values: string[]) {\n this._selectedItems = new Set(asArray(values));\n this._selectFromValues(this._selectedItems);\n }\n\n //#endregion\n\n //#region Life-cycle hooks\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n if (!this.hasUpdated) {\n return;\n }\n\n const selectionChanged = changedProperties.has('selection');\n\n if (selectionChanged || changedProperties.has('disabled')) {\n this._context.updateObservers();\n }\n\n if (selectionChanged) {\n // The selection modes are not interchangeable - the group starts over.\n this._selectedItems.clear();\n this._applySelection([]);\n }\n }\n\n protected override firstUpdated(): void {\n if (isEmpty(this._selectedButtons)) {\n // Nothing is selected through the children, fall back to the values passed in.\n this._selectFromValues(this._selectedItems);\n } else {\n // A selection through the children takes priority over the passed in values.\n this._enforceSingleSelection();\n }\n }\n\n //#endregion\n\n //#region Private API\n\n /** Applies `next` as the selection, clearing the state of every other button. */\n private _applySelection(next: IgcToggleButtonComponent[]): void {\n const selection = new Set(next);\n\n for (const button of this._buttons) {\n button.selected = selection.has(button);\n }\n }\n\n /** Selects the buttons matching `values`, honoring the selection mode. */\n private _selectFromValues(values: Set<string>): void {\n const matches = this._buttons.filter((button) => values.has(button.value));\n this._applySelection(this._isMultiple ? matches : matches.slice(0, 1));\n }\n\n /**\n * Reduces a selection made outside of the group - through the children or by\n * adding buttons that bring their own state - to a single button. The last one wins.\n */\n private _enforceSingleSelection(): void {\n const selected = this._selectedButtons;\n\n if (!this._isMultiple && selected.length > 1) {\n this._applySelection([lastOf(selected)]);\n }\n }\n\n /** Reconciles the group with a button of its own that has turned selected. */\n private _syncSelection(button: IgcToggleButtonComponent): void {\n if (!this._isMultiple && this._buttons.includes(button)) {\n this._applySelection([button]);\n }\n }\n\n //#endregion\n\n //#region Event handlers\n\n private _handleClick(event: PointerEvent): void {\n if (this.disabled) {\n return;\n }\n\n const button = getElementFromPath(IgcToggleButtonComponent.tagName, event);\n\n if (!button || !this._buttons.includes(button)) {\n return;\n }\n\n this._isMultiple\n ? this._handleMultipleSelection(button)\n : this._handleSingleSelection(button);\n }\n\n private _handleSingleSelection(button: IgcToggleButtonComponent): void {\n const selected = this._selectedButtons.at(0);\n\n if (selected === button) {\n // A required selection cannot be toggled off.\n if (this.selection !== 'single-required') {\n this._emitDeselectEvent(button);\n }\n return;\n }\n\n if (selected) {\n this._emitDeselectEvent(selected);\n }\n\n this._emitSelectEvent(button);\n }\n\n private _handleMultipleSelection(button: IgcToggleButtonComponent): void {\n button.selected\n ? this._emitDeselectEvent(button)\n : this._emitSelectEvent(button);\n }\n\n private _emitSelectEvent(button: IgcToggleButtonComponent): void {\n button.selected = true;\n this.emitEvent('igcSelect', { detail: button.value });\n }\n\n private _emitDeselectEvent(button: IgcToggleButtonComponent): void {\n button.selected = false;\n this.emitEvent('igcDeselect', { detail: button.value });\n }\n\n //#endregion\n\n //#region Render\n\n protected override render(): TemplateResult {\n return html`\n <div\n part=\"group\"\n role=${this._isMultiple ? 'group' : 'radiogroup'}\n aria-disabled=${this.disabled}\n @click=${this._handleClick}\n >\n <slot></slot>\n </div>\n `;\n }\n\n //#endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-button-group': IgcButtonGroupComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"button-group.js","sourceRoot":"","sources":["../../../src/components/button-group/button-group.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EACL,IAAI,EACJ,UAAU,GAGX,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAEL,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,wBAAwB,MAAM,oBAAoB,CAAC;AAoB1D,MAAM,CAAC,OAAO,OAAO,uBAAwB,SAAQ,iBAAiB,CAGpE,UAAU,CAAC;aACY,YAAO,GAAG,kBAAkB,AAArB,CAAsB;aACtC,WAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,AAAnB,CAAoB;IAGjC,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,CAAC;IACvE,CAAC;IAgBD,IAAY,QAAQ;QAClB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,WAAW,EAAE;YAClD,QAAQ,EAAE,wBAAwB,CAAC,OAAO;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,IAAY,WAAW;QACrB,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC;IACvC,CAAC;IAED,IAAY,gBAAgB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC;IAsCD,IAAW,aAAa;QAEtB,OAAO,IAAI,CAAC,gBAAgB;aACzB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC;aAC7B,MAAM,CAAC,SAAS,CAAC,CAAC;IACvB,CAAC;IAED,IAAW,aAAa,CAAC,MAAgB;QACvC,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9C,CAAC;IAMD;QACE,KAAK,EAAE,CAAC;QAlFF,mBAAc,GAAG,IAAI,GAAG,EAAU,CAAC;QAE1B,WAAM,GAAG,iBAAiB,CAAC,IAAI,EAAE;YAChD,KAAK,EAAE,QAAQ,EAAE;YACjB,QAAQ,EAAE,IAAI,CAAC,uBAAuB;SACvC,CAAC,CAAC;QAmCI,aAAQ,GAAG,KAAK,CAAC;QASjB,cAAS,GAAuB,YAAY,CAAC;QAS7C,cAAS,GAAyB,QAAQ,CAAC;QAyBhD,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAEhC,MAAM,OAAO,GAAuB;YAClC,QAAQ,EAAE,IAAI;YACd,aAAa,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;SACvD,CAAC;QAEF,kBAAkB,CAAC,IAAI,EAAE;YACvB,OAAO,EAAE,kBAAkB;YAC3B,KAAK,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;YAChC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO;SACrB,CAAC,CAAC;IACL,CAAC;IAEkB,UAAU,CAAC,iBAAuC;QACnE,IAAI,IAAI,CAAC,UAAU,IAAI,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAE1D,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;YAC5B,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAEkB,YAAY;QAC7B,IAAI,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAEnC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YAEN,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IAOO,eAAe,CAAC,IAAgC;QACtD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;QAEhC,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnC,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAGO,iBAAiB,CAAC,MAAmB;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3E,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAMO,uBAAuB;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAEvC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAGO,cAAc,CAAC,MAAgC;QACrD,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAMO,YAAY,CAAC,KAAmB;QACtC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,wBAAwB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAE3E,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW;YACd,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;YACvC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAEO,sBAAsB,CAAC,MAAgC;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE7C,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;YAExB,IAAI,IAAI,CAAC,SAAS,KAAK,iBAAiB,EAAE,CAAC;gBACzC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;YAClC,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAEO,wBAAwB,CAAC,MAAgC;QAC/D,MAAM,CAAC,QAAQ;YACb,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;YACjC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAEO,gBAAgB,CAAC,MAAgC;QACvD,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAEO,kBAAkB,CAAC,MAAgC;QACzD,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;IAMkB,MAAM;QACvB,OAAO,IAAI,CAAA;;;eAGA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY;wBAChC,IAAI,CAAC,QAAQ;iBACpB,IAAI,CAAC,YAAY;;;;KAI7B,CAAC;IACJ,CAAC;;AAtLM;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;yDACnB;AASjB;IADN,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0DACwB;AAS7C;IADN,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;0DACqB;AAOlD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;4DAMtE","sourcesContent":["import {\n html,\n LitElement,\n type PropertyValues,\n type TemplateResult,\n} from 'lit';\nimport { property } from 'lit/decorators.js';\nimport {\n type ButtonGroupContext,\n buttonGroupContext,\n} from '#internals/context.js';\nimport { addContextProvider } from '#internals/controllers/context-provider.js';\nimport { addSlotController, setSlots } from '#internals/controllers/slot.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport type { Constructor } from '#internals/mixins/constructor.js';\nimport { EventEmitterMixin } from '#internals/mixins/event-emitter.js';\nimport { asArray, isEmpty, lastOf } from '#internals/utils/arrays.js';\nimport { getElementFromPath } from '#internals/utils/events.js';\nimport { isDefined } from '#internals/utils/types.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport type { ButtonGroupSelection, ContentOrientation } from '../types.js';\nimport { styles } from './themes/group.base.css.js';\nimport { all } from './themes/group.js';\nimport { styles as shared } from './themes/shared/group/group.common.css.js';\nimport IgcToggleButtonComponent from './toggle-button.js';\n\nexport interface IgcButtonGroupComponentEventMap {\n igcSelect: CustomEvent<string | undefined>;\n igcDeselect: CustomEvent<string | undefined>;\n}\n\n/* blazorAdditionalDependency: IgcToggleButtonComponent */\n/**\n * Groups a series of toggle buttons together, exposing features such as layout and selection.\n *\n * @element igc-button-group\n *\n * @slot - Renders the toggle buttons of the group.\n *\n * @fires igcSelect - Emitted when a button is selected through user interaction.\n * @fires igcDeselect - Emitted when a button is deselected through user interaction.\n *\n * @csspart group - The button group container.\n */\nexport default class IgcButtonGroupComponent extends EventEmitterMixin<\n IgcButtonGroupComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-button-group';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcButtonGroupComponent, IgcToggleButtonComponent);\n }\n\n //#region Internal state & properties\n\n /** The values set through the `selectedItems` API, applied once the buttons are rendered. */\n private _selectedItems = new Set<string>();\n\n private readonly _slots = addSlotController(this, {\n slots: setSlots(),\n onChange: this._enforceSingleSelection,\n });\n\n /**\n * The toggle buttons of the group, in DOM order. There are none to report\n * before the first render, when the slot they are assigned to does not exist yet.\n */\n private get _buttons(): IgcToggleButtonComponent[] {\n if (!this.hasUpdated) {\n return [];\n }\n\n return this._slots.getAssignedElements('[default]', {\n selector: IgcToggleButtonComponent.tagName,\n });\n }\n\n private get _isMultiple(): boolean {\n return this.selection === 'multiple';\n }\n\n private get _selectedButtons(): IgcToggleButtonComponent[] {\n return this._buttons.filter((button) => button.selected);\n }\n\n //#endregion\n\n //#region Public properties\n\n /**\n * Disables all buttons inside the group.\n *\n * @attr disabled\n * @default false\n */\n @property({ type: Boolean, reflect: true })\n public disabled = false;\n\n /**\n * The orientation of the buttons in the group.\n *\n * @attr alignment\n * @default 'horizontal'\n */\n @property({ reflect: true })\n public alignment: ContentOrientation = 'horizontal';\n\n /**\n * Controls the mode of selection for the button group.\n *\n * @attr selection\n * @default 'single'\n */\n @property({ reflect: false })\n public selection: ButtonGroupSelection = 'single';\n\n /**\n * Gets/Sets the currently selected buttons (their values).\n * @attr\n */\n @property({ attribute: 'selected-items', type: Array, reflect: false })\n public get selectedItems(): string[] {\n // Buttons are not required to have a value, in which case they report none.\n return this._selectedButtons\n .map((button) => button.value)\n .filter(isDefined);\n }\n\n public set selectedItems(values: string[]) {\n this._selectedItems = new Set(asArray(values));\n this._selectFromValues(this._selectedItems);\n }\n\n //#endregion\n\n //#region Life-cycle hooks\n\n constructor() {\n super();\n addThemingController(this, all);\n\n const context: ButtonGroupContext = {\n instance: this,\n syncSelection: (button) => this._syncSelection(button),\n };\n\n addContextProvider(this, {\n context: buttonGroupContext,\n watch: ['selection', 'disabled'],\n value: () => context,\n });\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n if (this.hasUpdated && changedProperties.has('selection')) {\n // The selection modes are not interchangeable - the group starts over.\n this._selectedItems.clear();\n this._applySelection([]);\n }\n }\n\n protected override firstUpdated(): void {\n if (isEmpty(this._selectedButtons)) {\n // Nothing is selected through the children, fall back to the values passed in.\n this._selectFromValues(this._selectedItems);\n } else {\n // A selection through the children takes priority over the passed in values.\n this._enforceSingleSelection();\n }\n }\n\n //#endregion\n\n //#region Private API\n\n /** Applies `next` as the selection, clearing the state of every other button. */\n private _applySelection(next: IgcToggleButtonComponent[]): void {\n const selection = new Set(next);\n\n for (const button of this._buttons) {\n button.selected = selection.has(button);\n }\n }\n\n /** Selects the buttons matching `values`, honoring the selection mode. */\n private _selectFromValues(values: Set<string>): void {\n const matches = this._buttons.filter((button) => values.has(button.value));\n this._applySelection(this._isMultiple ? matches : matches.slice(0, 1));\n }\n\n /**\n * Reduces a selection made outside of the group - through the children or by\n * adding buttons that bring their own state - to a single button. The last one wins.\n */\n private _enforceSingleSelection(): void {\n const selected = this._selectedButtons;\n\n if (!this._isMultiple && selected.length > 1) {\n this._applySelection([lastOf(selected)]);\n }\n }\n\n /** Reconciles the group with a button of its own that has turned selected. */\n private _syncSelection(button: IgcToggleButtonComponent): void {\n if (!this._isMultiple && this._buttons.includes(button)) {\n this._applySelection([button]);\n }\n }\n\n //#endregion\n\n //#region Event handlers\n\n private _handleClick(event: PointerEvent): void {\n if (this.disabled) {\n return;\n }\n\n const button = getElementFromPath(IgcToggleButtonComponent.tagName, event);\n\n if (!button || !this._buttons.includes(button)) {\n return;\n }\n\n this._isMultiple\n ? this._handleMultipleSelection(button)\n : this._handleSingleSelection(button);\n }\n\n private _handleSingleSelection(button: IgcToggleButtonComponent): void {\n const selected = this._selectedButtons.at(0);\n\n if (selected === button) {\n // A required selection cannot be toggled off.\n if (this.selection !== 'single-required') {\n this._emitDeselectEvent(button);\n }\n return;\n }\n\n if (selected) {\n this._emitDeselectEvent(selected);\n }\n\n this._emitSelectEvent(button);\n }\n\n private _handleMultipleSelection(button: IgcToggleButtonComponent): void {\n button.selected\n ? this._emitDeselectEvent(button)\n : this._emitSelectEvent(button);\n }\n\n private _emitSelectEvent(button: IgcToggleButtonComponent): void {\n button.selected = true;\n this.emitEvent('igcSelect', { detail: button.value });\n }\n\n private _emitDeselectEvent(button: IgcToggleButtonComponent): void {\n button.selected = false;\n this.emitEvent('igcDeselect', { detail: button.value });\n }\n\n //#endregion\n\n //#region Render\n\n protected override render(): TemplateResult {\n return html`\n <div\n part=\"group\"\n role=${this._isMultiple ? 'group' : 'radiogroup'}\n aria-disabled=${this.disabled}\n @click=${this._handleClick}\n >\n <slot></slot>\n </div>\n `;\n }\n\n //#endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-button-group': IgcButtonGroupComponent;\n }\n}\n"]}
@@ -3,8 +3,8 @@ import { LitElement, type PropertyValues } from 'lit';
3
3
  import { CalendarDay } from '#internals/date/model.js';
4
4
  import type { IgcCalendarResourceStrings } from '#internals/i18n/EN/calendar.resources.js';
5
5
  import type { CalendarSelection, DateRangeDescriptor, WeekDays } from './types.js';
6
- export declare class IgcCalendarBaseComponent extends LitElement {
7
- protected readonly _i18nController: import("#internals/i18n/i18n-controller.js").I18nController<IgcCalendarResourceStrings | ICalendarResourceStrings>;
6
+ declare const IgcCalendarBaseComponent_base: import("../../internals/mixins/constructor.js").AbstractConstructor<import("#internals/mixins/i18n.js").I18nInterface<IgcCalendarResourceStrings | ICalendarResourceStrings, IgcCalendarResourceStrings & ICalendarResourceStrings>> & typeof LitElement;
7
+ export declare class IgcCalendarBaseComponent extends IgcCalendarBaseComponent_base {
8
8
  private _initialActiveDateSet;
9
9
  protected get _hasValues(): boolean;
10
10
  /**
@@ -61,17 +61,6 @@ export declare class IgcCalendarBaseComponent extends LitElement {
61
61
  * @default sunday
62
62
  */
63
63
  weekStart: WeekDays;
64
- /**
65
- * Gets/Sets the locale used for formatting and displaying the dates in the component.
66
- * @attr locale
67
- */
68
- set locale(value: string);
69
- get locale(): string;
70
- /**
71
- * The resource strings for localization.
72
- */
73
- set resourceStrings(value: IgcCalendarResourceStrings | ICalendarResourceStrings);
74
- get resourceStrings(): IgcCalendarResourceStrings & ICalendarResourceStrings;
75
64
  /**
76
65
  * Gets/Sets the special dates for the component.
77
66
  *
@@ -95,3 +84,4 @@ export declare class IgcCalendarBaseComponent extends LitElement {
95
84
  /** @internal */
96
85
  protected firstUpdated(): void;
97
86
  }
87
+ export {};
@@ -8,19 +8,19 @@ import { CalendarResourceStringsEN, } from 'igniteui-i18n-core';
8
8
  import { LitElement } from 'lit';
9
9
  import { property, state } from 'lit/decorators.js';
10
10
  import { convertToDate, convertToDates } from '#internals/date/converters.js';
11
- import { CalendarDay } from '#internals/date/model.js';
11
+ import { CalendarDay, toCalendarDayOrNull } from '#internals/date/model.js';
12
12
  import { blazorDeepImport } from '#internals/decorators/blazorDeepImport.js';
13
13
  import { blazorIndirectRender } from '#internals/decorators/blazorIndirectRender.js';
14
- import { addI18nController } from '#internals/i18n/i18n-controller.js';
14
+ import { I18nMixin } from '#internals/mixins/i18n.js';
15
15
  import { firstOf } from '#internals/utils/arrays.js';
16
16
  import { getWeekDayNumber } from './helpers.js';
17
- let IgcCalendarBaseComponent = class IgcCalendarBaseComponent extends LitElement {
17
+ const i18n = {
18
+ defaultEN: CalendarResourceStringsEN,
19
+ resourceMapName: 'calendar',
20
+ };
21
+ let IgcCalendarBaseComponent = class IgcCalendarBaseComponent extends I18nMixin(LitElement, i18n) {
18
22
  constructor() {
19
23
  super(...arguments);
20
- this._i18nController = addI18nController(this, {
21
- defaultEN: CalendarResourceStringsEN,
22
- resourceMapName: 'calendar',
23
- });
24
24
  this._initialActiveDateSet = false;
25
25
  this._activeDate = CalendarDay.today;
26
26
  this._value = null;
@@ -47,8 +47,7 @@ let IgcCalendarBaseComponent = class IgcCalendarBaseComponent extends LitElement
47
47
  return this.selection === 'range';
48
48
  }
49
49
  set value(value) {
50
- const converted = convertToDate(value);
51
- this._value = converted ? CalendarDay.from(converted) : null;
50
+ this._value = toCalendarDayOrNull(convertToDate(value));
52
51
  }
53
52
  get value() {
54
53
  return this._value ? this._value.native : null;
@@ -62,26 +61,12 @@ let IgcCalendarBaseComponent = class IgcCalendarBaseComponent extends LitElement
62
61
  }
63
62
  set activeDate(value) {
64
63
  this._initialActiveDateSet = true;
65
- const converted = convertToDate(value);
66
- this._activeDate = converted
67
- ? CalendarDay.from(converted)
68
- : CalendarDay.today;
64
+ this._activeDate =
65
+ toCalendarDayOrNull(convertToDate(value)) ?? CalendarDay.today;
69
66
  }
70
67
  get activeDate() {
71
68
  return this._activeDate.native;
72
69
  }
73
- set locale(value) {
74
- this._i18nController.locale = value;
75
- }
76
- get locale() {
77
- return this._i18nController.locale;
78
- }
79
- set resourceStrings(value) {
80
- this._i18nController.resourceStrings = value;
81
- }
82
- get resourceStrings() {
83
- return this._i18nController.resourceStrings;
84
- }
85
70
  set specialDates(value) {
86
71
  this._specialDates = value ?? [];
87
72
  }
@@ -150,12 +135,6 @@ __decorate([
150
135
  __decorate([
151
136
  property({ attribute: 'week-start' })
152
137
  ], IgcCalendarBaseComponent.prototype, "weekStart", void 0);
153
- __decorate([
154
- property()
155
- ], IgcCalendarBaseComponent.prototype, "locale", null);
156
- __decorate([
157
- property({ attribute: false })
158
- ], IgcCalendarBaseComponent.prototype, "resourceStrings", null);
159
138
  __decorate([
160
139
  property({ attribute: false })
161
140
  ], IgcCalendarBaseComponent.prototype, "specialDates", null);
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/components/calendar/base.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EACL,yBAAyB,GAE1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAuB,MAAM,KAAK,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAErF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AASzC,IAAM,wBAAwB,GAA9B,MAAM,wBAAyB,SAAQ,UAAU;IAAjD;;QACc,oBAAe,GAAG,iBAAiB,CAEpD,IAAI,EAAE;YACN,SAAS,EAAE,yBAAyB;YACpC,eAAe,EAAE,UAAU;SAC5B,CAAC,CAAC;QAEK,0BAAqB,GAAG,KAAK,CAAC;QAiC5B,gBAAW,GAAG,WAAW,CAAC,KAAK,CAAC;QAGhC,WAAM,GAAuB,IAAI,CAAC;QAGlC,YAAO,GAAkB,EAAE,CAAC;QAG5B,kBAAa,GAA0B,EAAE,CAAC;QAG1C,mBAAc,GAA0B,EAAE,CAAC;QAyD9C,cAAS,GAAsB,QAAQ,CAAC;QAQxC,oBAAe,GAAG,KAAK,CAAC;QAQxB,cAAS,GAAa,QAAQ,CAAC;IAqFxC,CAAC;IAzMC,IAAc,UAAU;QACtB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,CAAC;IASD,IAAc,eAAe;QAC3B,OAAO,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,IAAc,SAAS;QACrB,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC;IACrC,CAAC;IAED,IAAc,WAAW;QACvB,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU,CAAC;IACvC,CAAC;IAED,IAAc,QAAQ;QACpB,OAAO,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC;IACpC,CAAC;IA4BD,IAAW,KAAK,CAAC,KAAuC;QACtD,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACjD,CAAC;IAUD,IAAW,MAAM,CAAC,MAAqD;QACrE,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5E,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,CAAC;IAKD,IAAW,UAAU,CAAC,KAAuC;QAC3D,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,SAAS;YAC1B,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;YAC7B,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;IACxB,CAAC;IAED,IAAW,UAAU;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;IACjC,CAAC;IA+BD,IAAW,MAAM,CAAC,KAAa;QAC7B,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,KAAK,CAAC;IACtC,CAAC;IAED,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;IACrC,CAAC;IAMD,IAAW,eAAe,CACxB,KAA4D;QAE5D,IAAI,CAAC,eAAe,CAAC,eAAe,GAAG,KAAK,CAAC;IAC/C,CAAC;IAED,IAAW,eAAe;QAExB,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC;IAC9C,CAAC;IAUD,IAAW,YAAY,CAAC,KAAwC;QAC9D,IAAI,CAAC,aAAa,GAAG,KAAK,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,IAAW,YAAY;QACrB,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,CAAC;IAUD,IAAW,aAAa,CAAC,KAAwC;QAC/D,IAAI,CAAC,cAAc,GAAG,KAAK,IAAI,EAAE,CAAC;IACpC,CAAC;IAED,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,CAAC;IAGkB,MAAM,CAAC,KAAqB;QAC7C,IAAI,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9C,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QACpB,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAGkB,YAAY;QAC7B,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC;QAClD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC;QAC5D,CAAC;IACH,CAAC;CACF,CAAA;AA7KW;IADT,KAAK,EAAE;mEACkC;AAGhC;IADT,KAAK,EAAE;6DACkC;AAGhC;IADT,KAAK,EAAE;wDACoC;AAGlC;IADT,KAAK,EAAE;yDAC8B;AAG5B;IADT,KAAK,EAAE;+DAC4C;AAG1C;IADT,KAAK,EAAE;gEAC6C;AAUrD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;qDAItC;AAcD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;sDAIvC;AASD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;0DAOhE;AAYM;IADN,QAAQ,EAAE;2DACoC;AAQxC;IADN,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;iEAC5C;AAQxB;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;2DACA;AAOtC;IADC,QAAQ,EAAE;sDAGV;AAUD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;+DAK9B;AAeD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;4DAG9B;AAcD;IADC,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;6DAG9B;AAtLU,wBAAwB;IAFpC,oBAAoB;IACpB,gBAAgB;GACJ,wBAAwB,CAmNpC","sourcesContent":["import {\n CalendarResourceStringsEN,\n type ICalendarResourceStrings,\n} from 'igniteui-i18n-core';\nimport { LitElement, type PropertyValues } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { convertToDate, convertToDates } from '#internals/date/converters.js';\nimport { CalendarDay } from '#internals/date/model.js';\nimport { blazorDeepImport } from '#internals/decorators/blazorDeepImport.js';\nimport { blazorIndirectRender } from '#internals/decorators/blazorIndirectRender.js';\nimport type { IgcCalendarResourceStrings } from '#internals/i18n/EN/calendar.resources.js';\nimport { addI18nController } from '#internals/i18n/i18n-controller.js';\nimport { firstOf } from '#internals/utils/arrays.js';\nimport { getWeekDayNumber } from './helpers.js';\nimport type {\n CalendarSelection,\n DateRangeDescriptor,\n WeekDays,\n} from './types.js';\n\n@blazorIndirectRender\n@blazorDeepImport\nexport class IgcCalendarBaseComponent extends LitElement {\n protected readonly _i18nController = addI18nController<\n IgcCalendarResourceStrings | ICalendarResourceStrings\n >(this, {\n defaultEN: CalendarResourceStringsEN,\n resourceMapName: 'calendar',\n });\n\n private _initialActiveDateSet = false;\n\n protected get _hasValues(): boolean {\n return this._values.length > 0;\n }\n\n /**\n * The index of the first day of the week (Sunday = 0) as derived from {@link weekStart}.\n *\n * @remarks\n * Derived on access instead of in `update()`, so that its consumers are not sensitive\n * to the order in which the base class and its descendants update.\n */\n protected get _firstDayOfWeek(): number {\n return getWeekDayNumber(this.weekStart);\n }\n\n protected get _isSingle(): boolean {\n return this.selection === 'single';\n }\n\n protected get _isMultiple(): boolean {\n return this.selection === 'multiple';\n }\n\n protected get _isRange(): boolean {\n return this.selection === 'range';\n }\n\n @state()\n protected _rangePreviewDate?: CalendarDay;\n\n @state()\n protected _activeDate = CalendarDay.today;\n\n @state()\n protected _value: CalendarDay | null = null;\n\n @state()\n protected _values: CalendarDay[] = [];\n\n @state()\n protected _specialDates: DateRangeDescriptor[] = [];\n\n @state()\n protected _disabledDates: DateRangeDescriptor[] = [];\n\n /* blazorSuppress */\n /**\n * The current value of the calendar.\n * Used when selection is set to single\n *\n * @attr value\n */\n @property({ converter: convertToDate })\n public set value(value: Date | string | null | undefined) {\n const converted = convertToDate(value);\n this._value = converted ? CalendarDay.from(converted) : null;\n }\n\n public get value(): Date | null {\n return this._value ? this._value.native : null;\n }\n\n /* blazorSuppress */\n /**\n * The current values of the calendar.\n * Used when selection is set to multiple or range.\n *\n * @attr values\n */\n @property({ converter: convertToDates })\n public set values(values: (Date | string)[] | string | null | undefined) {\n const converted = convertToDates(values);\n this._values = converted ? converted.map((v) => CalendarDay.from(v)) : [];\n }\n\n public get values(): Date[] {\n return this._values ? this._values.map((v) => v.native) : [];\n }\n\n /* blazorSuppress */\n /** Get/Set the date which is shown in view and is highlighted. By default it is the current date. */\n @property({ attribute: 'active-date', converter: convertToDate })\n public set activeDate(value: Date | string | null | undefined) {\n this._initialActiveDateSet = true;\n const converted = convertToDate(value);\n this._activeDate = converted\n ? CalendarDay.from(converted)\n : CalendarDay.today;\n }\n\n public get activeDate(): Date {\n return this._activeDate.native;\n }\n\n /**\n * Sets the type of selection in the component.\n * @attr selection\n * @default single\n */\n @property()\n public selection: CalendarSelection = 'single';\n\n /**\n * Whether to show the week numbers.\n * @attr show-week-numbers\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'show-week-numbers' })\n public showWeekNumbers = false;\n\n /**\n * Gets/Sets the first day of the week.\n * @attr week-start\n * @default sunday\n */\n @property({ attribute: 'week-start' })\n public weekStart: WeekDays = 'sunday';\n\n /**\n * Gets/Sets the locale used for formatting and displaying the dates in the component.\n * @attr locale\n */\n @property()\n public set locale(value: string) {\n this._i18nController.locale = value;\n }\n\n public get locale() {\n return this._i18nController.locale;\n }\n\n /**\n * The resource strings for localization.\n */\n @property({ attribute: false })\n public set resourceStrings(\n value: IgcCalendarResourceStrings | ICalendarResourceStrings\n ) {\n this._i18nController.resourceStrings = value;\n }\n\n public get resourceStrings(): IgcCalendarResourceStrings &\n ICalendarResourceStrings {\n return this._i18nController.resourceStrings;\n }\n\n /**\n * Gets/Sets the special dates for the component.\n *\n * @remarks\n * Returns `undefined` when no dates are set, which the setter accepts as well so that\n * a round trip through the property is valid.\n */\n @property({ attribute: false })\n public set specialDates(value: DateRangeDescriptor[] | undefined) {\n this._specialDates = value ?? [];\n }\n\n public get specialDates(): DateRangeDescriptor[] | undefined {\n return this._specialDates.length ? this._specialDates : undefined;\n }\n\n /**\n * Gets/Sets the disabled dates for the component.\n *\n * @remarks\n * Returns `undefined` when no dates are set, which the setter accepts as well so that\n * a round trip through the property is valid.\n */\n @property({ attribute: false })\n public set disabledDates(value: DateRangeDescriptor[] | undefined) {\n this._disabledDates = value ?? [];\n }\n\n public get disabledDates(): DateRangeDescriptor[] | undefined {\n return this._disabledDates.length ? this._disabledDates : undefined;\n }\n\n /** @internal */\n protected override update(props: PropertyValues): void {\n if (props.has('selection') && this.hasUpdated) {\n this._rangePreviewDate = undefined;\n this._value = null;\n this._values = [];\n }\n\n super.update(props);\n }\n\n /** @internal */\n protected override firstUpdated(): void {\n if (this._initialActiveDateSet) {\n return;\n }\n\n if (this._isSingle) {\n this.activeDate = this.value ?? this.activeDate;\n } else {\n this.activeDate = firstOf(this.values) ?? this.activeDate;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/components/calendar/base.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n CalendarResourceStringsEN,\n type ICalendarResourceStrings,\n} from 'igniteui-i18n-core';\nimport { LitElement, type PropertyValues } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { convertToDate, convertToDates } from '#internals/date/converters.js';\nimport { CalendarDay, toCalendarDayOrNull } from '#internals/date/model.js';\nimport { blazorDeepImport } from '#internals/decorators/blazorDeepImport.js';\nimport { blazorIndirectRender } from '#internals/decorators/blazorIndirectRender.js';\nimport type { IgcCalendarResourceStrings } from '#internals/i18n/EN/calendar.resources.js';\nimport type { I18nControllerConfig } from '#internals/i18n/i18n-controller.js';\nimport { I18nMixin } from '#internals/mixins/i18n.js';\nimport { firstOf } from '#internals/utils/arrays.js';\nimport { getWeekDayNumber } from './helpers.js';\nimport type {\n CalendarSelection,\n DateRangeDescriptor,\n WeekDays,\n} from './types.js';\n\nconst i18n: I18nControllerConfig<\n IgcCalendarResourceStrings | ICalendarResourceStrings\n> = {\n defaultEN: CalendarResourceStringsEN,\n resourceMapName: 'calendar',\n};\n\n@blazorIndirectRender\n@blazorDeepImport\nexport class IgcCalendarBaseComponent extends I18nMixin<\n IgcCalendarResourceStrings | ICalendarResourceStrings,\n typeof LitElement,\n IgcCalendarResourceStrings & ICalendarResourceStrings\n>(LitElement, i18n) {\n private _initialActiveDateSet = false;\n\n protected get _hasValues(): boolean {\n return this._values.length > 0;\n }\n\n /**\n * The index of the first day of the week (Sunday = 0) as derived from {@link weekStart}.\n *\n * @remarks\n * Derived on access instead of in `update()`, so that its consumers are not sensitive\n * to the order in which the base class and its descendants update.\n */\n protected get _firstDayOfWeek(): number {\n return getWeekDayNumber(this.weekStart);\n }\n\n protected get _isSingle(): boolean {\n return this.selection === 'single';\n }\n\n protected get _isMultiple(): boolean {\n return this.selection === 'multiple';\n }\n\n protected get _isRange(): boolean {\n return this.selection === 'range';\n }\n\n @state()\n protected _rangePreviewDate?: CalendarDay;\n\n @state()\n protected _activeDate = CalendarDay.today;\n\n @state()\n protected _value: CalendarDay | null = null;\n\n @state()\n protected _values: CalendarDay[] = [];\n\n @state()\n protected _specialDates: DateRangeDescriptor[] = [];\n\n @state()\n protected _disabledDates: DateRangeDescriptor[] = [];\n\n /* blazorSuppress */\n /**\n * The current value of the calendar.\n * Used when selection is set to single\n *\n * @attr value\n */\n @property({ converter: convertToDate })\n public set value(value: Date | string | null | undefined) {\n this._value = toCalendarDayOrNull(convertToDate(value));\n }\n\n public get value(): Date | null {\n return this._value ? this._value.native : null;\n }\n\n /* blazorSuppress */\n /**\n * The current values of the calendar.\n * Used when selection is set to multiple or range.\n *\n * @attr values\n */\n @property({ converter: convertToDates })\n public set values(values: (Date | string)[] | string | null | undefined) {\n const converted = convertToDates(values);\n this._values = converted ? converted.map((v) => CalendarDay.from(v)) : [];\n }\n\n public get values(): Date[] {\n return this._values ? this._values.map((v) => v.native) : [];\n }\n\n /* blazorSuppress */\n /** Get/Set the date which is shown in view and is highlighted. By default it is the current date. */\n @property({ attribute: 'active-date', converter: convertToDate })\n public set activeDate(value: Date | string | null | undefined) {\n this._initialActiveDateSet = true;\n this._activeDate =\n toCalendarDayOrNull(convertToDate(value)) ?? CalendarDay.today;\n }\n\n public get activeDate(): Date {\n return this._activeDate.native;\n }\n\n /**\n * Sets the type of selection in the component.\n * @attr selection\n * @default single\n */\n @property()\n public selection: CalendarSelection = 'single';\n\n /**\n * Whether to show the week numbers.\n * @attr show-week-numbers\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'show-week-numbers' })\n public showWeekNumbers = false;\n\n /**\n * Gets/Sets the first day of the week.\n * @attr week-start\n * @default sunday\n */\n @property({ attribute: 'week-start' })\n public weekStart: WeekDays = 'sunday';\n\n /**\n * Gets/Sets the special dates for the component.\n *\n * @remarks\n * Returns `undefined` when no dates are set, which the setter accepts as well so that\n * a round trip through the property is valid.\n */\n @property({ attribute: false })\n public set specialDates(value: DateRangeDescriptor[] | undefined) {\n this._specialDates = value ?? [];\n }\n\n public get specialDates(): DateRangeDescriptor[] | undefined {\n return this._specialDates.length ? this._specialDates : undefined;\n }\n\n /**\n * Gets/Sets the disabled dates for the component.\n *\n * @remarks\n * Returns `undefined` when no dates are set, which the setter accepts as well so that\n * a round trip through the property is valid.\n */\n @property({ attribute: false })\n public set disabledDates(value: DateRangeDescriptor[] | undefined) {\n this._disabledDates = value ?? [];\n }\n\n public get disabledDates(): DateRangeDescriptor[] | undefined {\n return this._disabledDates.length ? this._disabledDates : undefined;\n }\n\n /** @internal */\n protected override update(props: PropertyValues): void {\n if (props.has('selection') && this.hasUpdated) {\n this._rangePreviewDate = undefined;\n this._value = null;\n this._values = [];\n }\n\n super.update(props);\n }\n\n /** @internal */\n protected override firstUpdated(): void {\n if (this._initialActiveDateSet) {\n return;\n }\n\n if (this._isSingle) {\n this.activeDate = this.value ?? this.activeDate;\n } else {\n this.activeDate = firstOf(this.values) ?? this.activeDate;\n }\n }\n}\n"]}
@@ -167,10 +167,10 @@ export default class IgcCalendarComponent extends IgcCalendarComponent_base {
167
167
  * same navigation several times over. The years view has its visible years range as a
168
168
  * live region of its own.
169
169
  */
170
- protected _renderActivePeriod(): TemplateResult<1> | typeof nothing;
170
+ protected _renderActivePeriod(): typeof nothing | TemplateResult<1>;
171
171
  protected _renderYearRangeNavigation(active: CalendarDay): TemplateResult;
172
172
  protected _renderNavigation(date?: CalendarDay, showButtons?: boolean, viewIndex?: number): TemplateResult;
173
- protected _renderHeader(): TemplateResult<1> | typeof nothing;
173
+ protected _renderHeader(): typeof nothing | TemplateResult<1>;
174
174
  protected _renderHeaderDateSingle(): TemplateResult;
175
175
  protected _renderHeaderDateRange(): TemplateResult;
176
176
  protected _renderHeaderDate(): TemplateResult;
@@ -14,7 +14,7 @@ export default class IgcMonthsViewComponent extends IgcYearMonthViewBaseComponen
14
14
  static register(): void;
15
15
  protected readonly _cellPart = "month";
16
16
  protected readonly _cellsPerRow = 3;
17
- /** Sets the locale used for formatting and displaying the dates. */
17
+ /** The locale used to format the displayed dates. */
18
18
  locale: string;
19
19
  /** The format of the month. Defaults to long. */
20
20
  monthFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow';
@@ -1 +1 @@
1
- {"version":3,"file":"months-view.js","sourceRoot":"","sources":["../../../../src/components/calendar/months-view/months-view.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,6BAA6B,GAE9B,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAaxC,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,6BAA6B;IAAlE;;QAUe,cAAS,GAAG,OAAO,CAAC;QACpB,iBAAY,GAAG,cAAc,CAAC;QAQnD,WAAM,GAAG,IAAI,CAAC;QAId,gBAAW,GAChB,MAAM,CAAC;IAkCX,CAAC;;aAzDwB,YAAO,GAAG,iBAAiB,AAApB,CAAqB;IAG5C,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,wBAAsB,CAAC,CAAC;IAC5C,CAAC;IAwBkB,cAAc,CAAC,KAAa;QAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;IAEkB,SAAS,CAAC,KAAkB;QAC7C,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE;YACnD,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE;YACpD,KAAK,EAAE,IAAI,CAAC,WAAW;SACxB,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YAE/C,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;gBACzB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC5B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK;gBACrC,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC;aACnC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;;AApCM;IADN,QAAQ,EAAE;sDACU;AAId;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;2DAE/B;AAxBU,sBAAsB;IAF1C,oBAAoB;IACpB,uBAAuB;GACH,sBAAsB,CA0D1C;eA1DoB,sBAAsB","sourcesContent":["import { getDateFormatter } from 'igniteui-i18n-core';\nimport { property } from 'lit/decorators.js';\nimport type { CalendarDay } from '#internals/date/model.js';\nimport { blazorIndirectRender } from '#internals/decorators/blazorIndirectRender.js';\nimport { blazorSuppressComponent } from '#internals/decorators/blazorSuppressComponent.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport { areSameMonth, MONTHS_PER_ROW } from '../helpers.js';\nimport {\n IgcYearMonthViewBaseComponent,\n type YearMonthViewCell,\n} from '../year-month-view.base.js';\n\nconst MONTHS = Array.from({ length: 12 }, (_, i) => i);\n\n/**\n * Instantiate a months view as a separate component in the calendar.\n *\n * @element igc-months-view\n *\n * @csspart months-row - The months row container.\n * @csspart month - The month container.\n * @csspart month-inner - The inner month container.\n */\n@blazorIndirectRender\n@blazorSuppressComponent\nexport default class IgcMonthsViewComponent extends IgcYearMonthViewBaseComponent {\n public static readonly tagName = 'igc-months-view';\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcMonthsViewComponent);\n }\n\n //#region Internal state\n\n protected override readonly _cellPart = 'month';\n protected override readonly _cellsPerRow = MONTHS_PER_ROW;\n\n //#endregion\n\n //#region Public attributes and properties\n\n /** Sets the locale used for formatting and displaying the dates. */\n @property()\n public locale = 'en';\n\n /** The format of the month. Defaults to long. */\n @property({ attribute: 'month-format' })\n public monthFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow' =\n 'long';\n\n //#endregion\n\n //#region Internal API\n\n protected override _valueFromCell(value: number): CalendarDay {\n return this._value.set({ month: value });\n }\n\n protected override _getCells(today: CalendarDay): YearMonthViewCell[] {\n const formatter = getDateFormatter();\n const aria = formatter.getIntlFormatter(this.locale, {\n month: 'long',\n year: 'numeric',\n });\n const label = formatter.getIntlFormatter(this.locale, {\n month: this.monthFormat,\n });\n\n return MONTHS.map((month) => {\n const date = this._value.set({ month }).native;\n\n return {\n value: month,\n label: label.format(date),\n ariaLabel: aria.format(date),\n selected: this._value.month === month,\n current: areSameMonth(today, date),\n };\n });\n }\n\n //#endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-months-view': IgcMonthsViewComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"months-view.js","sourceRoot":"","sources":["../../../../src/components/calendar/months-view/months-view.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EACL,6BAA6B,GAE9B,MAAM,4BAA4B,CAAC;AAEpC,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAaxC,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,6BAA6B;IAAlE;;QAUe,cAAS,GAAG,OAAO,CAAC;QACpB,iBAAY,GAAG,cAAc,CAAC;QAQnD,WAAM,GAAG,IAAI,CAAC;QAId,gBAAW,GAChB,MAAM,CAAC;IAkCX,CAAC;;aAzDwB,YAAO,GAAG,iBAAiB,AAApB,CAAqB;IAG5C,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,wBAAsB,CAAC,CAAC;IAC5C,CAAC;IAwBkB,cAAc,CAAC,KAAa;QAC7C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;IAEkB,SAAS,CAAC,KAAkB;QAC7C,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE;YACnD,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE;YACpD,KAAK,EAAE,IAAI,CAAC,WAAW;SACxB,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YAE/C,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;gBACzB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC5B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK;gBACrC,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC;aACnC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;;AApCM;IADN,QAAQ,EAAE;sDACU;AAId;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;2DAE/B;AAxBU,sBAAsB;IAF1C,oBAAoB;IACpB,uBAAuB;GACH,sBAAsB,CA0D1C;eA1DoB,sBAAsB","sourcesContent":["import { getDateFormatter } from 'igniteui-i18n-core';\nimport { property } from 'lit/decorators.js';\nimport type { CalendarDay } from '#internals/date/model.js';\nimport { blazorIndirectRender } from '#internals/decorators/blazorIndirectRender.js';\nimport { blazorSuppressComponent } from '#internals/decorators/blazorSuppressComponent.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport { areSameMonth, MONTHS_PER_ROW } from '../helpers.js';\nimport {\n IgcYearMonthViewBaseComponent,\n type YearMonthViewCell,\n} from '../year-month-view.base.js';\n\nconst MONTHS = Array.from({ length: 12 }, (_, i) => i);\n\n/**\n * Instantiate a months view as a separate component in the calendar.\n *\n * @element igc-months-view\n *\n * @csspart months-row - The months row container.\n * @csspart month - The month container.\n * @csspart month-inner - The inner month container.\n */\n@blazorIndirectRender\n@blazorSuppressComponent\nexport default class IgcMonthsViewComponent extends IgcYearMonthViewBaseComponent {\n public static readonly tagName = 'igc-months-view';\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcMonthsViewComponent);\n }\n\n //#region Internal state\n\n protected override readonly _cellPart = 'month';\n protected override readonly _cellsPerRow = MONTHS_PER_ROW;\n\n //#endregion\n\n //#region Public attributes and properties\n\n /** The locale used to format the displayed dates. */\n @property()\n public locale = 'en';\n\n /** The format of the month. Defaults to long. */\n @property({ attribute: 'month-format' })\n public monthFormat: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow' =\n 'long';\n\n //#endregion\n\n //#region Internal API\n\n protected override _valueFromCell(value: number): CalendarDay {\n return this._value.set({ month: value });\n }\n\n protected override _getCells(today: CalendarDay): YearMonthViewCell[] {\n const formatter = getDateFormatter();\n const aria = formatter.getIntlFormatter(this.locale, {\n month: 'long',\n year: 'numeric',\n });\n const label = formatter.getIntlFormatter(this.locale, {\n month: this.monthFormat,\n });\n\n return MONTHS.map((month) => {\n const date = this._value.set({ month }).native;\n\n return {\n value: month,\n label: label.format(date),\n ariaLabel: aria.format(date),\n selected: this._value.month === month,\n current: areSameMonth(today, date),\n };\n });\n }\n\n //#endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-months-view': IgcMonthsViewComponent;\n }\n}\n"]}
@@ -15,11 +15,11 @@ export default class IgcCarouselIndicatorComponent extends LitElement {
15
15
  static readonly tagName = "igc-carousel-indicator";
16
16
  static styles: import("lit").CSSResult;
17
17
  static register(): void;
18
- private readonly _internals;
19
18
  private readonly _carousel?;
20
19
  protected get _labelFormat(): string;
21
20
  active: boolean;
22
21
  index: number;
22
+ constructor();
23
23
  /** @internal */
24
24
  connectedCallback(): void;
25
25
  protected willUpdate(changedProperties: PropertyValues<this>): void;
@@ -14,15 +14,6 @@ import { registerComponent } from '#internals/definitions/register.js';
14
14
  import { formatString } from '#internals/utils/strings.js';
15
15
  import { styles } from './themes/carousel-indicator.base.css.js';
16
16
  export default class IgcCarouselIndicatorComponent extends LitElement {
17
- constructor() {
18
- super(...arguments);
19
- this._internals = addInternalsController(this, {
20
- initialARIA: { role: 'tab' },
21
- reflectRole: true,
22
- });
23
- this.active = false;
24
- this.index = 0;
25
- }
26
17
  static { this.tagName = 'igc-carousel-indicator'; }
27
18
  static { this.styles = styles; }
28
19
  static register() {
@@ -31,6 +22,19 @@ export default class IgcCarouselIndicatorComponent extends LitElement {
31
22
  get _labelFormat() {
32
23
  return this._carousel ? this._carousel.indicatorsLabelFormat : '';
33
24
  }
25
+ constructor() {
26
+ super();
27
+ this.active = false;
28
+ this.index = 0;
29
+ addInternalsController(this, {
30
+ initialARIA: { role: 'tab' },
31
+ reflectRole: true,
32
+ aria: () => ({
33
+ ariaSelected: `${this.active}`,
34
+ ariaLabel: formatString(this._labelFormat, this.index + 1),
35
+ }),
36
+ });
37
+ }
34
38
  connectedCallback() {
35
39
  super.connectedCallback();
36
40
  this.slot = this.slot || 'indicator';
@@ -38,11 +42,7 @@ export default class IgcCarouselIndicatorComponent extends LitElement {
38
42
  willUpdate(changedProperties) {
39
43
  if (changedProperties.has('active')) {
40
44
  this.tabIndex = this.active ? 0 : -1;
41
- this._internals.setARIA({ ariaSelected: this.active.toString() });
42
45
  }
43
- this._internals.setARIA({
44
- ariaLabel: formatString(this._labelFormat, this.index + 1),
45
- });
46
46
  }
47
47
  render() {
48
48
  const forward = this.active ? 'visible' : 'hidden';
@@ -1 +1 @@
1
- {"version":3,"file":"carousel-indicator.js","sourceRoot":"","sources":["../../../src/components/carousel/carousel-indicator.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAuB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,MAAM,EAAE,MAAM,yCAAyC,CAAC;AAcjE,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,UAAU;IAArE;;QASmB,eAAU,GAAG,sBAAsB,CAAC,IAAI,EAAE;YACzD,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YAC5B,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAWI,WAAM,GAAG,KAAK,CAAC;QAIf,UAAK,GAAG,CAAC,CAAC;IAmCnB,CAAC;aA7DwB,YAAO,GAAG,wBAAwB,AAA3B,CAA4B;aACnC,WAAM,GAAG,MAAM,AAAT,CAAU;IAGhC,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,6BAA6B,CAAC,CAAC;IACnD,CAAC;IAUD,IAAc,YAAY;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,CAAC;IAWe,iBAAiB;QAC/B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;IACvC,CAAC;IAEkB,UAAU,CAAC,iBAAuC;QACnE,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACtB,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAC3D,CAAC,CAAC;IACL,CAAC;IAEkB,MAAM;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpD,OAAO,IAAI,CAAA;;;gBAGC,QAAQ,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;;;;2CAIP,QAAQ,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;;;KAGvE,CAAC;IACJ,CAAC;;AA9CgB;IADhB,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gEACL;AAQ3C;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;6DACT;AAIf;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;4DACd","sourcesContent":["import { consume } from '@lit/context';\nimport { html, LitElement, type PropertyValues } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { carouselContext } from '#internals/context.js';\nimport { addInternalsController } from '#internals/controllers/internals.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport { formatString } from '#internals/utils/strings.js';\nimport type IgcCarouselComponent from './carousel.js';\nimport { styles } from './themes/carousel-indicator.base.css.js';\n\n/**\n * Used when a custom indicator needs to be passed to the carousel component.\n *\n * @element igc-carousel-indicator\n *\n * @slot - Default slot for projected inactive indicator.\n * @slot active - Default slot for projected active indicator.\n *\n * @csspart indicator - The wrapping container of the carousel dot indicator.\n * @csspart inactive - The wrapping container of the inactive dot indicator.\n * @csspart active - The wrapping container of the active dot indicator.\n */\nexport default class IgcCarouselIndicatorComponent extends LitElement {\n public static readonly tagName = 'igc-carousel-indicator';\n public static override styles = styles;\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcCarouselIndicatorComponent);\n }\n\n private readonly _internals = addInternalsController(this, {\n initialARIA: { role: 'tab' },\n reflectRole: true,\n });\n\n @consume({ context: carouselContext, subscribe: true })\n private readonly _carousel?: IgcCarouselComponent;\n\n protected get _labelFormat(): string {\n return this._carousel ? this._carousel.indicatorsLabelFormat : '';\n }\n\n /* blazorSuppress */\n @property({ attribute: false })\n public active = false;\n\n /* blazorSuppress */\n @property({ attribute: false })\n public index = 0;\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.slot = this.slot || 'indicator';\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n if (changedProperties.has('active')) {\n this.tabIndex = this.active ? 0 : -1;\n this._internals.setARIA({ ariaSelected: this.active.toString() });\n }\n\n this._internals.setARIA({\n ariaLabel: formatString(this._labelFormat, this.index + 1),\n });\n }\n\n protected override render() {\n const forward = this.active ? 'visible' : 'hidden';\n const backward = this.active ? 'hidden' : 'visible';\n\n return html`\n <div\n part=\"indicator inactive\"\n style=${styleMap({ visibility: backward })}\n >\n <slot></slot>\n </div>\n <div part=\"indicator active\" style=${styleMap({ visibility: forward })}>\n <slot name=\"active\"></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-carousel-indicator': IgcCarouselIndicatorComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"carousel-indicator.js","sourceRoot":"","sources":["../../../src/components/carousel/carousel-indicator.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAuB,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,OAAO,EAAE,MAAM,EAAE,MAAM,yCAAyC,CAAC;AAcjE,MAAM,CAAC,OAAO,OAAO,6BAA8B,SAAQ,UAAU;aAC5C,YAAO,GAAG,wBAAwB,AAA3B,CAA4B;aACnC,WAAM,GAAG,MAAM,AAAT,CAAU;IAGhC,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CAAC,6BAA6B,CAAC,CAAC;IACnD,CAAC;IAKD,IAAc,YAAY;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,CAAC;IAUD;QACE,KAAK,EAAE,CAAC;QAPH,WAAM,GAAG,KAAK,CAAC;QAIf,UAAK,GAAG,CAAC,CAAC;QAKf,sBAAsB,CAAC,IAAI,EAAE;YAC3B,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YAC5B,WAAW,EAAE,IAAI;YACjB,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;gBACX,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;gBAC9B,SAAS,EAAE,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;aAC3D,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAGe,iBAAiB;QAC/B,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;IACvC,CAAC;IAEkB,UAAU,CAAC,iBAAuC;QACnE,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEkB,MAAM;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAEpD,OAAO,IAAI,CAAA;;;gBAGC,QAAQ,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;;;;2CAIP,QAAQ,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;;;KAGvE,CAAC;IACJ,CAAC;;AAtDgB;IADhB,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;gEACL;AAQ3C;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;6DACT;AAIf;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;4DACd","sourcesContent":["import { consume } from '@lit/context';\nimport { html, LitElement, type PropertyValues } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { carouselContext } from '#internals/context.js';\nimport { addInternalsController } from '#internals/controllers/internals.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport { formatString } from '#internals/utils/strings.js';\nimport type IgcCarouselComponent from './carousel.js';\nimport { styles } from './themes/carousel-indicator.base.css.js';\n\n/**\n * Used when a custom indicator needs to be passed to the carousel component.\n *\n * @element igc-carousel-indicator\n *\n * @slot - Default slot for projected inactive indicator.\n * @slot active - Default slot for projected active indicator.\n *\n * @csspart indicator - The wrapping container of the carousel dot indicator.\n * @csspart inactive - The wrapping container of the inactive dot indicator.\n * @csspart active - The wrapping container of the active dot indicator.\n */\nexport default class IgcCarouselIndicatorComponent extends LitElement {\n public static readonly tagName = 'igc-carousel-indicator';\n public static override styles = styles;\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcCarouselIndicatorComponent);\n }\n\n @consume({ context: carouselContext, subscribe: true })\n private readonly _carousel?: IgcCarouselComponent;\n\n protected get _labelFormat(): string {\n return this._carousel ? this._carousel.indicatorsLabelFormat : '';\n }\n\n /* blazorSuppress */\n @property({ attribute: false })\n public active = false;\n\n /* blazorSuppress */\n @property({ attribute: false })\n public index = 0;\n\n constructor() {\n super();\n\n addInternalsController(this, {\n initialARIA: { role: 'tab' },\n reflectRole: true,\n aria: () => ({\n ariaSelected: `${this.active}`,\n ariaLabel: formatString(this._labelFormat, this.index + 1),\n }),\n });\n }\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.slot = this.slot || 'indicator';\n }\n\n protected override willUpdate(changedProperties: PropertyValues<this>): void {\n if (changedProperties.has('active')) {\n this.tabIndex = this.active ? 0 : -1;\n }\n }\n\n protected override render() {\n const forward = this.active ? 'visible' : 'hidden';\n const backward = this.active ? 'hidden' : 'visible';\n\n return html`\n <div\n part=\"indicator inactive\"\n style=${styleMap({ visibility: backward })}\n >\n <slot></slot>\n </div>\n <div part=\"indicator active\" style=${styleMap({ visibility: forward })}>\n <slot name=\"active\"></slot>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-carousel-indicator': IgcCarouselIndicatorComponent;\n }\n}\n"]}
@@ -10,7 +10,6 @@ export default class IgcCarouselSlideComponent extends LitElement {
10
10
  static styles: import("lit").CSSResult;
11
11
  static readonly tagName = "igc-carousel-slide";
12
12
  static register(): void;
13
- private readonly _internals;
14
13
  private readonly _player;
15
14
  private _carousel?;
16
15
  protected get _index(): number;
@@ -29,7 +28,6 @@ export default class IgcCarouselSlideComponent extends LitElement {
29
28
  * @deprecated since 5.4.0. Use Carousel's `select` method instead.
30
29
  */
31
30
  toggleAnimation(type: 'in' | 'out', direction?: 'normal' | 'reverse'): Promise<boolean>;
32
- protected willUpdate(): void;
33
31
  /** @internal */
34
32
  connectedCallback(): void;
35
33
  protected render(): import("lit-html").TemplateResult<1>;
@@ -40,15 +40,18 @@ export default class IgcCarouselSlideComponent extends LitElement {
40
40
  }
41
41
  constructor() {
42
42
  super();
43
- this._internals = addInternalsController(this, {
43
+ this._player = addAnimationController(this);
44
+ this.active = false;
45
+ this.previous = false;
46
+ addInternalsController(this, {
44
47
  initialARIA: {
45
48
  role: 'tabpanel',
46
49
  ariaRoleDescription: 'slide',
47
50
  },
51
+ aria: () => ({
52
+ ariaLabel: formatString(this._labelFormat, this._index + 1, this._total),
53
+ }),
48
54
  });
49
- this._player = addAnimationController(this);
50
- this.active = false;
51
- this.previous = false;
52
55
  createAsyncContext(this, carouselContext, (carousel) => {
53
56
  this._carousel = carousel;
54
57
  });
@@ -61,11 +64,6 @@ export default class IgcCarouselSlideComponent extends LitElement {
61
64
  direction,
62
65
  }));
63
66
  }
64
- willUpdate() {
65
- this._internals.setARIA({
66
- ariaLabel: formatString(this._labelFormat, this._index + 1, this._total),
67
- });
68
- }
69
67
  connectedCallback() {
70
68
  super.connectedCallback();
71
69
  this.id = this.id || nextId();
@@ -1 +1 @@
1
- {"version":3,"file":"carousel-slide.js","sourceRoot":"","sources":["../../../src/components/carousel/carousel-slide.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { EaseInOut } from '#animations/easings.js';\nimport { addAnimationController } from '#animations/player.js';\nimport { carouselContext } from '#internals/context.js';\nimport { createAsyncContext } from '#internals/controllers/async-consumer.js';\nimport { addInternalsController } from '#internals/controllers/internals.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport { createIdGenerator, formatString } from '#internals/utils/strings.js';\nimport { animations } from './animations.js';\nimport type IgcCarouselComponent from './carousel.js';\nimport { styles } from './themes/carousel-slide.base.css.js';\n\nconst nextId = createIdGenerator('igc-carousel-slide');\n\n/**\n * A single content container within a set of containers used in the context of a carousel.\n *\n * @element igc-carousel-slide\n *\n * @slot Default slot for the carousel slide.\n */\nexport default class IgcCarouselSlideComponent extends LitElement {\n public static override styles = styles;\n public static readonly tagName = 'igc-carousel-slide';\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcCarouselSlideComponent);\n }\n\n private readonly _internals = addInternalsController(this, {\n initialARIA: {\n role: 'tabpanel',\n ariaRoleDescription: 'slide',\n },\n });\n\n private readonly _player = addAnimationController(this);\n\n private _carousel?: IgcCarouselComponent;\n\n protected get _index(): number {\n return this._carousel ? this._carousel.slides.indexOf(this) : 0;\n }\n\n protected get _total(): number {\n return this._carousel ? this._carousel.slides.length : 0;\n }\n\n protected get _animation() {\n const animation = this._carousel?.animationType ?? 'slide';\n\n if (animation === 'slide') {\n return this._carousel?.vertical ? 'slideVer' : 'slideHor';\n }\n\n return animation;\n }\n\n protected get _labelFormat(): string {\n return this._carousel ? this._carousel.slidesLabelFormat : '';\n }\n\n /**\n * The current active slide for the carousel component.\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public active = false;\n\n /* blazorSuppress */\n @property({ type: Boolean, reflect: true })\n public previous = false;\n\n constructor() {\n super();\n\n // Set carousel reference once provider is ready (addresses Blazor timing issue)\n createAsyncContext(this, carouselContext, (carousel) => {\n this._carousel = carousel;\n });\n }\n\n /**\n * @hidden @internal\n * @deprecated since 5.4.0. Use Carousel's `select` method instead.\n */\n public async toggleAnimation(\n type: 'in' | 'out',\n direction: 'normal' | 'reverse' = 'normal'\n ): Promise<boolean> {\n const animation = animations.get(this._animation)!.get(type)!;\n\n return await this._player.playExclusive(\n animation({\n duration: 320,\n easing: EaseInOut.Quad,\n direction,\n })\n );\n }\n\n protected override willUpdate(): void {\n this._internals.setARIA({\n ariaLabel: formatString(this._labelFormat, this._index + 1, this._total),\n });\n }\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.id = this.id || nextId();\n }\n\n protected override render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-carousel-slide': IgcCarouselSlideComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"carousel-slide.js","sourceRoot":"","sources":["../../../src/components/carousel/carousel-slide.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { EaseInOut } from '#animations/easings.js';\nimport { addAnimationController } from '#animations/player.js';\nimport { carouselContext } from '#internals/context.js';\nimport { createAsyncContext } from '#internals/controllers/async-consumer.js';\nimport { addInternalsController } from '#internals/controllers/internals.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport { createIdGenerator, formatString } from '#internals/utils/strings.js';\nimport { animations } from './animations.js';\nimport type IgcCarouselComponent from './carousel.js';\nimport { styles } from './themes/carousel-slide.base.css.js';\n\nconst nextId = createIdGenerator('igc-carousel-slide');\n\n/**\n * A single content container within a set of containers used in the context of a carousel.\n *\n * @element igc-carousel-slide\n *\n * @slot Default slot for the carousel slide.\n */\nexport default class IgcCarouselSlideComponent extends LitElement {\n public static override styles = styles;\n public static readonly tagName = 'igc-carousel-slide';\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcCarouselSlideComponent);\n }\n\n private readonly _player = addAnimationController(this);\n\n private _carousel?: IgcCarouselComponent;\n\n protected get _index(): number {\n return this._carousel ? this._carousel.slides.indexOf(this) : 0;\n }\n\n protected get _total(): number {\n return this._carousel ? this._carousel.slides.length : 0;\n }\n\n protected get _animation() {\n const animation = this._carousel?.animationType ?? 'slide';\n\n if (animation === 'slide') {\n return this._carousel?.vertical ? 'slideVer' : 'slideHor';\n }\n\n return animation;\n }\n\n protected get _labelFormat(): string {\n return this._carousel ? this._carousel.slidesLabelFormat : '';\n }\n\n /**\n * The current active slide for the carousel component.\n * @attr\n */\n @property({ type: Boolean, reflect: true })\n public active = false;\n\n /* blazorSuppress */\n @property({ type: Boolean, reflect: true })\n public previous = false;\n\n constructor() {\n super();\n\n addInternalsController(this, {\n initialARIA: {\n role: 'tabpanel',\n ariaRoleDescription: 'slide',\n },\n aria: () => ({\n ariaLabel: formatString(\n this._labelFormat,\n this._index + 1,\n this._total\n ),\n }),\n });\n\n // Set carousel reference once provider is ready (addresses Blazor timing issue)\n createAsyncContext(this, carouselContext, (carousel) => {\n this._carousel = carousel;\n });\n }\n\n /**\n * @hidden @internal\n * @deprecated since 5.4.0. Use Carousel's `select` method instead.\n */\n public async toggleAnimation(\n type: 'in' | 'out',\n direction: 'normal' | 'reverse' = 'normal'\n ): Promise<boolean> {\n const animation = animations.get(this._animation)!.get(type)!;\n\n return await this._player.playExclusive(\n animation({\n duration: 320,\n easing: EaseInOut.Quad,\n direction,\n })\n );\n }\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.id = this.id || nextId();\n }\n\n protected override render() {\n return html`<slot></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-carousel-slide': IgcCarouselSlideComponent;\n }\n}\n"]}