igniteui-webcomponents 6.1.1-alpha.0 → 6.1.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 (247) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/components/avatar/avatar.d.ts +1 -0
  3. package/components/avatar/avatar.js +9 -12
  4. package/components/avatar/avatar.js.map +1 -1
  5. package/components/badge/badge.d.ts +1 -0
  6. package/components/badge/badge.js +9 -12
  7. package/components/badge/badge.js.map +1 -1
  8. package/components/banner/banner.js +6 -9
  9. package/components/banner/banner.js.map +1 -1
  10. package/components/button/button.d.ts +1 -0
  11. package/components/button/button.js +9 -12
  12. package/components/button/button.js.map +1 -1
  13. package/components/button/icon-button.d.ts +1 -0
  14. package/components/button/icon-button.js +9 -12
  15. package/components/button/icon-button.js.map +1 -1
  16. package/components/button-group/button-group.js +6 -9
  17. package/components/button-group/button-group.js.map +1 -1
  18. package/components/button-group/toggle-button.d.ts +1 -0
  19. package/components/button-group/toggle-button.js +6 -6
  20. package/components/button-group/toggle-button.js.map +1 -1
  21. package/components/calendar/calendar.js +6 -9
  22. package/components/calendar/calendar.js.map +1 -1
  23. package/components/calendar/days-view/days-view.js +3 -3
  24. package/components/calendar/days-view/days-view.js.map +1 -1
  25. package/components/calendar/months-view/months-view.js +3 -3
  26. package/components/calendar/months-view/months-view.js.map +1 -1
  27. package/components/calendar/years-view/years-view.js +3 -3
  28. package/components/calendar/years-view/years-view.js.map +1 -1
  29. package/components/card/card.actions.d.ts +1 -0
  30. package/components/card/card.actions.js +9 -12
  31. package/components/card/card.actions.js.map +1 -1
  32. package/components/card/card.content.d.ts +1 -0
  33. package/components/card/card.content.js +8 -14
  34. package/components/card/card.content.js.map +1 -1
  35. package/components/card/card.d.ts +1 -0
  36. package/components/card/card.header.d.ts +1 -0
  37. package/components/card/card.header.js +8 -14
  38. package/components/card/card.header.js.map +1 -1
  39. package/components/card/card.js +10 -13
  40. package/components/card/card.js.map +1 -1
  41. package/components/carousel/carousel-indicator-container.d.ts +1 -0
  42. package/components/carousel/carousel-indicator-container.js +8 -17
  43. package/components/carousel/carousel-indicator-container.js.map +1 -1
  44. package/components/carousel/carousel.js +7 -10
  45. package/components/carousel/carousel.js.map +1 -1
  46. package/components/checkbox/checkbox.d.ts +1 -1
  47. package/components/checkbox/checkbox.js +10 -14
  48. package/components/checkbox/checkbox.js.map +1 -1
  49. package/components/checkbox/switch.d.ts +1 -0
  50. package/components/checkbox/switch.js +9 -18
  51. package/components/checkbox/switch.js.map +1 -1
  52. package/components/chip/chip.js +6 -9
  53. package/components/chip/chip.js.map +1 -1
  54. package/components/combo/combo-header.d.ts +1 -0
  55. package/components/combo/combo-header.js +8 -14
  56. package/components/combo/combo-header.js.map +1 -1
  57. package/components/combo/combo-item.d.ts +1 -0
  58. package/components/combo/combo-item.js +9 -12
  59. package/components/combo/combo-item.js.map +1 -1
  60. package/components/combo/combo.js +2 -2
  61. package/components/combo/combo.js.map +1 -1
  62. package/components/common/context.d.ts +1 -5
  63. package/components/common/context.js +1 -2
  64. package/components/common/context.js.map +1 -1
  65. package/components/common/definitions/defineAllComponents.js +0 -2
  66. package/components/common/definitions/defineAllComponents.js.map +1 -1
  67. package/components/date-picker/date-picker.d.ts +1 -1
  68. package/components/date-picker/date-picker.js +7 -9
  69. package/components/date-picker/date-picker.js.map +1 -1
  70. package/components/date-range-picker/date-range-picker.d.ts +1 -1
  71. package/components/date-range-picker/date-range-picker.js +5 -7
  72. package/components/date-range-picker/date-range-picker.js.map +1 -1
  73. package/components/date-range-picker/predefined-ranges-area.d.ts +1 -0
  74. package/components/date-range-picker/predefined-ranges-area.js +9 -12
  75. package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
  76. package/components/dialog/dialog.d.ts +1 -0
  77. package/components/dialog/dialog.js +12 -12
  78. package/components/dialog/dialog.js.map +1 -1
  79. package/components/divider/divider.d.ts +1 -0
  80. package/components/divider/divider.js +18 -21
  81. package/components/divider/divider.js.map +1 -1
  82. package/components/dropdown/dropdown-group.js +6 -9
  83. package/components/dropdown/dropdown-group.js.map +1 -1
  84. package/components/dropdown/dropdown-header.d.ts +1 -0
  85. package/components/dropdown/dropdown-header.js +8 -14
  86. package/components/dropdown/dropdown-header.js.map +1 -1
  87. package/components/dropdown/dropdown-item.d.ts +1 -0
  88. package/components/dropdown/dropdown-item.js +8 -14
  89. package/components/dropdown/dropdown-item.js.map +1 -1
  90. package/components/dropdown/dropdown.js +2 -2
  91. package/components/dropdown/dropdown.js.map +1 -1
  92. package/components/dropdown/themes/item.js +7 -0
  93. package/components/dropdown/themes/item.js.map +1 -1
  94. package/components/dropdown/themes/shared/item/dropdown-item.bootstrap.css.js +3 -0
  95. package/components/dropdown/themes/shared/item/dropdown-item.bootstrap.css.js.map +1 -0
  96. package/components/expansion-panel/expansion-panel.js +7 -10
  97. package/components/expansion-panel/expansion-panel.js.map +1 -1
  98. package/components/file-input/file-input.d.ts +1 -1
  99. package/components/file-input/file-input.js +18 -21
  100. package/components/file-input/file-input.js.map +1 -1
  101. package/components/file-input/themes/shared/file-input.material.css.js +1 -1
  102. package/components/file-input/themes/shared/file-input.material.css.js.map +1 -1
  103. package/components/icon/icon.d.ts +1 -0
  104. package/components/icon/icon.js +11 -10
  105. package/components/icon/icon.js.map +1 -1
  106. package/components/input/input-base.d.ts +1 -1
  107. package/components/input/input-base.js +5 -6
  108. package/components/input/input-base.js.map +1 -1
  109. package/components/input/themes/shared/input.material.css.js +1 -1
  110. package/components/input/themes/shared/input.material.css.js.map +1 -1
  111. package/components/list/list-header.js +5 -14
  112. package/components/list/list-header.js.map +1 -1
  113. package/components/list/list-item.js +6 -9
  114. package/components/list/list-item.js.map +1 -1
  115. package/components/list/list.js +5 -14
  116. package/components/list/list.js.map +1 -1
  117. package/components/nav-drawer/nav-drawer-header-item.d.ts +1 -0
  118. package/components/nav-drawer/nav-drawer-header-item.js +8 -14
  119. package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
  120. package/components/nav-drawer/nav-drawer-item.d.ts +1 -0
  121. package/components/nav-drawer/nav-drawer-item.js +9 -12
  122. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  123. package/components/nav-drawer/nav-drawer.d.ts +1 -0
  124. package/components/nav-drawer/nav-drawer.js +9 -12
  125. package/components/nav-drawer/nav-drawer.js.map +1 -1
  126. package/components/navbar/navbar.d.ts +1 -0
  127. package/components/navbar/navbar.js +8 -14
  128. package/components/navbar/navbar.js.map +1 -1
  129. package/components/progress/circular-progress.d.ts +1 -0
  130. package/components/progress/circular-progress.js +10 -13
  131. package/components/progress/circular-progress.js.map +1 -1
  132. package/components/progress/linear-progress.d.ts +1 -0
  133. package/components/progress/linear-progress.js +9 -12
  134. package/components/progress/linear-progress.js.map +1 -1
  135. package/components/radio/radio.js +7 -10
  136. package/components/radio/radio.js.map +1 -1
  137. package/components/radio-group/radio-group.js +6 -9
  138. package/components/radio-group/radio-group.js.map +1 -1
  139. package/components/rating/rating.js +6 -9
  140. package/components/rating/rating.js.map +1 -1
  141. package/components/resize-container/resize-container.js +6 -9
  142. package/components/resize-container/resize-container.js.map +1 -1
  143. package/components/select/select-group.js +6 -9
  144. package/components/select/select-group.js.map +1 -1
  145. package/components/select/select-header.d.ts +1 -0
  146. package/components/select/select-header.js +8 -14
  147. package/components/select/select-header.js.map +1 -1
  148. package/components/select/select-item.d.ts +1 -0
  149. package/components/select/select-item.js +9 -9
  150. package/components/select/select-item.js.map +1 -1
  151. package/components/select/select.js +2 -2
  152. package/components/select/select.js.map +1 -1
  153. package/components/slider/slider-base.js +2 -2
  154. package/components/slider/slider-base.js.map +1 -1
  155. package/components/snackbar/snackbar.d.ts +1 -0
  156. package/components/snackbar/snackbar.js +9 -12
  157. package/components/snackbar/snackbar.js.map +1 -1
  158. package/components/stepper/step.d.ts +1 -0
  159. package/components/stepper/step.js +9 -12
  160. package/components/stepper/step.js.map +1 -1
  161. package/components/stepper/stepper.js +9 -12
  162. package/components/stepper/stepper.js.map +1 -1
  163. package/components/tabs/tab.d.ts +1 -0
  164. package/components/tabs/tab.js +10 -13
  165. package/components/tabs/tab.js.map +1 -1
  166. package/components/tabs/tabs.js +6 -9
  167. package/components/tabs/tabs.js.map +1 -1
  168. package/components/textarea/textarea.d.ts +1 -1
  169. package/components/textarea/textarea.js +5 -6
  170. package/components/textarea/textarea.js.map +1 -1
  171. package/components/tile-manager/tile-manager.js +2 -2
  172. package/components/tile-manager/tile-manager.js.map +1 -1
  173. package/components/tile-manager/tile.d.ts +1 -0
  174. package/components/tile-manager/tile.js +53 -56
  175. package/components/tile-manager/tile.js.map +1 -1
  176. package/components/toast/toast.d.ts +1 -0
  177. package/components/toast/toast.js +8 -17
  178. package/components/toast/toast.js.map +1 -1
  179. package/components/tooltip/tooltip.d.ts +1 -0
  180. package/components/tooltip/tooltip.js +39 -42
  181. package/components/tooltip/tooltip.js.map +1 -1
  182. package/components/tree/tree-item.js +6 -9
  183. package/components/tree/tree-item.js.map +1 -1
  184. package/components/tree/tree.js +2 -2
  185. package/components/tree/tree.js.map +1 -1
  186. package/components/validation-container/validation-container.d.ts +1 -0
  187. package/components/validation-container/validation-container.js +12 -15
  188. package/components/validation-container/validation-container.js.map +1 -1
  189. package/custom-elements.json +20458 -21385
  190. package/igniteui-webcomponents.css-data.json +1 -1
  191. package/igniteui-webcomponents.html-data.json +1 -1
  192. package/index.d.ts +0 -7
  193. package/index.js +0 -5
  194. package/index.js.map +1 -1
  195. package/package.json +1 -1
  196. package/theming/config.d.ts +3 -3
  197. package/theming/config.js +14 -18
  198. package/theming/config.js.map +1 -1
  199. package/theming/theming-controller.d.ts +17 -13
  200. package/theming/theming-controller.js +28 -22
  201. package/theming/theming-controller.js.map +1 -1
  202. package/theming/theming-event.d.ts +1 -0
  203. package/theming/theming-event.js.map +1 -1
  204. package/theming/types.d.ts +3 -14
  205. package/theming/types.js.map +1 -1
  206. package/theming/utils.js +24 -23
  207. package/theming/utils.js.map +1 -1
  208. package/web-types.json +2 -2
  209. package/components/chat/chat-input.d.ts +0 -41
  210. package/components/chat/chat-input.js +0 -254
  211. package/components/chat/chat-input.js.map +0 -1
  212. package/components/chat/chat-message-list.d.ts +0 -24
  213. package/components/chat/chat-message-list.js +0 -88
  214. package/components/chat/chat-message-list.js.map +0 -1
  215. package/components/chat/chat-message.d.ts +0 -21
  216. package/components/chat/chat-message.js +0 -52
  217. package/components/chat/chat-message.js.map +0 -1
  218. package/components/chat/chat.d.ts +0 -41
  219. package/components/chat/chat.js +0 -98
  220. package/components/chat/chat.js.map +0 -1
  221. package/components/chat/markdown-util.d.ts +0 -2
  222. package/components/chat/markdown-util.js +0 -22
  223. package/components/chat/markdown-util.js.map +0 -1
  224. package/components/chat/message-attachments.d.ts +0 -28
  225. package/components/chat/message-attachments.js +0 -168
  226. package/components/chat/message-attachments.js.map +0 -1
  227. package/components/chat/themes/chat.base.css.js +0 -3
  228. package/components/chat/themes/chat.base.css.js.map +0 -1
  229. package/components/chat/themes/input.base.css.d.ts +0 -1
  230. package/components/chat/themes/input.base.css.js +0 -3
  231. package/components/chat/themes/input.base.css.js.map +0 -1
  232. package/components/chat/themes/message-attachments.base.css.d.ts +0 -1
  233. package/components/chat/themes/message-attachments.base.css.js +0 -3
  234. package/components/chat/themes/message-attachments.base.css.js.map +0 -1
  235. package/components/chat/themes/message-list.base.css.d.ts +0 -1
  236. package/components/chat/themes/message-list.base.css.js +0 -3
  237. package/components/chat/themes/message-list.base.css.js.map +0 -1
  238. package/components/chat/themes/message.base.css.d.ts +0 -1
  239. package/components/chat/themes/message.base.css.js +0 -3
  240. package/components/chat/themes/message.base.css.js.map +0 -1
  241. package/components/chat/types.d.ts +0 -46
  242. package/components/chat/types.js +0 -8
  243. package/components/chat/types.js.map +0 -1
  244. package/theming/theming-decorator.d.ts +0 -43
  245. package/theming/theming-decorator.js +0 -25
  246. package/theming/theming-decorator.js.map +0 -1
  247. /package/components/{chat/themes/chat.base.css.d.ts → dropdown/themes/shared/item/dropdown-item.bootstrap.css.d.ts} +0 -0
@@ -10,7 +10,7 @@ import { property, query, queryAssignedElements, queryAssignedNodes, } from 'lit
10
10
  import { ifDefined } from 'lit/directives/if-defined.js';
11
11
  import { live } from 'lit/directives/live.js';
12
12
  import { styleMap } from 'lit/directives/style-map.js';
13
- import { getThemeController, themes } from '../../theming/theming-decorator.js';
13
+ import { addThemingController } from '../../theming/theming-controller.js';
14
14
  import { createResizeObserverController } from '../common/controllers/resize-observer.js';
15
15
  import { shadowOptions } from '../common/decorators/shadow-options.js';
16
16
  import { watch } from '../common/decorators/watch.js';
@@ -37,9 +37,6 @@ let IgcTextareaComponent = IgcTextareaComponent_1 = class IgcTextareaComponent e
37
37
  resize: this.resize === 'auto' ? 'none' : this.resize,
38
38
  };
39
39
  }
40
- get _isMaterial() {
41
- return getThemeController(this)?.theme === 'material';
42
- }
43
40
  set value(value) {
44
41
  this._formValue.setValueAndFormState(value);
45
42
  this._validate();
@@ -62,6 +59,7 @@ let IgcTextareaComponent = IgcTextareaComponent_1 = class IgcTextareaComponent e
62
59
  }
63
60
  constructor() {
64
61
  super();
62
+ this._themes = addThemingController(this, all);
65
63
  this._formValue = createFormValueState(this, { initialValue: '' });
66
64
  this._inputId = `textarea-${IgcTextareaComponent_1.increment()}`;
67
65
  this.outlined = false;
@@ -218,7 +216,9 @@ let IgcTextareaComponent = IgcTextareaComponent_1 = class IgcTextareaComponent e
218
216
  return IgcValidationContainerComponent.create(this);
219
217
  }
220
218
  render() {
221
- return this._isMaterial ? this._renderMaterial() : this._renderStandard();
219
+ return this._themes.theme === 'material'
220
+ ? this._renderMaterial()
221
+ : this._renderStandard();
222
222
  }
223
223
  };
224
224
  IgcTextareaComponent.tagName = 'igc-textarea';
@@ -301,7 +301,6 @@ __decorate([
301
301
  watch('resize', { waitUntilFirstUpdate: true })
302
302
  ], IgcTextareaComponent.prototype, "_setAreaHeight", null);
303
303
  IgcTextareaComponent = IgcTextareaComponent_1 = __decorate([
304
- themes(all, { exposeController: true }),
305
304
  shadowOptions({ delegatesFocus: true })
306
305
  ], IgcTextareaComponent);
307
306
  export default IgcTextareaComponent;
@@ -1 +1 @@
1
- {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../src/components/textarea/textarea.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing, type TemplateResult } from 'lit';\nimport {\n property,\n query,\n queryAssignedElements,\n queryAssignedNodes,\n} from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { type StyleInfo, styleMap } from 'lit/directives/style-map.js';\n\nimport { getThemeController, themes } from '../../theming/theming-decorator.js';\nimport { createResizeObserverController } from '../common/controllers/resize-observer.js';\nimport { shadowOptions } from '../common/decorators/shadow-options.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormAssociatedRequiredMixin } from '../common/mixins/forms/associated-required.js';\nimport {\n createFormValueState,\n type FormValueOf,\n} from '../common/mixins/forms/form-value.js';\nimport { partMap } from '../common/part-map.js';\nimport {\n addSafeEventListener,\n asNumber,\n createCounter,\n isEmpty,\n} from '../common/util.js';\nimport type {\n RangeTextSelectMode,\n SelectionRangeDirection,\n TextareaResize,\n} from '../types.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport { styles as shared } from './themes/shared/textarea.common.css.js';\nimport { styles } from './themes/textarea.base.css.js';\nimport { all } from './themes/themes.js';\nimport { textAreaValidators } from './validators.js';\n\nexport interface IgcTextareaComponentEventMap {\n igcInput: CustomEvent<string>;\n igcChange: CustomEvent<string>;\n // For analyzer meta only:\n /* skipWCPrefix */\n focus: FocusEvent;\n /* skipWCPrefix */\n blur: FocusEvent;\n}\n\n/**\n * This element represents a multi-line plain-text editing control,\n * useful when you want to allow users to enter a sizeable amount of free-form text,\n * for example a comment on a review or feedback form.\n *\n * @element igc-textarea\n *\n * @slot - Text content from the default slot will be used as the value of the component.\n * @slot prefix - Renders content before the input.\n * @slot suffix - Renders content after input.\n * @slot helper-text - Renders content below the input.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot too-long - Renders content when the maxlength validation fails.\n * @slot too-short - Renders content when the minlength validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n *\n * @fires igcInput - Emitted when the control receives user input.\n * @fires igcChange - Emitted when the a change to the control value is committed by the user.\n *\n * @csspart container - The main wrapper that holds all main input elements of the textarea.\n * @csspart input - The native input element of the igc-textarea.\n * @csspart label - The native label element of the igc-textarea.\n * @csspart prefix - The prefix wrapper of the igc-textarea.\n * @csspart suffix - The suffix wrapper of the igc-textarea.\n * @csspart helper-text - The helper text wrapper of the igc-textarea.\n */\n@themes(all, { exposeController: true })\n@shadowOptions({ delegatesFocus: true })\nexport default class IgcTextareaComponent extends FormAssociatedRequiredMixin(\n EventEmitterMixin<IgcTextareaComponentEventMap, Constructor<LitElement>>(\n LitElement\n )\n) {\n public static readonly tagName = 'igc-textarea';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcTextareaComponent, IgcValidationContainerComponent);\n }\n\n //#region Private properties and state\n\n private static readonly increment = createCounter();\n\n protected override get __validators() {\n return textAreaValidators;\n }\n\n protected override readonly _formValue: FormValueOf<string> =\n createFormValueState(this, { initialValue: '' });\n\n protected readonly _inputId = `textarea-${IgcTextareaComponent.increment()}`;\n\n @queryAssignedNodes({ flatten: true })\n private readonly _projected!: Node[];\n\n @queryAssignedElements({\n slot: 'prefix',\n selector: '[slot=\"prefix\"]:not([hidden])',\n })\n protected readonly _prefixes!: HTMLElement[];\n\n @queryAssignedElements({\n slot: 'suffix',\n selector: '[slot=\"suffix\"]:not([hidden])',\n })\n protected readonly _suffixes!: HTMLElement[];\n\n @query('textarea', true)\n private readonly _input!: HTMLTextAreaElement;\n\n private get _resizeStyles(): StyleInfo {\n return {\n resize: this.resize === 'auto' ? 'none' : this.resize,\n };\n }\n\n protected get _isMaterial(): boolean {\n return getThemeController(this)?.theme === 'material';\n }\n\n //#endregion\n\n //#region Public properties and attributes\n\n /**\n * Specifies what if any permission the browser has to provide for automated assistance in filling out form field values,\n * as well as guidance to the browser as to the type of information expected in the field.\n * Refer to [this page](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for additional information.\n *\n * @attr\n */\n @property()\n public autocomplete!: string;\n\n /**\n * Controls whether and how text input is automatically capitalized as it is entered/edited by the user.\n *\n * [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize).\n *\n * @attr\n */\n @property()\n public override autocapitalize!: string;\n\n /**\n * Hints at the type of data that might be entered by the user while editing the element or its contents.\n * This allows a browser to display an appropriate virtual keyboard.\n *\n * [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode)\n *\n * @attr inputmode\n */\n @property({ attribute: 'inputmode' })\n public override inputMode!: string;\n\n /**\n * The label for the control.\n *\n * @attr\n */\n @property()\n public label!: string;\n\n /**\n * The maximum number of characters (UTF-16 code units) that the user can enter.\n * If this value isn't specified, the user can enter an unlimited number of characters.\n *\n * @attr maxlength\n */\n @property({ type: Number, attribute: 'maxlength' })\n public maxLength!: number;\n\n /**\n * The minimum number of characters (UTF-16 code units) required that the user should enter.\n *\n * @attr minlength\n */\n @property({ type: Number, attribute: 'minlength' })\n public minLength!: number;\n\n /**\n * Whether the control will have outlined appearance.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public outlined = false;\n\n /**\n * The placeholder attribute of the control.\n *\n * @attr\n */\n @property()\n public placeholder!: string;\n\n /**\n * Makes the control a readonly field.\n *\n * @attr readonly\n */\n @property({ type: Boolean, reflect: true, attribute: 'readonly' })\n public readOnly = false;\n\n /**\n * Controls whether the control can be resized.\n * When `auto` is set, the control will try to expand and fit its content.\n *\n * @attr\n */\n @property()\n public resize: TextareaResize = 'vertical';\n\n /**\n * The number of visible text lines for the control. If it is specified, it must be a positive integer.\n * If it is not specified, the default value is 2.\n *\n * @attr\n */\n @property({ type: Number })\n public rows = 2;\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The value of the component\n *\n * @attr\n */\n @property()\n public set value(value: string) {\n this._formValue.setValueAndFormState(value);\n this._validate();\n }\n\n public get value(): string {\n return this._formValue.value;\n }\n\n /**\n * Controls whether the element may be checked for spelling errors.\n *\n * @attr\n */\n @property({\n type: Boolean,\n converter: {\n fromAttribute: (value) => !(!value || value === 'false'),\n toAttribute: (value) => (value ? 'true' : 'false'),\n },\n })\n public override spellcheck = true;\n\n /**\n * Indicates how the control should wrap the value for form submission.\n * Refer to [this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attributes)\n * for explanation of the available values.\n *\n * @attr\n */\n @property()\n public wrap: 'hard' | 'soft' | 'off' = 'soft';\n\n /**\n * Enables validation rules to be evaluated without restricting user input. This applies to the `maxLength` property\n * when it is defined.\n *\n * @attr validate-only\n */\n @property({ type: Boolean, reflect: true, attribute: 'validate-only' })\n public validateOnly = false;\n\n //#endregion\n\n //#region Watchers\n\n @watch('value')\n protected async _valueChanged(): Promise<void> {\n await this.updateComplete;\n this._setAreaHeight();\n }\n\n @watch('rows', { waitUntilFirstUpdate: true })\n @watch('resize', { waitUntilFirstUpdate: true })\n protected _setAreaHeight(): void {\n if (this.resize === 'auto') {\n this._input.style.height = 'auto';\n this._input.style.height = `${this._setAutoHeight()}px`;\n } else {\n Object.assign(this._input.style, { height: undefined });\n }\n }\n\n //#endregion\n\n //#region Life-cycle hooks\n\n constructor() {\n super();\n\n createResizeObserverController(this, {\n callback: this._setAreaHeight,\n });\n\n addSafeEventListener(this, 'focus', this._handleFocus);\n addSafeEventListener(this, 'blur', this._handleBlur);\n }\n\n protected override createRenderRoot(): HTMLElement | DocumentFragment {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', (event) =>\n this._handleSlotChange(event)\n );\n return root;\n }\n\n //#endregion\n\n //#region Internal methods\n\n protected _resolvePartNames() {\n return {\n container: true,\n prefixed: this._prefixes.length > 0,\n suffixed: this._suffixes.length > 0,\n filled: !!this.value,\n };\n }\n\n private _setAutoHeight(): number {\n const { borderTopWidth, borderBottomWidth } = getComputedStyle(this._input);\n return (\n this._input.scrollHeight +\n asNumber(borderTopWidth) +\n asNumber(borderBottomWidth)\n );\n }\n\n //#endregion\n\n //#region Event handlers\n\n protected _handleSlotChange({ target }: Event): void {\n const slot = target as HTMLSlotElement;\n\n // Default slot used for declarative value projection\n if (!slot.name) {\n const value = this._projected\n .map((node) => node.textContent?.trim())\n .filter((node) => Boolean(node))\n .join('\\r\\n');\n\n if (value !== this.value) {\n this.value = value;\n }\n }\n\n this.requestUpdate();\n }\n\n protected _handleInput(): void {\n this.value = this._input.value;\n this.emitEvent('igcInput', { detail: this.value });\n }\n\n protected _handleChange(): void {\n this.value = this._input.value;\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n protected _handleFocus(): void {\n this._dirty = true;\n }\n\n protected _handleBlur(): void {\n this._validate();\n }\n\n //#endregion\n\n //#region Public methods\n\n /** Selects all text within the control. */\n public select(): void {\n this._input.select();\n }\n\n /** Sets the text selection range of the control */\n public setSelectionRange(\n start: number,\n end: number,\n direction: SelectionRangeDirection = 'none'\n ): void {\n this._input.setSelectionRange(start, end, direction);\n }\n\n /** Replaces the selected text in the control. */\n public setRangeText(\n replacement: string,\n start: number,\n end: number,\n selectMode: RangeTextSelectMode = 'preserve'\n ): void {\n this._input.setRangeText(replacement, start, end, selectMode);\n this.value = this._input.value;\n }\n\n /* blazorSuppress */\n public override scrollTo(options?: ScrollToOptions | undefined): void;\n /* blazorSuppress */\n public override scrollTo(x: number, y: number): void;\n public override scrollTo(x?: unknown, y?: unknown): void {\n x != null && y != null\n ? this._input.scrollTo(x as number, y as number)\n : this._input.scrollTo(x as ScrollToOptions);\n }\n\n //#endregion\n\n //#region Renderers\n\n protected _renderPrefix() {\n return html`\n <div part=\"prefix\" .hidden=${isEmpty(this._prefixes)}>\n <slot name=\"prefix\"></slot>\n </div>\n `;\n }\n\n protected _renderSuffix() {\n return html`\n <div part=\"suffix\" .hidden=${isEmpty(this._suffixes)}>\n <slot name=\"suffix\"></slot>\n </div>\n `;\n }\n\n protected _renderLabel() {\n return this.label\n ? html`\n <label part=\"label\" for=${this.id || this._inputId}>\n ${this.label}\n </label>\n `\n : nothing;\n }\n\n protected _renderStandard() {\n return html`\n ${this._renderLabel()}\n <div part=${partMap(this._resolvePartNames())}>\n ${this._renderPrefix()} ${this._renderInput()} ${this._renderSuffix()}\n </div>\n ${this._renderValidationContainer()}\n `;\n }\n\n protected _renderMaterial() {\n return html`\n <div\n part=${partMap({\n ...this._resolvePartNames(),\n labelled: !!this.label,\n placeholder: !!this.placeholder,\n })}\n >\n <div part=\"start\">${this._renderPrefix()}</div>\n ${this._renderInput()}\n <div part=\"notch\">${this._renderLabel()}</div>\n <div part=\"filler\"></div>\n <div part=\"end\">${this._renderSuffix()}</div>\n </div>\n ${this._renderValidationContainer()}\n `;\n }\n\n protected _renderInput() {\n return html`\n <slot style=\"display: none\"></slot>\n <textarea\n id=${this.id || this._inputId}\n part=\"input\"\n style=${styleMap(this._resizeStyles)}\n @input=${this._handleInput}\n @change=${this._handleChange}\n placeholder=${ifDefined(this.placeholder)}\n .rows=${this.rows}\n .value=${live(this.value)}\n .wrap=${this.wrap}\n autocomplete=${ifDefined(this.autocomplete as any)}\n autocapitalize=${ifDefined(this.autocapitalize as any)}\n inputmode=${ifDefined(this.inputMode)}\n spellcheck=${ifDefined(this.spellcheck)}\n minlength=${ifDefined(this.minLength)}\n maxlength=${ifDefined(this.validateOnly ? undefined : this.maxLength)}\n ?disabled=${this.disabled}\n ?required=${this.required}\n ?readonly=${this.readOnly}\n aria-invalid=${this.invalid ? 'true' : 'false'}\n ></textarea>\n `;\n }\n\n protected _renderValidationContainer(): TemplateResult {\n return IgcValidationContainerComponent.create(this);\n }\n\n protected override render() {\n return this._isMaterial ? this._renderMaterial() : this._renderStandard();\n }\n\n //#endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-textarea': IgcTextareaComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../src/components/textarea/textarea.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing, type TemplateResult } from 'lit';\nimport {\n property,\n query,\n queryAssignedElements,\n queryAssignedNodes,\n} from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { type StyleInfo, styleMap } from 'lit/directives/style-map.js';\n\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { createResizeObserverController } from '../common/controllers/resize-observer.js';\nimport { shadowOptions } from '../common/decorators/shadow-options.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormAssociatedRequiredMixin } from '../common/mixins/forms/associated-required.js';\nimport {\n createFormValueState,\n type FormValueOf,\n} from '../common/mixins/forms/form-value.js';\nimport { partMap } from '../common/part-map.js';\nimport {\n addSafeEventListener,\n asNumber,\n createCounter,\n isEmpty,\n} from '../common/util.js';\nimport type {\n RangeTextSelectMode,\n SelectionRangeDirection,\n TextareaResize,\n} from '../types.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport { styles as shared } from './themes/shared/textarea.common.css.js';\nimport { styles } from './themes/textarea.base.css.js';\nimport { all } from './themes/themes.js';\nimport { textAreaValidators } from './validators.js';\n\nexport interface IgcTextareaComponentEventMap {\n igcInput: CustomEvent<string>;\n igcChange: CustomEvent<string>;\n // For analyzer meta only:\n /* skipWCPrefix */\n focus: FocusEvent;\n /* skipWCPrefix */\n blur: FocusEvent;\n}\n\n/**\n * This element represents a multi-line plain-text editing control,\n * useful when you want to allow users to enter a sizeable amount of free-form text,\n * for example a comment on a review or feedback form.\n *\n * @element igc-textarea\n *\n * @slot - Text content from the default slot will be used as the value of the component.\n * @slot prefix - Renders content before the input.\n * @slot suffix - Renders content after input.\n * @slot helper-text - Renders content below the input.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot too-long - Renders content when the maxlength validation fails.\n * @slot too-short - Renders content when the minlength validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n *\n * @fires igcInput - Emitted when the control receives user input.\n * @fires igcChange - Emitted when the a change to the control value is committed by the user.\n *\n * @csspart container - The main wrapper that holds all main input elements of the textarea.\n * @csspart input - The native input element of the igc-textarea.\n * @csspart label - The native label element of the igc-textarea.\n * @csspart prefix - The prefix wrapper of the igc-textarea.\n * @csspart suffix - The suffix wrapper of the igc-textarea.\n * @csspart helper-text - The helper text wrapper of the igc-textarea.\n */\n@shadowOptions({ delegatesFocus: true })\nexport default class IgcTextareaComponent extends FormAssociatedRequiredMixin(\n EventEmitterMixin<IgcTextareaComponentEventMap, Constructor<LitElement>>(\n LitElement\n )\n) {\n public static readonly tagName = 'igc-textarea';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcTextareaComponent, IgcValidationContainerComponent);\n }\n\n //#region Private properties and state\n\n private static readonly increment = createCounter();\n\n private readonly _themes = addThemingController(this, all);\n\n protected override get __validators() {\n return textAreaValidators;\n }\n\n protected override readonly _formValue: FormValueOf<string> =\n createFormValueState(this, { initialValue: '' });\n\n protected readonly _inputId = `textarea-${IgcTextareaComponent.increment()}`;\n\n @queryAssignedNodes({ flatten: true })\n private readonly _projected!: Node[];\n\n @queryAssignedElements({\n slot: 'prefix',\n selector: '[slot=\"prefix\"]:not([hidden])',\n })\n protected readonly _prefixes!: HTMLElement[];\n\n @queryAssignedElements({\n slot: 'suffix',\n selector: '[slot=\"suffix\"]:not([hidden])',\n })\n protected readonly _suffixes!: HTMLElement[];\n\n @query('textarea', true)\n private readonly _input!: HTMLTextAreaElement;\n\n private get _resizeStyles(): StyleInfo {\n return {\n resize: this.resize === 'auto' ? 'none' : this.resize,\n };\n }\n\n //#endregion\n\n //#region Public properties and attributes\n\n /**\n * Specifies what if any permission the browser has to provide for automated assistance in filling out form field values,\n * as well as guidance to the browser as to the type of information expected in the field.\n * Refer to [this page](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for additional information.\n *\n * @attr\n */\n @property()\n public autocomplete!: string;\n\n /**\n * Controls whether and how text input is automatically capitalized as it is entered/edited by the user.\n *\n * [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize).\n *\n * @attr\n */\n @property()\n public override autocapitalize!: string;\n\n /**\n * Hints at the type of data that might be entered by the user while editing the element or its contents.\n * This allows a browser to display an appropriate virtual keyboard.\n *\n * [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode)\n *\n * @attr inputmode\n */\n @property({ attribute: 'inputmode' })\n public override inputMode!: string;\n\n /**\n * The label for the control.\n *\n * @attr\n */\n @property()\n public label!: string;\n\n /**\n * The maximum number of characters (UTF-16 code units) that the user can enter.\n * If this value isn't specified, the user can enter an unlimited number of characters.\n *\n * @attr maxlength\n */\n @property({ type: Number, attribute: 'maxlength' })\n public maxLength!: number;\n\n /**\n * The minimum number of characters (UTF-16 code units) required that the user should enter.\n *\n * @attr minlength\n */\n @property({ type: Number, attribute: 'minlength' })\n public minLength!: number;\n\n /**\n * Whether the control will have outlined appearance.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public outlined = false;\n\n /**\n * The placeholder attribute of the control.\n *\n * @attr\n */\n @property()\n public placeholder!: string;\n\n /**\n * Makes the control a readonly field.\n *\n * @attr readonly\n */\n @property({ type: Boolean, reflect: true, attribute: 'readonly' })\n public readOnly = false;\n\n /**\n * Controls whether the control can be resized.\n * When `auto` is set, the control will try to expand and fit its content.\n *\n * @attr\n */\n @property()\n public resize: TextareaResize = 'vertical';\n\n /**\n * The number of visible text lines for the control. If it is specified, it must be a positive integer.\n * If it is not specified, the default value is 2.\n *\n * @attr\n */\n @property({ type: Number })\n public rows = 2;\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The value of the component\n *\n * @attr\n */\n @property()\n public set value(value: string) {\n this._formValue.setValueAndFormState(value);\n this._validate();\n }\n\n public get value(): string {\n return this._formValue.value;\n }\n\n /**\n * Controls whether the element may be checked for spelling errors.\n *\n * @attr\n */\n @property({\n type: Boolean,\n converter: {\n fromAttribute: (value) => !(!value || value === 'false'),\n toAttribute: (value) => (value ? 'true' : 'false'),\n },\n })\n public override spellcheck = true;\n\n /**\n * Indicates how the control should wrap the value for form submission.\n * Refer to [this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attributes)\n * for explanation of the available values.\n *\n * @attr\n */\n @property()\n public wrap: 'hard' | 'soft' | 'off' = 'soft';\n\n /**\n * Enables validation rules to be evaluated without restricting user input. This applies to the `maxLength` property\n * when it is defined.\n *\n * @attr validate-only\n */\n @property({ type: Boolean, reflect: true, attribute: 'validate-only' })\n public validateOnly = false;\n\n //#endregion\n\n //#region Watchers\n\n @watch('value')\n protected async _valueChanged(): Promise<void> {\n await this.updateComplete;\n this._setAreaHeight();\n }\n\n @watch('rows', { waitUntilFirstUpdate: true })\n @watch('resize', { waitUntilFirstUpdate: true })\n protected _setAreaHeight(): void {\n if (this.resize === 'auto') {\n this._input.style.height = 'auto';\n this._input.style.height = `${this._setAutoHeight()}px`;\n } else {\n Object.assign(this._input.style, { height: undefined });\n }\n }\n\n //#endregion\n\n //#region Life-cycle hooks\n\n constructor() {\n super();\n\n createResizeObserverController(this, {\n callback: this._setAreaHeight,\n });\n\n addSafeEventListener(this, 'focus', this._handleFocus);\n addSafeEventListener(this, 'blur', this._handleBlur);\n }\n\n protected override createRenderRoot(): HTMLElement | DocumentFragment {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', (event) =>\n this._handleSlotChange(event)\n );\n return root;\n }\n\n //#endregion\n\n //#region Internal methods\n\n protected _resolvePartNames() {\n return {\n container: true,\n prefixed: this._prefixes.length > 0,\n suffixed: this._suffixes.length > 0,\n filled: !!this.value,\n };\n }\n\n private _setAutoHeight(): number {\n const { borderTopWidth, borderBottomWidth } = getComputedStyle(this._input);\n return (\n this._input.scrollHeight +\n asNumber(borderTopWidth) +\n asNumber(borderBottomWidth)\n );\n }\n\n //#endregion\n\n //#region Event handlers\n\n protected _handleSlotChange({ target }: Event): void {\n const slot = target as HTMLSlotElement;\n\n // Default slot used for declarative value projection\n if (!slot.name) {\n const value = this._projected\n .map((node) => node.textContent?.trim())\n .filter((node) => Boolean(node))\n .join('\\r\\n');\n\n if (value !== this.value) {\n this.value = value;\n }\n }\n\n this.requestUpdate();\n }\n\n protected _handleInput(): void {\n this.value = this._input.value;\n this.emitEvent('igcInput', { detail: this.value });\n }\n\n protected _handleChange(): void {\n this.value = this._input.value;\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n protected _handleFocus(): void {\n this._dirty = true;\n }\n\n protected _handleBlur(): void {\n this._validate();\n }\n\n //#endregion\n\n //#region Public methods\n\n /** Selects all text within the control. */\n public select(): void {\n this._input.select();\n }\n\n /** Sets the text selection range of the control */\n public setSelectionRange(\n start: number,\n end: number,\n direction: SelectionRangeDirection = 'none'\n ): void {\n this._input.setSelectionRange(start, end, direction);\n }\n\n /** Replaces the selected text in the control. */\n public setRangeText(\n replacement: string,\n start: number,\n end: number,\n selectMode: RangeTextSelectMode = 'preserve'\n ): void {\n this._input.setRangeText(replacement, start, end, selectMode);\n this.value = this._input.value;\n }\n\n /* blazorSuppress */\n public override scrollTo(options?: ScrollToOptions | undefined): void;\n /* blazorSuppress */\n public override scrollTo(x: number, y: number): void;\n public override scrollTo(x?: unknown, y?: unknown): void {\n x != null && y != null\n ? this._input.scrollTo(x as number, y as number)\n : this._input.scrollTo(x as ScrollToOptions);\n }\n\n //#endregion\n\n //#region Renderers\n\n protected _renderPrefix() {\n return html`\n <div part=\"prefix\" .hidden=${isEmpty(this._prefixes)}>\n <slot name=\"prefix\"></slot>\n </div>\n `;\n }\n\n protected _renderSuffix() {\n return html`\n <div part=\"suffix\" .hidden=${isEmpty(this._suffixes)}>\n <slot name=\"suffix\"></slot>\n </div>\n `;\n }\n\n protected _renderLabel() {\n return this.label\n ? html`\n <label part=\"label\" for=${this.id || this._inputId}>\n ${this.label}\n </label>\n `\n : nothing;\n }\n\n protected _renderStandard() {\n return html`\n ${this._renderLabel()}\n <div part=${partMap(this._resolvePartNames())}>\n ${this._renderPrefix()} ${this._renderInput()} ${this._renderSuffix()}\n </div>\n ${this._renderValidationContainer()}\n `;\n }\n\n protected _renderMaterial() {\n return html`\n <div\n part=${partMap({\n ...this._resolvePartNames(),\n labelled: !!this.label,\n placeholder: !!this.placeholder,\n })}\n >\n <div part=\"start\">${this._renderPrefix()}</div>\n ${this._renderInput()}\n <div part=\"notch\">${this._renderLabel()}</div>\n <div part=\"filler\"></div>\n <div part=\"end\">${this._renderSuffix()}</div>\n </div>\n ${this._renderValidationContainer()}\n `;\n }\n\n protected _renderInput() {\n return html`\n <slot style=\"display: none\"></slot>\n <textarea\n id=${this.id || this._inputId}\n part=\"input\"\n style=${styleMap(this._resizeStyles)}\n @input=${this._handleInput}\n @change=${this._handleChange}\n placeholder=${ifDefined(this.placeholder)}\n .rows=${this.rows}\n .value=${live(this.value)}\n .wrap=${this.wrap}\n autocomplete=${ifDefined(this.autocomplete as any)}\n autocapitalize=${ifDefined(this.autocapitalize as any)}\n inputmode=${ifDefined(this.inputMode)}\n spellcheck=${ifDefined(this.spellcheck)}\n minlength=${ifDefined(this.minLength)}\n maxlength=${ifDefined(this.validateOnly ? undefined : this.maxLength)}\n ?disabled=${this.disabled}\n ?required=${this.required}\n ?readonly=${this.readOnly}\n aria-invalid=${this.invalid ? 'true' : 'false'}\n ></textarea>\n `;\n }\n\n protected _renderValidationContainer(): TemplateResult {\n return IgcValidationContainerComponent.create(this);\n }\n\n protected override render() {\n return this._themes.theme === 'material'\n ? this._renderMaterial()\n : this._renderStandard();\n }\n\n //#endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-textarea': IgcTextareaComponent;\n }\n}\n"]}
@@ -10,7 +10,7 @@ import { html, LitElement } from 'lit';
10
10
  import { property } from 'lit/decorators.js';
11
11
  import { createRef, ref } from 'lit/directives/ref.js';
12
12
  import { styleMap } from 'lit/directives/style-map.js';
13
- import { themes } from '../../theming/theming-decorator.js';
13
+ import { addThemingController } from '../../theming/theming-controller.js';
14
14
  import { tileManagerContext, } from '../common/context.js';
15
15
  import { createMutationController, } from '../common/controllers/mutation-observer.js';
16
16
  import { shadowOptions } from '../common/decorators/shadow-options.js';
@@ -102,6 +102,7 @@ let IgcTileManagerComponent = IgcTileManagerComponent_1 = class IgcTileManagerCo
102
102
  context: tileManagerContext,
103
103
  initialValue: this._createContext(),
104
104
  });
105
+ addThemingController(this, all);
105
106
  createMutationController(this, {
106
107
  callback: this._observerCallback,
107
108
  filter: [IgcTileComponent.tagName],
@@ -172,7 +173,6 @@ __decorate([
172
173
  property()
173
174
  ], IgcTileManagerComponent.prototype, "gap", null);
174
175
  IgcTileManagerComponent = IgcTileManagerComponent_1 = __decorate([
175
- themes(all),
176
176
  shadowOptions({ slotAssignment: 'manual' })
177
177
  ], IgcTileManagerComponent);
178
178
  export default IgcTileManagerComponent;
@@ -1 +1 @@
1
- {"version":3,"file":"tile-manager.js","sourceRoot":"","sources":["../../../src/components/tile-manager/tile-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContextProvider } from '@lit/context';\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { type StyleInfo, styleMap } from 'lit/directives/style-map.js';\nimport { themes } from '../../theming/theming-decorator.js';\nimport {\n type TileManagerContext,\n tileManagerContext,\n} from '../common/context.js';\nimport {\n createMutationController,\n type MutationControllerParams,\n} from '../common/controllers/mutation-observer.js';\nimport { shadowOptions } from '../common/decorators/shadow-options.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { partMap } from '../common/part-map.js';\nimport { asNumber } from '../common/util.js';\nimport type { TileManagerDragMode, TileManagerResizeMode } from '../types.js';\nimport { createTilesState } from './position.js';\nimport { createSerializer } from './serializer.js';\nimport { all } from './themes/container.js';\nimport { styles as shared } from './themes/shared/tile-manager.common.css.js';\nimport { styles } from './themes/tile-manager.base.css.js';\nimport IgcTileComponent from './tile.js';\n\n/* blazorAdditionalDependency: IgcTileComponent */\n/**\n * The tile manager component enables the dynamic arrangement, resizing, and interaction of tiles.\n *\n * @element igc-tile-manager\n *\n * @slot - Default slot for the tile manager. Only `igc-tile` elements will be projected inside the CSS grid container.\n *\n * @csspart base - The tile manager CSS Grid container.\n *\n * @cssproperty --column-count - The number of columns for the tile manager. The `column-count` attribute sets this variable.\n * @cssproperty --min-col-width - The minimum size of the columns in the tile-manager. The `min-column-width` attribute sets this variable.\n * @cssproperty --min-row-height - The minimum size of the rows in the tile-manager. The `min-row-height` attribute sets this variable.\n * @cssproperty --grid-gap - The gap size of the underlying CSS grid container. The `gap` attributes sts this variable.\n *\n */\n@themes(all)\n@shadowOptions({ slotAssignment: 'manual' })\nexport default class IgcTileManagerComponent extends LitElement {\n public static readonly tagName = 'igc-tile-manager';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcTileManagerComponent, IgcTileComponent);\n }\n\n // #region Internal state\n\n private _internalStyles: StyleInfo = {};\n private _dragMode: TileManagerDragMode = 'none';\n private _resizeMode: TileManagerResizeMode = 'none';\n private _columnCount = 0;\n private _gap?: string;\n private _minColWidth?: string;\n private _minRowHeight?: string;\n\n private _serializer = createSerializer(this);\n private _tilesState = createTilesState(this);\n\n private _grid = createRef<HTMLElement>();\n\n // #endregion\n\n // #region Context helpers\n\n private _context = new ContextProvider(this, {\n context: tileManagerContext,\n initialValue: this._createContext(),\n });\n\n private _createContext(): TileManagerContext {\n return {\n instance: this,\n grid: this._grid,\n };\n }\n\n private _setManagerContext(): void {\n this._context.setValue(this._createContext(), true);\n }\n\n // #endregion\n\n // #region Properties and Attributes\n\n /**\n * Whether resize operations are enabled.\n *\n * @attr resize-mode\n * @default none\n */\n @property({ attribute: 'resize-mode' })\n public set resizeMode(value: TileManagerResizeMode) {\n this._resizeMode = value;\n this._setManagerContext();\n }\n\n public get resizeMode(): TileManagerResizeMode {\n return this._resizeMode;\n }\n\n /**\n * Whether drag and drop operations are enabled.\n *\n * @attr drag-mode\n * @default none\n */\n @property({ attribute: 'drag-mode' })\n public set dragMode(value: TileManagerDragMode) {\n this._dragMode = value;\n this._setManagerContext();\n }\n\n public get dragMode(): TileManagerDragMode {\n return this._dragMode;\n }\n\n /**\n * Sets the number of columns for the tile manager.\n * Setting value <= than zero will trigger a responsive layout.\n *\n * @attr column-count\n * @default 0\n */\n @property({ type: Number, attribute: 'column-count' })\n public set columnCount(value: number) {\n this._columnCount = Math.max(0, asNumber(value));\n Object.assign(this._internalStyles, {\n '--column-count': this._columnCount || undefined,\n });\n }\n\n public get columnCount(): number {\n return this._columnCount;\n }\n\n /**\n * Sets the minimum width for a column unit in the tile manager.\n * @attr min-column-width\n */\n @property({ attribute: 'min-column-width' })\n public set minColumnWidth(value: string | undefined) {\n this._minColWidth = value ?? undefined;\n Object.assign(this._internalStyles, {\n '--min-col-width': this._minColWidth,\n });\n }\n\n public get minColumnWidth(): string | undefined {\n return this._minColWidth;\n }\n\n /**\n * Sets the minimum height for a row unit in the tile manager.\n * @attr min-row-height\n */\n @property({ attribute: 'min-row-height' })\n public set minRowHeight(value: string | undefined) {\n this._minRowHeight = value ?? undefined;\n Object.assign(this._internalStyles, {\n '--min-row-height': this._minRowHeight,\n });\n }\n\n public get minRowHeight(): string | undefined {\n return this._minRowHeight;\n }\n\n /**\n * Sets the gap size between tiles in the tile manager.\n *\n * @attr gap\n */\n @property()\n public set gap(value: string | undefined) {\n this._gap = value ?? undefined;\n Object.assign(this._internalStyles, {\n '--grid-gap': this._gap,\n });\n }\n\n public get gap(): string | undefined {\n return this._gap;\n }\n\n /**\n * Gets the tiles sorted by their position in the layout.\n * @property\n */\n public get tiles() {\n return this._tilesState.tiles;\n }\n\n // #endregion\n\n // #region Internal API\n\n constructor() {\n super();\n\n createMutationController(this, {\n callback: this._observerCallback,\n filter: [IgcTileComponent.tagName],\n config: {\n childList: true,\n },\n });\n }\n\n protected override updated() {\n this._tilesState.adjustTileGridPosition();\n }\n\n protected override firstUpdated() {\n this._tilesState.assignPositions();\n this._tilesState.assignTiles();\n this._setManagerContext();\n }\n\n private _observerCallback({\n changes: { added, removed },\n }: MutationControllerParams<IgcTileComponent>) {\n const ownAdded = added.filter(\n ({ target }) => target.closest(this.tagName) === this\n );\n const ownRemoved = removed.filter(\n ({ target }) => target.closest(this.tagName) === this\n );\n\n for (const remove of ownRemoved) {\n this._tilesState.remove(remove.node);\n }\n\n for (const added of ownAdded) {\n this._tilesState.add(added.node);\n }\n\n this._tilesState.assignTiles();\n }\n\n // #endregion\n\n // #region Public API\n\n /**\n * Returns the properties of the current tile collections as a JSON payload.\n *\n * @remarks\n * The content of the tiles is not serialized or saved. Only tile properties\n * are serialized.\n */\n public saveLayout(): string {\n return this._serializer.saveAsJSON();\n }\n\n /**\n * Restores a previously serialized state produced by `saveLayout`.\n */\n public loadLayout(data: string): void {\n this._serializer.loadFromJSON(data);\n }\n\n // #endregion\n\n // #region Rendering\n\n protected override render() {\n const parts = {\n base: true,\n 'maximized-tile': this.tiles.some((tile) => tile.maximized),\n };\n\n return html`\n <div\n ${ref(this._grid)}\n style=${styleMap(this._internalStyles)}\n part=${partMap(parts)}\n >\n <slot></slot>\n </div>\n `;\n }\n\n // #endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tile-manager': IgcTileManagerComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"tile-manager.js","sourceRoot":"","sources":["../../../src/components/tile-manager/tile-manager.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContextProvider } from '@lit/context';\nimport { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { type StyleInfo, styleMap } from 'lit/directives/style-map.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport {\n type TileManagerContext,\n tileManagerContext,\n} from '../common/context.js';\nimport {\n createMutationController,\n type MutationControllerParams,\n} from '../common/controllers/mutation-observer.js';\nimport { shadowOptions } from '../common/decorators/shadow-options.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { partMap } from '../common/part-map.js';\nimport { asNumber } from '../common/util.js';\nimport type { TileManagerDragMode, TileManagerResizeMode } from '../types.js';\nimport { createTilesState } from './position.js';\nimport { createSerializer } from './serializer.js';\nimport { all } from './themes/container.js';\nimport { styles as shared } from './themes/shared/tile-manager.common.css.js';\nimport { styles } from './themes/tile-manager.base.css.js';\nimport IgcTileComponent from './tile.js';\n\n/* blazorAdditionalDependency: IgcTileComponent */\n/**\n * The tile manager component enables the dynamic arrangement, resizing, and interaction of tiles.\n *\n * @element igc-tile-manager\n *\n * @slot - Default slot for the tile manager. Only `igc-tile` elements will be projected inside the CSS grid container.\n *\n * @csspart base - The tile manager CSS Grid container.\n *\n * @cssproperty --column-count - The number of columns for the tile manager. The `column-count` attribute sets this variable.\n * @cssproperty --min-col-width - The minimum size of the columns in the tile-manager. The `min-column-width` attribute sets this variable.\n * @cssproperty --min-row-height - The minimum size of the rows in the tile-manager. The `min-row-height` attribute sets this variable.\n * @cssproperty --grid-gap - The gap size of the underlying CSS grid container. The `gap` attributes sts this variable.\n *\n */\n@shadowOptions({ slotAssignment: 'manual' })\nexport default class IgcTileManagerComponent extends LitElement {\n public static readonly tagName = 'igc-tile-manager';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcTileManagerComponent, IgcTileComponent);\n }\n\n // #region Internal state\n\n private _internalStyles: StyleInfo = {};\n private _dragMode: TileManagerDragMode = 'none';\n private _resizeMode: TileManagerResizeMode = 'none';\n private _columnCount = 0;\n private _gap?: string;\n private _minColWidth?: string;\n private _minRowHeight?: string;\n\n private _serializer = createSerializer(this);\n private _tilesState = createTilesState(this);\n\n private _grid = createRef<HTMLElement>();\n\n // #endregion\n\n // #region Context helpers\n\n private _context = new ContextProvider(this, {\n context: tileManagerContext,\n initialValue: this._createContext(),\n });\n\n private _createContext(): TileManagerContext {\n return {\n instance: this,\n grid: this._grid,\n };\n }\n\n private _setManagerContext(): void {\n this._context.setValue(this._createContext(), true);\n }\n\n // #endregion\n\n // #region Properties and Attributes\n\n /**\n * Whether resize operations are enabled.\n *\n * @attr resize-mode\n * @default none\n */\n @property({ attribute: 'resize-mode' })\n public set resizeMode(value: TileManagerResizeMode) {\n this._resizeMode = value;\n this._setManagerContext();\n }\n\n public get resizeMode(): TileManagerResizeMode {\n return this._resizeMode;\n }\n\n /**\n * Whether drag and drop operations are enabled.\n *\n * @attr drag-mode\n * @default none\n */\n @property({ attribute: 'drag-mode' })\n public set dragMode(value: TileManagerDragMode) {\n this._dragMode = value;\n this._setManagerContext();\n }\n\n public get dragMode(): TileManagerDragMode {\n return this._dragMode;\n }\n\n /**\n * Sets the number of columns for the tile manager.\n * Setting value <= than zero will trigger a responsive layout.\n *\n * @attr column-count\n * @default 0\n */\n @property({ type: Number, attribute: 'column-count' })\n public set columnCount(value: number) {\n this._columnCount = Math.max(0, asNumber(value));\n Object.assign(this._internalStyles, {\n '--column-count': this._columnCount || undefined,\n });\n }\n\n public get columnCount(): number {\n return this._columnCount;\n }\n\n /**\n * Sets the minimum width for a column unit in the tile manager.\n * @attr min-column-width\n */\n @property({ attribute: 'min-column-width' })\n public set minColumnWidth(value: string | undefined) {\n this._minColWidth = value ?? undefined;\n Object.assign(this._internalStyles, {\n '--min-col-width': this._minColWidth,\n });\n }\n\n public get minColumnWidth(): string | undefined {\n return this._minColWidth;\n }\n\n /**\n * Sets the minimum height for a row unit in the tile manager.\n * @attr min-row-height\n */\n @property({ attribute: 'min-row-height' })\n public set minRowHeight(value: string | undefined) {\n this._minRowHeight = value ?? undefined;\n Object.assign(this._internalStyles, {\n '--min-row-height': this._minRowHeight,\n });\n }\n\n public get minRowHeight(): string | undefined {\n return this._minRowHeight;\n }\n\n /**\n * Sets the gap size between tiles in the tile manager.\n *\n * @attr gap\n */\n @property()\n public set gap(value: string | undefined) {\n this._gap = value ?? undefined;\n Object.assign(this._internalStyles, {\n '--grid-gap': this._gap,\n });\n }\n\n public get gap(): string | undefined {\n return this._gap;\n }\n\n /**\n * Gets the tiles sorted by their position in the layout.\n * @property\n */\n public get tiles() {\n return this._tilesState.tiles;\n }\n\n // #endregion\n\n // #region Internal API\n\n constructor() {\n super();\n\n addThemingController(this, all);\n\n createMutationController(this, {\n callback: this._observerCallback,\n filter: [IgcTileComponent.tagName],\n config: {\n childList: true,\n },\n });\n }\n\n protected override updated() {\n this._tilesState.adjustTileGridPosition();\n }\n\n protected override firstUpdated() {\n this._tilesState.assignPositions();\n this._tilesState.assignTiles();\n this._setManagerContext();\n }\n\n private _observerCallback({\n changes: { added, removed },\n }: MutationControllerParams<IgcTileComponent>) {\n const ownAdded = added.filter(\n ({ target }) => target.closest(this.tagName) === this\n );\n const ownRemoved = removed.filter(\n ({ target }) => target.closest(this.tagName) === this\n );\n\n for (const remove of ownRemoved) {\n this._tilesState.remove(remove.node);\n }\n\n for (const added of ownAdded) {\n this._tilesState.add(added.node);\n }\n\n this._tilesState.assignTiles();\n }\n\n // #endregion\n\n // #region Public API\n\n /**\n * Returns the properties of the current tile collections as a JSON payload.\n *\n * @remarks\n * The content of the tiles is not serialized or saved. Only tile properties\n * are serialized.\n */\n public saveLayout(): string {\n return this._serializer.saveAsJSON();\n }\n\n /**\n * Restores a previously serialized state produced by `saveLayout`.\n */\n public loadLayout(data: string): void {\n this._serializer.loadFromJSON(data);\n }\n\n // #endregion\n\n // #region Rendering\n\n protected override render() {\n const parts = {\n base: true,\n 'maximized-tile': this.tiles.some((tile) => tile.maximized),\n };\n\n return html`\n <div\n ${ref(this._grid)}\n style=${styleMap(this._internalStyles)}\n part=${partMap(parts)}\n >\n <slot></slot>\n </div>\n `;\n }\n\n // #endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tile-manager': IgcTileManagerComponent;\n }\n}\n"]}
@@ -170,6 +170,7 @@ export default class IgcTileComponent extends IgcTileComponent_base {
170
170
  */
171
171
  set position(value: number);
172
172
  get position(): number;
173
+ constructor();
173
174
  /** @internal */
174
175
  connectedCallback(): void;
175
176
  protected createRenderRoot(): HTMLElement | DocumentFragment;
@@ -4,12 +4,11 @@ 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
- var IgcTileComponent_1;
8
7
  import { html, LitElement, nothing } from 'lit';
9
8
  import { property, query, queryAssignedElements, state, } from 'lit/decorators.js';
10
9
  import { createRef, ref } from 'lit/directives/ref.js';
11
10
  import { startViewTransition } from '../../animations/player.js';
12
- import { themes } from '../../theming/theming-decorator.js';
11
+ import { addThemingController } from '../../theming/theming-controller.js';
13
12
  import IgcIconButtonComponent from '../button/icon-button.js';
14
13
  import { tileManagerContext, } from '../common/context.js';
15
14
  import { createAsyncContext } from '../common/controllers/async-consumer.js';
@@ -27,54 +26,9 @@ import { styles as shared } from './themes/shared/tile/tile.common.css.js';
27
26
  import { styles } from './themes/tile.base.css.js';
28
27
  import { all } from './themes/tile.js';
29
28
  import { createTileDragGhost, createTileGhost } from './tile-ghost-util.js';
30
- let IgcTileComponent = IgcTileComponent_1 = class IgcTileComponent extends EventEmitterMixin(LitElement) {
31
- constructor() {
32
- super(...arguments);
33
- this._dragController = addDragController(this, {
34
- skip: this._skipDrag,
35
- matchTarget: this._match,
36
- ghost: this._createDragGhost,
37
- start: this._handleDragStart,
38
- over: this._handleDragOver,
39
- end: this._handleDragEnd,
40
- cancel: this._handleDragCancel,
41
- });
42
- this._fullscreenController = addFullscreenController(this, {
43
- enter: this._emitFullScreenEvent,
44
- exit: this._emitFullScreenEvent,
45
- });
46
- this._colSpan = 1;
47
- this._rowSpan = 1;
48
- this._colStart = null;
49
- this._rowStart = null;
50
- this._position = -1;
51
- this._resizeState = createTileResizeState();
52
- this._dragStack = createTileDragStack();
53
- this._customAdorners = new Map(Object.entries({
54
- side: false,
55
- corner: false,
56
- bottom: false,
57
- }));
58
- this._setDragConfiguration = ({ instance: { dragMode }, }) => {
59
- this._dragController.set({
60
- enabled: dragMode !== 'none',
61
- trigger: dragMode === 'tile-header' ? () => this._headerRef.value : undefined,
62
- });
63
- };
64
- this._context = createAsyncContext(this, tileManagerContext, this._setDragConfiguration);
65
- this._headerRef = createRef();
66
- this._maximized = false;
67
- this._isDragging = false;
68
- this._isResizing = false;
69
- this.disableResize = false;
70
- this.disableFullscreen = false;
71
- this.disableMaximize = false;
72
- this._createResizeGhost = () => {
73
- return createTileGhost(this);
74
- };
75
- }
29
+ class IgcTileComponent extends EventEmitterMixin(LitElement) {
76
30
  static register() {
77
- registerComponent(IgcTileComponent_1, IgcIconButtonComponent, IgcDividerComponent, IgcResizeContainerComponent);
31
+ registerComponent(IgcTileComponent, IgcIconButtonComponent, IgcDividerComponent, IgcResizeContainerComponent);
78
32
  }
79
33
  get _tileManagerCtx() {
80
34
  return this._context.value;
@@ -141,9 +95,55 @@ let IgcTileComponent = IgcTileComponent_1 = class IgcTileComponent extends Event
141
95
  get position() {
142
96
  return this._position;
143
97
  }
98
+ constructor() {
99
+ super();
100
+ this._dragController = addDragController(this, {
101
+ skip: this._skipDrag,
102
+ matchTarget: this._match,
103
+ ghost: this._createDragGhost,
104
+ start: this._handleDragStart,
105
+ over: this._handleDragOver,
106
+ end: this._handleDragEnd,
107
+ cancel: this._handleDragCancel,
108
+ });
109
+ this._fullscreenController = addFullscreenController(this, {
110
+ enter: this._emitFullScreenEvent,
111
+ exit: this._emitFullScreenEvent,
112
+ });
113
+ this._colSpan = 1;
114
+ this._rowSpan = 1;
115
+ this._colStart = null;
116
+ this._rowStart = null;
117
+ this._position = -1;
118
+ this._resizeState = createTileResizeState();
119
+ this._dragStack = createTileDragStack();
120
+ this._customAdorners = new Map(Object.entries({
121
+ side: false,
122
+ corner: false,
123
+ bottom: false,
124
+ }));
125
+ this._setDragConfiguration = ({ instance: { dragMode }, }) => {
126
+ this._dragController.set({
127
+ enabled: dragMode !== 'none',
128
+ trigger: dragMode === 'tile-header' ? () => this._headerRef.value : undefined,
129
+ });
130
+ };
131
+ this._context = createAsyncContext(this, tileManagerContext, this._setDragConfiguration);
132
+ this._headerRef = createRef();
133
+ this._maximized = false;
134
+ this._isDragging = false;
135
+ this._isResizing = false;
136
+ this.disableResize = false;
137
+ this.disableFullscreen = false;
138
+ this.disableMaximize = false;
139
+ this._createResizeGhost = () => {
140
+ return createTileGhost(this);
141
+ };
142
+ addThemingController(this, all);
143
+ }
144
144
  connectedCallback() {
145
145
  super.connectedCallback();
146
- this.id = this.id || `tile-${IgcTileComponent_1.increment()}`;
146
+ this.id = this.id || `tile-${IgcTileComponent.increment()}`;
147
147
  this.style.viewTransitionName =
148
148
  this.style.viewTransitionName || `tile-transition-${this.id}`;
149
149
  }
@@ -224,7 +224,7 @@ let IgcTileComponent = IgcTileComponent_1 = class IgcTileComponent extends Event
224
224
  return Boolean(findElementFromEventPath((e) => e.matches('[part*=trigger]') || e.matches('#tile-actions'), event));
225
225
  }
226
226
  _match(element) {
227
- return element !== this && IgcTileComponent_1.tagName === element.localName;
227
+ return element !== this && IgcTileComponent.tagName === element.localName;
228
228
  }
229
229
  _createDragGhost() {
230
230
  return createTileDragGhost(this);
@@ -417,10 +417,11 @@ let IgcTileComponent = IgcTileComponent_1 = class IgcTileComponent extends Event
417
417
  </igc-resize>
418
418
  `;
419
419
  }
420
- };
420
+ }
421
421
  IgcTileComponent.tagName = 'igc-tile';
422
422
  IgcTileComponent.styles = [styles, shared];
423
423
  IgcTileComponent.increment = createCounter();
424
+ export default IgcTileComponent;
424
425
  __decorate([
425
426
  queryAssignedElements({ slot: 'title' })
426
427
  ], IgcTileComponent.prototype, "_titleElements", void 0);
@@ -469,8 +470,4 @@ __decorate([
469
470
  __decorate([
470
471
  property({ type: Number })
471
472
  ], IgcTileComponent.prototype, "position", null);
472
- IgcTileComponent = IgcTileComponent_1 = __decorate([
473
- themes(all)
474
- ], IgcTileComponent);
475
- export default IgcTileComponent;
476
473
  //# sourceMappingURL=tile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tile.js","sourceRoot":"","sources":["../../../src/components/tile-manager/tile.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport {\n property,\n query,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { startViewTransition } from '../../animations/player.js';\nimport { themes } from '../../theming/theming-decorator.js';\nimport IgcIconButtonComponent from '../button/icon-button.js';\nimport {\n type TileManagerContext,\n tileManagerContext,\n} from '../common/context.js';\nimport { createAsyncContext } from '../common/controllers/async-consumer.js';\nimport {\n addDragController,\n type DragCallbackParameters,\n} from '../common/controllers/drag.js';\nimport { addFullscreenController } from '../common/controllers/fullscreen.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { partMap } from '../common/part-map.js';\nimport {\n asNumber,\n createCounter,\n findElementFromEventPath,\n isEmpty,\n isLTR,\n} from '../common/util.js';\nimport IgcDividerComponent from '../divider/divider.js';\nimport IgcResizeContainerComponent from '../resize-container/resize-container.js';\nimport type { ResizeCallbackParams } from '../resize-container/types.js';\nimport type { TileManagerResizeMode } from '../types.js';\nimport { createTileDragStack, swapTiles } from './position.js';\nimport { createTileResizeState } from './resize-state.js';\nimport { styles as shared } from './themes/shared/tile/tile.common.css.js';\nimport { styles } from './themes/tile.base.css.js';\nimport { all } from './themes/tile.js';\nimport { createTileDragGhost, createTileGhost } from './tile-ghost-util.js';\nimport type IgcTileManagerComponent from './tile-manager.js';\n\nexport interface IgcTileChangeStateEventArgs {\n tile: IgcTileComponent;\n state: boolean;\n}\n\ntype AdornerType = 'side' | 'corner' | 'bottom';\n\nexport interface IgcTileComponentEventMap {\n igcTileFullscreen: CustomEvent<IgcTileChangeStateEventArgs>;\n igcTileMaximize: CustomEvent<IgcTileChangeStateEventArgs>;\n igcTileDragStart: CustomEvent<IgcTileComponent>;\n igcTileDragEnd: CustomEvent<IgcTileComponent>;\n igcTileDragCancel: CustomEvent<IgcTileComponent>;\n igcTileResizeStart: CustomEvent<IgcTileComponent>;\n igcTileResizeEnd: CustomEvent<IgcTileComponent>;\n igcTileResizeCancel: CustomEvent<IgcTileComponent>;\n}\n\n/**\n * The tile component is used within the `igc-tile-manager` as a container\n * for displaying various types of information.\n *\n * @element igc-tile\n *\n * @fires igcTileFullscreen - Fired when tile the fullscreen state changes.\n * @fires igcTileMaximize - Fired when tile the maximize state changes.\n * @fires igcTileDragStart - Fired when a drag operation on a tile is about to begin. Cancelable.\n * @fires igcTileDragEnd - Fired when a drag operation with a tile is successfully completed.\n * @fires igcTileDragCancel - Fired when a tile drag operation is canceled by the user.\n * @fires igcTileResizeStart - Fired when a resize operation on a tile is about to begin. Cancelable.\n * @fires igcTileResizeEnd - Fired when a resize operation on a tile is successfully completed.\n * @fires igcTileResizeCancel - Fired when a resize operation on a tile is canceled by the user.\n *\n * @slot - Default slot for the tile's content.\n * @slot title - Renders the title of the tile header.\n * @slot maximize-action - Renders the maximize action element of the tile header.\n * @slot fullscreen-action - Renders the fullscreen action element of the tile header.\n * @slot actions - Renders items after the default actions in the tile header.\n * @slot side-adorner - Renders the side resize handle of the tile.\n * @slot corner-adorner - Renders the corner resize handle of the tile.\n * @slot bottom-adorner - Renders the bottom resize handle of the tile.\n *\n * @csspart base - The wrapper for the entire tile content, header and content.\n * @csspart header - The container for the tile header, including title and actions.\n * @csspart title - The title container of the tile.\n * @csspart actions - The actions container of the tile header.\n * @csspart content-container - The container wrapping the tile’s main content.\n * @csspart trigger-side - The part for the side adorner of the encapsulated resize element in the tile.\n * @csspart trigger - The part for the corner adorner of the encapsulated resize element in the tile.\n * @csspart trigger-bottom - The part for the bottom adorner of the encapsulated resize element in the tile.\n */\n@themes(all)\nexport default class IgcTileComponent extends EventEmitterMixin<\n IgcTileComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-tile';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(\n IgcTileComponent,\n IgcIconButtonComponent,\n IgcDividerComponent,\n IgcResizeContainerComponent\n );\n }\n\n private static readonly increment = createCounter();\n\n private _dragController = addDragController(this, {\n skip: this._skipDrag,\n matchTarget: this._match,\n ghost: this._createDragGhost,\n start: this._handleDragStart,\n over: this._handleDragOver,\n end: this._handleDragEnd,\n cancel: this._handleDragCancel,\n });\n\n private _fullscreenController = addFullscreenController(this, {\n enter: this._emitFullScreenEvent,\n exit: this._emitFullScreenEvent,\n });\n\n private _colSpan = 1;\n private _rowSpan = 1;\n private _colStart: number | null = null;\n private _rowStart: number | null = null;\n private _position = -1;\n private _resizeState = createTileResizeState();\n private _dragStack = createTileDragStack();\n\n private _customAdorners = new Map<string, boolean>(\n Object.entries({\n side: false,\n corner: false,\n bottom: false,\n })\n );\n\n // Tile manager context properties and helpers\n\n /**\n * Context consumer callback that sets the updated configuration of the internal drag controller\n * based on the passed tile manager properties.\n */\n private _setDragConfiguration = ({\n instance: { dragMode },\n }: TileManagerContext) => {\n this._dragController.set({\n enabled: dragMode !== 'none',\n trigger:\n dragMode === 'tile-header' ? () => this._headerRef.value! : undefined,\n });\n };\n\n private _context = createAsyncContext(\n this,\n tileManagerContext,\n this._setDragConfiguration\n );\n\n /** Returns the parent tile manager context. */\n private get _tileManagerCtx(): TileManagerContext | undefined {\n return this._context.value;\n }\n\n private get _tileManager(): IgcTileManagerComponent | undefined {\n return this._tileManagerCtx?.instance;\n }\n\n /** Returns the tile manager internal CSS grid container. */\n private get _cssContainer(): HTMLElement {\n return this._tileManagerCtx?.grid.value!;\n }\n\n /** Returns the tile manager current resize mode. */\n private get _resizeMode(): TileManagerResizeMode {\n return this._tileManager?.resizeMode ?? 'none';\n }\n\n protected _headerRef = createRef<HTMLElement>();\n\n @queryAssignedElements({ slot: 'title' })\n private _titleElements!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'actions' })\n private _actionsElements!: HTMLElement[];\n\n @query(IgcResizeContainerComponent.tagName)\n protected _resizeContainer?: IgcResizeContainerComponent;\n\n @query('[part~=\"base\"]', true)\n public _tileContent!: HTMLElement;\n\n @state()\n private _maximized = false;\n\n @state()\n private _isDragging = false;\n\n @state()\n private _isResizing = false;\n\n /** Whether to render the resize container based on tile and tile manager configuration. */\n private get _resizeDisabled(): boolean {\n return (\n this.disableResize ||\n this.maximized ||\n this.fullscreen ||\n this._resizeMode === 'none'\n );\n }\n\n /**\n * The number of columns the tile will span.\n *\n * @remarks\n * When setting a value that is less than 1, it will be\n * coerced to 1.\n *\n * @attr col-span\n * @default 1\n */\n @property({ type: Number, attribute: 'col-span' })\n public set colSpan(value: number) {\n this._colSpan = Math.max(1, asNumber(value));\n this.style.setProperty('--ig-col-span', this._colSpan.toString());\n }\n\n public get colSpan(): number {\n return this._colSpan;\n }\n\n /**\n * The number of rows the tile will span.\n *\n * @remarks\n * When setting a value that is less than 1, it will be\n * coerced to 1.\n *\n * @attr row-span\n * @default 1\n */\n @property({ type: Number, attribute: 'row-span' })\n public set rowSpan(value: number) {\n this._rowSpan = Math.max(1, asNumber(value));\n this.style.setProperty('--ig-row-span', this._rowSpan.toString());\n }\n\n public get rowSpan(): number {\n return this._rowSpan;\n }\n\n /**\n * The starting column for the tile.\n *\n * @attr col-start\n */\n @property({ type: Number, attribute: 'col-start' })\n public set colStart(value: number | null) {\n this._colStart = Math.max(0, asNumber(value)) || null;\n this.style.setProperty(\n '--ig-col-start',\n this._colStart ? this._colStart.toString() : null\n );\n }\n\n public get colStart(): number | null {\n return this._colStart;\n }\n\n /**\n * The starting row for the tile.\n *\n * @attr row-start\n */\n @property({ type: Number, attribute: 'row-start' })\n public set rowStart(value: number | null) {\n this._rowStart = Math.max(0, asNumber(value)) || null;\n this.style.setProperty(\n '--ig-row-start',\n this._rowStart ? this._rowStart.toString() : null\n );\n }\n\n public get rowStart(): number | null {\n return this._rowStart;\n }\n\n /**\n * Indicates whether the tile occupies the whole screen.\n *\n * @property\n */\n public get fullscreen(): boolean {\n return this._fullscreenController.fullscreen;\n }\n\n /**\n * Indicates whether the tile occupies all available space within the layout.\n *\n * @attr maximized\n */\n @property({ type: Boolean, reflect: true })\n public set maximized(value: boolean) {\n this._maximized = value;\n\n if (this._tileManagerCtx) {\n this._tileManagerCtx.instance.requestUpdate();\n }\n }\n\n public get maximized(): boolean {\n return this._maximized;\n }\n\n /**\n * Indicates whether to disable tile resize behavior regardless\n * ot its tile manager parent settings.\n *\n * @attr disable-resize\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-resize' })\n public disableResize = false;\n\n /**\n * Whether to disable the rendering of the tile `fullscreen-action` slot and its\n * default fullscreen action button.\n *\n * @attr disable-fullscreen\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-fullscreen' })\n public disableFullscreen = false;\n\n /**\n * Whether to disable the rendering of the tile `maximize-action` slot and its\n * default maximize action button.\n *\n * @attr disable-maximize\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-maximize' })\n public disableMaximize = false;\n\n /**\n * Gets/sets the tile's visual position in the layout.\n * Corresponds to the CSS `order` property.\n *\n * @attr position\n */\n @property({ type: Number })\n public set position(value: number) {\n this._position = asNumber(value);\n this.style.order = this._position.toString();\n }\n\n public get position(): number {\n return this._position;\n }\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.id = this.id || `tile-${IgcTileComponent.increment()}`;\n\n this.style.viewTransitionName =\n this.style.viewTransitionName || `tile-transition-${this.id}`;\n }\n\n protected override createRenderRoot() {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', () => this.requestUpdate());\n return root;\n }\n\n private _setDragState(state = true) {\n this._isDragging = state;\n this._tileContent.style.opacity = state ? '0' : '';\n this.style.pointerEvents = state ? 'none' : '';\n this.part.toggle('dragging', state);\n }\n\n private _handleDragStart() {\n if (!this._emitTileDragStart()) {\n return false;\n }\n\n this._setDragState();\n this._dragStack.push(this);\n return true;\n }\n\n private _handleDragOver({ event, state }: DragCallbackParameters): void {\n const match = state.element as IgcTileComponent;\n\n if (this._dragStack.peek() === match) {\n if (this._shouldSwap(event, state, match)) {\n this._dragStack.pop();\n this._dragStack.push(match);\n this._performSwap(match);\n }\n return;\n }\n\n this._dragStack.push(match);\n this._performSwap(match);\n }\n\n private _handleDragCancel() {\n startViewTransition(() => {\n this._dragStack.restore();\n this._dragStack.reset();\n });\n\n this._dragController.dispose();\n this._setDragState(false);\n this.emitEvent('igcTileDragCancel', { detail: this });\n }\n\n private _handleDragEnd() {\n this._setDragState(false);\n this._dragStack.reset();\n this.emitEvent('igcTileDragEnd', { detail: this });\n }\n\n private _performSwap(match: IgcTileComponent): void {\n startViewTransition(() => swapTiles(this, match));\n }\n\n private _shouldSwap(\n { clientX, clientY }: PointerEvent,\n state: DragCallbackParameters['state'],\n match: IgcTileComponent\n ): boolean {\n const LTR = isLTR(this);\n const direction = state.pointerState.direction;\n\n const { left, top, width, height } = match.getBoundingClientRect();\n const relativeX = (clientX - left) / width;\n const relativeY = (clientY - top) / height;\n\n switch (direction) {\n case 'start':\n return (\n this.position > match.position &&\n (LTR ? relativeX <= 0.25 : relativeX >= 0.75)\n );\n case 'end':\n return (\n this.position < match.position &&\n (LTR ? relativeX >= 0.75 : relativeX <= 0.25)\n );\n case 'top':\n return this.position > match.position && relativeY <= 0.25;\n case 'bottom':\n return this.position < match.position && relativeY >= 0.75;\n default:\n return false;\n }\n }\n\n private _skipDrag(event: PointerEvent): boolean {\n if (this._maximized || this.fullscreen) {\n return true;\n }\n\n return Boolean(\n findElementFromEventPath(\n (e) => e.matches('[part*=trigger]') || e.matches('#tile-actions'),\n event\n )\n );\n }\n\n private _match(element: Element): element is IgcTileComponent {\n return element !== this && IgcTileComponent.tagName === element.localName;\n }\n\n private _createDragGhost(): IgcTileComponent {\n return createTileDragGhost(this);\n }\n\n private _createResizeGhost = (): HTMLElement => {\n return createTileGhost(this);\n };\n\n private _setResizeState(state = true) {\n this._isResizing = state;\n this.style.zIndex = state ? '1' : '';\n this.part.toggle('resizing', state);\n }\n\n private _handleResizeStart(event: CustomEvent<ResizeCallbackParams>) {\n if (!this._emitTileResizeStart()) {\n event.preventDefault();\n return;\n }\n\n this._resizeState.updateState(\n event.detail.state.initial,\n this,\n this._cssContainer\n );\n this._setResizeState();\n }\n\n private _handleResize({\n detail: { state },\n }: CustomEvent<ResizeCallbackParams>) {\n const trigger = state.trigger!;\n\n const isWidthResize = trigger.matches('[part*=\"side\"], [part=\"trigger\"]');\n const isHeightResize = trigger.matches(\n '[part*=\"bottom\"], [part=\"trigger\"]'\n );\n\n if (isWidthResize) {\n state.current.width = this._resizeState.calculateSnappedWidth(state);\n }\n\n if (isHeightResize) {\n state.current.height = this._resizeState.calculateSnappedHeight(state);\n }\n }\n\n private _handleResizeEnd({\n detail: { state },\n }: CustomEvent<ResizeCallbackParams>) {\n const { colSpan, rowSpan } = this._resizeState.calculateResizedGridPosition(\n state.current\n );\n\n state.commit = async () => {\n await startViewTransition(() => {\n this.colSpan = colSpan;\n this.rowSpan = rowSpan;\n }).transition?.updateCallbackDone;\n\n this._setResizeState(false);\n this.emitEvent('igcTileResizeEnd', { detail: this });\n };\n }\n\n private _handleResizeCancel() {\n this._setResizeState(false);\n this.emitEvent('igcTileResizeCancel', { detail: this });\n }\n\n private _handleFullscreen() {\n this._fullscreenController.setState(!this.fullscreen);\n }\n\n private async _handleMaximize() {\n if (!this._emitMaximizedEvent()) {\n return;\n }\n\n this.style.zIndex = '1';\n\n await startViewTransition(() => {\n this.maximized = !this.maximized;\n }).transition?.finished;\n\n this.style.zIndex = '';\n }\n\n private _emitFullScreenEvent(state: boolean) {\n this.requestUpdate();\n\n return this.emitEvent('igcTileFullscreen', {\n detail: { tile: this, state },\n cancelable: true,\n });\n }\n\n private _emitMaximizedEvent() {\n return this.emitEvent('igcTileMaximize', {\n detail: { tile: this, state: !this.maximized },\n cancelable: true,\n });\n }\n\n private _emitTileDragStart() {\n return this.emitEvent('igcTileDragStart', {\n detail: this,\n cancelable: true,\n });\n }\n\n private _emitTileResizeStart() {\n return this.emitEvent('igcTileResizeStart', {\n detail: this,\n cancelable: true,\n });\n }\n\n protected _renderDefaultAction(type: 'maximize' | 'fullscreen') {\n const [icon, listener] =\n type === 'fullscreen'\n ? [\n this.fullscreen ? 'fullscreen_exit' : 'fullscreen',\n this._handleFullscreen,\n ]\n : [\n this._maximized ? 'collapse_content' : 'expand_content',\n this._handleMaximize,\n ];\n\n return html`\n <igc-icon-button\n variant=\"flat\"\n collection=\"default\"\n exportparts=\"icon\"\n name=${icon}\n aria-label=${icon}\n @click=${listener}\n ></igc-icon-button>\n `;\n }\n\n protected _renderHeader() {\n const hideHeader =\n isEmpty(this._titleElements) &&\n isEmpty(this._actionsElements) &&\n this.disableMaximize &&\n this.disableFullscreen;\n\n const hasMaximizeSlot = !(this.disableMaximize || this.fullscreen);\n const hasFullscreenSlot = !this.disableFullscreen;\n\n return html`\n <section part=\"header\" ?hidden=${hideHeader} ${ref(this._headerRef)}>\n <header part=\"title\">\n <slot name=\"title\"></slot>\n </header>\n <section id=\"tile-actions\" part=\"actions\">\n ${hasMaximizeSlot\n ? html`\n <slot name=\"maximize-action\">\n ${this._renderDefaultAction('maximize')}\n </slot>\n `\n : nothing}\n ${hasFullscreenSlot\n ? html`\n <slot name=\"fullscreen-action\">\n ${this._renderDefaultAction('fullscreen')}\n </slot>\n `\n : nothing}\n\n <slot name=\"actions\"></slot>\n </section>\n </section>\n <igc-divider></igc-divider>\n `;\n }\n\n protected _renderContent() {\n const parts = {\n base: true,\n draggable: this._tileManager?.dragMode !== 'none',\n fullscreen: this.fullscreen,\n dragging: this._isDragging,\n resizable:\n !this.disableResize && this._tileManager?.resizeMode !== 'none',\n resizing: this._isResizing,\n maximized: this.maximized,\n };\n\n return html`\n <div part=${partMap(parts)}>\n ${this._renderHeader()}\n <div part=\"content-container\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n\n private _renderAdornerSlot(name: AdornerType) {\n return html`\n <slot\n @slotchange=${() => this._customAdorners.set(name, true)}\n name=\"${name}-adorner\"\n slot=\"${name}-adorner\"\n >\n </slot>\n `;\n }\n\n protected override render() {\n const isActive = this._resizeMode === 'always';\n\n return this._resizeDisabled\n ? this._renderContent()\n : html`\n <igc-resize\n part=${partMap({\n resize: true,\n 'side-adorner': this._customAdorners.get('side')!,\n 'corner-adorner': this._customAdorners.get('corner')!,\n 'bottom-adorner': this._customAdorners.get('bottom')!,\n })}\n exportparts=\"trigger-side, trigger, trigger-bottom\"\n mode=\"deferred\"\n ?active=${isActive}\n .ghostFactory=${this._createResizeGhost}\n @igcResizeStart=${this._handleResizeStart}\n @igcResize=${this._handleResize}\n @igcResizeEnd=${this._handleResizeEnd}\n @igcResizeCancel=${this._handleResizeCancel}\n >\n ${this._renderContent()} ${this._renderAdornerSlot('side')}\n ${this._renderAdornerSlot('corner')}\n ${this._renderAdornerSlot('bottom')}\n </igc-resize>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tile': IgcTileComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"tile.js","sourceRoot":"","sources":["../../../src/components/tile-manager/tile.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport {\n property,\n query,\n queryAssignedElements,\n state,\n} from 'lit/decorators.js';\nimport { createRef, ref } from 'lit/directives/ref.js';\nimport { startViewTransition } from '../../animations/player.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcIconButtonComponent from '../button/icon-button.js';\nimport {\n type TileManagerContext,\n tileManagerContext,\n} from '../common/context.js';\nimport { createAsyncContext } from '../common/controllers/async-consumer.js';\nimport {\n addDragController,\n type DragCallbackParameters,\n} from '../common/controllers/drag.js';\nimport { addFullscreenController } from '../common/controllers/fullscreen.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { partMap } from '../common/part-map.js';\nimport {\n asNumber,\n createCounter,\n findElementFromEventPath,\n isEmpty,\n isLTR,\n} from '../common/util.js';\nimport IgcDividerComponent from '../divider/divider.js';\nimport IgcResizeContainerComponent from '../resize-container/resize-container.js';\nimport type { ResizeCallbackParams } from '../resize-container/types.js';\nimport type { TileManagerResizeMode } from '../types.js';\nimport { createTileDragStack, swapTiles } from './position.js';\nimport { createTileResizeState } from './resize-state.js';\nimport { styles as shared } from './themes/shared/tile/tile.common.css.js';\nimport { styles } from './themes/tile.base.css.js';\nimport { all } from './themes/tile.js';\nimport { createTileDragGhost, createTileGhost } from './tile-ghost-util.js';\nimport type IgcTileManagerComponent from './tile-manager.js';\n\nexport interface IgcTileChangeStateEventArgs {\n tile: IgcTileComponent;\n state: boolean;\n}\n\ntype AdornerType = 'side' | 'corner' | 'bottom';\n\nexport interface IgcTileComponentEventMap {\n igcTileFullscreen: CustomEvent<IgcTileChangeStateEventArgs>;\n igcTileMaximize: CustomEvent<IgcTileChangeStateEventArgs>;\n igcTileDragStart: CustomEvent<IgcTileComponent>;\n igcTileDragEnd: CustomEvent<IgcTileComponent>;\n igcTileDragCancel: CustomEvent<IgcTileComponent>;\n igcTileResizeStart: CustomEvent<IgcTileComponent>;\n igcTileResizeEnd: CustomEvent<IgcTileComponent>;\n igcTileResizeCancel: CustomEvent<IgcTileComponent>;\n}\n\n/**\n * The tile component is used within the `igc-tile-manager` as a container\n * for displaying various types of information.\n *\n * @element igc-tile\n *\n * @fires igcTileFullscreen - Fired when tile the fullscreen state changes.\n * @fires igcTileMaximize - Fired when tile the maximize state changes.\n * @fires igcTileDragStart - Fired when a drag operation on a tile is about to begin. Cancelable.\n * @fires igcTileDragEnd - Fired when a drag operation with a tile is successfully completed.\n * @fires igcTileDragCancel - Fired when a tile drag operation is canceled by the user.\n * @fires igcTileResizeStart - Fired when a resize operation on a tile is about to begin. Cancelable.\n * @fires igcTileResizeEnd - Fired when a resize operation on a tile is successfully completed.\n * @fires igcTileResizeCancel - Fired when a resize operation on a tile is canceled by the user.\n *\n * @slot - Default slot for the tile's content.\n * @slot title - Renders the title of the tile header.\n * @slot maximize-action - Renders the maximize action element of the tile header.\n * @slot fullscreen-action - Renders the fullscreen action element of the tile header.\n * @slot actions - Renders items after the default actions in the tile header.\n * @slot side-adorner - Renders the side resize handle of the tile.\n * @slot corner-adorner - Renders the corner resize handle of the tile.\n * @slot bottom-adorner - Renders the bottom resize handle of the tile.\n *\n * @csspart base - The wrapper for the entire tile content, header and content.\n * @csspart header - The container for the tile header, including title and actions.\n * @csspart title - The title container of the tile.\n * @csspart actions - The actions container of the tile header.\n * @csspart content-container - The container wrapping the tile’s main content.\n * @csspart trigger-side - The part for the side adorner of the encapsulated resize element in the tile.\n * @csspart trigger - The part for the corner adorner of the encapsulated resize element in the tile.\n * @csspart trigger-bottom - The part for the bottom adorner of the encapsulated resize element in the tile.\n */\nexport default class IgcTileComponent extends EventEmitterMixin<\n IgcTileComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-tile';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register() {\n registerComponent(\n IgcTileComponent,\n IgcIconButtonComponent,\n IgcDividerComponent,\n IgcResizeContainerComponent\n );\n }\n\n private static readonly increment = createCounter();\n\n private _dragController = addDragController(this, {\n skip: this._skipDrag,\n matchTarget: this._match,\n ghost: this._createDragGhost,\n start: this._handleDragStart,\n over: this._handleDragOver,\n end: this._handleDragEnd,\n cancel: this._handleDragCancel,\n });\n\n private _fullscreenController = addFullscreenController(this, {\n enter: this._emitFullScreenEvent,\n exit: this._emitFullScreenEvent,\n });\n\n private _colSpan = 1;\n private _rowSpan = 1;\n private _colStart: number | null = null;\n private _rowStart: number | null = null;\n private _position = -1;\n private _resizeState = createTileResizeState();\n private _dragStack = createTileDragStack();\n\n private _customAdorners = new Map<string, boolean>(\n Object.entries({\n side: false,\n corner: false,\n bottom: false,\n })\n );\n\n // Tile manager context properties and helpers\n\n /**\n * Context consumer callback that sets the updated configuration of the internal drag controller\n * based on the passed tile manager properties.\n */\n private _setDragConfiguration = ({\n instance: { dragMode },\n }: TileManagerContext) => {\n this._dragController.set({\n enabled: dragMode !== 'none',\n trigger:\n dragMode === 'tile-header' ? () => this._headerRef.value! : undefined,\n });\n };\n\n private _context = createAsyncContext(\n this,\n tileManagerContext,\n this._setDragConfiguration\n );\n\n /** Returns the parent tile manager context. */\n private get _tileManagerCtx(): TileManagerContext | undefined {\n return this._context.value;\n }\n\n private get _tileManager(): IgcTileManagerComponent | undefined {\n return this._tileManagerCtx?.instance;\n }\n\n /** Returns the tile manager internal CSS grid container. */\n private get _cssContainer(): HTMLElement {\n return this._tileManagerCtx?.grid.value!;\n }\n\n /** Returns the tile manager current resize mode. */\n private get _resizeMode(): TileManagerResizeMode {\n return this._tileManager?.resizeMode ?? 'none';\n }\n\n protected _headerRef = createRef<HTMLElement>();\n\n @queryAssignedElements({ slot: 'title' })\n private _titleElements!: HTMLElement[];\n\n @queryAssignedElements({ slot: 'actions' })\n private _actionsElements!: HTMLElement[];\n\n @query(IgcResizeContainerComponent.tagName)\n protected _resizeContainer?: IgcResizeContainerComponent;\n\n @query('[part~=\"base\"]', true)\n public _tileContent!: HTMLElement;\n\n @state()\n private _maximized = false;\n\n @state()\n private _isDragging = false;\n\n @state()\n private _isResizing = false;\n\n /** Whether to render the resize container based on tile and tile manager configuration. */\n private get _resizeDisabled(): boolean {\n return (\n this.disableResize ||\n this.maximized ||\n this.fullscreen ||\n this._resizeMode === 'none'\n );\n }\n\n /**\n * The number of columns the tile will span.\n *\n * @remarks\n * When setting a value that is less than 1, it will be\n * coerced to 1.\n *\n * @attr col-span\n * @default 1\n */\n @property({ type: Number, attribute: 'col-span' })\n public set colSpan(value: number) {\n this._colSpan = Math.max(1, asNumber(value));\n this.style.setProperty('--ig-col-span', this._colSpan.toString());\n }\n\n public get colSpan(): number {\n return this._colSpan;\n }\n\n /**\n * The number of rows the tile will span.\n *\n * @remarks\n * When setting a value that is less than 1, it will be\n * coerced to 1.\n *\n * @attr row-span\n * @default 1\n */\n @property({ type: Number, attribute: 'row-span' })\n public set rowSpan(value: number) {\n this._rowSpan = Math.max(1, asNumber(value));\n this.style.setProperty('--ig-row-span', this._rowSpan.toString());\n }\n\n public get rowSpan(): number {\n return this._rowSpan;\n }\n\n /**\n * The starting column for the tile.\n *\n * @attr col-start\n */\n @property({ type: Number, attribute: 'col-start' })\n public set colStart(value: number | null) {\n this._colStart = Math.max(0, asNumber(value)) || null;\n this.style.setProperty(\n '--ig-col-start',\n this._colStart ? this._colStart.toString() : null\n );\n }\n\n public get colStart(): number | null {\n return this._colStart;\n }\n\n /**\n * The starting row for the tile.\n *\n * @attr row-start\n */\n @property({ type: Number, attribute: 'row-start' })\n public set rowStart(value: number | null) {\n this._rowStart = Math.max(0, asNumber(value)) || null;\n this.style.setProperty(\n '--ig-row-start',\n this._rowStart ? this._rowStart.toString() : null\n );\n }\n\n public get rowStart(): number | null {\n return this._rowStart;\n }\n\n /**\n * Indicates whether the tile occupies the whole screen.\n *\n * @property\n */\n public get fullscreen(): boolean {\n return this._fullscreenController.fullscreen;\n }\n\n /**\n * Indicates whether the tile occupies all available space within the layout.\n *\n * @attr maximized\n */\n @property({ type: Boolean, reflect: true })\n public set maximized(value: boolean) {\n this._maximized = value;\n\n if (this._tileManagerCtx) {\n this._tileManagerCtx.instance.requestUpdate();\n }\n }\n\n public get maximized(): boolean {\n return this._maximized;\n }\n\n /**\n * Indicates whether to disable tile resize behavior regardless\n * ot its tile manager parent settings.\n *\n * @attr disable-resize\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-resize' })\n public disableResize = false;\n\n /**\n * Whether to disable the rendering of the tile `fullscreen-action` slot and its\n * default fullscreen action button.\n *\n * @attr disable-fullscreen\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-fullscreen' })\n public disableFullscreen = false;\n\n /**\n * Whether to disable the rendering of the tile `maximize-action` slot and its\n * default maximize action button.\n *\n * @attr disable-maximize\n * @default false\n */\n @property({ type: Boolean, reflect: true, attribute: 'disable-maximize' })\n public disableMaximize = false;\n\n /**\n * Gets/sets the tile's visual position in the layout.\n * Corresponds to the CSS `order` property.\n *\n * @attr position\n */\n @property({ type: Number })\n public set position(value: number) {\n this._position = asNumber(value);\n this.style.order = this._position.toString();\n }\n\n public get position(): number {\n return this._position;\n }\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n /** @internal */\n public override connectedCallback(): void {\n super.connectedCallback();\n this.id = this.id || `tile-${IgcTileComponent.increment()}`;\n\n this.style.viewTransitionName =\n this.style.viewTransitionName || `tile-transition-${this.id}`;\n }\n\n protected override createRenderRoot() {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', () => this.requestUpdate());\n return root;\n }\n\n private _setDragState(state = true) {\n this._isDragging = state;\n this._tileContent.style.opacity = state ? '0' : '';\n this.style.pointerEvents = state ? 'none' : '';\n this.part.toggle('dragging', state);\n }\n\n private _handleDragStart() {\n if (!this._emitTileDragStart()) {\n return false;\n }\n\n this._setDragState();\n this._dragStack.push(this);\n return true;\n }\n\n private _handleDragOver({ event, state }: DragCallbackParameters): void {\n const match = state.element as IgcTileComponent;\n\n if (this._dragStack.peek() === match) {\n if (this._shouldSwap(event, state, match)) {\n this._dragStack.pop();\n this._dragStack.push(match);\n this._performSwap(match);\n }\n return;\n }\n\n this._dragStack.push(match);\n this._performSwap(match);\n }\n\n private _handleDragCancel() {\n startViewTransition(() => {\n this._dragStack.restore();\n this._dragStack.reset();\n });\n\n this._dragController.dispose();\n this._setDragState(false);\n this.emitEvent('igcTileDragCancel', { detail: this });\n }\n\n private _handleDragEnd() {\n this._setDragState(false);\n this._dragStack.reset();\n this.emitEvent('igcTileDragEnd', { detail: this });\n }\n\n private _performSwap(match: IgcTileComponent): void {\n startViewTransition(() => swapTiles(this, match));\n }\n\n private _shouldSwap(\n { clientX, clientY }: PointerEvent,\n state: DragCallbackParameters['state'],\n match: IgcTileComponent\n ): boolean {\n const LTR = isLTR(this);\n const direction = state.pointerState.direction;\n\n const { left, top, width, height } = match.getBoundingClientRect();\n const relativeX = (clientX - left) / width;\n const relativeY = (clientY - top) / height;\n\n switch (direction) {\n case 'start':\n return (\n this.position > match.position &&\n (LTR ? relativeX <= 0.25 : relativeX >= 0.75)\n );\n case 'end':\n return (\n this.position < match.position &&\n (LTR ? relativeX >= 0.75 : relativeX <= 0.25)\n );\n case 'top':\n return this.position > match.position && relativeY <= 0.25;\n case 'bottom':\n return this.position < match.position && relativeY >= 0.75;\n default:\n return false;\n }\n }\n\n private _skipDrag(event: PointerEvent): boolean {\n if (this._maximized || this.fullscreen) {\n return true;\n }\n\n return Boolean(\n findElementFromEventPath(\n (e) => e.matches('[part*=trigger]') || e.matches('#tile-actions'),\n event\n )\n );\n }\n\n private _match(element: Element): element is IgcTileComponent {\n return element !== this && IgcTileComponent.tagName === element.localName;\n }\n\n private _createDragGhost(): IgcTileComponent {\n return createTileDragGhost(this);\n }\n\n private _createResizeGhost = (): HTMLElement => {\n return createTileGhost(this);\n };\n\n private _setResizeState(state = true) {\n this._isResizing = state;\n this.style.zIndex = state ? '1' : '';\n this.part.toggle('resizing', state);\n }\n\n private _handleResizeStart(event: CustomEvent<ResizeCallbackParams>) {\n if (!this._emitTileResizeStart()) {\n event.preventDefault();\n return;\n }\n\n this._resizeState.updateState(\n event.detail.state.initial,\n this,\n this._cssContainer\n );\n this._setResizeState();\n }\n\n private _handleResize({\n detail: { state },\n }: CustomEvent<ResizeCallbackParams>) {\n const trigger = state.trigger!;\n\n const isWidthResize = trigger.matches('[part*=\"side\"], [part=\"trigger\"]');\n const isHeightResize = trigger.matches(\n '[part*=\"bottom\"], [part=\"trigger\"]'\n );\n\n if (isWidthResize) {\n state.current.width = this._resizeState.calculateSnappedWidth(state);\n }\n\n if (isHeightResize) {\n state.current.height = this._resizeState.calculateSnappedHeight(state);\n }\n }\n\n private _handleResizeEnd({\n detail: { state },\n }: CustomEvent<ResizeCallbackParams>) {\n const { colSpan, rowSpan } = this._resizeState.calculateResizedGridPosition(\n state.current\n );\n\n state.commit = async () => {\n await startViewTransition(() => {\n this.colSpan = colSpan;\n this.rowSpan = rowSpan;\n }).transition?.updateCallbackDone;\n\n this._setResizeState(false);\n this.emitEvent('igcTileResizeEnd', { detail: this });\n };\n }\n\n private _handleResizeCancel() {\n this._setResizeState(false);\n this.emitEvent('igcTileResizeCancel', { detail: this });\n }\n\n private _handleFullscreen() {\n this._fullscreenController.setState(!this.fullscreen);\n }\n\n private async _handleMaximize() {\n if (!this._emitMaximizedEvent()) {\n return;\n }\n\n this.style.zIndex = '1';\n\n await startViewTransition(() => {\n this.maximized = !this.maximized;\n }).transition?.finished;\n\n this.style.zIndex = '';\n }\n\n private _emitFullScreenEvent(state: boolean) {\n this.requestUpdate();\n\n return this.emitEvent('igcTileFullscreen', {\n detail: { tile: this, state },\n cancelable: true,\n });\n }\n\n private _emitMaximizedEvent() {\n return this.emitEvent('igcTileMaximize', {\n detail: { tile: this, state: !this.maximized },\n cancelable: true,\n });\n }\n\n private _emitTileDragStart() {\n return this.emitEvent('igcTileDragStart', {\n detail: this,\n cancelable: true,\n });\n }\n\n private _emitTileResizeStart() {\n return this.emitEvent('igcTileResizeStart', {\n detail: this,\n cancelable: true,\n });\n }\n\n protected _renderDefaultAction(type: 'maximize' | 'fullscreen') {\n const [icon, listener] =\n type === 'fullscreen'\n ? [\n this.fullscreen ? 'fullscreen_exit' : 'fullscreen',\n this._handleFullscreen,\n ]\n : [\n this._maximized ? 'collapse_content' : 'expand_content',\n this._handleMaximize,\n ];\n\n return html`\n <igc-icon-button\n variant=\"flat\"\n collection=\"default\"\n exportparts=\"icon\"\n name=${icon}\n aria-label=${icon}\n @click=${listener}\n ></igc-icon-button>\n `;\n }\n\n protected _renderHeader() {\n const hideHeader =\n isEmpty(this._titleElements) &&\n isEmpty(this._actionsElements) &&\n this.disableMaximize &&\n this.disableFullscreen;\n\n const hasMaximizeSlot = !(this.disableMaximize || this.fullscreen);\n const hasFullscreenSlot = !this.disableFullscreen;\n\n return html`\n <section part=\"header\" ?hidden=${hideHeader} ${ref(this._headerRef)}>\n <header part=\"title\">\n <slot name=\"title\"></slot>\n </header>\n <section id=\"tile-actions\" part=\"actions\">\n ${hasMaximizeSlot\n ? html`\n <slot name=\"maximize-action\">\n ${this._renderDefaultAction('maximize')}\n </slot>\n `\n : nothing}\n ${hasFullscreenSlot\n ? html`\n <slot name=\"fullscreen-action\">\n ${this._renderDefaultAction('fullscreen')}\n </slot>\n `\n : nothing}\n\n <slot name=\"actions\"></slot>\n </section>\n </section>\n <igc-divider></igc-divider>\n `;\n }\n\n protected _renderContent() {\n const parts = {\n base: true,\n draggable: this._tileManager?.dragMode !== 'none',\n fullscreen: this.fullscreen,\n dragging: this._isDragging,\n resizable:\n !this.disableResize && this._tileManager?.resizeMode !== 'none',\n resizing: this._isResizing,\n maximized: this.maximized,\n };\n\n return html`\n <div part=${partMap(parts)}>\n ${this._renderHeader()}\n <div part=\"content-container\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n\n private _renderAdornerSlot(name: AdornerType) {\n return html`\n <slot\n @slotchange=${() => this._customAdorners.set(name, true)}\n name=\"${name}-adorner\"\n slot=\"${name}-adorner\"\n >\n </slot>\n `;\n }\n\n protected override render() {\n const isActive = this._resizeMode === 'always';\n\n return this._resizeDisabled\n ? this._renderContent()\n : html`\n <igc-resize\n part=${partMap({\n resize: true,\n 'side-adorner': this._customAdorners.get('side')!,\n 'corner-adorner': this._customAdorners.get('corner')!,\n 'bottom-adorner': this._customAdorners.get('bottom')!,\n })}\n exportparts=\"trigger-side, trigger, trigger-bottom\"\n mode=\"deferred\"\n ?active=${isActive}\n .ghostFactory=${this._createResizeGhost}\n @igcResizeStart=${this._handleResizeStart}\n @igcResize=${this._handleResize}\n @igcResizeEnd=${this._handleResizeEnd}\n @igcResizeCancel=${this._handleResizeCancel}\n >\n ${this._renderContent()} ${this._renderAdornerSlot('side')}\n ${this._renderAdornerSlot('corner')}\n ${this._renderAdornerSlot('bottom')}\n </igc-resize>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-tile': IgcTileComponent;\n }\n}\n"]}
@@ -12,6 +12,7 @@ export default class IgcToastComponent extends IgcBaseAlertLikeComponent {
12
12
  static styles: import("lit").CSSResult[];
13
13
  protected _animationPlayer: ReturnType<typeof addAnimationController>;
14
14
  static register(): void;
15
+ constructor();
15
16
  protected render(): import("lit-html").TemplateResult<1>;
16
17
  }
17
18
  declare global {