igniteui-webcomponents 7.1.2 → 7.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/components/banner/banner.d.ts +53 -17
  3. package/components/banner/banner.js +5 -0
  4. package/components/banner/banner.js.map +1 -1
  5. package/components/button/button-base.d.ts +80 -26
  6. package/components/button/button-base.js +64 -23
  7. package/components/button/button-base.js.map +1 -1
  8. package/components/button/button.d.ts +12 -3
  9. package/components/button/button.js +1 -1
  10. package/components/button/button.js.map +1 -1
  11. package/components/button/icon-button.d.ts +25 -9
  12. package/components/button/icon-button.js +2 -2
  13. package/components/button/icon-button.js.map +1 -1
  14. package/components/button-group/themes/shared/button/button.common.css.js +1 -1
  15. package/components/button-group/themes/shared/button/button.common.css.js.map +1 -1
  16. package/components/button-group/themes/shared/button/button.indigo.css.js +1 -1
  17. package/components/button-group/themes/shared/button/button.indigo.css.js.map +1 -1
  18. package/components/calendar/base.d.ts +5 -4
  19. package/components/calendar/base.js +3 -2
  20. package/components/calendar/base.js.map +1 -1
  21. package/components/calendar/calendar.js +17 -13
  22. package/components/calendar/calendar.js.map +1 -1
  23. package/components/calendar/days-view/days-view.d.ts +1 -0
  24. package/components/calendar/days-view/days-view.js +7 -4
  25. package/components/calendar/days-view/days-view.js.map +1 -1
  26. package/components/calendar/helpers.d.ts +1 -1
  27. package/components/calendar/helpers.js.map +1 -1
  28. package/components/chat/chat-message.js +8 -8
  29. package/components/chat/chat-message.js.map +1 -1
  30. package/components/chat/chat-state.d.ts +3 -1
  31. package/components/chat/chat-state.js +3 -2
  32. package/components/chat/chat-state.js.map +1 -1
  33. package/components/chat/chat.d.ts +5 -1
  34. package/components/chat/chat.js +14 -4
  35. package/components/chat/chat.js.map +1 -1
  36. package/components/checkbox/checkbox.js +1 -0
  37. package/components/checkbox/checkbox.js.map +1 -1
  38. package/components/checkbox/switch.js +1 -0
  39. package/components/checkbox/switch.js.map +1 -1
  40. package/components/combo/combo.d.ts +1 -0
  41. package/components/combo/combo.js +7 -0
  42. package/components/combo/combo.js.map +1 -1
  43. package/components/combo/controllers/navigation.js +3 -0
  44. package/components/combo/controllers/navigation.js.map +1 -1
  45. package/components/common/controllers/command.d.ts +62 -0
  46. package/components/common/controllers/command.js +25 -0
  47. package/components/common/controllers/command.js.map +1 -0
  48. package/components/common/controllers/id-resolver.d.ts +31 -0
  49. package/components/common/controllers/id-resolver.js +136 -0
  50. package/components/common/controllers/id-resolver.js.map +1 -0
  51. package/components/common/i18n/EN/calendar.resources.d.ts +16 -14
  52. package/components/common/i18n/EN/calendar.resources.js +1 -1
  53. package/components/common/i18n/EN/calendar.resources.js.map +1 -1
  54. package/components/common/i18n/EN/chat.resources.d.ts +10 -8
  55. package/components/common/i18n/EN/chat.resources.js.map +1 -1
  56. package/components/common/i18n/EN/date-picker.resources.d.ts +8 -0
  57. package/components/common/i18n/EN/date-picker.resources.js +8 -0
  58. package/components/common/i18n/EN/date-picker.resources.js.map +1 -0
  59. package/components/common/i18n/EN/date-range-picker.resources.d.ts +9 -7
  60. package/components/common/i18n/EN/date-range-picker.resources.js +1 -1
  61. package/components/common/i18n/EN/date-range-picker.resources.js.map +1 -1
  62. package/components/common/i18n/i18n-controller.d.ts +14 -11
  63. package/components/common/i18n/i18n-controller.js +33 -41
  64. package/components/common/i18n/i18n-controller.js.map +1 -1
  65. package/components/common/i18n/utils.d.ts +8 -2
  66. package/components/common/i18n/utils.js +52 -44
  67. package/components/common/i18n/utils.js.map +1 -1
  68. package/components/common/mixins/alert.d.ts +47 -9
  69. package/components/common/mixins/alert.js +55 -12
  70. package/components/common/mixins/alert.js.map +1 -1
  71. package/components/common/mixins/forms/associated.js +11 -0
  72. package/components/common/mixins/forms/associated.js.map +1 -1
  73. package/components/common/mixins/forms/form-transformers.d.ts +1 -1
  74. package/components/common/mixins/forms/form-transformers.js.map +1 -1
  75. package/components/common/mixins/forms/types.d.ts +5 -0
  76. package/components/common/mixins/forms/types.js.map +1 -1
  77. package/components/common/mixins/mask-behavior.d.ts +73 -0
  78. package/components/common/mixins/mask-behavior.js +159 -0
  79. package/components/common/mixins/mask-behavior.js.map +1 -0
  80. package/components/common/templates/input-shell.d.ts +24 -0
  81. package/components/common/templates/input-shell.js +43 -0
  82. package/components/common/templates/input-shell.js.map +1 -0
  83. package/components/common/templates/masked-input.d.ts +39 -0
  84. package/components/common/templates/masked-input.js +37 -0
  85. package/components/common/templates/masked-input.js.map +1 -0
  86. package/components/common/util.d.ts +11 -0
  87. package/components/common/util.js +20 -0
  88. package/components/common/util.js.map +1 -1
  89. package/components/date-picker/date-picker.d.ts +6 -4
  90. package/components/date-picker/date-picker.js +16 -5
  91. package/components/date-picker/date-picker.js.map +1 -1
  92. package/components/date-range-picker/date-range-input.d.ts +60 -0
  93. package/components/date-range-picker/date-range-input.js +251 -0
  94. package/components/date-range-picker/date-range-input.js.map +1 -0
  95. package/components/date-range-picker/date-range-mask-parser.d.ts +106 -0
  96. package/components/date-range-picker/date-range-mask-parser.js +121 -0
  97. package/components/date-range-picker/date-range-mask-parser.js.map +1 -0
  98. package/components/date-range-picker/date-range-picker.d.ts +17 -11
  99. package/components/date-range-picker/date-range-picker.js +89 -61
  100. package/components/date-range-picker/date-range-picker.js.map +1 -1
  101. package/components/date-range-picker/predefined-ranges-area.d.ts +4 -4
  102. package/components/date-range-picker/predefined-ranges-area.js +8 -4
  103. package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
  104. package/components/date-range-picker/validators.d.ts +5 -19
  105. package/components/date-range-picker/validators.js +20 -16
  106. package/components/date-range-picker/validators.js.map +1 -1
  107. package/components/date-time-input/date-time-input.base.d.ts +155 -0
  108. package/components/date-time-input/date-time-input.base.js +275 -0
  109. package/components/date-time-input/date-time-input.base.js.map +1 -0
  110. package/components/date-time-input/date-time-input.d.ts +33 -122
  111. package/components/date-time-input/date-time-input.js +45 -258
  112. package/components/date-time-input/date-time-input.js.map +1 -1
  113. package/components/date-time-input/datetime-mask-parser.d.ts +11 -1
  114. package/components/date-time-input/datetime-mask-parser.js +5 -5
  115. package/components/date-time-input/datetime-mask-parser.js.map +1 -1
  116. package/components/dialog/dialog.d.ts +88 -31
  117. package/components/dialog/dialog.js +29 -31
  118. package/components/dialog/dialog.js.map +1 -1
  119. package/components/file-input/file-input.d.ts +1 -1
  120. package/components/input/input-base.d.ts +2 -10
  121. package/components/input/input-base.js +11 -57
  122. package/components/input/input-base.js.map +1 -1
  123. package/components/input/input.d.ts +1 -1
  124. package/components/input/input.js +1 -0
  125. package/components/input/input.js.map +1 -1
  126. package/components/input/themes/dark/input.shared.css.d.ts +1 -0
  127. package/components/input/themes/dark/input.shared.css.js +3 -0
  128. package/components/input/themes/dark/input.shared.css.js.map +1 -0
  129. package/components/input/themes/light/input.shared.css.js +1 -1
  130. package/components/input/themes/light/input.shared.css.js.map +1 -1
  131. package/components/input/themes/shared/input.common.css.js +1 -1
  132. package/components/input/themes/shared/input.common.css.js.map +1 -1
  133. package/components/input/themes/shared/input.material.css.js +1 -1
  134. package/components/input/themes/shared/input.material.css.js.map +1 -1
  135. package/components/input/themes/themes.js +4 -3
  136. package/components/input/themes/themes.js.map +1 -1
  137. package/components/mask-input/mask-input.d.ts +9 -4
  138. package/components/mask-input/mask-input.js +30 -36
  139. package/components/mask-input/mask-input.js.map +1 -1
  140. package/components/nav-drawer/nav-drawer.d.ts +93 -17
  141. package/components/nav-drawer/nav-drawer.js +148 -21
  142. package/components/nav-drawer/nav-drawer.js.map +1 -1
  143. package/components/nav-drawer/themes/container.base.css.js +1 -1
  144. package/components/nav-drawer/themes/container.base.css.js.map +1 -1
  145. package/components/nav-drawer/themes/shared/container/nav-drawer.common.css.js +1 -1
  146. package/components/nav-drawer/themes/shared/container/nav-drawer.common.css.js.map +1 -1
  147. package/components/nav-drawer/themes/shared/container/nav-drawer.fluent.css.js +1 -1
  148. package/components/nav-drawer/themes/shared/container/nav-drawer.fluent.css.js.map +1 -1
  149. package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js +1 -1
  150. package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js.map +1 -1
  151. package/components/radio/radio.js +1 -0
  152. package/components/radio/radio.js.map +1 -1
  153. package/components/snackbar/snackbar.d.ts +9 -5
  154. package/components/snackbar/snackbar.js +6 -8
  155. package/components/snackbar/snackbar.js.map +1 -1
  156. package/components/snackbar/themes/snackbar.base.css.js +1 -1
  157. package/components/snackbar/themes/snackbar.base.css.js.map +1 -1
  158. package/components/stepper/step.d.ts +1 -1
  159. package/components/stepper/step.js +4 -4
  160. package/components/stepper/step.js.map +1 -1
  161. package/components/stepper/stepper.js +5 -0
  162. package/components/stepper/stepper.js.map +1 -1
  163. package/components/stepper/themes/step/step.base.css.js +1 -1
  164. package/components/stepper/themes/step/step.base.css.js.map +1 -1
  165. package/components/stepper/themes/stepper/stepper.base.css.js +1 -1
  166. package/components/stepper/themes/stepper/stepper.base.css.js.map +1 -1
  167. package/components/toast/themes/toast.base.css.js +1 -1
  168. package/components/toast/themes/toast.base.css.js.map +1 -1
  169. package/components/toast/toast.d.ts +9 -2
  170. package/components/toast/toast.js +0 -2
  171. package/components/toast/toast.js.map +1 -1
  172. package/components/types.d.ts +4 -0
  173. package/components/types.js.map +1 -1
  174. package/custom-elements.json +34882 -28909
  175. package/igniteui-webcomponents.css-data.json +1 -1
  176. package/igniteui-webcomponents.html-data.json +1 -1
  177. package/index.d.ts +5 -2
  178. package/index.js +1 -1
  179. package/index.js.map +1 -1
  180. package/package.json +3 -3
  181. package/skills/igniteui-wc-choose-components/SKILL.md +23 -6
  182. package/skills/igniteui-wc-choose-components/reference/mcp-setup.md +82 -0
  183. package/skills/igniteui-wc-generate-from-image-design/references/component-mapping.md +4 -2
  184. package/web-types.json +2 -2
  185. package/components/mask-input/mask-input-base.d.ts +0 -51
  186. package/components/mask-input/mask-input-base.js +0 -146
  187. package/components/mask-input/mask-input-base.js.map +0 -1
@@ -38,6 +38,9 @@ export class ComboNavigationController {
38
38
  if (shiftKey) {
39
39
  this._host.focus();
40
40
  }
41
+ if (this._host.singleSelect && this.active > -1) {
42
+ this._config.interactions.select(this.active);
43
+ }
41
44
  await this._config.interactions.hide();
42
45
  }
43
46
  };
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../../src/components/combo/controllers/navigation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Ref } from 'lit/directives/ref.js';\nimport {\n addKeybindings,\n altKey,\n arrowDown,\n arrowUp,\n endKey,\n enterKey,\n escapeKey,\n homeKey,\n type KeyBindingOptions,\n shiftKey,\n spaceBar,\n tabKey,\n} from '../../common/controllers/key-bindings.js';\nimport type IgcInputComponent from '../../input/input.js';\nimport type IgcComboListComponent from '../combo-list.js';\nimport type { ComboHost } from '../types.js';\nimport type { DataState } from './data.js';\n\ntype ComboNavigationConfig = {\n /** The primary input of the combo component. */\n input: Ref<IgcInputComponent>;\n /** The search input of the combo component. */\n search: Ref<IgcInputComponent>;\n /** The combo virtualized dropdown list. */\n list: Ref<IgcComboListComponent>;\n interactions: {\n show: () => Promise<boolean>;\n hide: () => Promise<boolean>;\n toggleSelection: (index: number) => void;\n select: (index: number) => void;\n clearSelection: () => void;\n };\n};\n\nexport class ComboNavigationController<T extends object> {\n //#region Internal state\n\n private readonly _host: ComboHost<T>;\n private readonly _state: DataState<T>;\n private readonly _config: ComboNavigationConfig;\n\n private get _input(): IgcInputComponent | undefined {\n return this._config.input.value;\n }\n\n private get _searchInput(): IgcInputComponent | undefined {\n return this._config.search.value;\n }\n\n private get _list(): IgcComboListComponent | undefined {\n return this._config.list.value;\n }\n\n private get _firstItem(): number {\n return this._state.dataState.findIndex((rec) => !rec.header);\n }\n\n private get _lastItem(): number {\n return this._state.dataState.length - 1;\n }\n\n //#endregion\n\n public active = -1;\n\n constructor(\n host: ComboHost<T>,\n state: DataState<T>,\n config: ComboNavigationConfig\n ) {\n this._host = host;\n this._state = state;\n this._config = config;\n this._host.addController(this);\n\n const bindingDefaults: KeyBindingOptions = { repeat: true };\n const skip = (): boolean => this._host.disabled;\n\n // Combo\n addKeybindings(this._host, { skip, bindingDefaults })\n .set(tabKey, this._onTab, { preventDefault: false })\n .set([shiftKey, tabKey], this._onTab, {\n preventDefault: false,\n })\n .set(escapeKey, this._onEscape);\n\n // Main input\n addKeybindings(this._host, {\n skip,\n ref: this._config.input,\n bindingDefaults,\n })\n .set(arrowUp, this._config.interactions.hide)\n .set([altKey, arrowDown], this._onMainInputArrowDown)\n .set(arrowDown, this._onMainInputArrowDown)\n .set(enterKey, this._onEnter);\n\n // Search input\n addKeybindings(this._host, {\n skip,\n ref: this._config.search,\n bindingDefaults,\n })\n .set(arrowUp, this._onEscape)\n .set(arrowDown, this._onSearchArrowDown);\n\n // List\n addKeybindings(this._host, {\n skip,\n ref: this._config.list,\n bindingDefaults,\n })\n .set(arrowUp, this._onArrowUp)\n .set(arrowDown, this._onArrowDown)\n .set(homeKey, this._onHome)\n .set(endKey, this._onEnd)\n .set(spaceBar, this._onSpace)\n .set(enterKey, this._onEnter);\n }\n\n public hostDisconnected(): void {\n this.active = -1;\n }\n\n //#region Event handlers\n\n private _onSpace = (): void => {\n if (this.active > -1) {\n this._config.interactions.toggleSelection(this.active);\n }\n };\n\n private _onEnter = async (): Promise<void> => {\n if (this.active > -1) {\n if (this._host.singleSelect) {\n this._config.interactions.select(this.active);\n }\n if (await this._config.interactions.hide()) {\n this._input?.select();\n this._host.focus();\n }\n }\n };\n\n private _onTab = async ({ shiftKey }: KeyboardEvent): Promise<void> => {\n if (this._host.open) {\n if (shiftKey) {\n // Move focus to the main input of the combo\n // before the Shift+Tab behavior kicks in.\n this._host.focus();\n }\n await this._config.interactions.hide();\n }\n };\n\n private _onEscape = async (): Promise<void> => {\n if (!this._host.open) {\n this._config.interactions.clearSelection();\n }\n\n if (await this._config.interactions.hide()) {\n this._input?.focus();\n }\n };\n\n private _onMainInputArrowDown = async (): Promise<void> => {\n if (!this._host.open && !(await this._config.interactions.show())) {\n return;\n }\n\n if (this._host.singleSelect) {\n this._onSearchArrowDown();\n }\n };\n\n private _onSearchArrowDown = (): void => {\n this._list?.focus();\n this._onArrowDown();\n };\n\n private _onHome = (): void => {\n const previous = this.active;\n this.active = this._firstItem;\n this._scrollToActive();\n this._host.requestUpdate('_activeIndex', previous);\n };\n\n private _onEnd = (): void => {\n const previous = this.active;\n this.active = this._lastItem;\n this._scrollToActive();\n this._host.requestUpdate('_activeIndex', previous);\n };\n\n private _onArrowUp = (): void => {\n this._getNextItem(-1);\n this._scrollToActive();\n };\n\n private _onArrowDown = (): void => {\n this._getNextItem(1);\n this._scrollToActive();\n };\n\n //#endregion\n\n //#region Internal helper methods\n\n private _scrollToActive(behavior?: ScrollBehavior): void {\n this._list?.element(this.active)?.scrollIntoView({\n block: 'center',\n behavior: behavior ?? 'auto',\n });\n\n this._list?.requestUpdate();\n }\n\n private _getNearestItem(start: number, delta: -1 | 1): number {\n const items = this._state.dataState;\n const length = items.length;\n\n for (let i = start + delta; i >= 0 && i < length; i += delta) {\n if (!items[i].header) {\n return i;\n }\n }\n\n return -1;\n }\n\n private _getNextItem(delta: -1 | 1): void {\n const next = this._getNearestItem(this.active, delta);\n\n if (next === -1 && this.active === this._firstItem) {\n this._searchInput?.checkVisibility() // Non single-select or disable-filtering combo configuration\n ? this._searchInput?.focus() // Delegate to search input handlers\n : this._onEscape(); // Close dropdown and move focus back to main input\n return;\n }\n\n if (next !== -1) {\n const previous = this.active;\n this.active = next;\n this._host.requestUpdate('_activeIndex', previous);\n }\n }\n\n //#endregion\n}\n"]}
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../../src/components/combo/controllers/navigation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Ref } from 'lit/directives/ref.js';\nimport {\n addKeybindings,\n altKey,\n arrowDown,\n arrowUp,\n endKey,\n enterKey,\n escapeKey,\n homeKey,\n type KeyBindingOptions,\n shiftKey,\n spaceBar,\n tabKey,\n} from '../../common/controllers/key-bindings.js';\nimport type IgcInputComponent from '../../input/input.js';\nimport type IgcComboListComponent from '../combo-list.js';\nimport type { ComboHost } from '../types.js';\nimport type { DataState } from './data.js';\n\ntype ComboNavigationConfig = {\n /** The primary input of the combo component. */\n input: Ref<IgcInputComponent>;\n /** The search input of the combo component. */\n search: Ref<IgcInputComponent>;\n /** The combo virtualized dropdown list. */\n list: Ref<IgcComboListComponent>;\n interactions: {\n show: () => Promise<boolean>;\n hide: () => Promise<boolean>;\n toggleSelection: (index: number) => void;\n select: (index: number) => void;\n clearSelection: () => void;\n };\n};\n\nexport class ComboNavigationController<T extends object> {\n //#region Internal state\n\n private readonly _host: ComboHost<T>;\n private readonly _state: DataState<T>;\n private readonly _config: ComboNavigationConfig;\n\n private get _input(): IgcInputComponent | undefined {\n return this._config.input.value;\n }\n\n private get _searchInput(): IgcInputComponent | undefined {\n return this._config.search.value;\n }\n\n private get _list(): IgcComboListComponent | undefined {\n return this._config.list.value;\n }\n\n private get _firstItem(): number {\n return this._state.dataState.findIndex((rec) => !rec.header);\n }\n\n private get _lastItem(): number {\n return this._state.dataState.length - 1;\n }\n\n //#endregion\n\n public active = -1;\n\n constructor(\n host: ComboHost<T>,\n state: DataState<T>,\n config: ComboNavigationConfig\n ) {\n this._host = host;\n this._state = state;\n this._config = config;\n this._host.addController(this);\n\n const bindingDefaults: KeyBindingOptions = { repeat: true };\n const skip = (): boolean => this._host.disabled;\n\n // Combo\n addKeybindings(this._host, { skip, bindingDefaults })\n .set(tabKey, this._onTab, { preventDefault: false })\n .set([shiftKey, tabKey], this._onTab, {\n preventDefault: false,\n })\n .set(escapeKey, this._onEscape);\n\n // Main input\n addKeybindings(this._host, {\n skip,\n ref: this._config.input,\n bindingDefaults,\n })\n .set(arrowUp, this._config.interactions.hide)\n .set([altKey, arrowDown], this._onMainInputArrowDown)\n .set(arrowDown, this._onMainInputArrowDown)\n .set(enterKey, this._onEnter);\n\n // Search input\n addKeybindings(this._host, {\n skip,\n ref: this._config.search,\n bindingDefaults,\n })\n .set(arrowUp, this._onEscape)\n .set(arrowDown, this._onSearchArrowDown);\n\n // List\n addKeybindings(this._host, {\n skip,\n ref: this._config.list,\n bindingDefaults,\n })\n .set(arrowUp, this._onArrowUp)\n .set(arrowDown, this._onArrowDown)\n .set(homeKey, this._onHome)\n .set(endKey, this._onEnd)\n .set(spaceBar, this._onSpace)\n .set(enterKey, this._onEnter);\n }\n\n public hostDisconnected(): void {\n this.active = -1;\n }\n\n //#region Event handlers\n\n private _onSpace = (): void => {\n if (this.active > -1) {\n this._config.interactions.toggleSelection(this.active);\n }\n };\n\n private _onEnter = async (): Promise<void> => {\n if (this.active > -1) {\n if (this._host.singleSelect) {\n this._config.interactions.select(this.active);\n }\n if (await this._config.interactions.hide()) {\n this._input?.select();\n this._host.focus();\n }\n }\n };\n\n private _onTab = async ({ shiftKey }: KeyboardEvent): Promise<void> => {\n if (this._host.open) {\n if (shiftKey) {\n // Move focus to the main input of the combo\n // before the Shift+Tab behavior kicks in.\n this._host.focus();\n }\n\n if (this._host.singleSelect && this.active > -1) {\n this._config.interactions.select(this.active);\n }\n\n await this._config.interactions.hide();\n }\n };\n\n private _onEscape = async (): Promise<void> => {\n if (!this._host.open) {\n this._config.interactions.clearSelection();\n }\n\n if (await this._config.interactions.hide()) {\n this._input?.focus();\n }\n };\n\n private _onMainInputArrowDown = async (): Promise<void> => {\n if (!this._host.open && !(await this._config.interactions.show())) {\n return;\n }\n\n if (this._host.singleSelect) {\n this._onSearchArrowDown();\n }\n };\n\n private _onSearchArrowDown = (): void => {\n this._list?.focus();\n this._onArrowDown();\n };\n\n private _onHome = (): void => {\n const previous = this.active;\n this.active = this._firstItem;\n this._scrollToActive();\n this._host.requestUpdate('_activeIndex', previous);\n };\n\n private _onEnd = (): void => {\n const previous = this.active;\n this.active = this._lastItem;\n this._scrollToActive();\n this._host.requestUpdate('_activeIndex', previous);\n };\n\n private _onArrowUp = (): void => {\n this._getNextItem(-1);\n this._scrollToActive();\n };\n\n private _onArrowDown = (): void => {\n this._getNextItem(1);\n this._scrollToActive();\n };\n\n //#endregion\n\n //#region Internal helper methods\n\n private _scrollToActive(behavior?: ScrollBehavior): void {\n this._list?.element(this.active)?.scrollIntoView({\n block: 'center',\n behavior: behavior ?? 'auto',\n });\n\n this._list?.requestUpdate();\n }\n\n private _getNearestItem(start: number, delta: -1 | 1): number {\n const items = this._state.dataState;\n const length = items.length;\n\n for (let i = start + delta; i >= 0 && i < length; i += delta) {\n if (!items[i].header) {\n return i;\n }\n }\n\n return -1;\n }\n\n private _getNextItem(delta: -1 | 1): void {\n const next = this._getNearestItem(this.active, delta);\n\n if (next === -1 && this.active === this._firstItem) {\n this._searchInput?.checkVisibility() // Non single-select or disable-filtering combo configuration\n ? this._searchInput?.focus() // Delegate to search input handlers\n : this._onEscape(); // Close dropdown and move focus back to main input\n return;\n }\n\n if (next !== -1) {\n const previous = this.active;\n this.active = next;\n this._host.requestUpdate('_activeIndex', previous);\n }\n }\n\n //#endregion\n}\n"]}
@@ -0,0 +1,62 @@
1
+ import type { LitElement, ReactiveController } from 'lit';
2
+ /**
3
+ * A Lit reactive controller that bridges the native
4
+ * [Invoker Commands API](https://developer.mozilla.org/en-US/docs/Web/API/Invoker_Commands_API)
5
+ * with a component's programmatic API.
6
+ *
7
+ * When an `igc-button` (or any element using the `command` / `commandfor`
8
+ * attributes) invokes a command on the host, the browser dispatches a
9
+ * `CommandEvent` on the target element. This controller listens for that
10
+ * event and forwards it to the registered callback for the given command
11
+ * string.
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * class IgcDialogComponent extends LitElement {
16
+ * private readonly _commands = addCommandController(this)
17
+ * .set('open', this.show)
18
+ * .set('close', this.hide)
19
+ * .set('toggle-popover', this.toggle);
20
+ * }
21
+ * ```
22
+ *
23
+ * With the above setup, a button in the document can control the dialog
24
+ * declaratively:
25
+ *
26
+ * ```html
27
+ * <igc-button command="open" commandfor="my-dialog">Open</igc-button>
28
+ * <igc-dialog id="my-dialog"></igc-dialog>
29
+ * ```
30
+ */
31
+ declare class CommandController implements ReactiveController {
32
+ private readonly _host;
33
+ private readonly _commandMap;
34
+ constructor(host: LitElement);
35
+ /**
36
+ * Registers a command string and its corresponding handler callback.
37
+ *
38
+ * Returns `this` to allow chained calls:
39
+ * ```ts
40
+ * addCommandController(this)
41
+ * .set('open', this.show)
42
+ * .set('close', this.hide);
43
+ * ```
44
+ *
45
+ * @param command - The command string to listen for (e.g. `'open'`,
46
+ * `'toggle-popover'`, or a custom `'--my-command'`).
47
+ * @param callback - The method to invoke when the command is received.
48
+ * Called with the host as `this`.
49
+ */
50
+ set(command: string, callback: () => unknown): this;
51
+ /** @internal */
52
+ hostConnected(): void;
53
+ /** @internal */
54
+ hostDisconnected(): void;
55
+ /** @internal */
56
+ handleEvent(event: Event): void;
57
+ }
58
+ /**
59
+ * Creates a {@link CommandController} and attaches it to the given host.
60
+ */
61
+ export declare function addCommandController(host: LitElement): CommandController;
62
+ export type { CommandController };
@@ -0,0 +1,25 @@
1
+ class CommandController {
2
+ constructor(host) {
3
+ this._commandMap = new Map();
4
+ this._host = host;
5
+ host.addController(this);
6
+ }
7
+ set(command, callback) {
8
+ this._commandMap.set(command, callback);
9
+ return this;
10
+ }
11
+ hostConnected() {
12
+ this._host.addEventListener('command', this);
13
+ }
14
+ hostDisconnected() {
15
+ this._host.removeEventListener('command', this);
16
+ }
17
+ handleEvent(event) {
18
+ const commandEvent = event;
19
+ this._commandMap.get(commandEvent.command)?.call(this._host);
20
+ }
21
+ }
22
+ export function addCommandController(host) {
23
+ return new CommandController(host);
24
+ }
25
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../../src/components/common/controllers/command.ts"],"names":[],"mappings":"AA+BA,MAAM,iBAAiB;IAIrB,YAAY,IAAgB;QAFX,gBAAW,GAAG,IAAI,GAAG,EAAyB,CAAC;QAG9D,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAiBM,GAAG,CAAC,OAAe,EAAE,QAAuB;QACjD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAGM,aAAa;QAClB,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAGM,gBAAgB;QACrB,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAGM,WAAW,CAAC,KAAY;QAC7B,MAAM,YAAY,GAAG,KAAqB,CAAC;QAC3C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/D,CAAC;CACF;AAKD,MAAM,UAAU,oBAAoB,CAAC,IAAgB;IACnD,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC","sourcesContent":["import type { LitElement, ReactiveController } from 'lit';\n\n/**\n * A Lit reactive controller that bridges the native\n * [Invoker Commands API](https://developer.mozilla.org/en-US/docs/Web/API/Invoker_Commands_API)\n * with a component's programmatic API.\n *\n * When an `igc-button` (or any element using the `command` / `commandfor`\n * attributes) invokes a command on the host, the browser dispatches a\n * `CommandEvent` on the target element. This controller listens for that\n * event and forwards it to the registered callback for the given command\n * string.\n *\n * @example\n * ```ts\n * class IgcDialogComponent extends LitElement {\n * private readonly _commands = addCommandController(this)\n * .set('open', this.show)\n * .set('close', this.hide)\n * .set('toggle-popover', this.toggle);\n * }\n * ```\n *\n * With the above setup, a button in the document can control the dialog\n * declaratively:\n *\n * ```html\n * <igc-button command=\"open\" commandfor=\"my-dialog\">Open</igc-button>\n * <igc-dialog id=\"my-dialog\"></igc-dialog>\n * ```\n */\nclass CommandController implements ReactiveController {\n private readonly _host: LitElement;\n private readonly _commandMap = new Map<string, () => unknown>();\n\n constructor(host: LitElement) {\n this._host = host;\n host.addController(this);\n }\n\n /**\n * Registers a command string and its corresponding handler callback.\n *\n * Returns `this` to allow chained calls:\n * ```ts\n * addCommandController(this)\n * .set('open', this.show)\n * .set('close', this.hide);\n * ```\n *\n * @param command - The command string to listen for (e.g. `'open'`,\n * `'toggle-popover'`, or a custom `'--my-command'`).\n * @param callback - The method to invoke when the command is received.\n * Called with the host as `this`.\n */\n public set(command: string, callback: () => unknown): this {\n this._commandMap.set(command, callback);\n return this;\n }\n\n /** @internal */\n public hostConnected(): void {\n this._host.addEventListener('command', this);\n }\n\n /** @internal */\n public hostDisconnected(): void {\n this._host.removeEventListener('command', this);\n }\n\n /** @internal */\n public handleEvent(event: Event): void {\n const commandEvent = event as CommandEvent;\n this._commandMap.get(commandEvent.command)?.call(this._host);\n }\n}\n\n/**\n * Creates a {@link CommandController} and attaches it to the given host.\n */\nexport function addCommandController(host: LitElement): CommandController {\n return new CommandController(host);\n}\n\nexport type { CommandController };\n"]}
@@ -0,0 +1,31 @@
1
+ import { type LitElement, type ReactiveController } from 'lit';
2
+ /**
3
+ * Reactive controller that allows a host component to resolve ID references
4
+ * scoped to its root node, and react to changes in those references.
5
+ */
6
+ declare class IdRefResolverController implements ReactiveController {
7
+ private readonly _host;
8
+ private readonly _callback;
9
+ private _active;
10
+ private _connected;
11
+ private _emitter;
12
+ constructor(host: LitElement, callback: (ids: Set<string>) => unknown);
13
+ private _observe;
14
+ private _unobserve;
15
+ /** @internal */
16
+ handleEvent(event: Event): void;
17
+ /** @internal */
18
+ hostConnected(): void;
19
+ /** @internal */
20
+ hostDisconnected(): void;
21
+ /** Start tracking ID reference changes in the document. */
22
+ observe(): void;
23
+ /** Stop tracking ID reference changes in the document. */
24
+ unobserve(): void;
25
+ }
26
+ /**
27
+ * Adds an ID reference resolver controller to the host component, allowing it to resolve ID references scoped to
28
+ * its root node and react to changes in those references.
29
+ */
30
+ export declare function addIdRefResolver(host: LitElement, callback: (ids: Set<string>) => unknown): IdRefResolverController;
31
+ export type { IdRefResolverController };
@@ -0,0 +1,136 @@
1
+ import { isServer } from 'lit';
2
+ import { isDocument, isElement } from '../util.js';
3
+ const ID_REF_EMITTERS = new WeakMap();
4
+ const ID_REF_EVENT = 'id-refs-change';
5
+ function getEmitter(root) {
6
+ let emitter = ID_REF_EMITTERS.get(root);
7
+ if (!emitter) {
8
+ emitter = new IdRefChangeEmitter(root);
9
+ ID_REF_EMITTERS.set(root, emitter);
10
+ }
11
+ return emitter;
12
+ }
13
+ function refObserverCallback(mutations, emitter) {
14
+ const affected = new Set();
15
+ for (const mutation of mutations) {
16
+ if (mutation.type === 'attributes') {
17
+ if (!isElement(mutation.target))
18
+ continue;
19
+ const oldId = mutation.oldValue;
20
+ const newId = mutation.target.id;
21
+ if (oldId)
22
+ affected.add(oldId);
23
+ if (newId)
24
+ affected.add(newId);
25
+ }
26
+ else {
27
+ for (const node of mutation.addedNodes) {
28
+ if (!isElement(node))
29
+ continue;
30
+ if (node.id)
31
+ affected.add(node.id);
32
+ for (const child of node.querySelectorAll('[id]')) {
33
+ if (child.id)
34
+ affected.add(child.id);
35
+ }
36
+ }
37
+ for (const node of mutation.removedNodes) {
38
+ if (!isElement(node))
39
+ continue;
40
+ if (node.id)
41
+ affected.add(node.id);
42
+ for (const child of node.querySelectorAll('[id]')) {
43
+ if (child.id)
44
+ affected.add(child.id);
45
+ }
46
+ }
47
+ }
48
+ }
49
+ if (affected.size > 0) {
50
+ emitter.dispatchEvent(new CustomEvent(ID_REF_EVENT, { detail: affected }));
51
+ }
52
+ }
53
+ class IdRefChangeEmitter extends EventTarget {
54
+ constructor(root) {
55
+ super();
56
+ this._refCount = 0;
57
+ this._root = root;
58
+ if (!isServer) {
59
+ this._observer = new MutationObserver((mutations) => refObserverCallback(mutations, this));
60
+ }
61
+ }
62
+ retain() {
63
+ if (this._refCount++ === 0) {
64
+ const root = isDocument(this._root) ? this._root.body : this._root;
65
+ this._observer?.observe(root, {
66
+ attributeFilter: ['id'],
67
+ attributeOldValue: true,
68
+ subtree: true,
69
+ childList: true,
70
+ });
71
+ }
72
+ }
73
+ release() {
74
+ if (this._refCount > 0 && --this._refCount === 0) {
75
+ this._observer?.disconnect();
76
+ }
77
+ }
78
+ }
79
+ class IdRefResolverController {
80
+ constructor(host, callback) {
81
+ this._active = false;
82
+ this._connected = false;
83
+ this._emitter = null;
84
+ this._host = host;
85
+ this._host.addController(this);
86
+ this._callback = callback;
87
+ }
88
+ _observe() {
89
+ const root = this._host.getRootNode();
90
+ this._emitter = getEmitter(root);
91
+ this._emitter.retain();
92
+ this._emitter.addEventListener(ID_REF_EVENT, this);
93
+ }
94
+ _unobserve() {
95
+ if (this._emitter) {
96
+ this._emitter.removeEventListener(ID_REF_EVENT, this);
97
+ this._emitter.release();
98
+ this._emitter = null;
99
+ }
100
+ }
101
+ handleEvent(event) {
102
+ this._callback.call(this._host, event.detail);
103
+ }
104
+ hostConnected() {
105
+ this._connected = true;
106
+ if (this._active) {
107
+ this._observe();
108
+ }
109
+ }
110
+ hostDisconnected() {
111
+ if (this._active) {
112
+ this._unobserve();
113
+ }
114
+ this._connected = false;
115
+ }
116
+ observe() {
117
+ if (this._active)
118
+ return;
119
+ this._active = true;
120
+ if (this._connected) {
121
+ this._observe();
122
+ }
123
+ }
124
+ unobserve() {
125
+ if (!this._active)
126
+ return;
127
+ this._active = false;
128
+ if (this._connected) {
129
+ this._unobserve();
130
+ }
131
+ }
132
+ }
133
+ export function addIdRefResolver(host, callback) {
134
+ return new IdRefResolverController(host, callback);
135
+ }
136
+ //# sourceMappingURL=id-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-resolver.js","sourceRoot":"","sources":["../../../../src/components/common/controllers/id-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA4C,MAAM,KAAK,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEnD,MAAM,eAAe,GAAG,IAAI,OAAO,EAA4B,CAAC;AAChE,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAEtC,SAAS,UAAU,CAAC,IAAU;IAC5B,IAAI,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,mBAAmB,CAC1B,SAA2B,EAC3B,OAA2B;IAE3B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAAE,SAAS;YAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC;YAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,IAAI,KAAK;gBAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,KAAK;gBAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;gBACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;oBAAE,SAAS;gBAC/B,IAAI,IAAI,CAAC,EAAE;oBAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;oBAClD,IAAI,KAAK,CAAC,EAAE;wBAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;gBACzC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;oBAAE,SAAS;gBAC/B,IAAI,IAAI,CAAC,EAAE;oBAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;oBAClD,IAAI,KAAK,CAAC,EAAE;wBAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC;AAMD,MAAM,kBAAmB,SAAQ,WAAW;IAK1C,YAAY,IAAU;QACpB,KAAK,EAAE,CAAC;QAHF,cAAS,GAAG,CAAC,CAAC;QAIpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,SAAS,GAAG,IAAI,gBAAgB,CAAC,CAAC,SAAS,EAAE,EAAE,CAClD,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,CACrC,CAAC;QACJ,CAAC;IACH,CAAC;IAKM,MAAM;QACX,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YACnE,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE;gBAC5B,eAAe,EAAE,CAAC,IAAI,CAAC;gBACvB,iBAAiB,EAAE,IAAI;gBACvB,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAKM,OAAO;QACZ,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;CACF;AAMD,MAAM,uBAAuB;IAO3B,YAAY,IAAgB,EAAE,QAAuC;QAJ7D,YAAO,GAAG,KAAK,CAAC;QAChB,eAAU,GAAG,KAAK,CAAC;QACnB,aAAQ,GAA8B,IAAI,CAAC;QAGjD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAEO,QAAQ;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACvB,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAEO,UAAU;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YACtD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IAGM,WAAW,CAAC,KAAY;QAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAG,KAAkC,CAAC,MAAM,CAAC,CAAC;IAC9E,CAAC;IAGM,aAAa;QAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAGM,gBAAgB;QACrB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAGM,OAAO;QACZ,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAGM,SAAS;QACd,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;CACF;AAMD,MAAM,UAAU,gBAAgB,CAC9B,IAAgB,EAChB,QAAuC;IAEvC,OAAO,IAAI,uBAAuB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACrD,CAAC","sourcesContent":["import { isServer, type LitElement, type ReactiveController } from 'lit';\nimport { isDocument, isElement } from '../util.js';\n\nconst ID_REF_EMITTERS = new WeakMap<Node, IdRefChangeEmitter>();\nconst ID_REF_EVENT = 'id-refs-change';\n\nfunction getEmitter(root: Node): IdRefChangeEmitter {\n let emitter = ID_REF_EMITTERS.get(root);\n if (!emitter) {\n emitter = new IdRefChangeEmitter(root);\n ID_REF_EMITTERS.set(root, emitter);\n }\n return emitter;\n}\n\nfunction refObserverCallback(\n mutations: MutationRecord[],\n emitter: IdRefChangeEmitter\n): void {\n const affected = new Set<string>();\n\n for (const mutation of mutations) {\n if (mutation.type === 'attributes') {\n if (!isElement(mutation.target)) continue;\n const oldId = mutation.oldValue;\n const newId = mutation.target.id;\n if (oldId) affected.add(oldId);\n if (newId) affected.add(newId);\n } else {\n for (const node of mutation.addedNodes) {\n if (!isElement(node)) continue;\n if (node.id) affected.add(node.id);\n for (const child of node.querySelectorAll('[id]')) {\n if (child.id) affected.add(child.id);\n }\n }\n for (const node of mutation.removedNodes) {\n if (!isElement(node)) continue;\n if (node.id) affected.add(node.id);\n for (const child of node.querySelectorAll('[id]')) {\n if (child.id) affected.add(child.id);\n }\n }\n }\n }\n\n if (affected.size > 0) {\n emitter.dispatchEvent(new CustomEvent(ID_REF_EVENT, { detail: affected }));\n }\n}\n\n/**\n * Emits events when ID references in a root node change, allowing components to reactively update resolved references.\n * Uses a reference counting mechanism to avoid unnecessary observation when no components are using it.\n */\nclass IdRefChangeEmitter extends EventTarget {\n private readonly _observer?: MutationObserver;\n private readonly _root: Node;\n private _refCount = 0;\n\n constructor(root: Node) {\n super();\n this._root = root;\n\n if (!isServer) {\n this._observer = new MutationObserver((mutations) =>\n refObserverCallback(mutations, this)\n );\n }\n }\n\n /**\n * Increment the reference count. Starts the underlying MutationObserver on the first call.\n */\n public retain(): void {\n if (this._refCount++ === 0) {\n const root = isDocument(this._root) ? this._root.body : this._root;\n this._observer?.observe(root, {\n attributeFilter: ['id'],\n attributeOldValue: true,\n subtree: true,\n childList: true,\n });\n }\n }\n\n /**\n * Decrement the reference count. Stops the underlying MutationObserver when the count reaches zero.\n */\n public release(): void {\n if (this._refCount > 0 && --this._refCount === 0) {\n this._observer?.disconnect();\n }\n }\n}\n\n/**\n * Reactive controller that allows a host component to resolve ID references\n * scoped to its root node, and react to changes in those references.\n */\nclass IdRefResolverController implements ReactiveController {\n private readonly _host: LitElement;\n private readonly _callback: (ids: Set<string>) => unknown;\n private _active = false;\n private _connected = false;\n private _emitter: IdRefChangeEmitter | null = null;\n\n constructor(host: LitElement, callback: (ids: Set<string>) => unknown) {\n this._host = host;\n this._host.addController(this);\n this._callback = callback;\n }\n\n private _observe(): void {\n const root = this._host.getRootNode();\n this._emitter = getEmitter(root);\n this._emitter.retain();\n this._emitter.addEventListener(ID_REF_EVENT, this);\n }\n\n private _unobserve(): void {\n if (this._emitter) {\n this._emitter.removeEventListener(ID_REF_EVENT, this);\n this._emitter.release();\n this._emitter = null;\n }\n }\n\n /** @internal */\n public handleEvent(event: Event): void {\n this._callback.call(this._host, (event as CustomEvent<Set<string>>).detail);\n }\n\n /** @internal */\n public hostConnected(): void {\n this._connected = true;\n if (this._active) {\n this._observe();\n }\n }\n\n /** @internal */\n public hostDisconnected(): void {\n if (this._active) {\n this._unobserve();\n }\n this._connected = false;\n }\n\n /** Start tracking ID reference changes in the document. */\n public observe(): void {\n if (this._active) return;\n this._active = true;\n if (this._connected) {\n this._observe();\n }\n }\n\n /** Stop tracking ID reference changes in the document. */\n public unobserve(): void {\n if (!this._active) return;\n this._active = false;\n if (this._connected) {\n this._unobserve();\n }\n }\n}\n\n/**\n * Adds an ID reference resolver controller to the host component, allowing it to resolve ID references scoped to\n * its root node and react to changes in those references.\n */\nexport function addIdRefResolver(\n host: LitElement,\n callback: (ids: Set<string>) => unknown\n): IdRefResolverController {\n return new IdRefResolverController(host, callback);\n}\n\nexport type { IdRefResolverController };\n"]}
@@ -1,17 +1,19 @@
1
+ /** @deprecated since 7.2.0. Please use the newly provided ICalendarResourceStrings interface or set global resource strings using `registerI18n` method. */
1
2
  export interface IgcCalendarResourceStrings {
2
- selectMonth: string;
3
- selectYear: string;
4
- selectDate: string;
5
- selectRange: string;
6
- selectedDate: string;
7
- startDate: string;
8
- endDate: string;
9
- previousMonth: string;
10
- nextMonth: string;
11
- previousYear: string;
12
- nextYear: string;
13
- previousYears: string;
14
- nextYears: string;
15
- weekLabel: string;
3
+ selectMonth?: string;
4
+ selectYear?: string;
5
+ selectDate?: string;
6
+ selectRange?: string;
7
+ selectedDate?: string;
8
+ startDate?: string;
9
+ endDate?: string;
10
+ previousMonth?: string;
11
+ nextMonth?: string;
12
+ previousYear?: string;
13
+ nextYear?: string;
14
+ previousYears?: string;
15
+ nextYears?: string;
16
+ weekLabel?: string;
16
17
  }
18
+ /** @deprecated since 7.2.0. Please use the newly provided resources from the igniteui-i18n-resources package. */
17
19
  export declare const IgcCalendarResourceStringEN: IgcCalendarResourceStrings;
@@ -1,7 +1,7 @@
1
1
  import { CalendarResourceStringsEN } from 'igniteui-i18n-core';
2
2
  import { convertToIgcResource } from '../utils.js';
3
3
  export const IgcCalendarResourceStringEN = {
4
- ...convertToIgcResource(CalendarResourceStringsEN),
4
+ ...convertToIgcResource(CalendarResourceStringsEN, 'calendar'),
5
5
  ...{ weekLabel: 'Wk' },
6
6
  };
7
7
  //# sourceMappingURL=calendar.resources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.resources.js","sourceRoot":"","sources":["../../../../../src/components/common/i18n/EN/calendar.resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAuBnD,MAAM,CAAC,MAAM,2BAA2B,GAA+B;IACrE,GAAG,oBAAoB,CAAC,yBAAyB,CAAC;IAClD,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;CACvB,CAAC","sourcesContent":["import { CalendarResourceStringsEN } from 'igniteui-i18n-core';\nimport { convertToIgcResource } from '../utils.js';\n\n/* blazorSuppress */\nexport interface IgcCalendarResourceStrings {\n selectMonth: string;\n selectYear: string;\n selectDate: string;\n selectRange: string;\n selectedDate: string;\n startDate: string;\n endDate: string;\n previousMonth: string;\n nextMonth: string;\n previousYear: string;\n nextYear: string;\n previousYears: string;\n nextYears: string;\n weekLabel: string;\n}\n\n// Because weekLabel should be retrieved from the i18n formatter, but previously was present in resources.\n// Manually add it for now, as part of the default EN. When updating make sure to switch in source\n// the week start to be retrieved using a formatter instead of locale.\nexport const IgcCalendarResourceStringEN: IgcCalendarResourceStrings = {\n ...convertToIgcResource(CalendarResourceStringsEN),\n ...{ weekLabel: 'Wk' },\n};\n"]}
1
+ {"version":3,"file":"calendar.resources.js","sourceRoot":"","sources":["../../../../../src/components/common/i18n/EN/calendar.resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAyBnD,MAAM,CAAC,MAAM,2BAA2B,GAA+B;IACrE,GAAG,oBAAoB,CAAC,yBAAyB,EAAE,UAAU,CAAC;IAC9D,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;CACvB,CAAC","sourcesContent":["import { CalendarResourceStringsEN } from 'igniteui-i18n-core';\nimport { convertToIgcResource } from '../utils.js';\n\n/* blazorSuppress */\n/** @deprecated since 7.2.0. Please use the newly provided ICalendarResourceStrings interface or set global resource strings using `registerI18n` method. */\nexport interface IgcCalendarResourceStrings {\n selectMonth?: string;\n selectYear?: string;\n selectDate?: string;\n selectRange?: string;\n selectedDate?: string;\n startDate?: string;\n endDate?: string;\n previousMonth?: string;\n nextMonth?: string;\n previousYear?: string;\n nextYear?: string;\n previousYears?: string;\n nextYears?: string;\n weekLabel?: string;\n}\n\n// Because weekLabel should be retrieved from the i18n formatter, but previously was present in resources.\n// Manually add it for now, as part of the default EN. When updating make sure to switch in source\n// the week start to be retrieved using a formatter instead of locale.\n/** @deprecated since 7.2.0. Please use the newly provided resources from the igniteui-i18n-resources package. */\nexport const IgcCalendarResourceStringEN: IgcCalendarResourceStrings = {\n ...convertToIgcResource(CalendarResourceStringsEN, 'calendar'),\n ...{ weekLabel: 'Wk' },\n};\n"]}
@@ -1,11 +1,13 @@
1
+ /** @deprecated since 7.2.0. Please use the newly provided `IChatResourceStrings` interfaces from or set global resource strings using `registerI18n` method. */
1
2
  export interface IgcChatResourceStrings {
2
- suggestionsHeader: string;
3
- reactionCopy: string;
4
- reactionLike: string;
5
- reactionDislike: string;
6
- reactionRegenerate: string;
7
- attachmentLabel: string;
8
- attachmentsListLabel: string;
9
- messageCopied: string;
3
+ suggestionsHeader?: string;
4
+ reactionCopy?: string;
5
+ reactionLike?: string;
6
+ reactionDislike?: string;
7
+ reactionRegenerate?: string;
8
+ attachmentLabel?: string;
9
+ attachmentsListLabel?: string;
10
+ messageCopied?: string;
10
11
  }
12
+ /** @deprecated since 7.2.0. Please use the newly provided resources from the igniteui-i18n-resources package. */
11
13
  export declare const IgcChatResourceStringEN: IgcChatResourceStrings;
@@ -1 +1 @@
1
- {"version":3,"file":"chat.resources.js","sourceRoot":"","sources":["../../../../../src/components/common/i18n/EN/chat.resources.ts"],"names":[],"mappings":"AAYA,MAAM,CAAC,MAAM,uBAAuB,GAA2B;IAC7D,iBAAiB,EAAE,aAAa;IAChC,YAAY,EAAE,MAAM;IACpB,YAAY,EAAE,MAAM;IACpB,eAAe,EAAE,SAAS;IAC1B,kBAAkB,EAAE,YAAY;IAChC,eAAe,EAAE,YAAY;IAC7B,oBAAoB,EAAE,aAAa;IACnC,aAAa,EAAE,6BAA6B;CAC7C,CAAC","sourcesContent":["/* blazorSuppress */\nexport interface IgcChatResourceStrings {\n suggestionsHeader: string;\n reactionCopy: string;\n reactionLike: string;\n reactionDislike: string;\n reactionRegenerate: string;\n attachmentLabel: string;\n attachmentsListLabel: string;\n messageCopied: string;\n}\n\nexport const IgcChatResourceStringEN: IgcChatResourceStrings = {\n suggestionsHeader: 'Suggestions',\n reactionCopy: 'Copy',\n reactionLike: 'Like',\n reactionDislike: 'Dislike',\n reactionRegenerate: 'Regenerate',\n attachmentLabel: 'Attachment',\n attachmentsListLabel: 'Attachments',\n messageCopied: 'Message copied to clipboard',\n};\n"]}
1
+ {"version":3,"file":"chat.resources.js","sourceRoot":"","sources":["../../../../../src/components/common/i18n/EN/chat.resources.ts"],"names":[],"mappings":"AAcA,MAAM,CAAC,MAAM,uBAAuB,GAA2B;IAC7D,iBAAiB,EAAE,aAAa;IAChC,YAAY,EAAE,MAAM;IACpB,YAAY,EAAE,MAAM;IACpB,eAAe,EAAE,SAAS;IAC1B,kBAAkB,EAAE,YAAY;IAChC,eAAe,EAAE,YAAY;IAC7B,oBAAoB,EAAE,aAAa;IACnC,aAAa,EAAE,6BAA6B;CAC7C,CAAC","sourcesContent":["/* blazorSuppress */\n/** @deprecated since 7.2.0. Please use the newly provided `IChatResourceStrings` interfaces from or set global resource strings using `registerI18n` method. */\nexport interface IgcChatResourceStrings {\n suggestionsHeader?: string;\n reactionCopy?: string;\n reactionLike?: string;\n reactionDislike?: string;\n reactionRegenerate?: string;\n attachmentLabel?: string;\n attachmentsListLabel?: string;\n messageCopied?: string;\n}\n\n/** @deprecated since 7.2.0. Please use the newly provided resources from the igniteui-i18n-resources package. */\nexport const IgcChatResourceStringEN: IgcChatResourceStrings = {\n suggestionsHeader: 'Suggestions',\n reactionCopy: 'Copy',\n reactionLike: 'Like',\n reactionDislike: 'Dislike',\n reactionRegenerate: 'Regenerate',\n attachmentLabel: 'Attachment',\n attachmentsListLabel: 'Attachments',\n messageCopied: 'Message copied to clipboard',\n};\n"]}
@@ -0,0 +1,8 @@
1
+ import { type IgcCalendarResourceStrings } from './calendar.resources.js';
2
+ /** @deprecated since 7.2.0. Please use the newly provided `IDatePickerResourceStrings` and `ICalendarResourceStrings` interfaces or set global resource strings using `registerI18n` method. */
3
+ export interface IgcDatePickerResourceStrings extends IgcCalendarResourceStrings {
4
+ changeDate: string;
5
+ chooseDate: string;
6
+ }
7
+ /** @deprecated since 7.2.0. Please use the newly provided resources from the igniteui-i18n-resources package. */
8
+ export declare const IgcDatePickerResourceStringsEN: IgcDatePickerResourceStrings;
@@ -0,0 +1,8 @@
1
+ import { DatePickerResourceStringsEN } from 'igniteui-i18n-core';
2
+ import { convertToIgcResource } from '../utils.js';
3
+ import { IgcCalendarResourceStringEN, } from './calendar.resources.js';
4
+ export const IgcDatePickerResourceStringsEN = {
5
+ ...convertToIgcResource(DatePickerResourceStringsEN, 'date-picker'),
6
+ ...IgcCalendarResourceStringEN,
7
+ };
8
+ //# sourceMappingURL=date-picker.resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-picker.resources.js","sourceRoot":"","sources":["../../../../../src/components/common/i18n/EN/date-picker.resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,2BAA2B,GAE5B,MAAM,yBAAyB,CAAC;AAUjC,MAAM,CAAC,MAAM,8BAA8B,GAAiC;IAC1E,GAAG,oBAAoB,CAAC,2BAA2B,EAAE,aAAa,CAAC;IACnE,GAAG,2BAA2B;CAC/B,CAAC","sourcesContent":["import { DatePickerResourceStringsEN } from 'igniteui-i18n-core';\nimport { convertToIgcResource } from '../utils.js';\nimport {\n IgcCalendarResourceStringEN,\n type IgcCalendarResourceStrings,\n} from './calendar.resources.js';\n\n/* blazorSuppress */\n/** @deprecated since 7.2.0. Please use the newly provided `IDatePickerResourceStrings` and `ICalendarResourceStrings` interfaces or set global resource strings using `registerI18n` method. */\nexport interface IgcDatePickerResourceStrings extends IgcCalendarResourceStrings {\n changeDate: string;\n chooseDate: string;\n}\n\n/** @deprecated since 7.2.0. Please use the newly provided resources from the igniteui-i18n-resources package. */\nexport const IgcDatePickerResourceStringsEN: IgcDatePickerResourceStrings = {\n ...convertToIgcResource(DatePickerResourceStringsEN, 'date-picker'),\n ...IgcCalendarResourceStringEN,\n};\n"]}
@@ -1,11 +1,13 @@
1
1
  import { type IgcCalendarResourceStrings } from './calendar.resources.js';
2
+ /** @deprecated since 7.2.0. Please use the newly provided `ICalendarResourceStrings` and `IDateRangePickerResourceStrings` interfaces or set global resource strings using `registerI18n` method. */
2
3
  export interface IgcDateRangePickerResourceStrings extends IgcCalendarResourceStrings {
3
- separator: string;
4
- done: string;
5
- cancel: string;
6
- last7Days: string;
7
- last30Days: string;
8
- currentMonth: string;
9
- yearToDate: string;
4
+ separator?: string;
5
+ done?: string;
6
+ cancel?: string;
7
+ last7Days?: string;
8
+ last30Days?: string;
9
+ currentMonth?: string;
10
+ yearToDate?: string;
10
11
  }
12
+ /** @deprecated since 7.2.0. Please use the newly provided resources from the igniteui-i18n-resources package. */
11
13
  export declare const IgcDateRangePickerResourceStringsEN: IgcDateRangePickerResourceStrings;
@@ -2,7 +2,7 @@ import { DateRangePickerResourceStringsEN } from 'igniteui-i18n-core';
2
2
  import { convertToIgcResource } from '../utils.js';
3
3
  import { IgcCalendarResourceStringEN, } from './calendar.resources.js';
4
4
  export const IgcDateRangePickerResourceStringsEN = {
5
- ...convertToIgcResource(DateRangePickerResourceStringsEN),
5
+ ...convertToIgcResource(DateRangePickerResourceStringsEN, 'date-range-picker'),
6
6
  ...IgcCalendarResourceStringEN,
7
7
  };
8
8
  //# sourceMappingURL=date-range-picker.resources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-range-picker.resources.js","sourceRoot":"","sources":["../../../../../src/components/common/i18n/EN/date-range-picker.resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,2BAA2B,GAE5B,MAAM,yBAAyB,CAAC;AAajC,MAAM,CAAC,MAAM,mCAAmC,GAC9C;IACE,GAAG,oBAAoB,CAAC,gCAAgC,CAAC;IACzD,GAAG,2BAA2B;CAC/B,CAAC","sourcesContent":["import { DateRangePickerResourceStringsEN } from 'igniteui-i18n-core';\nimport { convertToIgcResource } from '../utils.js';\nimport {\n IgcCalendarResourceStringEN,\n type IgcCalendarResourceStrings,\n} from './calendar.resources.js';\n\n/* blazorSuppress */\nexport interface IgcDateRangePickerResourceStrings extends IgcCalendarResourceStrings {\n separator: string;\n done: string;\n cancel: string;\n last7Days: string;\n last30Days: string;\n currentMonth: string;\n yearToDate: string;\n}\n\nexport const IgcDateRangePickerResourceStringsEN: IgcDateRangePickerResourceStrings =\n {\n ...convertToIgcResource(DateRangePickerResourceStringsEN),\n ...IgcCalendarResourceStringEN,\n };\n"]}
1
+ {"version":3,"file":"date-range-picker.resources.js","sourceRoot":"","sources":["../../../../../src/components/common/i18n/EN/date-range-picker.resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,2BAA2B,GAE5B,MAAM,yBAAyB,CAAC;AAejC,MAAM,CAAC,MAAM,mCAAmC,GAC9C;IACE,GAAG,oBAAoB,CACrB,gCAAgC,EAChC,mBAAmB,CACpB;IACD,GAAG,2BAA2B;CAC/B,CAAC","sourcesContent":["import { DateRangePickerResourceStringsEN } from 'igniteui-i18n-core';\nimport { convertToIgcResource } from '../utils.js';\nimport {\n IgcCalendarResourceStringEN,\n type IgcCalendarResourceStrings,\n} from './calendar.resources.js';\n\n/* blazorSuppress */\n/** @deprecated since 7.2.0. Please use the newly provided `ICalendarResourceStrings` and `IDateRangePickerResourceStrings` interfaces or set global resource strings using `registerI18n` method. */\nexport interface IgcDateRangePickerResourceStrings extends IgcCalendarResourceStrings {\n separator?: string;\n done?: string;\n cancel?: string;\n last7Days?: string;\n last30Days?: string;\n currentMonth?: string;\n yearToDate?: string;\n}\n\n/** @deprecated since 7.2.0. Please use the newly provided resources from the igniteui-i18n-resources package. */\nexport const IgcDateRangePickerResourceStringsEN: IgcDateRangePickerResourceStrings =\n {\n ...convertToIgcResource(\n DateRangePickerResourceStringsEN,\n 'date-range-picker'\n ),\n ...IgcCalendarResourceStringEN,\n };\n"]}
@@ -1,5 +1,6 @@
1
1
  import { type IResourceChangeEventArgs } from 'igniteui-i18n-core';
2
2
  import type { ReactiveController, ReactiveControllerHost } from 'lit';
3
+ import { type I18nResourceMapNames } from './utils.js';
3
4
  /**
4
5
  * Defines the structure for the host element that will use this controller.
5
6
  * The host must be a Lit element (ReactiveControllerHost) and an HTMLElement.
@@ -11,8 +12,10 @@ interface I18nControllerHost extends ReactiveControllerHost, HTMLElement {
11
12
  type ResourceChangeCallback = (event: CustomEvent<IResourceChangeEventArgs>) => unknown;
12
13
  /** Configuration object for the I18nController. */
13
14
  type I18nControllerConfig<T extends object> = {
14
- /** The full default English resource strings object for the component. */
15
+ /** The full default English resource strings object for the component. Should always come from igniteui-i18n-core. */
15
16
  defaultEN: T;
17
+ /** @deprecated since 7.2.0. Optional name if component uses mixed resource strings. To be removed with deprecated resources. */
18
+ resourceMapName?: I18nResourceMapNames;
16
19
  /** An optional callback to execute when the global locale changes. */
17
20
  onResourceChange?: ResourceChangeCallback;
18
21
  };
@@ -24,9 +27,15 @@ type I18nControllerConfig<T extends object> = {
24
27
  declare class I18nController<T extends object> implements ReactiveController {
25
28
  private readonly _host;
26
29
  private readonly _defaultEN;
27
- private _resourceChangeCallback?;
28
- private _defaultResourceStrings;
30
+ /** @deprecated since 7.2.0. Resource name to use when converting new to old and vice versa resource objects. */
31
+ private readonly _resourceMapName?;
32
+ private readonly _resourceChangeCallback?;
29
33
  private _locale?;
34
+ /** Cache of default resource strings coming from i18n Manager. */
35
+ private _defaultResourceStrings;
36
+ /** Collection containing only custom resource strings provided. Allows for partial override of resource strings. */
37
+ private _customResourceStrings?;
38
+ /** Merged collection of custom resource strings and default resource strings. */
30
39
  private _resourceStrings?;
31
40
  /**
32
41
  * Sets a custom locale that overrides the global one for this host component instance.
@@ -53,13 +62,6 @@ declare class I18nController<T extends object> implements ReactiveController {
53
62
  hostDisconnected(): void;
54
63
  /** @internal */
55
64
  handleEvent(event: CustomEvent<IResourceChangeEventArgs>): void;
56
- /** Registers the default English resources with the global i18n manager. */
57
- private _registerResources;
58
- /**
59
- * Helper to find the correct resource map based on the component's default resources (`#defaultEN`).
60
- * This relies on structural checking (the component's key names).
61
- */
62
- private _getResourceMapForComponent;
63
65
  /**
64
66
  * Gets the current, locale-specific resource strings for the component.
65
67
  * The logic maps component keys (from defaultEN) to core library keys
@@ -67,7 +69,8 @@ declare class I18nController<T extends object> implements ReactiveController {
67
69
  *
68
70
  * Result is truncated, containing only relevant locale strings.
69
71
  */
70
- private _getCurrentResourceStrings;
72
+ private _getDefaultResourceStrings;
73
+ private getMixedResourceStrings;
71
74
  }
72
75
  /** Returns the default date-time input format for a given locale */
73
76
  export declare function getDefaultDateTimeFormat(locale: string): string;