@redvars/peacock 3.8.2 → 3.8.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/dist/accordion-item.js +15 -6
  2. package/dist/accordion-item.js.map +1 -1
  3. package/dist/accordion.js +12 -11
  4. package/dist/accordion.js.map +1 -1
  5. package/dist/alert.js +1 -0
  6. package/dist/alert.js.map +1 -1
  7. package/dist/app-bar.js +1 -0
  8. package/dist/app-bar.js.map +1 -1
  9. package/dist/assets/components.css +1 -1
  10. package/dist/assets/components.css.map +1 -1
  11. package/dist/assets/styles.css +1 -1
  12. package/dist/assets/styles.css.map +1 -1
  13. package/dist/avatar.js +1 -0
  14. package/dist/avatar.js.map +1 -1
  15. package/dist/babel-DBsfpl3B.js +18 -0
  16. package/dist/babel-DBsfpl3B.js.map +1 -0
  17. package/dist/badge.js +1 -0
  18. package/dist/badge.js.map +1 -1
  19. package/dist/bottom-sheet.js +1 -0
  20. package/dist/bottom-sheet.js.map +1 -1
  21. package/dist/breadcrumb-item.js +1 -0
  22. package/dist/breadcrumb-item.js.map +1 -1
  23. package/dist/breadcrumb.js +1 -0
  24. package/dist/breadcrumb.js.map +1 -1
  25. package/dist/button-group.js +5 -4
  26. package/dist/button-group.js.map +1 -1
  27. package/dist/button.js +9 -8
  28. package/dist/button.js.map +1 -1
  29. package/dist/calendar-column-view.js +1 -0
  30. package/dist/calendar-column-view.js.map +1 -1
  31. package/dist/calendar-month-view.js +1 -0
  32. package/dist/calendar-month-view.js.map +1 -1
  33. package/dist/calendar.js +1 -0
  34. package/dist/calendar.js.map +1 -1
  35. package/dist/canvas.js +1 -0
  36. package/dist/canvas.js.map +1 -1
  37. package/dist/card.js +23 -7
  38. package/dist/card.js.map +1 -1
  39. package/dist/cb-compound-expression.js +1 -0
  40. package/dist/cb-compound-expression.js.map +1 -1
  41. package/dist/cb-divider.js +1 -0
  42. package/dist/cb-divider.js.map +1 -1
  43. package/dist/cb-expression.js +1 -0
  44. package/dist/cb-expression.js.map +1 -1
  45. package/dist/cb-predicate.js +1 -0
  46. package/dist/cb-predicate.js.map +1 -1
  47. package/dist/{chart-bar-CYoGNXnK.js → chart-bar-CapLbc2e.js} +2 -1
  48. package/dist/{chart-bar-CYoGNXnK.js.map → chart-bar-CapLbc2e.js.map} +1 -1
  49. package/dist/chart-bar.js +1 -1
  50. package/dist/chart-doughnut.js +1 -0
  51. package/dist/chart-doughnut.js.map +1 -1
  52. package/dist/chart-pie.js +1 -0
  53. package/dist/chart-pie.js.map +1 -1
  54. package/dist/chart-stacked-bar.js +1 -1
  55. package/dist/checkbox.js +1 -0
  56. package/dist/checkbox.js.map +1 -1
  57. package/dist/chip.js +1 -0
  58. package/dist/chip.js.map +1 -1
  59. package/dist/clock.js +1 -0
  60. package/dist/clock.js.map +1 -1
  61. package/dist/code-editor.js +1 -0
  62. package/dist/code-editor.js.map +1 -1
  63. package/dist/code-highlighter.js +75 -11212
  64. package/dist/code-highlighter.js.map +1 -1
  65. package/dist/color-picker.js +701 -0
  66. package/dist/color-picker.js.map +1 -0
  67. package/dist/condition-builder.js +1 -0
  68. package/dist/condition-builder.js.map +1 -1
  69. package/dist/container.js +1 -0
  70. package/dist/container.js.map +1 -1
  71. package/dist/custom-elements-jsdocs.json +103 -10
  72. package/dist/custom-elements.json +1212 -586
  73. package/dist/divider.js +1 -0
  74. package/dist/divider.js.map +1 -1
  75. package/dist/dropdown-button.js +1 -0
  76. package/dist/dropdown-button.js.map +1 -1
  77. package/dist/elevation.js +1 -0
  78. package/dist/elevation.js.map +1 -1
  79. package/dist/empty-state.js +1 -0
  80. package/dist/empty-state.js.map +1 -1
  81. package/dist/estree-C2LDzX4U.js +47 -0
  82. package/dist/estree-C2LDzX4U.js.map +1 -0
  83. package/dist/fab.js +2 -3
  84. package/dist/fab.js.map +1 -1
  85. package/dist/field.js +1 -0
  86. package/dist/field.js.map +1 -1
  87. package/dist/{flow-designer-node-DsVwQTac.js → flow-designer-node-CGSm6cUH.js} +2 -1
  88. package/dist/{flow-designer-node-DsVwQTac.js.map → flow-designer-node-CGSm6cUH.js.map} +1 -1
  89. package/dist/flow-designer-node.js +1 -1
  90. package/dist/flow-designer.js +1 -1
  91. package/dist/html-D22sQuVy.js +27 -0
  92. package/dist/html-D22sQuVy.js.map +1 -0
  93. package/dist/html-editor.js +1 -0
  94. package/dist/html-editor.js.map +1 -1
  95. package/dist/icon-button.js +6 -5
  96. package/dist/icon-button.js.map +1 -1
  97. package/dist/icon.js +1 -0
  98. package/dist/icon.js.map +1 -1
  99. package/dist/index-_g_oLekF.js +14095 -0
  100. package/dist/index-_g_oLekF.js.map +1 -0
  101. package/dist/index.js +5 -4
  102. package/dist/index.js.map +1 -1
  103. package/dist/item.js +4 -2
  104. package/dist/item.js.map +1 -1
  105. package/dist/link.js +1 -0
  106. package/dist/link.js.map +1 -1
  107. package/dist/{list-D6JLh1uh.js → list-BBmnHm8f.js} +196 -20
  108. package/dist/list-BBmnHm8f.js.map +1 -0
  109. package/dist/list.js +2 -2
  110. package/dist/loader.js +6 -2
  111. package/dist/loader.js.map +1 -1
  112. package/dist/menu-item.js +104 -33
  113. package/dist/menu-item.js.map +1 -1
  114. package/dist/menu.js +5 -18
  115. package/dist/menu.js.map +1 -1
  116. package/dist/modal.js +1 -0
  117. package/dist/modal.js.map +1 -1
  118. package/dist/navigation-rail-item.js +22 -6
  119. package/dist/navigation-rail-item.js.map +1 -1
  120. package/dist/navigation-rail.js +23 -20
  121. package/dist/navigation-rail.js.map +1 -1
  122. package/dist/notification-manager.js +1 -0
  123. package/dist/notification-manager.js.map +1 -1
  124. package/dist/notification.js +1 -0
  125. package/dist/notification.js.map +1 -1
  126. package/dist/number-counter.js +1 -0
  127. package/dist/number-counter.js.map +1 -1
  128. package/dist/pagination.js +1 -0
  129. package/dist/pagination.js.map +1 -1
  130. package/dist/pierre-dark-DFWl0m-C.js +4 -0
  131. package/dist/pierre-dark-DFWl0m-C.js.map +1 -0
  132. package/dist/pierre-light-BEkAPImt.js +4 -0
  133. package/dist/pierre-light-BEkAPImt.js.map +1 -0
  134. package/dist/popover-content.js +1 -0
  135. package/dist/popover-content.js.map +1 -1
  136. package/dist/popover.js +1 -0
  137. package/dist/popover.js.map +1 -1
  138. package/dist/postcss-BhbitHaI.js +64 -0
  139. package/dist/postcss-BhbitHaI.js.map +1 -0
  140. package/dist/radio.js +1 -0
  141. package/dist/radio.js.map +1 -1
  142. package/dist/search.js +1 -0
  143. package/dist/search.js.map +1 -1
  144. package/dist/segmented-button-group.js +1 -0
  145. package/dist/segmented-button-group.js.map +1 -1
  146. package/dist/segmented-button.js +1 -0
  147. package/dist/segmented-button.js.map +1 -1
  148. package/dist/{select-Dwtk0RIU.js → select-D85kpjUt.js} +28 -7
  149. package/dist/{select-Dwtk0RIU.js.map → select-D85kpjUt.js.map} +1 -1
  150. package/dist/side-sheet.js +2 -1
  151. package/dist/side-sheet.js.map +1 -1
  152. package/dist/skeleton.js +1 -0
  153. package/dist/skeleton.js.map +1 -1
  154. package/dist/snackbar.js +1 -0
  155. package/dist/snackbar.js.map +1 -1
  156. package/dist/spinner.js +1 -0
  157. package/dist/spinner.js.map +1 -1
  158. package/dist/split-button.js +1 -0
  159. package/dist/split-button.js.map +1 -1
  160. package/dist/src/accordion/accordion-item.d.ts +1 -1
  161. package/dist/src/accordion/accordion.d.ts +3 -3
  162. package/dist/src/button/button/button.d.ts +2 -2
  163. package/dist/src/button/button-group/button-group.d.ts +4 -4
  164. package/dist/src/code-highlighter/code-highlighter.d.ts +2 -2
  165. package/dist/src/color-picker/color-picker.d.ts +85 -0
  166. package/dist/src/color-picker/index.d.ts +1 -0
  167. package/dist/src/index.d.ts +1 -0
  168. package/dist/src/item/item.d.ts +0 -1
  169. package/dist/src/list/list-item.d.ts +3 -1
  170. package/dist/src/list/list.d.ts +24 -0
  171. package/dist/src/menu/menu-item/menu-item.d.ts +1 -2
  172. package/dist/standalone-Ccq0tWwA.js +32 -0
  173. package/dist/standalone-Ccq0tWwA.js.map +1 -0
  174. package/dist/sub-menu.js +7 -1
  175. package/dist/sub-menu.js.map +1 -1
  176. package/dist/svg.js +1 -0
  177. package/dist/svg.js.map +1 -1
  178. package/dist/tab-group.js +1 -0
  179. package/dist/tab-group.js.map +1 -1
  180. package/dist/tab-panel.js +1 -0
  181. package/dist/tab-panel.js.map +1 -1
  182. package/dist/tab.js +1 -0
  183. package/dist/tab.js.map +1 -1
  184. package/dist/table.js +1 -0
  185. package/dist/table.js.map +1 -1
  186. package/dist/tabs.js +1 -0
  187. package/dist/tabs.js.map +1 -1
  188. package/dist/toolbar.js +1 -0
  189. package/dist/toolbar.js.map +1 -1
  190. package/dist/tooltip.js +1 -0
  191. package/dist/tooltip.js.map +1 -1
  192. package/dist/tsconfig.tsbuildinfo +1 -1
  193. package/package.json +1 -1
  194. package/readme.md +3 -3
  195. package/scss/mixin.scss +2 -0
  196. package/src/accordion/accordion-item.ts +16 -6
  197. package/src/accordion/accordion.scss +2 -2
  198. package/src/accordion/accordion.ts +7 -7
  199. package/src/button/button/button-base.scss +2 -1
  200. package/src/button/button/button-layers.scss +2 -6
  201. package/src/button/button/button.ts +3 -3
  202. package/src/button/button-group/button-group.ts +4 -4
  203. package/src/button/fab/fab.ts +0 -4
  204. package/src/card/card.scss +18 -5
  205. package/src/code-highlighter/code-highlighter.ts +94 -39
  206. package/src/color-picker/color-picker.scss +217 -0
  207. package/src/color-picker/color-picker.ts +478 -0
  208. package/src/color-picker/index.ts +1 -0
  209. package/src/index.ts +1 -0
  210. package/src/item/item.scss +3 -1
  211. package/src/item/item.ts +0 -1
  212. package/src/list/list-item.scss +5 -1
  213. package/src/list/list-item.ts +40 -14
  214. package/src/list/list.ts +164 -2
  215. package/src/loader.ts +4 -0
  216. package/src/menu/menu/menu.scss +4 -18
  217. package/src/menu/menu/menu.ts +0 -1
  218. package/src/menu/menu-item/menu-item.scss +73 -43
  219. package/src/menu/menu-item/menu-item.ts +60 -27
  220. package/src/menu/sub-menu/sub-menu.scss +5 -1
  221. package/src/navigation-rail/navigation-rail-item.scss +25 -8
  222. package/src/navigation-rail/navigation-rail.scss +25 -22
  223. package/src/side-sheet/side-sheet.ts +1 -1
  224. package/src/sidebar-menu/sidebar-menu-item.scss +14 -7
  225. package/dist/list-D6JLh1uh.js.map +0 -1
package/dist/badge.js CHANGED
@@ -5,6 +5,7 @@ import './directive-ZPhl09Yt.js';
5
5
 
6
6
  var css_248z = i`* {
7
7
  box-sizing: border-box;
8
+ -webkit-tap-highlight-color: transparent;
8
9
  }
9
10
 
10
11
  .screen-reader-only {
package/dist/badge.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"badge.js","sources":["../../src/badge/badge.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport styles from './badge.scss';\nimport IndividualComponent from '@/IndividualComponent.js';\n\n/**\n * @label Badge\n * @tag wc-badge\n * @rawTag badge\n * @summary The badge component is used to display a small amount of information to the user.\n *\n * @cssprop --badge-color - Controls the color of the badge.\n *\n * @example\n * ```html\n * <wc-badge value=\"1\"></wc-badge>\n * ```\n * @tags display\n */\n@IndividualComponent\nexport class Badge extends LitElement {\n static styles = [styles];\n\n /**\n * The value to display in the badge.\n */\n @property({ type: String }) value: string = '';\n\n render() {\n return html`<div\n class=${classMap({\n badge: true,\n 'has-value': !!this.value,\n })}\n >\n ${this.value}\n </div>`;\n }\n}\n"],"names":["LitElement","html","classMap","styles","property"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA;;;;;;;;;;;;;AAaG;AAEI,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQA,GAAU,CAAA;AAA9B,IAAA,WAAA,GAAA;;AAGL;;AAEG;QACyB,IAAA,CAAA,KAAK,GAAW,EAAE;IAYhD;IAVE,MAAM,GAAA;AACJ,QAAA,OAAOC,CAAI,CAAA,CAAA;AACD,YAAA,EAAAC,CAAQ,CAAC;AACf,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK;SAC1B,CAAC;;AAEA,MAAA,EAAA,IAAI,CAAC,KAAK;WACP;IACT;;AAhBO,KAAA,CAAA,MAAM,GAAG,CAACC,QAAM,CAAC;AAKI,UAAA,CAAA;AAA3B,IAAAC,CAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAAqB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AANpC,KAAK,GAAA,UAAA,CAAA;IADjB;AACY,CAAA,EAAA,KAAK,CAkBjB;;;;"}
1
+ {"version":3,"file":"badge.js","sources":["../../src/badge/badge.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport styles from './badge.scss';\nimport IndividualComponent from '@/IndividualComponent.js';\n\n/**\n * @label Badge\n * @tag wc-badge\n * @rawTag badge\n * @summary The badge component is used to display a small amount of information to the user.\n *\n * @cssprop --badge-color - Controls the color of the badge.\n *\n * @example\n * ```html\n * <wc-badge value=\"1\"></wc-badge>\n * ```\n * @tags display\n */\n@IndividualComponent\nexport class Badge extends LitElement {\n static styles = [styles];\n\n /**\n * The value to display in the badge.\n */\n @property({ type: String }) value: string = '';\n\n render() {\n return html`<div\n class=${classMap({\n badge: true,\n 'has-value': !!this.value,\n })}\n >\n ${this.value}\n </div>`;\n }\n}\n"],"names":["LitElement","html","classMap","styles","property"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA;;;;;;;;;;;;;AAaG;AAEI,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQA,GAAU,CAAA;AAA9B,IAAA,WAAA,GAAA;;AAGL;;AAEG;QACyB,IAAA,CAAA,KAAK,GAAW,EAAE;IAYhD;IAVE,MAAM,GAAA;AACJ,QAAA,OAAOC,CAAI,CAAA,CAAA;AACD,YAAA,EAAAC,CAAQ,CAAC;AACf,YAAA,KAAK,EAAE,IAAI;AACX,YAAA,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK;SAC1B,CAAC;;AAEA,MAAA,EAAA,IAAI,CAAC,KAAK;WACP;IACT;;AAhBO,KAAA,CAAA,MAAM,GAAG,CAACC,QAAM,CAAC;AAKI,UAAA,CAAA;AAA3B,IAAAC,CAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAAqB,CAAA,EAAA,KAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AANpC,KAAK,GAAA,UAAA,CAAA;IADjB;AACY,CAAA,EAAA,KAAK,CAkBjB;;;;"}
@@ -6,6 +6,7 @@ import './directive-ZPhl09Yt.js';
6
6
 
7
7
  var css_248z = i`* {
8
8
  box-sizing: border-box;
9
+ -webkit-tap-highlight-color: transparent;
9
10
  }
10
11
 
11
12
  .screen-reader-only {
@@ -1 +1 @@
1
- {"version":3,"file":"bottom-sheet.js","sources":["../../src/bottom-sheet/bottom-sheet.ts"],"sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport IndividualComponent from '../IndividualComponent.js';\nimport styles from './bottom-sheet.scss';\n\n/**\n * @label Bottom Sheet\n * @tag wc-bottom-sheet\n * @rawTag bottom-sheet\n * @summary Bottom sheets slide up from the bottom of the screen to reveal additional content. Supports standard and modal variants.\n *\n * @cssprop --bottom-sheet-container-color - Background color of the sheet container.\n * @cssprop --bottom-sheet-scrim-color - Color of the modal scrim overlay.\n * @cssprop --bottom-sheet-shape - Corner radius of the top edge.\n * @cssprop --bottom-sheet-max-height - Maximum height of the sheet.\n *\n * @example\n * ```html\n * Bottom Sheet\n * ```\n * @tags navigation, overlay\n */\n@IndividualComponent\nexport class BottomSheet extends LitElement {\n static styles = [styles];\n\n /** Whether the sheet is visible. */\n @property({ type: Boolean, reflect: true }) open = false;\n\n /**\n * Sheet variant.\n * - `\"standard\"`: Coexists with page content; no scrim.\n * - `\"modal\"`: Overlays page content with a scrim backdrop.\n */\n @property({ type: String, reflect: true }) variant: 'standard' | 'modal' =\n 'modal';\n\n /** Whether to show the drag handle. */\n @property({ type: Boolean, attribute: 'show-handle' }) showHandle = true;\n\n @state() private _dragging = false;\n\n @state() private _dragStartY = 0;\n\n @state() private _dragOffsetY = 0;\n\n show() {\n this.open = true;\n }\n\n hide() {\n this._close('programmatic');\n }\n\n private _close(reason: string) {\n if (!this.open) return;\n this.open = false;\n this.dispatchEvent(\n new CustomEvent('bottom-sheet-close', {\n detail: { reason },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _handleScrimClick() {\n if (this.variant === 'modal') {\n this._close('scrim');\n }\n }\n\n private _handleDragStart(e: PointerEvent) {\n this._dragging = true;\n this._dragStartY = e.clientY;\n this._dragOffsetY = 0;\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n }\n\n private _handleDragMove(e: PointerEvent) {\n if (!this._dragging) return;\n const delta = e.clientY - this._dragStartY;\n this._dragOffsetY = Math.max(0, delta);\n }\n\n private _handleDragEnd() {\n if (!this._dragging) return;\n this._dragging = false;\n if (this._dragOffsetY > 80) {\n this._close('drag');\n }\n this._dragOffsetY = 0;\n }\n\n render() {\n const translateY = this._dragging ? `${this._dragOffsetY}px` : undefined;\n\n return html`\n ${this.variant === 'modal'\n ? html`<div\n class=${classMap({ scrim: true, visible: this.open })}\n @click=${this._handleScrimClick}\n @keydown=${(e: KeyboardEvent) => {\n if (e.key === 'Escape') this._close('esc');\n }}\n ></div>`\n : nothing}\n\n <div\n class=${classMap({\n sheet: true,\n open: this.open,\n dragging: this._dragging,\n [`variant-${this.variant}`]: true,\n })}\n style=${translateY ? `transform: translateY(${translateY})` : ''}\n role=\"dialog\"\n aria-label=\"${this.ariaLabel ?? 'Bottom sheet'}\"\n aria-modal=${this.variant === 'modal' ? 'true' : 'false'}\n aria-hidden=${!this.open ? 'true' : 'false'}\n >\n ${this.showHandle\n ? html`<div\n class=\"handle-area\"\n @pointerdown=${this._handleDragStart}\n @pointermove=${this._handleDragMove}\n @pointerup=${this._handleDragEnd}\n @pointercancel=${this._handleDragEnd}\n >\n <div class=\"handle\"></div>\n </div>`\n : nothing}\n\n <div class=\"content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n"],"names":["LitElement","html","classMap","nothing","styles","property","state"],"mappings":"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"}
1
+ {"version":3,"file":"bottom-sheet.js","sources":["../../src/bottom-sheet/bottom-sheet.ts"],"sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport IndividualComponent from '../IndividualComponent.js';\nimport styles from './bottom-sheet.scss';\n\n/**\n * @label Bottom Sheet\n * @tag wc-bottom-sheet\n * @rawTag bottom-sheet\n * @summary Bottom sheets slide up from the bottom of the screen to reveal additional content. Supports standard and modal variants.\n *\n * @cssprop --bottom-sheet-container-color - Background color of the sheet container.\n * @cssprop --bottom-sheet-scrim-color - Color of the modal scrim overlay.\n * @cssprop --bottom-sheet-shape - Corner radius of the top edge.\n * @cssprop --bottom-sheet-max-height - Maximum height of the sheet.\n *\n * @example\n * ```html\n * Bottom Sheet\n * ```\n * @tags navigation, overlay\n */\n@IndividualComponent\nexport class BottomSheet extends LitElement {\n static styles = [styles];\n\n /** Whether the sheet is visible. */\n @property({ type: Boolean, reflect: true }) open = false;\n\n /**\n * Sheet variant.\n * - `\"standard\"`: Coexists with page content; no scrim.\n * - `\"modal\"`: Overlays page content with a scrim backdrop.\n */\n @property({ type: String, reflect: true }) variant: 'standard' | 'modal' =\n 'modal';\n\n /** Whether to show the drag handle. */\n @property({ type: Boolean, attribute: 'show-handle' }) showHandle = true;\n\n @state() private _dragging = false;\n\n @state() private _dragStartY = 0;\n\n @state() private _dragOffsetY = 0;\n\n show() {\n this.open = true;\n }\n\n hide() {\n this._close('programmatic');\n }\n\n private _close(reason: string) {\n if (!this.open) return;\n this.open = false;\n this.dispatchEvent(\n new CustomEvent('bottom-sheet-close', {\n detail: { reason },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _handleScrimClick() {\n if (this.variant === 'modal') {\n this._close('scrim');\n }\n }\n\n private _handleDragStart(e: PointerEvent) {\n this._dragging = true;\n this._dragStartY = e.clientY;\n this._dragOffsetY = 0;\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n }\n\n private _handleDragMove(e: PointerEvent) {\n if (!this._dragging) return;\n const delta = e.clientY - this._dragStartY;\n this._dragOffsetY = Math.max(0, delta);\n }\n\n private _handleDragEnd() {\n if (!this._dragging) return;\n this._dragging = false;\n if (this._dragOffsetY > 80) {\n this._close('drag');\n }\n this._dragOffsetY = 0;\n }\n\n render() {\n const translateY = this._dragging ? `${this._dragOffsetY}px` : undefined;\n\n return html`\n ${this.variant === 'modal'\n ? html`<div\n class=${classMap({ scrim: true, visible: this.open })}\n @click=${this._handleScrimClick}\n @keydown=${(e: KeyboardEvent) => {\n if (e.key === 'Escape') this._close('esc');\n }}\n ></div>`\n : nothing}\n\n <div\n class=${classMap({\n sheet: true,\n open: this.open,\n dragging: this._dragging,\n [`variant-${this.variant}`]: true,\n })}\n style=${translateY ? `transform: translateY(${translateY})` : ''}\n role=\"dialog\"\n aria-label=\"${this.ariaLabel ?? 'Bottom sheet'}\"\n aria-modal=${this.variant === 'modal' ? 'true' : 'false'}\n aria-hidden=${!this.open ? 'true' : 'false'}\n >\n ${this.showHandle\n ? html`<div\n class=\"handle-area\"\n @pointerdown=${this._handleDragStart}\n @pointermove=${this._handleDragMove}\n @pointerup=${this._handleDragEnd}\n @pointercancel=${this._handleDragEnd}\n >\n <div class=\"handle\"></div>\n </div>`\n : nothing}\n\n <div class=\"content\">\n <slot></slot>\n </div>\n </div>\n `;\n }\n}\n"],"names":["LitElement","html","classMap","nothing","styles","property","state"],"mappings":"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"}
@@ -7,6 +7,7 @@ import './directive-ZPhl09Yt.js';
7
7
 
8
8
  var css_248z = i`* {
9
9
  box-sizing: border-box;
10
+ -webkit-tap-highlight-color: transparent;
10
11
  }
11
12
 
12
13
  .screen-reader-only {
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumb-item.js","sources":["../../src/breadcrumb/breadcrumb-item/breadcrumb-item.ts"],"sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport styles from './breadcrumb-item.scss';\nimport IndividualComponent from '@/IndividualComponent.js';\n\n/**\n * @label Breadcrumb Item\n * @tag wc-breadcrumb-item\n * @rawTag breadcrumb-item\n * @summary A breadcrumb item component that represents a single item in a breadcrumb navigation.\n * @tags navigation\n *\n * @example\n * ```html\n * <wc-breadcrumb-item href=\"#\">Home</wc-breadcrumb-item>\n * ```\n */\n@IndividualComponent\nexport class BreadcrumbItem extends LitElement {\n static styles = [styles];\n\n /**\n * Hyperlink to navigate to on click.\n */\n @property({ reflect: true }) href?: string;\n\n /**\n * Sets or retrieves the window or frame at which to target content.\n */\n @property() target?: string;\n\n /**\n * Indicates if this is the active (current) breadcrumb item.\n */\n @property({ type: Boolean, reflect: true }) active = false;\n\n /**\n * Custom separator character. If not provided, default \"/\" is used.\n */\n @property({ type: String }) separator?: string;\n\n /** 1-based position among sibling breadcrumb items, used for schema.org `ListItem` metadata. */\n @state()\n private position = 1;\n\n connectedCallback() {\n super.connectedCallback();\n this.calculatePosition();\n }\n\n private calculatePosition() {\n // Calculate position by counting sibling breadcrumb items\n if (this.parentElement) {\n const items = Array.from(\n this.parentElement.querySelectorAll('p-breadcrumb-item'),\n );\n this.position = items.indexOf(this) + 1;\n }\n }\n\n render() {\n return html`\n <li\n class=${classMap({ 'breadcrumb-item': true, active: this.active })}\n itemprop=\"itemListElement\"\n itemscope\n itemtype=\"https://schema.org/ListItem\"\n >\n ${this.active\n ? html`\n <span aria-current=\"page\" itemprop=\"name\">\n <slot></slot>\n </span>\n `\n : html`\n <a\n class=\"breadcrumb-link\"\n itemprop=\"item\"\n href=${ifDefined(this.href)}\n target=${ifDefined(this.target)}\n ${this.target === '_blank'\n ? html`rel=\"noopener noreferrer\"`\n : nothing}\n >\n <span itemprop=\"name\">\n <slot></slot>\n </span>\n </a>\n `}\n <meta itemprop=\"position\" content=${String(this.position)} />\n ${this.separator\n ? html`<span class=\"separator\" aria-hidden=\"true\"\n >${this.separator}</span\n >`\n : nothing}\n </li>\n `;\n }\n}\n"],"names":["LitElement","html","classMap","ifDefined","nothing","styles","property","state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA;;;;;;;;;;;AAWG;AAEI,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQA,GAAU,CAAA;AAAvC,IAAA,WAAA,GAAA;;AAaL;;AAEG;QACyC,IAAA,CAAA,MAAM,GAAG,KAAK;;QASlD,IAAA,CAAA,QAAQ,GAAG,CAAC;IAuDtB;IArDE,iBAAiB,GAAA;QACf,KAAK,CAAC,iBAAiB,EAAE;QACzB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEQ,iBAAiB,GAAA;;AAEvB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CACzD;YACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACzC;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,OAAOC,CAAI,CAAA;;AAEC,cAAA,EAAAC,CAAQ,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;;;;;AAKhE,QAAA,EAAA,IAAI,CAAC;cACHD,CAAI,CAAA;;;;AAIH,YAAA;cACDA,CAAI,CAAA;;;;AAIO,qBAAA,EAAAE,CAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AAClB,uBAAA,EAAAA,CAAS,CAAC,IAAI,CAAC,MAAM,CAAC;kBAC7B,IAAI,CAAC,MAAM,KAAK;kBACdF,CAAI,CAAA,CAAA,yBAAA;AACN,kBAAEG,CAAO;;;;;;AAMd,YAAA,CAAA;AAC+B,0CAAA,EAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AACvD,QAAA,EAAA,IAAI,CAAC;cACHH,CAAI,CAAA,CAAA;AACC,eAAA,EAAA,IAAI,CAAC,SAAS,CAAA;AACjB,aAAA;AACJ,cAAEG,CAAO;;KAEd;IACH;;AA9EO,cAAA,CAAA,MAAM,GAAG,CAACC,QAAM,CAAC;AAKK,UAAA,CAAA;AAA5B,IAAAC,CAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;AAAgB,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA;AAK/B,UAAA,CAAA;AAAX,IAAAA,CAAQ;AAAmB,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,CAAA;AAKgB,UAAA,CAAA;IAA3CA,CAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAAiB,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,CAAA;AAK/B,UAAA,CAAA;AAA3B,IAAAA,CAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAAqB,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,WAAA,EAAA,MAAA,CAAA;AAIvC,UAAA,CAAA;AADP,IAAAC,CAAK;AACe,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AAzBV,cAAc,GAAA,UAAA,CAAA;IAD1B;AACY,CAAA,EAAA,cAAc,CAgF1B;;;;"}
1
+ {"version":3,"file":"breadcrumb-item.js","sources":["../../src/breadcrumb/breadcrumb-item/breadcrumb-item.ts"],"sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport styles from './breadcrumb-item.scss';\nimport IndividualComponent from '@/IndividualComponent.js';\n\n/**\n * @label Breadcrumb Item\n * @tag wc-breadcrumb-item\n * @rawTag breadcrumb-item\n * @summary A breadcrumb item component that represents a single item in a breadcrumb navigation.\n * @tags navigation\n *\n * @example\n * ```html\n * <wc-breadcrumb-item href=\"#\">Home</wc-breadcrumb-item>\n * ```\n */\n@IndividualComponent\nexport class BreadcrumbItem extends LitElement {\n static styles = [styles];\n\n /**\n * Hyperlink to navigate to on click.\n */\n @property({ reflect: true }) href?: string;\n\n /**\n * Sets or retrieves the window or frame at which to target content.\n */\n @property() target?: string;\n\n /**\n * Indicates if this is the active (current) breadcrumb item.\n */\n @property({ type: Boolean, reflect: true }) active = false;\n\n /**\n * Custom separator character. If not provided, default \"/\" is used.\n */\n @property({ type: String }) separator?: string;\n\n /** 1-based position among sibling breadcrumb items, used for schema.org `ListItem` metadata. */\n @state()\n private position = 1;\n\n connectedCallback() {\n super.connectedCallback();\n this.calculatePosition();\n }\n\n private calculatePosition() {\n // Calculate position by counting sibling breadcrumb items\n if (this.parentElement) {\n const items = Array.from(\n this.parentElement.querySelectorAll('p-breadcrumb-item'),\n );\n this.position = items.indexOf(this) + 1;\n }\n }\n\n render() {\n return html`\n <li\n class=${classMap({ 'breadcrumb-item': true, active: this.active })}\n itemprop=\"itemListElement\"\n itemscope\n itemtype=\"https://schema.org/ListItem\"\n >\n ${this.active\n ? html`\n <span aria-current=\"page\" itemprop=\"name\">\n <slot></slot>\n </span>\n `\n : html`\n <a\n class=\"breadcrumb-link\"\n itemprop=\"item\"\n href=${ifDefined(this.href)}\n target=${ifDefined(this.target)}\n ${this.target === '_blank'\n ? html`rel=\"noopener noreferrer\"`\n : nothing}\n >\n <span itemprop=\"name\">\n <slot></slot>\n </span>\n </a>\n `}\n <meta itemprop=\"position\" content=${String(this.position)} />\n ${this.separator\n ? html`<span class=\"separator\" aria-hidden=\"true\"\n >${this.separator}</span\n >`\n : nothing}\n </li>\n `;\n }\n}\n"],"names":["LitElement","html","classMap","ifDefined","nothing","styles","property","state"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA;;;;;;;;;;;AAWG;AAEI,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQA,GAAU,CAAA;AAAvC,IAAA,WAAA,GAAA;;AAaL;;AAEG;QACyC,IAAA,CAAA,MAAM,GAAG,KAAK;;QASlD,IAAA,CAAA,QAAQ,GAAG,CAAC;IAuDtB;IArDE,iBAAiB,GAAA;QACf,KAAK,CAAC,iBAAiB,EAAE;QACzB,IAAI,CAAC,iBAAiB,EAAE;IAC1B;IAEQ,iBAAiB,GAAA;;AAEvB,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CACzD;YACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QACzC;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,OAAOC,CAAI,CAAA;;AAEC,cAAA,EAAAC,CAAQ,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;;;;;AAKhE,QAAA,EAAA,IAAI,CAAC;cACHD,CAAI,CAAA;;;;AAIH,YAAA;cACDA,CAAI,CAAA;;;;AAIO,qBAAA,EAAAE,CAAS,CAAC,IAAI,CAAC,IAAI,CAAC;AAClB,uBAAA,EAAAA,CAAS,CAAC,IAAI,CAAC,MAAM,CAAC;kBAC7B,IAAI,CAAC,MAAM,KAAK;kBACdF,CAAI,CAAA,CAAA,yBAAA;AACN,kBAAEG,CAAO;;;;;;AAMd,YAAA,CAAA;AAC+B,0CAAA,EAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;AACvD,QAAA,EAAA,IAAI,CAAC;cACHH,CAAI,CAAA,CAAA;AACC,eAAA,EAAA,IAAI,CAAC,SAAS,CAAA;AACjB,aAAA;AACJ,cAAEG,CAAO;;KAEd;IACH;;AA9EO,cAAA,CAAA,MAAM,GAAG,CAACC,QAAM,CAAC;AAKK,UAAA,CAAA;AAA5B,IAAAC,CAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;AAAgB,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA;AAK/B,UAAA,CAAA;AAAX,IAAAA,CAAQ;AAAmB,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,CAAA;AAKgB,UAAA,CAAA;IAA3CA,CAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAAiB,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,QAAA,EAAA,MAAA,CAAA;AAK/B,UAAA,CAAA;AAA3B,IAAAA,CAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAAqB,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,WAAA,EAAA,MAAA,CAAA;AAIvC,UAAA,CAAA;AADP,IAAAC,CAAK;AACe,CAAA,EAAA,cAAA,CAAA,SAAA,EAAA,UAAA,EAAA,MAAA,CAAA;AAzBV,cAAc,GAAA,UAAA,CAAA;IAD1B;AACY,CAAA,EAAA,cAAc,CAgF1B;;;;"}
@@ -8,6 +8,7 @@ import './if-defined-BXZpRQ4P.js';
8
8
 
9
9
  var css_248z = i`* {
10
10
  box-sizing: border-box;
11
+ -webkit-tap-highlight-color: transparent;
11
12
  }
12
13
 
13
14
  .screen-reader-only {
@@ -1 +1 @@
1
- {"version":3,"file":"breadcrumb.js","sources":["../../src/breadcrumb/breadcrumb/breadcrumb.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport styles from './breadcrumb.scss';\nimport { BreadcrumbItem } from '../breadcrumb-item/breadcrumb-item.js';\nimport IndividualComponent from '@/IndividualComponent.js';\n\n/**\n * @label Breadcrumb\n * @tag wc-breadcrumb\n * @rawTag breadcrumb\n * @summary A breadcrumb is a secondary navigation scheme that reveals the user's location in a website or web application.\n * @overview\n * - Breadcrumbs provide a trail for users to follow back to the starting or entry point.\n * - They help users understand their current location within the site hierarchy.\n * - Follows WCAG 2.1 guidelines for accessible navigation landmarks.\n * @tags navigation\n *\n * @example\n * ```html\n * <wc-breadcrumb label=\"Breadcrumb\">\n * <wc-breadcrumb-item href=\"#\">Home</wc-breadcrumb-item>\n * <wc-breadcrumb-item href=\"#\">Category</wc-breadcrumb-item>\n * <wc-breadcrumb-item active>Current Page</wc-breadcrumb-item>\n * </wc-breadcrumb>\n * ```\n */\n@IndividualComponent\nexport class Breadcrumb extends LitElement {\n static styles = [styles];\n\n static Item = BreadcrumbItem;\n\n /**\n * Accessible label for the breadcrumb navigation landmark.\n */\n @property({ type: String }) label = 'Breadcrumb';\n\n render() {\n return html`<nav aria-label=${this.label} class=\"breadcrumb\">\n <ol>\n <slot></slot>\n </ol>\n </nav>`;\n }\n}\n"],"names":["LitElement","html","styles","property"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA;;;;;;;;;;;;;;;;;;;AAmBG;AAEI,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQA,GAAU,CAAA;AAAnC,IAAA,WAAA,GAAA;;AAKL;;AAEG;QACyB,IAAA,CAAA,KAAK,GAAG,YAAY;IASlD;IAPE,MAAM,GAAA;AACJ,QAAA,OAAOC,CAAI,CAAA,CAAA,gBAAA,EAAmB,IAAI,CAAC,KAAK,CAAA;;;;WAIjC;IACT;;AAfO,UAAA,CAAA,MAAM,GAAG,CAACC,QAAM,CAAC;AAEjB,UAAA,CAAA,IAAI,GAAG,cAAH;AAKiB,UAAA,CAAA;AAA3B,IAAAC,CAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAAuB,CAAA,EAAA,UAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AARtC,UAAU,GAAA,UAAA,CAAA;IADtB;AACY,CAAA,EAAA,UAAU,CAiBtB;;;;"}
1
+ {"version":3,"file":"breadcrumb.js","sources":["../../src/breadcrumb/breadcrumb/breadcrumb.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport styles from './breadcrumb.scss';\nimport { BreadcrumbItem } from '../breadcrumb-item/breadcrumb-item.js';\nimport IndividualComponent from '@/IndividualComponent.js';\n\n/**\n * @label Breadcrumb\n * @tag wc-breadcrumb\n * @rawTag breadcrumb\n * @summary A breadcrumb is a secondary navigation scheme that reveals the user's location in a website or web application.\n * @overview\n * - Breadcrumbs provide a trail for users to follow back to the starting or entry point.\n * - They help users understand their current location within the site hierarchy.\n * - Follows WCAG 2.1 guidelines for accessible navigation landmarks.\n * @tags navigation\n *\n * @example\n * ```html\n * <wc-breadcrumb label=\"Breadcrumb\">\n * <wc-breadcrumb-item href=\"#\">Home</wc-breadcrumb-item>\n * <wc-breadcrumb-item href=\"#\">Category</wc-breadcrumb-item>\n * <wc-breadcrumb-item active>Current Page</wc-breadcrumb-item>\n * </wc-breadcrumb>\n * ```\n */\n@IndividualComponent\nexport class Breadcrumb extends LitElement {\n static styles = [styles];\n\n static Item = BreadcrumbItem;\n\n /**\n * Accessible label for the breadcrumb navigation landmark.\n */\n @property({ type: String }) label = 'Breadcrumb';\n\n render() {\n return html`<nav aria-label=${this.label} class=\"breadcrumb\">\n <ol>\n <slot></slot>\n </ol>\n </nav>`;\n }\n}\n"],"names":["LitElement","html","styles","property"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA;;;;;;;;;;;;;;;;;;;AAmBG;AAEI,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQA,GAAU,CAAA;AAAnC,IAAA,WAAA,GAAA;;AAKL;;AAEG;QACyB,IAAA,CAAA,KAAK,GAAG,YAAY;IASlD;IAPE,MAAM,GAAA;AACJ,QAAA,OAAOC,CAAI,CAAA,CAAA,gBAAA,EAAmB,IAAI,CAAC,KAAK,CAAA;;;;WAIjC;IACT;;AAfO,UAAA,CAAA,MAAM,GAAG,CAACC,QAAM,CAAC;AAEjB,UAAA,CAAA,IAAI,GAAG,cAAH;AAKiB,UAAA,CAAA;AAA3B,IAAAC,CAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE;AAAuB,CAAA,EAAA,UAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AARtC,UAAU,GAAA,UAAA,CAAA;IADtB;AACY,CAAA,EAAA,UAAU,CAiBtB;;;;"}
@@ -19,6 +19,7 @@ import './throttle-C7ZAPqtu.js';
19
19
 
20
20
  var css_248z = i`* {
21
21
  box-sizing: border-box;
22
+ -webkit-tap-highlight-color: transparent;
22
23
  }
23
24
 
24
25
  .screen-reader-only {
@@ -99,14 +100,14 @@ var css_248z = i`* {
99
100
 
100
101
  * @example
101
102
  * ```html
102
- * <wc-button-group connected="true">
103
- * <wc-icon-button toggle="true" shaped="wide">
103
+ * <wc-button-group connected>
104
+ * <wc-icon-button toggle="true" shape="wide" selected>
104
105
  * <wc-icon name="format_bold"></wc-icon>
105
106
  * </wc-icon-button>
106
- * <wc-icon-button toggle="true" shaped="wide">
107
+ * <wc-icon-button toggle="true" shape="wide">
107
108
  * <wc-icon name="format_italic"></wc-icon>
108
109
  * </wc-icon-button>
109
- * <wc-icon-button toggle="true" shaped="wide">
110
+ * <wc-icon-button toggle="true" shape="wide">
110
111
  * <wc-icon name="format_underlined"></wc-icon>
111
112
  * </wc-icon-button>
112
113
  * </wc-button-group>
@@ -1 +1 @@
1
- {"version":3,"file":"button-group.js","sources":["../../src/button/button-group/button-group.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport IndividualComponent from '@/IndividualComponent.js';\nimport styles from './button-group.scss';\nimport { Button, ButtonColor } from '../button/button.js';\nimport { IconButton } from '../icon-button/icon-button.js';\n\n/**\n * @label Button Group\n * @tag wc-button-group\n * @rawTag button-group\n *\n * @summary Group a series of buttons together on a single line with the button group, and super-power.\n\n * @example\n * ```html\n * <wc-button-group connected=\"true\">\n * <wc-icon-button toggle=\"true\" shaped=\"wide\">\n * <wc-icon name=\"format_bold\"></wc-icon>\n * </wc-icon-button>\n * <wc-icon-button toggle=\"true\" shaped=\"wide\">\n * <wc-icon name=\"format_italic\"></wc-icon>\n * </wc-icon-button>\n * <wc-icon-button toggle=\"true\" shaped=\"wide\">\n * <wc-icon name=\"format_underlined\"></wc-icon>\n * </wc-icon-button>\n * </wc-button-group>\n * ```\n *\n * @tags controls\n */\n@IndividualComponent\nclass ButtonGroup extends LitElement {\n // Lit prefers CSS-in-JS for better performance and scoping.\n // If you prefer keeping the SCSS file, you'll need a build tool (like Vite or Webpack)\n // that can import .scss files as lit-css.\n static styles = [styles];\n\n static Button = Button;\n\n static IconButton = IconButton;\n\n /**\n * Button size.\n * Possible values are `\"sm\"`, `\"md\"`, `\"lg\"`. Defaults to `\"md\"`.\n */\n @property({ reflect: true }) size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'sm';\n\n /**\n * Layout variant of the button group.\n * `\"standard\"` shows buttons with a small gap between them.\n * `\"connected\"` places buttons with a 2px gap;\n * rounded outer corners and middle buttons keep standard rounded corners.\n * Defaults to `\"standard\"`.\n */\n @property({ type: Boolean, reflect: true }) connected = false;\n\n /**\n * Color applied to all buttons in the group.\n * Possible values are `\"primary\"`, `\"success\"`, `\"danger\"`, `\"warning\"`, `\"surface\"`, `\"on-surface\"`.\n */\n @property({ reflect: true }) color?: ButtonColor;\n\n /**\n * Visual style applied to all buttons in the group.\n * Possible values are `\"filled\"`, `\"tonal\"`, `\"outlined\"`.\n */\n @property({ attribute: 'variant', reflect: true }) variant?:\n | 'filled'\n | 'tonal'\n | 'outlined';\n\n override updated() {\n this._syncButtonProperties();\n }\n\n private _getSlottedElements(): HTMLElement[] {\n const slot = this.shadowRoot?.querySelector('slot');\n return (slot?.assignedElements({ flatten: true }) ?? []) as HTMLElement[];\n }\n\n private _syncButtonProperties() {\n const children = this._getSlottedElements();\n children.forEach((child, index) => {\n ['color', 'variant', 'toggle', 'size'].forEach(prop => {\n // @ts-ignore\n if (this[prop] && prop in child) {\n // @ts-ignore\n (child as any)[prop] = this[prop];\n }\n });\n });\n }\n\n render() {\n return html`\n <slot @slotchange=${() => this._syncButtonProperties()}></slot>\n `;\n }\n}\n\nexport default ButtonGroup;\n"],"names":["LitElement","html","styles","property"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AAEH,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQA,GAAU,CAAA;AAApC,IAAA,WAAA,GAAA;;AAUE;;;AAGG;QAC0B,IAAA,CAAA,IAAI,GAAqC,IAAI;AAE1E;;;;;;AAMG;QACyC,IAAA,CAAA,SAAS,GAAG,KAAK;IA4C/D;IA3BW,OAAO,GAAA;QACd,IAAI,CAAC,qBAAqB,EAAE;IAC9B;IAEQ,mBAAmB,GAAA;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC;AACnD,QAAA,QAAQ,IAAI,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE;IACzD;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE;QAC3C,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AAChC,YAAA,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;;gBAEpD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE;;oBAE9B,KAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBACnC;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,MAAM,GAAA;AACJ,QAAA,OAAOC,CAAI,CAAA;AACW,wBAAA,EAAA,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAA;KACvD;IACH;;AAjEA;AACA;AACA;AACO,WAAA,CAAA,MAAM,GAAG,CAACC,QAAM,CAAC;AAEjB,WAAA,CAAA,MAAM,GAAG,MAAH;AAEN,WAAA,CAAA,UAAU,GAAG,UAAH;AAMY,UAAA,CAAA;AAA5B,IAAAC,CAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;AAAgD,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA;AAS/B,UAAA,CAAA;IAA3CA,CAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAAoB,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,WAAA,EAAA,MAAA,CAAA;AAMjC,UAAA,CAAA;AAA5B,IAAAA,CAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;AAAsB,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAME,UAAA,CAAA;IAAlDA,CAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;AAGlC,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,CAAA;AAtCX,WAAW,GAAA,UAAA,CAAA;IADhB;AACK,CAAA,EAAA,WAAW,CAmEhB;AAED,oBAAe,WAAW;;;;"}
1
+ {"version":3,"file":"button-group.js","sources":["../../src/button/button-group/button-group.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport IndividualComponent from '@/IndividualComponent.js';\nimport styles from './button-group.scss';\nimport { Button, ButtonColor } from '../button/button.js';\nimport { IconButton } from '../icon-button/icon-button.js';\n\n/**\n * @label Button Group\n * @tag wc-button-group\n * @rawTag button-group\n *\n * @summary Group a series of buttons together on a single line with the button group, and super-power.\n\n * @example\n * ```html\n * <wc-button-group connected>\n * <wc-icon-button toggle=\"true\" shape=\"wide\" selected>\n * <wc-icon name=\"format_bold\"></wc-icon>\n * </wc-icon-button>\n * <wc-icon-button toggle=\"true\" shape=\"wide\">\n * <wc-icon name=\"format_italic\"></wc-icon>\n * </wc-icon-button>\n * <wc-icon-button toggle=\"true\" shape=\"wide\">\n * <wc-icon name=\"format_underlined\"></wc-icon>\n * </wc-icon-button>\n * </wc-button-group>\n * ```\n *\n * @tags controls\n */\n@IndividualComponent\nclass ButtonGroup extends LitElement {\n // Lit prefers CSS-in-JS for better performance and scoping.\n // If you prefer keeping the SCSS file, you'll need a build tool (like Vite or Webpack)\n // that can import .scss files as lit-css.\n static styles = [styles];\n\n static Button = Button;\n\n static IconButton = IconButton;\n\n /**\n * Button size.\n * Possible values are `\"sm\"`, `\"md\"`, `\"lg\"`. Defaults to `\"md\"`.\n */\n @property({ reflect: true }) size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' = 'sm';\n\n /**\n * Layout variant of the button group.\n * `\"standard\"` shows buttons with a small gap between them.\n * `\"connected\"` places buttons with a 2px gap;\n * rounded outer corners and middle buttons keep standard rounded corners.\n * Defaults to `\"standard\"`.\n */\n @property({ type: Boolean, reflect: true }) connected = false;\n\n /**\n * Color applied to all buttons in the group.\n * Possible values are `\"primary\"`, `\"success\"`, `\"danger\"`, `\"warning\"`, `\"surface\"`, `\"on-surface\"`.\n */\n @property({ reflect: true }) color?: ButtonColor;\n\n /**\n * Visual style applied to all buttons in the group.\n * Possible values are `\"filled\"`, `\"tonal\"`, `\"outlined\"`.\n */\n @property({ attribute: 'variant', reflect: true }) variant?:\n | 'filled'\n | 'tonal'\n | 'outlined';\n\n override updated() {\n this._syncButtonProperties();\n }\n\n private _getSlottedElements(): HTMLElement[] {\n const slot = this.shadowRoot?.querySelector('slot');\n return (slot?.assignedElements({ flatten: true }) ?? []) as HTMLElement[];\n }\n\n private _syncButtonProperties() {\n const children = this._getSlottedElements();\n children.forEach((child, index) => {\n ['color', 'variant', 'toggle', 'size'].forEach(prop => {\n // @ts-ignore\n if (this[prop] && prop in child) {\n // @ts-ignore\n (child as any)[prop] = this[prop];\n }\n });\n });\n }\n\n render() {\n return html`\n <slot @slotchange=${() => this._syncButtonProperties()}></slot>\n `;\n }\n}\n\nexport default ButtonGroup;\n"],"names":["LitElement","html","styles","property"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AAEH,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQA,GAAU,CAAA;AAApC,IAAA,WAAA,GAAA;;AAUE;;;AAGG;QAC0B,IAAA,CAAA,IAAI,GAAqC,IAAI;AAE1E;;;;;;AAMG;QACyC,IAAA,CAAA,SAAS,GAAG,KAAK;IA4C/D;IA3BW,OAAO,GAAA;QACd,IAAI,CAAC,qBAAqB,EAAE;IAC9B;IAEQ,mBAAmB,GAAA;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC;AACnD,QAAA,QAAQ,IAAI,EAAE,gBAAgB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE;IACzD;IAEQ,qBAAqB,GAAA;AAC3B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE;QAC3C,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AAChC,YAAA,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;;gBAEpD,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE;;oBAE9B,KAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;gBACnC;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,MAAM,GAAA;AACJ,QAAA,OAAOC,CAAI,CAAA;AACW,wBAAA,EAAA,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAA;KACvD;IACH;;AAjEA;AACA;AACA;AACO,WAAA,CAAA,MAAM,GAAG,CAACC,QAAM,CAAC;AAEjB,WAAA,CAAA,MAAM,GAAG,MAAH;AAEN,WAAA,CAAA,UAAU,GAAG,UAAH;AAMY,UAAA,CAAA;AAA5B,IAAAC,CAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;AAAgD,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,MAAA,EAAA,MAAA,CAAA;AAS/B,UAAA,CAAA;IAA3CA,CAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;AAAoB,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,WAAA,EAAA,MAAA,CAAA;AAMjC,UAAA,CAAA;AAA5B,IAAAA,CAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE;AAAsB,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,OAAA,EAAA,MAAA,CAAA;AAME,UAAA,CAAA;IAAlDA,CAAQ,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE;AAGlC,CAAA,EAAA,WAAA,CAAA,SAAA,EAAA,SAAA,EAAA,MAAA,CAAA;AAtCX,WAAW,GAAA,UAAA,CAAA;IADhB;AACK,CAAA,EAAA,WAAW,CAmEhB;AAED,oBAAe,WAAW;;;;"}
package/dist/button.js CHANGED
@@ -59,7 +59,7 @@ var css_248z = i`.button {
59
59
  }
60
60
 
61
61
  .focus-ring {
62
- z-index: 2;
62
+ z-index: 1;
63
63
  pointer-events: none;
64
64
  --focus-ring-container-shape-start-start: var(
65
65
  --private-button-container-shape-start-start,
@@ -98,7 +98,6 @@ var css_248z = i`.button {
98
98
  position: absolute;
99
99
  inset: 0;
100
100
  pointer-events: none;
101
- z-index: 2;
102
101
  --skeleton-container-shape-start-start: var(
103
102
  --private-button-container-shape-start-start,
104
103
  var(--private-button-container-shape)
@@ -150,7 +149,6 @@ var css_248z = i`.button {
150
149
  position: absolute;
151
150
  inset: 0;
152
151
  pointer-events: none;
153
- z-index: 0;
154
152
  border: var(--private-button-outline-width) solid var(--private-button-outline-color);
155
153
  opacity: var(--private-button-outline-opacity, 1);
156
154
  border-start-start-radius: var(--private-button-container-shape-start-start, var(--private-button-container-shape));
@@ -165,11 +163,12 @@ var css_248z = i`.button {
165
163
  }
166
164
 
167
165
  .tooltip {
168
- z-index: 3;
166
+ z-index: 1;
169
167
  }
170
168
 
171
169
  * {
172
170
  box-sizing: border-box;
171
+ -webkit-tap-highlight-color: transparent;
173
172
  }
174
173
 
175
174
  .screen-reader-only {
@@ -226,6 +225,7 @@ var css_248z = i`.button {
226
225
  text-decoration: none;
227
226
  color: inherit;
228
227
  cursor: pointer;
228
+ outline: none;
229
229
  }
230
230
  .native-link:link, .native-link:visited, .native-link:hover, .native-link:active {
231
231
  text-decoration: none;
@@ -239,7 +239,6 @@ var css_248z = i`.button {
239
239
  height: var(--button-height);
240
240
  padding: 0 var(--button-container-padding, var(--private-button-container-padding));
241
241
  width: 100%;
242
- z-index: 0;
243
242
  }
244
243
  .button .label {
245
244
  font-family: var(--font-family-sans) !important;
@@ -250,6 +249,8 @@ var css_248z = i`.button {
250
249
  color: var(--private-button-label-text-color);
251
250
  --icon-size: var(--button-icon-size, var(--private-button-icon-size));
252
251
  --icon-color: var(--private-button-label-text-color);
252
+ opacity: var(--private-button-label-text-opacity, 1);
253
+ display: inline-flex;
253
254
  pointer-events: none;
254
255
  }
255
256
  .button .touch {
@@ -882,10 +883,10 @@ let Button = class Button extends mixinBaseButton(mixinHyperlink(mixinDelegatesA
882
883
  super();
883
884
  // ── Properties ───────────────────────────────────────────────────────────
884
885
  /**
885
- * Icon alignment.
886
- * Possible values are `"start"`, `"end"`. Defaults to `"end"`.
886
+ * When `true` (default), the icon is placed after the label (trailing).
887
+ * When `false`, the icon is placed before the label (leading).
887
888
  */
888
- this.trailingIcon = false;
889
+ this.trailingIcon = true;
889
890
  /**
890
891
  * Button size.
891
892
  * Possible values are `"xs"`, `"sm"`, `"md"`, `"lg"`, `"xl"`. Defaults to `"sm"`.
@@ -1 +1 @@
1
- {"version":3,"file":"button.js","sources":["../../src/button/button/button.ts"],"sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { when } from 'lit/directives/when.js';\nimport IndividualComponent from '@/IndividualComponent.js';\nimport styles from './button.scss';\n\nimport type {\n ButtonSize,\n ButtonLevel,\n ButtonShape,\n ButtonVariant,\n ButtonColor,\n} from '@/button/ButtonTypes.js';\nimport { isLink } from '@/__internal/utils/is-link.js';\nimport { observerSlotChangesWithCallback } from '@/__internal/utils/observe-slot-change.js';\nimport {\n dispatchActivationClick,\n isActivationClick,\n} from '@/__internal/utils/dispatch-event-utils.js';\nimport { DISABLED_REASON_ID } from '@/button/ButtonConstants.js';\nimport { mixinDelegatesAria } from '@/__internal/aria/delegate.js';\nimport { ARIAMixinStrict } from '@/__internal/aria/aria.js';\nimport { mixinFormSubmitter } from '@/__internal/mixins/form-submitter.js';\nimport { mixinElementInternals } from '@/__internal/mixins/element-internals.js';\nimport { mixinBaseButton } from '../base-button/base-button.js';\nimport { mixinFormAssociated } from '@/__internal/mixins/form-associated.js';\nimport { mixinHyperlink } from '@/__internal/mixins/hyperlink.js';\nexport type {\n ButtonSize,\n ButtonLevel,\n ButtonShape,\n ButtonVariant,\n ButtonColor,\n} from '@/button/ButtonTypes.js';\n\n/**\n * @label Button\n * @tag wc-button\n * @rawTag button\n *\n * @summary Buttons help people initiate actions, from sending an email, to sharing a document, to liking a post.\n * @overview\n * <p>Buttons are clickable elements that are used to trigger actions. They communicate calls to action to the user and allow users to interact with pages in a variety of ways. Button labels express what action will occur when the user interacts with it.</p>\n *\n * @cssprop --button-container-shape: Defines the border radius of the button container shape.\n *\n * @cssprop --button-container-shape-start-start: Defines the start position of the button container shape.\n * @cssprop --button-container-shape-start-end: Defines the end position of the button container shape.\n * @cssprop --button-container-shape-end-start: Defines the start position of the button container shape.\n * @cssprop --button-container-shape-end-end: Defines the end position of the button container shape.\n *\n *\n * @cssprop --filled-button-container-color: Color of the filled button container.\n * @cssprop --filled-button-label-text-color: Text color of the filled button label.\n *\n * @cssprop --outlined-button-container-color: Color of the outlined button container.\n * @cssprop --outlined-button-label-text-color: Text color of the outlined button label.\n *\n * @cssprop --text-button-label-text-color: Text color of the text button label.\n *\n * @cssprop --tonal-button-container-color: Color of the tonal button container.\n * @cssprop --tonal-button-label-text-color: Text color of the tonal button label.\n *\n * @cssprop --elevated-button-container-color: Color of the elevated button container.\n * @cssprop --elevated-button-label-text-color: Text color of the elevated button label.\n *\n * @cssprop --neo-button-container-color: Color of the neo button container.\n * @cssprop --neo-button-label-text-color: Text color of the neo button label.\n *\n * @fires {MouseEvent} click - Dispatched when the button is clicked.\n *\n * @example\n * ```html\n * <wc-button>Button</wc-button>\n * ```\n * @tags display\n */\n@IndividualComponent\nexport class Button extends mixinBaseButton(\n mixinHyperlink(\n mixinDelegatesAria(\n mixinFormSubmitter(\n mixinFormAssociated(mixinElementInternals(LitElement)),\n ),\n ),\n ),\n) {\n // ── Static ───────────────────────────────────────────────────────────────\n\n /** @nocollapse */ // eslint-disable-next-line\n static override shadowRootOptions: ShadowRootInit = {\n mode: 'open',\n delegatesFocus: true,\n };\n\n static override styles = [styles];\n\n // ── Properties ───────────────────────────────────────────────────────────\n\n /**\n * Icon alignment.\n * Possible values are `\"start\"`, `\"end\"`. Defaults to `\"end\"`.\n */\n @property({ type: Boolean, reflect: true, attribute: 'trailing-icon' })\n trailingIcon = false;\n\n /**\n * Button size.\n * Possible values are `\"xs\"`, `\"sm\"`, `\"md\"`, `\"lg\"`, `\"xl\"`. Defaults to `\"sm\"`.\n */\n @property({ reflect: true }) size: ButtonSize = 'sm';\n\n /**\n * Level is preset of color and variant. If Level provided it overrides the default color and variant.\n */\n @property({ type: String }) level?: ButtonLevel;\n\n /** Shape of the button container. */\n @property({ type: String, reflect: true }) shape: ButtonShape = 'square';\n\n /**\n * The visual style of the button.\n *\n * Possible variant values:\n * `\"filled\"` is a filled button.\n * `\"outlined\"` is an outlined button.\n * `\"text\"` is a transparent button.\n * `\"tonal\"` is a light color button.\n * `\"elevated\"` is elevated button\n */\n @property({ reflect: true }) variant: ButtonVariant = 'filled';\n\n /**\n * Defines the primary color of the button. This can be set to predefined color names to apply specific color themes.\n */\n @property({ reflect: true }) color: ButtonColor = 'primary';\n\n /** When true, renders the button in a loading skeleton state. */\n @property({ type: Boolean, reflect: true }) skeleton: boolean = false;\n\n /** When true, the button acts as a toggle. Use with `selected`. */\n @property({ type: Boolean, reflect: true }) toggle: boolean = false;\n\n /** When true (and `toggle` is set), the button is in the selected/pressed state. */\n @property({ type: Boolean, reflect: true }) selected: boolean = false;\n\n /** Optional tooltip text displayed on hover. */\n @property() tooltip?: string;\n\n // ── Queries ───────────────────────────────────────────────────────────────\n\n @query('.button') private readonly buttonElement!: HTMLElement | null;\n\n // ── Private fields ────────────────────────────────────────────────────────\n\n /** Cleanup returned by observerSlotChangesWithCallback for the icon slot. */\n private __iconSlotCleanup: (() => void) | null = null;\n\n /** Cleanup returned by observerSlotChangesWithCallback for the label slot. */\n private __labelSlotCleanup: (() => void) | null = null;\n\n // ── Constructor ───────────────────────────────────────────────────────────\n\n constructor() {\n super();\n this.addEventListener('click', this.__dispatchClickWithThrottle);\n }\n\n // ── Lifecycle ─────────────────────────────────────────────────────────────\n\n override disconnectedCallback() {\n // disconnect slot observers first to avoid callbacks during teardown\n try {\n this.__iconSlotCleanup?.();\n } catch (e) {\n /* ignore */\n }\n try {\n this.__labelSlotCleanup?.();\n } catch (e) {\n /* ignore */\n }\n\n super.disconnectedCallback();\n }\n\n override firstUpdated(changedProperties: Map<PropertyKey, unknown>) {\n super.firstUpdated(changedProperties);\n this.__convertTypeToVariantAndColor();\n // Initialize slot presence tracking for smooth transitions when label/icon are added/removed\n const iconSlot = this.renderRoot.querySelector(\n 'slot[name=\"icon\"]',\n ) as HTMLSlotElement | null;\n const labelSlot = this.renderRoot.querySelector(\n 'slot.label',\n ) as HTMLSlotElement | null;\n\n // Use MutationObserver-based helper so we react to content/character changes\n if (iconSlot) {\n this.__iconSlotCleanup = observerSlotChangesWithCallback(\n iconSlot,\n has => {\n this.toggleAttribute('has-icon', has);\n },\n );\n }\n\n if (labelSlot) {\n this.__labelSlotCleanup = observerSlotChangesWithCallback(\n labelSlot,\n has => {\n this.toggleAttribute('has-label', has);\n },\n );\n }\n }\n\n // ── Public methods ────────────────────────────────────────────────────────\n\n override focus() {\n this.buttonElement?.focus();\n }\n\n override blur() {\n this.buttonElement?.blur();\n }\n\n // ── Private methods ───────────────────────────────────────────────────────\n\n __convertTypeToVariantAndColor() {\n if (this.level === 'primary') {\n this.color = 'primary';\n this.variant = 'filled';\n } else if (this.level === 'secondary') {\n this.color = 'surface';\n this.variant = 'tonal';\n } else if (this.level === 'tertiary') {\n this.color = 'primary';\n this.variant = 'text';\n } else if (this.level === 'danger') {\n this.color = 'danger';\n this.variant = 'filled';\n }\n }\n\n __dispatchClick = (event: MouseEvent | KeyboardEvent) => {\n // If the button is soft-disabled or a disabled link, we need to explicitly\n // prevent the click from propagating to other event listeners as well as\n // prevent the default action.\n if (this.softDisabled || (this.disabled && this.href) || this.skeleton) {\n event.stopImmediatePropagation();\n event.preventDefault();\n return;\n }\n\n if (!isActivationClick(event) || !this.buttonElement) {\n return;\n }\n\n this.focus();\n dispatchActivationClick(this.buttonElement);\n };\n\n // ── Render helpers ────────────────────────────────────────────────────────\n\n renderButtonElement() {\n const isElementLink = isLink(this);\n\n const cssClasses: any = {\n button: true,\n 'native-button': !isElementLink,\n 'native-link': isElementLink,\n 'trailing-icon': this.trailingIcon,\n };\n\n // Needed for closure conformance\n const { ariaLabel, ariaHasPopup, ariaExpanded } = this as ARIAMixinStrict;\n\n if (isElementLink) {\n return html`<a\n class=${classMap(cssClasses)}\n id=\"link\"\n href=${this.href}\n target=${this.target}\n tabindex=${this.disabled ? '-1' : '0'}\n aria-label=\"${ariaLabel || nothing}\"\n aria-haspopup=\"${ariaHasPopup || nothing}\"\n aria-expanded=\"${ariaExpanded || nothing}\"\n aria-describedby=${ifDefined(\n this.softDisabled ? DISABLED_REASON_ID : undefined,\n )}\n ?aria-disabled=${this.softDisabled}\n >\n ${this.renderButtonContent()}\n </a>`;\n }\n return html`<button\n class=${classMap(cssClasses)}\n id=\"button\"\n aria-label=\"${ariaLabel || nothing}\"\n aria-haspopup=\"${ariaHasPopup || nothing}\"\n aria-expanded=\"${ariaExpanded || nothing}\"\n aria-describedby=${ifDefined(\n this.softDisabled ? DISABLED_REASON_ID : undefined,\n )}\n ?aria-disabled=${this.softDisabled}\n ?disabled=${this.disabled}\n >\n ${this.renderButtonContent()}\n </button>\n ${this.renderTooltip()}`;\n }\n\n renderButtonContent() {\n return html` <slot class=\"icon-slot\" name=\"icon\"></slot>\n <slot class=\"label\"></slot>\n <div class=\"touch\"></div>\n\n ${this.renderDisabledReason(this.softDisabled)}`;\n }\n\n renderDisabledReason(softDisabled: boolean) {\n if (softDisabled)\n return html`<div\n id=${DISABLED_REASON_ID}\n role=\"tooltip\"\n aria-label=${this.disabledReason}\n class=\"screen-reader-only\"\n >\n ${this.disabledReason}\n </div>`;\n return nothing;\n }\n\n renderTooltip() {\n if (this.tooltip) {\n const buttonId = isLink(this) ? 'link' : 'button';\n return html`<wc-tooltip class=\"tooltip\" for=${buttonId}\n >${this.tooltip}</wc-tooltip\n >`;\n }\n return nothing;\n }\n\n // ── Render ────────────────────────────────────────────────────────────────\n\n override render() {\n const buttonId = isLink(this) ? 'link' : 'button';\n\n return html`\n <wc-focus-ring class=\"focus-ring\" for=${buttonId}></wc-focus-ring>\n <wc-elevation class=\"elevation\"></wc-elevation>\n ${when(\n this.variant === 'neo',\n () => html`<div class=\"neo-background\"></div>`,\n )}\n <div class=\"background\"></div>\n ${when(\n this.variant === 'outlined' || this.variant === 'neo',\n () => html`<div class=\"outline\"></div>`,\n )}\n <wc-ripple class=\"ripple\" for=${buttonId}></wc-ripple>\n <wc-skeleton class=\"skeleton\"></wc-skeleton>\n\n ${this.renderButtonElement()} ${this.renderTooltip()}\n `;\n }\n}\n"],"names":["LitElement","html","classMap","nothing","ifDefined","when","styles","property","query"],"mappings":"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"}
1
+ {"version":3,"file":"button.js","sources":["../../src/button/button/button.ts"],"sourcesContent":["import { html, LitElement, nothing } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { classMap } from 'lit/directives/class-map.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { when } from 'lit/directives/when.js';\nimport IndividualComponent from '@/IndividualComponent.js';\nimport styles from './button.scss';\n\nimport type {\n ButtonSize,\n ButtonLevel,\n ButtonShape,\n ButtonVariant,\n ButtonColor,\n} from '@/button/ButtonTypes.js';\nimport { isLink } from '@/__internal/utils/is-link.js';\nimport { observerSlotChangesWithCallback } from '@/__internal/utils/observe-slot-change.js';\nimport {\n dispatchActivationClick,\n isActivationClick,\n} from '@/__internal/utils/dispatch-event-utils.js';\nimport { DISABLED_REASON_ID } from '@/button/ButtonConstants.js';\nimport { mixinDelegatesAria } from '@/__internal/aria/delegate.js';\nimport { ARIAMixinStrict } from '@/__internal/aria/aria.js';\nimport { mixinFormSubmitter } from '@/__internal/mixins/form-submitter.js';\nimport { mixinElementInternals } from '@/__internal/mixins/element-internals.js';\nimport { mixinBaseButton } from '../base-button/base-button.js';\nimport { mixinFormAssociated } from '@/__internal/mixins/form-associated.js';\nimport { mixinHyperlink } from '@/__internal/mixins/hyperlink.js';\nexport type {\n ButtonSize,\n ButtonLevel,\n ButtonShape,\n ButtonVariant,\n ButtonColor,\n} from '@/button/ButtonTypes.js';\n\n/**\n * @label Button\n * @tag wc-button\n * @rawTag button\n *\n * @summary Buttons help people initiate actions, from sending an email, to sharing a document, to liking a post.\n * @overview\n * <p>Buttons are clickable elements that are used to trigger actions. They communicate calls to action to the user and allow users to interact with pages in a variety of ways. Button labels express what action will occur when the user interacts with it.</p>\n *\n * @cssprop --button-container-shape: Defines the border radius of the button container shape.\n *\n * @cssprop --button-container-shape-start-start: Defines the start position of the button container shape.\n * @cssprop --button-container-shape-start-end: Defines the end position of the button container shape.\n * @cssprop --button-container-shape-end-start: Defines the start position of the button container shape.\n * @cssprop --button-container-shape-end-end: Defines the end position of the button container shape.\n *\n *\n * @cssprop --filled-button-container-color: Color of the filled button container.\n * @cssprop --filled-button-label-text-color: Text color of the filled button label.\n *\n * @cssprop --outlined-button-container-color: Color of the outlined button container.\n * @cssprop --outlined-button-label-text-color: Text color of the outlined button label.\n *\n * @cssprop --text-button-label-text-color: Text color of the text button label.\n *\n * @cssprop --tonal-button-container-color: Color of the tonal button container.\n * @cssprop --tonal-button-label-text-color: Text color of the tonal button label.\n *\n * @cssprop --elevated-button-container-color: Color of the elevated button container.\n * @cssprop --elevated-button-label-text-color: Text color of the elevated button label.\n *\n * @cssprop --neo-button-container-color: Color of the neo button container.\n * @cssprop --neo-button-label-text-color: Text color of the neo button label.\n *\n * @fires {MouseEvent} click - Dispatched when the button is clicked.\n *\n * @example\n * ```html\n * <wc-button>Button</wc-button>\n * ```\n * @tags display\n */\n@IndividualComponent\nexport class Button extends mixinBaseButton(\n mixinHyperlink(\n mixinDelegatesAria(\n mixinFormSubmitter(\n mixinFormAssociated(mixinElementInternals(LitElement)),\n ),\n ),\n ),\n) {\n // ── Static ───────────────────────────────────────────────────────────────\n\n /** @nocollapse */ // eslint-disable-next-line\n static override shadowRootOptions: ShadowRootInit = {\n mode: 'open',\n delegatesFocus: true,\n };\n\n static override styles = [styles];\n\n // ── Properties ───────────────────────────────────────────────────────────\n\n /**\n * When `true` (default), the icon is placed after the label (trailing).\n * When `false`, the icon is placed before the label (leading).\n */\n @property({ type: Boolean, reflect: true, attribute: 'trailing-icon' })\n trailingIcon = true;\n\n /**\n * Button size.\n * Possible values are `\"xs\"`, `\"sm\"`, `\"md\"`, `\"lg\"`, `\"xl\"`. Defaults to `\"sm\"`.\n */\n @property({ reflect: true }) size: ButtonSize = 'sm';\n\n /**\n * Level is preset of color and variant. If Level provided it overrides the default color and variant.\n */\n @property({ type: String }) level?: ButtonLevel;\n\n /** Shape of the button container. */\n @property({ type: String, reflect: true }) shape: ButtonShape = 'square';\n\n /**\n * The visual style of the button.\n *\n * Possible variant values:\n * `\"filled\"` is a filled button.\n * `\"outlined\"` is an outlined button.\n * `\"text\"` is a transparent button.\n * `\"tonal\"` is a light color button.\n * `\"elevated\"` is elevated button\n */\n @property({ reflect: true }) variant: ButtonVariant = 'filled';\n\n /**\n * Defines the primary color of the button. This can be set to predefined color names to apply specific color themes.\n */\n @property({ reflect: true }) color: ButtonColor = 'primary';\n\n /** When true, renders the button in a loading skeleton state. */\n @property({ type: Boolean, reflect: true }) skeleton: boolean = false;\n\n /** When true, the button acts as a toggle. Use with `selected`. */\n @property({ type: Boolean, reflect: true }) toggle: boolean = false;\n\n /** When true (and `toggle` is set), the button is in the selected/pressed state. */\n @property({ type: Boolean, reflect: true }) selected: boolean = false;\n\n /** Optional tooltip text displayed on hover. */\n @property() tooltip?: string;\n\n // ── Queries ───────────────────────────────────────────────────────────────\n\n @query('.button') private readonly buttonElement!: HTMLElement | null;\n\n // ── Private fields ────────────────────────────────────────────────────────\n\n /** Cleanup returned by observerSlotChangesWithCallback for the icon slot. */\n private __iconSlotCleanup: (() => void) | null = null;\n\n /** Cleanup returned by observerSlotChangesWithCallback for the label slot. */\n private __labelSlotCleanup: (() => void) | null = null;\n\n // ── Constructor ───────────────────────────────────────────────────────────\n\n constructor() {\n super();\n this.addEventListener('click', this.__dispatchClickWithThrottle);\n }\n\n // ── Lifecycle ─────────────────────────────────────────────────────────────\n\n override disconnectedCallback() {\n // disconnect slot observers first to avoid callbacks during teardown\n try {\n this.__iconSlotCleanup?.();\n } catch (e) {\n /* ignore */\n }\n try {\n this.__labelSlotCleanup?.();\n } catch (e) {\n /* ignore */\n }\n\n super.disconnectedCallback();\n }\n\n override firstUpdated(changedProperties: Map<PropertyKey, unknown>) {\n super.firstUpdated(changedProperties);\n this.__convertTypeToVariantAndColor();\n // Initialize slot presence tracking for smooth transitions when label/icon are added/removed\n const iconSlot = this.renderRoot.querySelector(\n 'slot[name=\"icon\"]',\n ) as HTMLSlotElement | null;\n const labelSlot = this.renderRoot.querySelector(\n 'slot.label',\n ) as HTMLSlotElement | null;\n\n // Use MutationObserver-based helper so we react to content/character changes\n if (iconSlot) {\n this.__iconSlotCleanup = observerSlotChangesWithCallback(\n iconSlot,\n has => {\n this.toggleAttribute('has-icon', has);\n },\n );\n }\n\n if (labelSlot) {\n this.__labelSlotCleanup = observerSlotChangesWithCallback(\n labelSlot,\n has => {\n this.toggleAttribute('has-label', has);\n },\n );\n }\n }\n\n // ── Public methods ────────────────────────────────────────────────────────\n\n override focus() {\n this.buttonElement?.focus();\n }\n\n override blur() {\n this.buttonElement?.blur();\n }\n\n // ── Private methods ───────────────────────────────────────────────────────\n\n __convertTypeToVariantAndColor() {\n if (this.level === 'primary') {\n this.color = 'primary';\n this.variant = 'filled';\n } else if (this.level === 'secondary') {\n this.color = 'surface';\n this.variant = 'tonal';\n } else if (this.level === 'tertiary') {\n this.color = 'primary';\n this.variant = 'text';\n } else if (this.level === 'danger') {\n this.color = 'danger';\n this.variant = 'filled';\n }\n }\n\n __dispatchClick = (event: MouseEvent | KeyboardEvent) => {\n // If the button is soft-disabled or a disabled link, we need to explicitly\n // prevent the click from propagating to other event listeners as well as\n // prevent the default action.\n if (this.softDisabled || (this.disabled && this.href) || this.skeleton) {\n event.stopImmediatePropagation();\n event.preventDefault();\n return;\n }\n\n if (!isActivationClick(event) || !this.buttonElement) {\n return;\n }\n\n this.focus();\n dispatchActivationClick(this.buttonElement);\n };\n\n // ── Render helpers ────────────────────────────────────────────────────────\n\n renderButtonElement() {\n const isElementLink = isLink(this);\n\n const cssClasses: any = {\n button: true,\n 'native-button': !isElementLink,\n 'native-link': isElementLink,\n 'trailing-icon': this.trailingIcon,\n };\n\n // Needed for closure conformance\n const { ariaLabel, ariaHasPopup, ariaExpanded } = this as ARIAMixinStrict;\n\n if (isElementLink) {\n return html`<a\n class=${classMap(cssClasses)}\n id=\"link\"\n href=${this.href}\n target=${this.target}\n tabindex=${this.disabled ? '-1' : '0'}\n aria-label=\"${ariaLabel || nothing}\"\n aria-haspopup=\"${ariaHasPopup || nothing}\"\n aria-expanded=\"${ariaExpanded || nothing}\"\n aria-describedby=${ifDefined(\n this.softDisabled ? DISABLED_REASON_ID : undefined,\n )}\n ?aria-disabled=${this.softDisabled}\n >\n ${this.renderButtonContent()}\n </a>`;\n }\n return html`<button\n class=${classMap(cssClasses)}\n id=\"button\"\n aria-label=\"${ariaLabel || nothing}\"\n aria-haspopup=\"${ariaHasPopup || nothing}\"\n aria-expanded=\"${ariaExpanded || nothing}\"\n aria-describedby=${ifDefined(\n this.softDisabled ? DISABLED_REASON_ID : undefined,\n )}\n ?aria-disabled=${this.softDisabled}\n ?disabled=${this.disabled}\n >\n ${this.renderButtonContent()}\n </button>\n ${this.renderTooltip()}`;\n }\n\n renderButtonContent() {\n return html` <slot class=\"icon-slot\" name=\"icon\"></slot>\n <slot class=\"label\"></slot>\n <div class=\"touch\"></div>\n\n ${this.renderDisabledReason(this.softDisabled)}`;\n }\n\n renderDisabledReason(softDisabled: boolean) {\n if (softDisabled)\n return html`<div\n id=${DISABLED_REASON_ID}\n role=\"tooltip\"\n aria-label=${this.disabledReason}\n class=\"screen-reader-only\"\n >\n ${this.disabledReason}\n </div>`;\n return nothing;\n }\n\n renderTooltip() {\n if (this.tooltip) {\n const buttonId = isLink(this) ? 'link' : 'button';\n return html`<wc-tooltip class=\"tooltip\" for=${buttonId}\n >${this.tooltip}</wc-tooltip\n >`;\n }\n return nothing;\n }\n\n // ── Render ────────────────────────────────────────────────────────────────\n\n override render() {\n const buttonId = isLink(this) ? 'link' : 'button';\n\n return html`\n <wc-focus-ring class=\"focus-ring\" for=${buttonId}></wc-focus-ring>\n <wc-elevation class=\"elevation\"></wc-elevation>\n ${when(\n this.variant === 'neo',\n () => html`<div class=\"neo-background\"></div>`,\n )}\n <div class=\"background\"></div>\n ${when(\n this.variant === 'outlined' || this.variant === 'neo',\n () => html`<div class=\"outline\"></div>`,\n )}\n <wc-ripple class=\"ripple\" for=${buttonId}></wc-ripple>\n <wc-skeleton class=\"skeleton\"></wc-skeleton>\n\n ${this.renderButtonElement()} ${this.renderTooltip()}\n `;\n }\n}\n"],"names":["LitElement","html","classMap","nothing","ifDefined","when","styles","property","query"],"mappings":"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"}
@@ -7,6 +7,7 @@ import { E as EventManager } from './event-manager-DTyX2uYD.js';
7
7
  var css_248z = i`@charset "UTF-8";
8
8
  * {
9
9
  box-sizing: border-box;
10
+ -webkit-tap-highlight-color: transparent;
10
11
  }
11
12
 
12
13
  .screen-reader-only {
@@ -1 +1 @@
1
- {"version":3,"file":"calendar-column-view.js","sources":["../../src/calendar/calendar-column-view.ts"],"sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport {\n addDays,\n addHours,\n differenceInDays,\n startOfDay,\n endOfDay,\n calculateDateRange,\n formatDate,\n getTimePercent,\n LONG_EVENT_PADDING,\n} from './utils.js';\nimport { BaseEvent } from './base-event.js';\nimport { CalendarEvent } from './calendar-event.js';\nimport { EventManager } from './event-manager.js';\nimport type { ColumnEvent } from './event-manager.js';\nimport IndividualComponent from '@/IndividualComponent.js';\nimport styles from './calendar-column-view.scss';\n\n/**\n * @label Calendar Column View\n * @tag wc-calendar-column-view\n * @rawTag calendar-column-view\n * @summary Internal column view component for the calendar (day/week views).\n */\n@IndividualComponent\nexport class CalendarColumnView extends LitElement {\n static styles = [styles];\n\n @property({ type: Array })\n events: CalendarEvent[] = [];\n\n @property({ type: String })\n view: string = 'week';\n\n @property({ type: Number })\n days: number = 7;\n\n @property({ type: Boolean, attribute: 'event-clickable' })\n eventClickable: boolean = true;\n\n @property({ type: Object, attribute: false })\n currentTime: Date = new Date();\n\n @property({ type: Object, attribute: false })\n contextDate: Date = new Date();\n\n @state()\n private dateRange: any = {};\n\n @state()\n private singleDayEvents: Record<string, ColumnEvent[][]> = {};\n\n @state()\n private multiDayEvents: ColumnEvent[][] = [];\n\n override connectedCallback() {\n super.connectedCallback();\n this._processEvents();\n }\n\n override willUpdate(changedProperties: Map<string, unknown>) {\n if (\n changedProperties.has('events') ||\n changedProperties.has('contextDate') ||\n changedProperties.has('view') ||\n changedProperties.has('days')\n ) {\n this._processEvents();\n }\n }\n\n override firstUpdated() {\n const viewBody = this.renderRoot.querySelector('.view-body');\n if (viewBody) {\n const viewBodyHeight = viewBody.scrollHeight;\n viewBody.scrollTo({\n top:\n (getTimePercent(this.currentTime) / 100) * viewBodyHeight - 150,\n });\n }\n }\n\n private _processEvents() {\n this.dateRange = calculateDateRange(this.view, this.contextDate, this.days);\n this.singleDayEvents = {};\n\n this._forEachDayInRange(i => {\n const manager = new EventManager();\n manager.addEvents(\n this.events.filter(\n event =>\n event.isOverlapping(new BaseEvent(startOfDay(i), endOfDay(i))) &&\n event.length() < 86400000,\n ),\n );\n manager.process();\n this.singleDayEvents[this._getDateOnly(i)] = manager.columns;\n });\n\n const multiManager = new EventManager();\n multiManager.addEvents(\n this.events.filter(\n event =>\n event.isOverlapping(\n new BaseEvent(this.dateRange.startDate, this.dateRange.endDate),\n ) && event.length() >= 86400000,\n ),\n );\n multiManager.process();\n this.multiDayEvents = multiManager.columns;\n }\n\n private _forEachDayInRange(callback: (d: Date) => void) {\n for (\n let i = new Date(this.dateRange.startDate);\n differenceInDays(startOfDay(this.dateRange.endDate), i) >= 0;\n i = addDays(i, 1)\n ) {\n callback(i);\n }\n }\n\n private _getDateOnly(date: Date): string {\n return formatDate(date, 'dd-MM-yyyy');\n }\n\n private _getDatePercent(date: Date): number {\n const currentDay = differenceInDays(\n startOfDay(date),\n this.dateRange.startDate,\n );\n const percent = (currentDay / this.dateRange.totalDays) * 100;\n if (percent < 0) return 0;\n if (percent > 100) return 100;\n return percent;\n }\n\n private _getDayClass(date: Date): string {\n const diff = differenceInDays(startOfDay(date), startOfDay(this.currentTime));\n if (diff === 0) return 'column today';\n if (diff < 0) return 'column past';\n return 'column future';\n }\n\n private _populateColorVars(\n styles: Record<string, string>,\n color: string,\n ) {\n styles['--calendar-event-bg-color'] = `var(--color-${color}-container)`;\n styles['--calendar-event-bg-color--hover'] = `var(--color-inverse-${color})`;\n styles['--calendar-event-border-color'] = `var(--color-${color})`;\n styles['--calendar-event-text-color'] = `var(--color-on-${color}-container)`;\n styles['--calendar-event-text-color--hover'] = `var(--color-on-${color})`;\n }\n\n private _emitDateClick(date: Date) {\n this.dispatchEvent(\n new CustomEvent('column-view-date-click', {\n detail: { date },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _emitEventClick(event: any) {\n this.dispatchEvent(\n new CustomEvent('column-view-event-click', {\n detail: { event },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _renderHeader() {\n const columns: any[] = [];\n this._forEachDayInRange(i => {\n columns.push(html`\n <div class=${this._getDayClass(i)}>\n <div class=\"column-content\">\n <div\n class=\"date\"\n @click=${() => this._emitDateClick(i)}\n >\n ${formatDate(i, 'dd')}\n </div>\n <div class=\"day\">${formatDate(i, 'E')}</div>\n </div>\n </div>\n `);\n });\n return columns;\n }\n\n private _renderMultiDayBackground() {\n const columns: any[] = [];\n this._forEachDayInRange(i => {\n columns.push(html`<div class=${this._getDayClass(i)}></div>`);\n });\n return columns;\n }\n\n private _renderScale() {\n const rows: any[] = [];\n for (let i = 0; i < 48; i++) {\n const cls = i % 2 ? 'row hour' : 'row';\n const sd = startOfDay(new Date());\n rows.push(html`\n <div class=${cls}>\n ${i % 2 === 0 && i\n ? html`<div class=\"time\">${formatDate(addHours(sd, i / 2), 'hh a')}</div>`\n : nothing}\n </div>\n `);\n }\n return html`<div class=\"background\">${rows}</div>`;\n }\n\n private _renderBackgroundGrid() {\n const rows: any[] = [];\n for (let i = 0; i < 48; i++) {\n const cls = i % 2 ? 'row hour' : 'row';\n const columns: any[] = [];\n this._forEachDayInRange(d => {\n columns.push(html`<div class=${this._getDayClass(d)}></div>`);\n });\n rows.push(html`<div class=${cls}>${columns}</div>`);\n }\n return html`<div class=\"background\">${rows}</div>`;\n }\n\n private _renderEvents() {\n const columns: any[] = [];\n this._forEachDayInRange(i => {\n const cls = this._getDayClass(i);\n const eventDay = this.singleDayEvents[this._getDateOnly(i)];\n columns.push(html`\n <div class=${cls}>\n <div class=\"column-content\">\n ${eventDay\n ? eventDay.map((nodes, columnIndex) =>\n nodes.map(node => {\n const evtCls = this.eventClickable\n ? 'event clickable'\n : 'event';\n const evtStyles: Record<string, string> = {\n top: `${getTimePercent(node.start, startOfDay(i))}%`,\n height: `${getTimePercent(node.end, startOfDay(i)) - getTimePercent(node.start, startOfDay(i))}%`,\n left: `${(columnIndex / eventDay.length) * 100}%`,\n width: `calc(${((1 * node.width) / eventDay.length) * 100}% - 1px)`,\n };\n if (node.color) {\n this._populateColorVars(evtStyles, node.color);\n }\n return html`\n <div\n class=${evtCls}\n style=${this._styleMap(evtStyles)}\n @click=${() => {\n if (this.eventClickable) this._emitEventClick(node.data);\n }}\n >\n <div class=\"event-title\">\n ${node.title || '(no title)'}\n </div>\n </div>\n `;\n }),\n )\n : nothing}\n </div>\n </div>\n `);\n });\n return html`<div class=\"events-container\">${columns}</div>`;\n }\n\n private _renderMultiDayEvents() {\n if (!this.multiDayEvents || !this.multiDayEvents.length) return nothing;\n return html`\n <div class=\"row-content\">\n ${this.multiDayEvents.map(\n nodes => html`\n <div class=\"row\">\n ${nodes.map(node => {\n const evtCls = this.eventClickable\n ? 'event clickable'\n : 'event';\n const evtStyles: Record<string, string> = {\n left: `${this._getDatePercent(node.start) + LONG_EVENT_PADDING}%`,\n width: `${this._getDatePercent(addDays(node.end, 1)) - this._getDatePercent(node.start) - 2 * LONG_EVENT_PADDING}%`,\n };\n if (node.color) {\n this._populateColorVars(evtStyles, node.color);\n }\n return html`\n <div\n class=${evtCls}\n style=${this._styleMap(evtStyles)}\n @click=${() => {\n if (this.eventClickable) this._emitEventClick(node.data);\n }}\n >\n <div class=\"event-title\">\n ${node.title || '(no title)'}\n </div>\n </div>\n `;\n })}\n </div>\n `,\n )}\n <div class=\"row-spacer\"></div>\n </div>\n `;\n }\n\n private _renderCurrentTime() {\n if (\n this.currentTime.valueOf() < this.dateRange.startDate?.valueOf() - 1 ||\n this.currentTime.valueOf() > this.dateRange.endDate?.valueOf() + 1\n ) {\n return nothing;\n }\n return html`\n <div\n class=\"current-time-line\"\n style=\"top: calc(${getTimePercent(this.currentTime)}% - 1px)\"\n >\n <div class=\"time\">${formatDate(this.currentTime, 'hh:mm a')}</div>\n <div\n class=\"dash-line\"\n style=\"width: ${this._getDatePercent(this.currentTime)}%\"\n ></div>\n <div\n class=\"dot\"\n style=\"left: calc(${this._getDatePercent(this.currentTime)}% - 0.25rem)\"\n ></div>\n <div\n class=\"line\"\n style=\"left: ${this._getDatePercent(this.currentTime)}%; width: ${(1 / this.dateRange.totalDays) * 100}%\"\n ></div>\n </div>\n `;\n }\n\n private _styleMap(styles: Record<string, string>): string {\n return Object.entries(styles)\n .map(([k, v]) => `${k}:${v}`)\n .join(';');\n }\n\n render() {\n return html`\n <div class=\"calendar-column-view\">\n <div class=\"view-header\">\n <div class=\"scale\"></div>\n <div class=\"columns\">${this._renderHeader()}</div>\n <div class=\"scrollbar-placeholder\"></div>\n </div>\n <div class=\"multi-day-section-wrapper\">\n <div class=\"multi-day-section-scroll\">\n <div class=\"multi-day-section\">\n <div class=\"multi-day-background\">\n <div class=\"scale\"></div>\n <div class=\"columns\">\n ${this._renderMultiDayBackground()}\n </div>\n </div>\n <div class=\"multi-events\">\n ${this._renderMultiDayEvents()}\n </div>\n </div>\n </div>\n </div>\n <div class=\"view-body\">\n <div class=\"view-body-scroll\">\n <div class=\"scale\">${this._renderScale()}</div>\n <div class=\"drawing-area\">\n ${this._renderBackgroundGrid()} ${this._renderEvents()}\n </div>\n ${this._renderCurrentTime()}\n </div>\n </div>\n </div>\n `;\n }\n}\n"],"names":["LitElement","html","nothing","styles","property","state"],"mappings":"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"}
1
+ {"version":3,"file":"calendar-column-view.js","sources":["../../src/calendar/calendar-column-view.ts"],"sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport {\n addDays,\n addHours,\n differenceInDays,\n startOfDay,\n endOfDay,\n calculateDateRange,\n formatDate,\n getTimePercent,\n LONG_EVENT_PADDING,\n} from './utils.js';\nimport { BaseEvent } from './base-event.js';\nimport { CalendarEvent } from './calendar-event.js';\nimport { EventManager } from './event-manager.js';\nimport type { ColumnEvent } from './event-manager.js';\nimport IndividualComponent from '@/IndividualComponent.js';\nimport styles from './calendar-column-view.scss';\n\n/**\n * @label Calendar Column View\n * @tag wc-calendar-column-view\n * @rawTag calendar-column-view\n * @summary Internal column view component for the calendar (day/week views).\n */\n@IndividualComponent\nexport class CalendarColumnView extends LitElement {\n static styles = [styles];\n\n @property({ type: Array })\n events: CalendarEvent[] = [];\n\n @property({ type: String })\n view: string = 'week';\n\n @property({ type: Number })\n days: number = 7;\n\n @property({ type: Boolean, attribute: 'event-clickable' })\n eventClickable: boolean = true;\n\n @property({ type: Object, attribute: false })\n currentTime: Date = new Date();\n\n @property({ type: Object, attribute: false })\n contextDate: Date = new Date();\n\n @state()\n private dateRange: any = {};\n\n @state()\n private singleDayEvents: Record<string, ColumnEvent[][]> = {};\n\n @state()\n private multiDayEvents: ColumnEvent[][] = [];\n\n override connectedCallback() {\n super.connectedCallback();\n this._processEvents();\n }\n\n override willUpdate(changedProperties: Map<string, unknown>) {\n if (\n changedProperties.has('events') ||\n changedProperties.has('contextDate') ||\n changedProperties.has('view') ||\n changedProperties.has('days')\n ) {\n this._processEvents();\n }\n }\n\n override firstUpdated() {\n const viewBody = this.renderRoot.querySelector('.view-body');\n if (viewBody) {\n const viewBodyHeight = viewBody.scrollHeight;\n viewBody.scrollTo({\n top:\n (getTimePercent(this.currentTime) / 100) * viewBodyHeight - 150,\n });\n }\n }\n\n private _processEvents() {\n this.dateRange = calculateDateRange(this.view, this.contextDate, this.days);\n this.singleDayEvents = {};\n\n this._forEachDayInRange(i => {\n const manager = new EventManager();\n manager.addEvents(\n this.events.filter(\n event =>\n event.isOverlapping(new BaseEvent(startOfDay(i), endOfDay(i))) &&\n event.length() < 86400000,\n ),\n );\n manager.process();\n this.singleDayEvents[this._getDateOnly(i)] = manager.columns;\n });\n\n const multiManager = new EventManager();\n multiManager.addEvents(\n this.events.filter(\n event =>\n event.isOverlapping(\n new BaseEvent(this.dateRange.startDate, this.dateRange.endDate),\n ) && event.length() >= 86400000,\n ),\n );\n multiManager.process();\n this.multiDayEvents = multiManager.columns;\n }\n\n private _forEachDayInRange(callback: (d: Date) => void) {\n for (\n let i = new Date(this.dateRange.startDate);\n differenceInDays(startOfDay(this.dateRange.endDate), i) >= 0;\n i = addDays(i, 1)\n ) {\n callback(i);\n }\n }\n\n private _getDateOnly(date: Date): string {\n return formatDate(date, 'dd-MM-yyyy');\n }\n\n private _getDatePercent(date: Date): number {\n const currentDay = differenceInDays(\n startOfDay(date),\n this.dateRange.startDate,\n );\n const percent = (currentDay / this.dateRange.totalDays) * 100;\n if (percent < 0) return 0;\n if (percent > 100) return 100;\n return percent;\n }\n\n private _getDayClass(date: Date): string {\n const diff = differenceInDays(startOfDay(date), startOfDay(this.currentTime));\n if (diff === 0) return 'column today';\n if (diff < 0) return 'column past';\n return 'column future';\n }\n\n private _populateColorVars(\n styles: Record<string, string>,\n color: string,\n ) {\n styles['--calendar-event-bg-color'] = `var(--color-${color}-container)`;\n styles['--calendar-event-bg-color--hover'] = `var(--color-inverse-${color})`;\n styles['--calendar-event-border-color'] = `var(--color-${color})`;\n styles['--calendar-event-text-color'] = `var(--color-on-${color}-container)`;\n styles['--calendar-event-text-color--hover'] = `var(--color-on-${color})`;\n }\n\n private _emitDateClick(date: Date) {\n this.dispatchEvent(\n new CustomEvent('column-view-date-click', {\n detail: { date },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _emitEventClick(event: any) {\n this.dispatchEvent(\n new CustomEvent('column-view-event-click', {\n detail: { event },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _renderHeader() {\n const columns: any[] = [];\n this._forEachDayInRange(i => {\n columns.push(html`\n <div class=${this._getDayClass(i)}>\n <div class=\"column-content\">\n <div\n class=\"date\"\n @click=${() => this._emitDateClick(i)}\n >\n ${formatDate(i, 'dd')}\n </div>\n <div class=\"day\">${formatDate(i, 'E')}</div>\n </div>\n </div>\n `);\n });\n return columns;\n }\n\n private _renderMultiDayBackground() {\n const columns: any[] = [];\n this._forEachDayInRange(i => {\n columns.push(html`<div class=${this._getDayClass(i)}></div>`);\n });\n return columns;\n }\n\n private _renderScale() {\n const rows: any[] = [];\n for (let i = 0; i < 48; i++) {\n const cls = i % 2 ? 'row hour' : 'row';\n const sd = startOfDay(new Date());\n rows.push(html`\n <div class=${cls}>\n ${i % 2 === 0 && i\n ? html`<div class=\"time\">${formatDate(addHours(sd, i / 2), 'hh a')}</div>`\n : nothing}\n </div>\n `);\n }\n return html`<div class=\"background\">${rows}</div>`;\n }\n\n private _renderBackgroundGrid() {\n const rows: any[] = [];\n for (let i = 0; i < 48; i++) {\n const cls = i % 2 ? 'row hour' : 'row';\n const columns: any[] = [];\n this._forEachDayInRange(d => {\n columns.push(html`<div class=${this._getDayClass(d)}></div>`);\n });\n rows.push(html`<div class=${cls}>${columns}</div>`);\n }\n return html`<div class=\"background\">${rows}</div>`;\n }\n\n private _renderEvents() {\n const columns: any[] = [];\n this._forEachDayInRange(i => {\n const cls = this._getDayClass(i);\n const eventDay = this.singleDayEvents[this._getDateOnly(i)];\n columns.push(html`\n <div class=${cls}>\n <div class=\"column-content\">\n ${eventDay\n ? eventDay.map((nodes, columnIndex) =>\n nodes.map(node => {\n const evtCls = this.eventClickable\n ? 'event clickable'\n : 'event';\n const evtStyles: Record<string, string> = {\n top: `${getTimePercent(node.start, startOfDay(i))}%`,\n height: `${getTimePercent(node.end, startOfDay(i)) - getTimePercent(node.start, startOfDay(i))}%`,\n left: `${(columnIndex / eventDay.length) * 100}%`,\n width: `calc(${((1 * node.width) / eventDay.length) * 100}% - 1px)`,\n };\n if (node.color) {\n this._populateColorVars(evtStyles, node.color);\n }\n return html`\n <div\n class=${evtCls}\n style=${this._styleMap(evtStyles)}\n @click=${() => {\n if (this.eventClickable) this._emitEventClick(node.data);\n }}\n >\n <div class=\"event-title\">\n ${node.title || '(no title)'}\n </div>\n </div>\n `;\n }),\n )\n : nothing}\n </div>\n </div>\n `);\n });\n return html`<div class=\"events-container\">${columns}</div>`;\n }\n\n private _renderMultiDayEvents() {\n if (!this.multiDayEvents || !this.multiDayEvents.length) return nothing;\n return html`\n <div class=\"row-content\">\n ${this.multiDayEvents.map(\n nodes => html`\n <div class=\"row\">\n ${nodes.map(node => {\n const evtCls = this.eventClickable\n ? 'event clickable'\n : 'event';\n const evtStyles: Record<string, string> = {\n left: `${this._getDatePercent(node.start) + LONG_EVENT_PADDING}%`,\n width: `${this._getDatePercent(addDays(node.end, 1)) - this._getDatePercent(node.start) - 2 * LONG_EVENT_PADDING}%`,\n };\n if (node.color) {\n this._populateColorVars(evtStyles, node.color);\n }\n return html`\n <div\n class=${evtCls}\n style=${this._styleMap(evtStyles)}\n @click=${() => {\n if (this.eventClickable) this._emitEventClick(node.data);\n }}\n >\n <div class=\"event-title\">\n ${node.title || '(no title)'}\n </div>\n </div>\n `;\n })}\n </div>\n `,\n )}\n <div class=\"row-spacer\"></div>\n </div>\n `;\n }\n\n private _renderCurrentTime() {\n if (\n this.currentTime.valueOf() < this.dateRange.startDate?.valueOf() - 1 ||\n this.currentTime.valueOf() > this.dateRange.endDate?.valueOf() + 1\n ) {\n return nothing;\n }\n return html`\n <div\n class=\"current-time-line\"\n style=\"top: calc(${getTimePercent(this.currentTime)}% - 1px)\"\n >\n <div class=\"time\">${formatDate(this.currentTime, 'hh:mm a')}</div>\n <div\n class=\"dash-line\"\n style=\"width: ${this._getDatePercent(this.currentTime)}%\"\n ></div>\n <div\n class=\"dot\"\n style=\"left: calc(${this._getDatePercent(this.currentTime)}% - 0.25rem)\"\n ></div>\n <div\n class=\"line\"\n style=\"left: ${this._getDatePercent(this.currentTime)}%; width: ${(1 / this.dateRange.totalDays) * 100}%\"\n ></div>\n </div>\n `;\n }\n\n private _styleMap(styles: Record<string, string>): string {\n return Object.entries(styles)\n .map(([k, v]) => `${k}:${v}`)\n .join(';');\n }\n\n render() {\n return html`\n <div class=\"calendar-column-view\">\n <div class=\"view-header\">\n <div class=\"scale\"></div>\n <div class=\"columns\">${this._renderHeader()}</div>\n <div class=\"scrollbar-placeholder\"></div>\n </div>\n <div class=\"multi-day-section-wrapper\">\n <div class=\"multi-day-section-scroll\">\n <div class=\"multi-day-section\">\n <div class=\"multi-day-background\">\n <div class=\"scale\"></div>\n <div class=\"columns\">\n ${this._renderMultiDayBackground()}\n </div>\n </div>\n <div class=\"multi-events\">\n ${this._renderMultiDayEvents()}\n </div>\n </div>\n </div>\n </div>\n <div class=\"view-body\">\n <div class=\"view-body-scroll\">\n <div class=\"scale\">${this._renderScale()}</div>\n <div class=\"drawing-area\">\n ${this._renderBackgroundGrid()} ${this._renderEvents()}\n </div>\n ${this._renderCurrentTime()}\n </div>\n </div>\n </div>\n `;\n }\n}\n"],"names":["LitElement","html","nothing","styles","property","state"],"mappings":"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"}
@@ -7,6 +7,7 @@ import { M as MonthEventManager } from './event-manager-DTyX2uYD.js';
7
7
  var css_248z = i`@charset "UTF-8";
8
8
  * {
9
9
  box-sizing: border-box;
10
+ -webkit-tap-highlight-color: transparent;
10
11
  }
11
12
 
12
13
  .screen-reader-only {
@@ -1 +1 @@
1
- {"version":3,"file":"calendar-month-view.js","sources":["../../src/calendar/calendar-month-view.ts"],"sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport {\n addDays,\n differenceInDays,\n startOfDay,\n endOfDay,\n calculateMonthRange,\n formatDate,\n getTimePercent,\n LONG_EVENT_PADDING,\n} from './utils.js';\nimport { BaseEvent } from './base-event.js';\nimport { CalendarEvent } from './calendar-event.js';\nimport { MonthEventManager } from './event-manager.js';\nimport type { ColumnEvent } from './event-manager.js';\nimport IndividualComponent from '@/IndividualComponent.js';\nimport styles from './calendar-month-view.scss';\n\n/**\n * @label Calendar Month View\n * @tag wc-calendar-month-view\n * @rawTag calendar-month-view\n * @summary Internal month view component for the calendar.\n */\n@IndividualComponent\nexport class CalendarMonthView extends LitElement {\n static styles = [styles];\n\n @property({ type: Array })\n events: CalendarEvent[] = [];\n\n @property({ type: Boolean, attribute: 'event-clickable' })\n eventClickable: boolean = true;\n\n @property({ type: Object, attribute: false })\n currentTime: Date = new Date();\n\n @property({ type: Object, attribute: false })\n contextDate: Date = new Date();\n\n @state()\n private dateRange: any = {};\n\n @state()\n private weekDayEvents: ColumnEvent[][][] = [];\n\n override connectedCallback() {\n super.connectedCallback();\n this._processEvents();\n }\n\n override willUpdate(changedProperties: Map<string, unknown>) {\n if (\n changedProperties.has('events') ||\n changedProperties.has('contextDate')\n ) {\n this._processEvents();\n }\n }\n\n override firstUpdated() {\n const viewBody = this.renderRoot.querySelector('.view-body');\n if (viewBody) {\n const viewBodyHeight = viewBody.scrollHeight;\n viewBody.scrollTo({\n top:\n (getTimePercent(this.currentTime) / 100) * viewBodyHeight - 150,\n });\n }\n }\n\n private _processEvents() {\n this.dateRange = calculateMonthRange(this.contextDate, 1);\n this.weekDayEvents = [];\n\n for (\n let i = new Date(this.dateRange.startDate), j = 0;\n j < 6;\n i = addDays(i, 7), j++\n ) {\n const manager = new MonthEventManager();\n manager.addEvents(\n this.events.filter(event =>\n event.isOverlapping(\n new BaseEvent(startOfDay(i), endOfDay(addDays(i, 6))),\n ),\n ),\n );\n manager.process();\n this.weekDayEvents.push(manager.columns);\n }\n }\n\n private _getDatePercent(date: Date, dateRangeStartDate: Date): number {\n const currentDay = differenceInDays(startOfDay(date), dateRangeStartDate);\n const percent = (currentDay / 7) * 100;\n if (percent < 0) return 0;\n if (percent > 100) return 100;\n return percent;\n }\n\n private _getDayClass(date: Date): string {\n const diff = differenceInDays(\n startOfDay(date),\n startOfDay(this.currentTime),\n );\n if (diff === 0) return 'column today';\n if (diff < 0) return 'column past';\n return 'column future';\n }\n\n private _populateColorVars(\n styles: Record<string, string>,\n color: string,\n ) {\n styles['--calendar-event-bg-color'] = `var(--color-${color}-container)`;\n styles['--calendar-event-bg-color--hover'] = `var(--color-inverse-${color})`;\n styles['--calendar-event-border-color'] = `var(--color-${color})`;\n styles['--calendar-event-text-color'] = `var(--color-on-${color}-container)`;\n styles['--calendar-event-text-color--hover'] = `var(--color-on-${color})`;\n }\n\n private _emitEventClick(event: any) {\n this.dispatchEvent(\n new CustomEvent('month-view-event-click', {\n detail: { event },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _renderHeader() {\n const columns: any[] = [];\n for (\n let i = new Date(this.dateRange.startDate), j = 0;\n j < 7;\n i = addDays(i, 1), j++\n ) {\n columns.push(html`\n <div class=\"column\">\n <div class=\"column-content\">\n <div class=\"day\">${formatDate(i, 'EEEE')}</div>\n </div>\n </div>\n `);\n }\n return columns;\n }\n\n private _renderMultiDayBackground(sd: Date) {\n const columns: any[] = [];\n for (let i = new Date(sd), j = 0; j < 7; i = addDays(i, 1), j++) {\n columns.push(html`\n <div class=${this._getDayClass(i)}>\n <div class=\"column-content\">\n <div class=\"column-header\">\n <div class=\"day\">${formatDate(i, 'd')}</div>\n </div>\n </div>\n </div>\n `);\n }\n return columns;\n }\n\n private _renderEvents() {\n return this.weekDayEvents.map((eventDay, index) => {\n const weekStartDate = addDays(this.dateRange.startDate, index * 7);\n return html`\n <div class=\"multi-day-section\">\n <div class=\"multi-day-body-scroll\">\n <div class=\"multi-day-background\">\n <div class=\"columns\">\n ${this._renderMultiDayBackground(weekStartDate)}\n </div>\n </div>\n <div class=\"multi-events\">\n <div class=\"row-content\">\n ${eventDay.map(\n nodes => html`\n <div class=\"row\">\n ${nodes.map(node => {\n const evtCls = this.eventClickable\n ? 'event clickable'\n : 'event';\n const evtStyles: Record<string, string> = {\n left: `${this._getDatePercent(node.start, weekStartDate) + LONG_EVENT_PADDING}%`,\n width: `${this._getDatePercent(addDays(node.end, 1), weekStartDate) - this._getDatePercent(node.start, weekStartDate) - 2 * LONG_EVENT_PADDING}%`,\n };\n if (node.color) {\n this._populateColorVars(evtStyles, node.color);\n }\n return html`\n <div\n class=${evtCls}\n style=${this._styleMap(evtStyles)}\n @click=${() => {\n if (this.eventClickable)\n this._emitEventClick(node.data);\n }}\n >\n <div class=\"event-title\">\n ${node.title || '(no title)'}\n </div>\n </div>\n `;\n })}\n </div>\n `,\n )}\n <div class=\"row-spacer\"></div>\n </div>\n </div>\n </div>\n </div>\n `;\n });\n }\n\n private _styleMap(styles: Record<string, string>): string {\n return Object.entries(styles)\n .map(([k, v]) => `${k}:${v}`)\n .join(';');\n }\n\n render() {\n return html`\n <div class=\"calendar-month-view\">\n <div class=\"view-header\">\n <div class=\"columns\">${this._renderHeader()}</div>\n <div class=\"scrollbar-placeholder\"></div>\n </div>\n <div class=\"view-body\">\n <div class=\"view-body-scroll\">\n <div class=\"drawing-area\">${this._renderEvents()}</div>\n </div>\n </div>\n </div>\n `;\n }\n}\n"],"names":["LitElement","html","styles","property","state"],"mappings":"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"}
1
+ {"version":3,"file":"calendar-month-view.js","sources":["../../src/calendar/calendar-month-view.ts"],"sourcesContent":["import { LitElement, html, nothing } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport {\n addDays,\n differenceInDays,\n startOfDay,\n endOfDay,\n calculateMonthRange,\n formatDate,\n getTimePercent,\n LONG_EVENT_PADDING,\n} from './utils.js';\nimport { BaseEvent } from './base-event.js';\nimport { CalendarEvent } from './calendar-event.js';\nimport { MonthEventManager } from './event-manager.js';\nimport type { ColumnEvent } from './event-manager.js';\nimport IndividualComponent from '@/IndividualComponent.js';\nimport styles from './calendar-month-view.scss';\n\n/**\n * @label Calendar Month View\n * @tag wc-calendar-month-view\n * @rawTag calendar-month-view\n * @summary Internal month view component for the calendar.\n */\n@IndividualComponent\nexport class CalendarMonthView extends LitElement {\n static styles = [styles];\n\n @property({ type: Array })\n events: CalendarEvent[] = [];\n\n @property({ type: Boolean, attribute: 'event-clickable' })\n eventClickable: boolean = true;\n\n @property({ type: Object, attribute: false })\n currentTime: Date = new Date();\n\n @property({ type: Object, attribute: false })\n contextDate: Date = new Date();\n\n @state()\n private dateRange: any = {};\n\n @state()\n private weekDayEvents: ColumnEvent[][][] = [];\n\n override connectedCallback() {\n super.connectedCallback();\n this._processEvents();\n }\n\n override willUpdate(changedProperties: Map<string, unknown>) {\n if (\n changedProperties.has('events') ||\n changedProperties.has('contextDate')\n ) {\n this._processEvents();\n }\n }\n\n override firstUpdated() {\n const viewBody = this.renderRoot.querySelector('.view-body');\n if (viewBody) {\n const viewBodyHeight = viewBody.scrollHeight;\n viewBody.scrollTo({\n top:\n (getTimePercent(this.currentTime) / 100) * viewBodyHeight - 150,\n });\n }\n }\n\n private _processEvents() {\n this.dateRange = calculateMonthRange(this.contextDate, 1);\n this.weekDayEvents = [];\n\n for (\n let i = new Date(this.dateRange.startDate), j = 0;\n j < 6;\n i = addDays(i, 7), j++\n ) {\n const manager = new MonthEventManager();\n manager.addEvents(\n this.events.filter(event =>\n event.isOverlapping(\n new BaseEvent(startOfDay(i), endOfDay(addDays(i, 6))),\n ),\n ),\n );\n manager.process();\n this.weekDayEvents.push(manager.columns);\n }\n }\n\n private _getDatePercent(date: Date, dateRangeStartDate: Date): number {\n const currentDay = differenceInDays(startOfDay(date), dateRangeStartDate);\n const percent = (currentDay / 7) * 100;\n if (percent < 0) return 0;\n if (percent > 100) return 100;\n return percent;\n }\n\n private _getDayClass(date: Date): string {\n const diff = differenceInDays(\n startOfDay(date),\n startOfDay(this.currentTime),\n );\n if (diff === 0) return 'column today';\n if (diff < 0) return 'column past';\n return 'column future';\n }\n\n private _populateColorVars(\n styles: Record<string, string>,\n color: string,\n ) {\n styles['--calendar-event-bg-color'] = `var(--color-${color}-container)`;\n styles['--calendar-event-bg-color--hover'] = `var(--color-inverse-${color})`;\n styles['--calendar-event-border-color'] = `var(--color-${color})`;\n styles['--calendar-event-text-color'] = `var(--color-on-${color}-container)`;\n styles['--calendar-event-text-color--hover'] = `var(--color-on-${color})`;\n }\n\n private _emitEventClick(event: any) {\n this.dispatchEvent(\n new CustomEvent('month-view-event-click', {\n detail: { event },\n bubbles: true,\n composed: true,\n }),\n );\n }\n\n private _renderHeader() {\n const columns: any[] = [];\n for (\n let i = new Date(this.dateRange.startDate), j = 0;\n j < 7;\n i = addDays(i, 1), j++\n ) {\n columns.push(html`\n <div class=\"column\">\n <div class=\"column-content\">\n <div class=\"day\">${formatDate(i, 'EEEE')}</div>\n </div>\n </div>\n `);\n }\n return columns;\n }\n\n private _renderMultiDayBackground(sd: Date) {\n const columns: any[] = [];\n for (let i = new Date(sd), j = 0; j < 7; i = addDays(i, 1), j++) {\n columns.push(html`\n <div class=${this._getDayClass(i)}>\n <div class=\"column-content\">\n <div class=\"column-header\">\n <div class=\"day\">${formatDate(i, 'd')}</div>\n </div>\n </div>\n </div>\n `);\n }\n return columns;\n }\n\n private _renderEvents() {\n return this.weekDayEvents.map((eventDay, index) => {\n const weekStartDate = addDays(this.dateRange.startDate, index * 7);\n return html`\n <div class=\"multi-day-section\">\n <div class=\"multi-day-body-scroll\">\n <div class=\"multi-day-background\">\n <div class=\"columns\">\n ${this._renderMultiDayBackground(weekStartDate)}\n </div>\n </div>\n <div class=\"multi-events\">\n <div class=\"row-content\">\n ${eventDay.map(\n nodes => html`\n <div class=\"row\">\n ${nodes.map(node => {\n const evtCls = this.eventClickable\n ? 'event clickable'\n : 'event';\n const evtStyles: Record<string, string> = {\n left: `${this._getDatePercent(node.start, weekStartDate) + LONG_EVENT_PADDING}%`,\n width: `${this._getDatePercent(addDays(node.end, 1), weekStartDate) - this._getDatePercent(node.start, weekStartDate) - 2 * LONG_EVENT_PADDING}%`,\n };\n if (node.color) {\n this._populateColorVars(evtStyles, node.color);\n }\n return html`\n <div\n class=${evtCls}\n style=${this._styleMap(evtStyles)}\n @click=${() => {\n if (this.eventClickable)\n this._emitEventClick(node.data);\n }}\n >\n <div class=\"event-title\">\n ${node.title || '(no title)'}\n </div>\n </div>\n `;\n })}\n </div>\n `,\n )}\n <div class=\"row-spacer\"></div>\n </div>\n </div>\n </div>\n </div>\n `;\n });\n }\n\n private _styleMap(styles: Record<string, string>): string {\n return Object.entries(styles)\n .map(([k, v]) => `${k}:${v}`)\n .join(';');\n }\n\n render() {\n return html`\n <div class=\"calendar-month-view\">\n <div class=\"view-header\">\n <div class=\"columns\">${this._renderHeader()}</div>\n <div class=\"scrollbar-placeholder\"></div>\n </div>\n <div class=\"view-body\">\n <div class=\"view-body-scroll\">\n <div class=\"drawing-area\">${this._renderEvents()}</div>\n </div>\n </div>\n </div>\n `;\n }\n}\n"],"names":["LitElement","html","styles","property","state"],"mappings":"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"}
package/dist/calendar.js CHANGED
@@ -5,6 +5,7 @@ import { a as addDays, b as addMonths, f as formatDate, C as CalendarEvent } fro
5
5
 
6
6
  var css_248z = i`* {
7
7
  box-sizing: border-box;
8
+ -webkit-tap-highlight-color: transparent;
8
9
  }
9
10
 
10
11
  .screen-reader-only {