@expressivecss/expressive 0.10.1 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/CHANGELOG.md +238 -7
  2. package/README.md +22 -1
  3. package/dist/css/expressive.css +272 -107
  4. package/dist/css/expressive.css.map +1 -1
  5. package/dist/css/expressive.min.css +1 -1
  6. package/dist/css/expressive.min.css.map +1 -1
  7. package/dist/fonts/material-symbols-outlined.woff2 +0 -0
  8. package/dist/fonts/material-symbols-rounded.woff2 +0 -0
  9. package/dist/fonts/material-symbols-sharp.woff2 +0 -0
  10. package/dist/js/chunks/{chunk-YFXEJ7GR.mjs → chunk-3VOK6J7U.mjs} +7 -8
  11. package/dist/js/chunks/chunk-3VOK6J7U.mjs.map +7 -0
  12. package/dist/js/chunks/{chunk-XDB3G6RL.mjs → chunk-6N2XAEFK.mjs} +15 -4
  13. package/dist/js/chunks/{chunk-XDB3G6RL.mjs.map → chunk-6N2XAEFK.mjs.map} +2 -2
  14. package/dist/js/chunks/{chunk-MISGHDUU.mjs → chunk-6OMRGML6.mjs} +9 -7
  15. package/dist/js/chunks/{chunk-MISGHDUU.mjs.map → chunk-6OMRGML6.mjs.map} +2 -2
  16. package/dist/js/chunks/{chunk-A3BJA7V4.mjs → chunk-6WLSDZ4O.mjs} +2 -2
  17. package/dist/js/chunks/{chunk-JODJAGFS.mjs → chunk-CKQP6P76.mjs} +31 -8
  18. package/dist/js/chunks/chunk-CKQP6P76.mjs.map +7 -0
  19. package/dist/js/chunks/{chunk-KR44BSYQ.mjs → chunk-DLWYKFEI.mjs} +3 -3
  20. package/dist/js/chunks/{chunk-SLFNPY5M.mjs → chunk-EC63CHXU.mjs} +2 -2
  21. package/dist/js/chunks/chunk-G3I5H2U3.mjs +7 -0
  22. package/dist/js/chunks/{chunk-ZAOYQ6SY.mjs.map → chunk-G3I5H2U3.mjs.map} +1 -1
  23. package/dist/js/chunks/{chunk-LZVBJ33S.mjs → chunk-GZWPXXY6.mjs} +15 -8
  24. package/dist/js/chunks/chunk-GZWPXXY6.mjs.map +7 -0
  25. package/dist/js/chunks/{chunk-QYCYP443.mjs → chunk-H2WA4XHH.mjs} +43 -36
  26. package/dist/js/chunks/chunk-H2WA4XHH.mjs.map +7 -0
  27. package/dist/js/chunks/{chunk-G576EP5O.mjs → chunk-HB6IW7QQ.mjs} +78 -16
  28. package/dist/js/chunks/chunk-HB6IW7QQ.mjs.map +7 -0
  29. package/dist/js/chunks/{chunk-7MM4VJJO.mjs → chunk-HLDXZ7XB.mjs} +23 -15
  30. package/dist/js/chunks/chunk-HLDXZ7XB.mjs.map +7 -0
  31. package/dist/js/chunks/{chunk-ZIZVUWRL.mjs → chunk-HNFSMIBY.mjs} +18 -18
  32. package/dist/js/chunks/{chunk-D4UZ4HFN.mjs → chunk-IFXVDDDH.mjs} +23 -11
  33. package/dist/js/chunks/chunk-IFXVDDDH.mjs.map +7 -0
  34. package/dist/js/chunks/{chunk-QSQ24FYT.mjs → chunk-LTWPGFBR.mjs} +2 -2
  35. package/dist/js/chunks/{chunk-QSQ24FYT.mjs.map → chunk-LTWPGFBR.mjs.map} +2 -2
  36. package/dist/js/chunks/{chunk-AOGFNMXS.mjs → chunk-LWBQIX5J.mjs} +16 -16
  37. package/dist/js/chunks/chunk-LWBQIX5J.mjs.map +7 -0
  38. package/dist/js/chunks/{chunk-GY2Z5CJ2.mjs → chunk-NNYP33NB.mjs} +67 -32
  39. package/dist/js/chunks/chunk-NNYP33NB.mjs.map +7 -0
  40. package/dist/js/chunks/{chunk-VAS6JQ6P.mjs → chunk-PIJ2TAR3.mjs} +3 -3
  41. package/dist/js/chunks/{chunk-JR24UB4X.mjs → chunk-PSSHQWCX.mjs} +2 -2
  42. package/dist/js/chunks/{chunk-PIIAEYAJ.mjs → chunk-QDAL4IYN.mjs} +2 -2
  43. package/dist/js/chunks/chunk-QV2JAWIZ.mjs +135 -0
  44. package/dist/js/chunks/chunk-QV2JAWIZ.mjs.map +7 -0
  45. package/dist/js/chunks/{chunk-N3UHGN3N.mjs → chunk-QVVEWBOF.mjs} +3 -3
  46. package/dist/js/chunks/{chunk-ZZBZI2XN.mjs → chunk-RFZZCYVU.mjs} +18 -11
  47. package/dist/js/chunks/chunk-RFZZCYVU.mjs.map +7 -0
  48. package/dist/js/chunks/{chunk-TYM6U5DY.mjs → chunk-UAEAQBRC.mjs} +2 -2
  49. package/dist/js/chunks/{chunk-7UXHSYIA.mjs → chunk-UBLRRJ7N.mjs} +3 -3
  50. package/dist/js/chunks/{chunk-EP3CVKB5.mjs → chunk-UEZUJQ66.mjs} +8 -5
  51. package/dist/js/chunks/chunk-UEZUJQ66.mjs.map +7 -0
  52. package/dist/js/chunks/{chunk-JNPIWFJT.mjs → chunk-UNEMYWEW.mjs} +3 -3
  53. package/dist/js/chunks/{chunk-JKNPQQWY.mjs → chunk-WJXDBPXQ.mjs} +28 -12
  54. package/dist/js/chunks/chunk-WJXDBPXQ.mjs.map +7 -0
  55. package/dist/js/chunks/{chunk-XO5WX3TK.mjs → chunk-YDCS5S3J.mjs} +2 -2
  56. package/dist/js/chunks/{chunk-TK6PX2GC.mjs → chunk-YSBCHYXP.mjs} +16 -8
  57. package/dist/js/chunks/chunk-YSBCHYXP.mjs.map +7 -0
  58. package/dist/js/expressive.cjs +398 -217
  59. package/dist/js/expressive.cjs.map +2 -2
  60. package/dist/js/expressive.js +398 -217
  61. package/dist/js/expressive.js.map +2 -2
  62. package/dist/js/expressive.min.js +10 -10
  63. package/dist/js/expressive.min.js.map +3 -3
  64. package/dist/js/expressive.mjs +30 -30
  65. package/dist/js/internal/behaviors/bottomSheets.mjs +3 -3
  66. package/dist/js/internal/behaviors/dialogs.mjs +2 -2
  67. package/dist/js/internal/behaviors/forms.mjs +2 -2
  68. package/dist/js/internal/behaviors/sheetDrag.mjs +2 -2
  69. package/dist/js/internal/behaviors/sideSheets.mjs +3 -3
  70. package/dist/js/internal/components/appBar.mjs +2 -2
  71. package/dist/js/internal/components/autocomplete.mjs +4 -4
  72. package/dist/js/internal/components/buttonGroup.mjs +2 -2
  73. package/dist/js/internal/components/buttons.mjs +3 -3
  74. package/dist/js/internal/components/cards.mjs +3 -3
  75. package/dist/js/internal/components/carousel.mjs +3 -3
  76. package/dist/js/internal/components/characterCounter.mjs +2 -2
  77. package/dist/js/internal/components/chips.mjs +5 -5
  78. package/dist/js/internal/components/datepicker.mjs +6 -6
  79. package/dist/js/internal/components/expandingCard.mjs +3 -3
  80. package/dist/js/internal/components/index.mjs +23 -23
  81. package/dist/js/internal/components/lightbox.mjs +3 -3
  82. package/dist/js/internal/components/menu.mjs +3 -3
  83. package/dist/js/internal/components/navigationRail.mjs +2 -2
  84. package/dist/js/internal/components/registry.mjs +24 -24
  85. package/dist/js/internal/components/scrollspy.mjs +2 -2
  86. package/dist/js/internal/components/select.mjs +4 -4
  87. package/dist/js/internal/components/slider.mjs +3 -3
  88. package/dist/js/internal/components/snackbar.mjs +2 -2
  89. package/dist/js/internal/components/tabs.mjs +4 -4
  90. package/dist/js/internal/components/timepicker.mjs +4 -4
  91. package/dist/js/internal/components/tooltip.mjs +3 -3
  92. package/dist/js/internal/core/component.mjs +1 -1
  93. package/dist/js/internal/core/utils.mjs +1 -1
  94. package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
  95. package/dist/js/modular.mjs +30 -30
  96. package/dist/types/components/appBar.d.ts +1 -1
  97. package/dist/types/components/autocomplete.d.ts +2 -1
  98. package/dist/types/components/datepicker.d.ts +6 -2
  99. package/dist/types/components/menu.d.ts +1 -0
  100. package/dist/types/components/scrollspy.d.ts +5 -4
  101. package/dist/types/components/select.d.ts +7 -1
  102. package/dist/types/components/slider.d.ts +1 -0
  103. package/dist/types/components/snackbar.d.ts +6 -0
  104. package/dist/types/components/timepicker.d.ts +4 -1
  105. package/dist/types/components/tooltip.d.ts +2 -1
  106. package/dist/types/modular.d.ts +1 -1
  107. package/package.json +1 -1
  108. package/src/sass/abstracts/_mixins.scss +19 -11
  109. package/src/sass/components/_buttons.scss +45 -0
  110. package/src/sass/components/_carousel.scss +9 -7
  111. package/src/sass/components/_chips.scss +5 -9
  112. package/src/sass/components/_dialog.scss +0 -7
  113. package/src/sass/components/_navbar.scss +13 -8
  114. package/src/sass/components/_page-footer.scss +0 -11
  115. package/src/sass/components/_progress.scss +25 -6
  116. package/src/sass/components/_snackbar.scss +1 -1
  117. package/src/sass/components/_timepicker.scss +2 -2
  118. package/src/sass/components/_toolbar.scss +1 -1
  119. package/src/sass/components/forms/_checkboxes.scss +2 -2
  120. package/src/sass/components/forms/_fieldset.scss +20 -1
  121. package/src/sass/components/forms/_file-input.scss +11 -3
  122. package/src/sass/components/forms/_input-fields.scss +35 -15
  123. package/src/sass/components/forms/_radio-buttons.scss +2 -2
  124. package/src/sass/components/forms/_select.scss +3 -2
  125. package/src/sass/components/forms/_slider.scss +51 -29
  126. package/src/sass/components/forms/_switches.scss +3 -3
  127. package/src/sass/utilities/_helpers.scss +14 -0
  128. package/src/sass/utilities/_spacing.scss +29 -23
  129. package/src/sass/utilities/_visibility.scss +7 -1
  130. package/dist/js/chunks/chunk-7MM4VJJO.mjs.map +0 -7
  131. package/dist/js/chunks/chunk-AOGFNMXS.mjs.map +0 -7
  132. package/dist/js/chunks/chunk-D4UZ4HFN.mjs.map +0 -7
  133. package/dist/js/chunks/chunk-EP3CVKB5.mjs.map +0 -7
  134. package/dist/js/chunks/chunk-G576EP5O.mjs.map +0 -7
  135. package/dist/js/chunks/chunk-GY2Z5CJ2.mjs.map +0 -7
  136. package/dist/js/chunks/chunk-JKNPQQWY.mjs.map +0 -7
  137. package/dist/js/chunks/chunk-JODJAGFS.mjs.map +0 -7
  138. package/dist/js/chunks/chunk-LZVBJ33S.mjs.map +0 -7
  139. package/dist/js/chunks/chunk-QYCYP443.mjs.map +0 -7
  140. package/dist/js/chunks/chunk-TK6PX2GC.mjs.map +0 -7
  141. package/dist/js/chunks/chunk-TZZ24ZQS.mjs +0 -154
  142. package/dist/js/chunks/chunk-TZZ24ZQS.mjs.map +0 -7
  143. package/dist/js/chunks/chunk-YFXEJ7GR.mjs.map +0 -7
  144. package/dist/js/chunks/chunk-ZAOYQ6SY.mjs +0 -7
  145. package/dist/js/chunks/chunk-ZZBZI2XN.mjs.map +0 -7
  146. /package/dist/js/chunks/{chunk-A3BJA7V4.mjs.map → chunk-6WLSDZ4O.mjs.map} +0 -0
  147. /package/dist/js/chunks/{chunk-KR44BSYQ.mjs.map → chunk-DLWYKFEI.mjs.map} +0 -0
  148. /package/dist/js/chunks/{chunk-SLFNPY5M.mjs.map → chunk-EC63CHXU.mjs.map} +0 -0
  149. /package/dist/js/chunks/{chunk-ZIZVUWRL.mjs.map → chunk-HNFSMIBY.mjs.map} +0 -0
  150. /package/dist/js/chunks/{chunk-VAS6JQ6P.mjs.map → chunk-PIJ2TAR3.mjs.map} +0 -0
  151. /package/dist/js/chunks/{chunk-JR24UB4X.mjs.map → chunk-PSSHQWCX.mjs.map} +0 -0
  152. /package/dist/js/chunks/{chunk-PIIAEYAJ.mjs.map → chunk-QDAL4IYN.mjs.map} +0 -0
  153. /package/dist/js/chunks/{chunk-N3UHGN3N.mjs.map → chunk-QVVEWBOF.mjs.map} +0 -0
  154. /package/dist/js/chunks/{chunk-TYM6U5DY.mjs.map → chunk-UAEAQBRC.mjs.map} +0 -0
  155. /package/dist/js/chunks/{chunk-7UXHSYIA.mjs.map → chunk-UBLRRJ7N.mjs.map} +0 -0
  156. /package/dist/js/chunks/{chunk-JNPIWFJT.mjs.map → chunk-UNEMYWEW.mjs.map} +0 -0
  157. /package/dist/js/chunks/{chunk-XO5WX3TK.mjs.map → chunk-YDCS5S3J.mjs.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  installSheetDrag
3
- } from "./chunk-LZVBJ33S.mjs";
3
+ } from "./chunk-GZWPXXY6.mjs";
4
4
 
5
5
  // src/ts/behaviors/sideSheets.ts
6
6
  var startDocked = (dialog) => dialog.classList.contains("left") || dialog.classList.contains("left-sheet") || dialog.classList.contains("start");
@@ -25,4 +25,4 @@ var SideSheets = class {
25
25
  export {
26
26
  SideSheets
27
27
  };
28
- //# sourceMappingURL=chunk-A3BJA7V4.mjs.map
28
+ //# sourceMappingURL=chunk-6WLSDZ4O.mjs.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  Utils
3
- } from "./chunk-MISGHDUU.mjs";
3
+ } from "./chunk-6OMRGML6.mjs";
4
4
  import {
5
5
  Component
6
- } from "./chunk-QSQ24FYT.mjs";
6
+ } from "./chunk-LTWPGFBR.mjs";
7
7
 
8
8
  // src/ts/components/tooltip.ts
9
9
  var _defaults = {
@@ -23,9 +23,8 @@ var Tooltip = class _Tooltip extends Component {
23
23
  /**
24
24
  * Show tooltip.
25
25
  */
26
- this.open = (isManual) => {
26
+ this.open = (isManual = true) => {
27
27
  if (this.isOpen) return;
28
- isManual = isManual === void 0 ? true : void 0;
29
28
  clearTimeout(this._exitDelayTimeout);
30
29
  clearTimeout(this._animationTimeout);
31
30
  this.isOpen = true;
@@ -109,8 +108,21 @@ var Tooltip = class _Tooltip extends Component {
109
108
  this.isOpen = false;
110
109
  this.isHovered = false;
111
110
  this.isFocused = false;
112
- if (this.el.getAttribute("aria-describedby") === this.tooltipEl.id) {
113
- this.el.removeAttribute("aria-describedby");
111
+ const descriptions = this.el.getAttribute("aria-describedby")?.split(/\s+/);
112
+ if (descriptions?.includes(this.tooltipEl.id)) {
113
+ const remaining = descriptions.filter((id) => id && id !== this.tooltipEl.id).join(" ");
114
+ if (remaining) this.el.setAttribute("aria-describedby", remaining);
115
+ else this.el.removeAttribute("aria-describedby");
116
+ }
117
+ if (this._originalContent) {
118
+ const { el, marker, display, priority, hidden, contentClass } = this._originalContent;
119
+ el.style.setProperty("display", display, priority);
120
+ if (hidden === null) el.removeAttribute("hidden");
121
+ else el.setAttribute("hidden", hidden);
122
+ el.classList.toggle("tooltip-content", contentClass);
123
+ if (!el.className) el.removeAttribute("class");
124
+ marker.replaceWith(el);
125
+ this._originalContent = null;
114
126
  }
115
127
  this.tooltipEl.remove();
116
128
  this._removeEventHandlers();
@@ -121,10 +133,21 @@ var Tooltip = class _Tooltip extends Component {
121
133
  this.tooltipEl.classList.add("tooltip");
122
134
  this.tooltipEl.id = `tooltip-${Utils.guid()}`;
123
135
  this.tooltipEl.setAttribute("role", "tooltip");
124
- this.el.setAttribute("aria-describedby", this.tooltipEl.id);
136
+ this.el.setAttribute("aria-describedby", [this.el.getAttribute("aria-describedby"), this.tooltipEl.id].filter(Boolean).join(" "));
125
137
  const tooltipContentEl = this.options.tooltipId ? Utils.getElementById(this.el, this.options.tooltipId) : document.createElement("div");
126
138
  if (this.options.tooltipId) {
127
139
  this.tooltipEl.classList.add("rich");
140
+ const marker = document.createComment("");
141
+ tooltipContentEl.before(marker);
142
+ this._originalContent = {
143
+ el: tooltipContentEl,
144
+ marker,
145
+ display: tooltipContentEl.style.display,
146
+ priority: tooltipContentEl.style.getPropertyPriority("display"),
147
+ hidden: tooltipContentEl.getAttribute("hidden"),
148
+ contentClass: tooltipContentEl.classList.contains("tooltip-content")
149
+ };
150
+ tooltipContentEl.removeAttribute("hidden");
128
151
  }
129
152
  tooltipContentEl.style.display = "";
130
153
  tooltipContentEl.classList.add("tooltip-content");
@@ -264,4 +287,4 @@ var Tooltip = class _Tooltip extends Component {
264
287
  export {
265
288
  Tooltip
266
289
  };
267
- //# sourceMappingURL=chunk-JODJAGFS.mjs.map
290
+ //# sourceMappingURL=chunk-CKQP6P76.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/ts/components/tooltip.ts"],
4
+ "sourcesContent": ["import { Utils } from '../core/utils';\nimport { Component, BaseOptions, InitElements, InitElement } from '../core/component';\n\nexport type TooltipPosition = 'top' | 'right' | 'bottom' | 'left';\n\nexport interface TooltipOptions extends BaseOptions {\n /**\n * Delay time before tooltip disappears.\n * @default 200\n */\n exitDelay: number;\n /**\n * Delay time before tooltip appears.\n * @default 0\n */\n enterDelay: number;\n /**\n * Element Id for the tooltip.\n * @default \"\"\n */\n tooltipId?: string;\n /**\n * Text string for the tooltip.\n * @default \"\"\n */\n text: string;\n /**\n * Set distance tooltip appears away from its activator\n * excluding transitionMovement.\n * @default 4\n */\n margin: number;\n /**\n * Enter transition duration.\n * @default 300\n */\n inDuration: number;\n /**\n * Opacity of the tooltip.\n * @default 1\n */\n opacity: number;\n /**\n * Exit transition duration.\n * @default 250\n */\n outDuration: number;\n /**\n * Set the direction of the tooltip.\n * @default 'bottom'\n */\n position: TooltipPosition;\n /**\n * Amount in px that the tooltip moves during its transition.\n * @default 10\n */\n transitionMovement: number;\n}\n\nconst _defaults: TooltipOptions = {\n exitDelay: 200,\n enterDelay: 0,\n text: '',\n margin: 4,\n inDuration: 250,\n outDuration: 200,\n position: 'bottom' as TooltipPosition,\n transitionMovement: 10,\n opacity: 1\n};\n\nexport class Tooltip extends Component<TooltipOptions> {\n /**\n * If tooltip is open.\n */\n isOpen: boolean;\n /**\n * If tooltip is hovered.\n */\n isHovered: boolean;\n /**\n * If tooltip is focused.\n */\n isFocused: boolean;\n tooltipEl: HTMLElement;\n private _exitDelayTimeout: ReturnType<typeof setTimeout>;\n private _enterDelayTimeout: ReturnType<typeof setTimeout>;\n private _animationTimeout: ReturnType<typeof setTimeout>;\n private _originalContent: {\n el: HTMLElement;\n marker: Comment;\n display: string;\n priority: string;\n hidden: string | null;\n contentClass: boolean;\n };\n xMovement: number;\n yMovement: number;\n\n constructor(el: HTMLElement, options: Partial<TooltipOptions>) {\n super(el, options, Tooltip);\n this.el['Expressive_Tooltip'] = this;\n\n this.options = {\n ...Tooltip.defaults,\n ...this._getAttributeOptions(),\n ...options\n };\n\n this.isOpen = false;\n this.isHovered = false;\n this.isFocused = false;\n this._appendTooltipEl();\n this._setupEventHandlers();\n }\n\n static get defaults(): TooltipOptions {\n return _defaults;\n }\n\n /**\n * Initializes instance of Tooltip.\n * @param el HTML element.\n * @param options Component options.\n */\n static init(el: HTMLElement, options?: Partial<TooltipOptions>): Tooltip;\n /**\n * Initializes instances of Tooltip.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(els: InitElements<InitElement>, options?: Partial<TooltipOptions>): Tooltip[];\n /**\n * Initializes instances of Tooltip.\n * @param els HTML elements.\n * @param options Component options.\n */\n static init(\n els: HTMLElement | InitElements<InitElement>,\n options: Partial<TooltipOptions> = {}\n ): Tooltip | Tooltip[] {\n return super.init(els, options, Tooltip);\n }\n\n static getInstance(el: HTMLElement): Tooltip {\n return el['Expressive_Tooltip'];\n }\n\n destroy() {\n clearTimeout(this._enterDelayTimeout);\n clearTimeout(this._exitDelayTimeout);\n clearTimeout(this._animationTimeout);\n this.isOpen = false;\n this.isHovered = false;\n this.isFocused = false;\n const descriptions = this.el.getAttribute('aria-describedby')?.split(/\\s+/);\n if (descriptions?.includes(this.tooltipEl.id)) {\n const remaining = descriptions.filter(id => id && id !== this.tooltipEl.id).join(' ');\n if (remaining) this.el.setAttribute('aria-describedby', remaining);\n else this.el.removeAttribute('aria-describedby');\n }\n if (this._originalContent) {\n const { el, marker, display, priority, hidden, contentClass } = this._originalContent;\n el.style.setProperty('display', display, priority);\n if (hidden === null) el.removeAttribute('hidden');\n else el.setAttribute('hidden', hidden);\n el.classList.toggle('tooltip-content', contentClass);\n if (!el.className) el.removeAttribute('class');\n marker.replaceWith(el);\n this._originalContent = null;\n }\n this.tooltipEl.remove();\n this._removeEventHandlers();\n this.el['Expressive_Tooltip'] = undefined;\n }\n\n _appendTooltipEl() {\n this.tooltipEl = document.createElement('div');\n this.tooltipEl.classList.add('tooltip');\n this.tooltipEl.id = `tooltip-${Utils.guid()}`;\n this.tooltipEl.setAttribute('role', 'tooltip');\n this.el.setAttribute('aria-describedby', [this.el.getAttribute('aria-describedby'), this.tooltipEl.id].filter(Boolean).join(' '));\n\n const tooltipContentEl = this.options.tooltipId\n ? Utils.getElementById(this.el, this.options.tooltipId)\n : document.createElement('div');\n if (this.options.tooltipId) {\n this.tooltipEl.classList.add('rich');\n const marker = document.createComment('');\n tooltipContentEl.before(marker);\n this._originalContent = {\n el: tooltipContentEl, marker,\n display: tooltipContentEl.style.display,\n priority: tooltipContentEl.style.getPropertyPriority('display'),\n hidden: tooltipContentEl.getAttribute('hidden'),\n contentClass: tooltipContentEl.classList.contains('tooltip-content')\n };\n tooltipContentEl.removeAttribute('hidden');\n }\n tooltipContentEl.style.display = '';\n tooltipContentEl.classList.add('tooltip-content');\n this._setTooltipContent(tooltipContentEl);\n this.tooltipEl.appendChild(tooltipContentEl);\n Utils.portalRoot(this.el).appendChild(this.tooltipEl);\n }\n\n _setTooltipContent(tooltipContentEl: HTMLElement) {\n if (this.options.tooltipId) return;\n tooltipContentEl.innerText = this.options.text;\n }\n\n _updateTooltipContent() {\n this._setTooltipContent(this.tooltipEl.querySelector('.tooltip-content'));\n }\n\n _setupEventHandlers() {\n for (const el of [this.el, this.tooltipEl]) {\n el.addEventListener('mouseenter', this._handleMouseEnter);\n el.addEventListener('mouseleave', this._handleMouseLeave);\n el.addEventListener('focus', this._handleFocus, true);\n el.addEventListener('blur', this._handleBlur, true);\n }\n this.el.ownerDocument.addEventListener('keydown', this._handleKeydown, true);\n }\n\n _removeEventHandlers() {\n for (const el of [this.el, this.tooltipEl]) {\n el.removeEventListener('mouseenter', this._handleMouseEnter);\n el.removeEventListener('mouseleave', this._handleMouseLeave);\n el.removeEventListener('focus', this._handleFocus, true);\n el.removeEventListener('blur', this._handleBlur, true);\n }\n this.el.ownerDocument.removeEventListener('keydown', this._handleKeydown, true);\n }\n\n /**\n * Show tooltip.\n */\n open = (isManual: boolean = true) => {\n if (this.isOpen) return;\n clearTimeout(this._exitDelayTimeout);\n clearTimeout(this._animationTimeout);\n this.isOpen = true;\n // Update tooltip content with HTML attribute options\n this.options = { ...this.options, ...this._getAttributeOptions() };\n this._updateTooltipContent();\n this._setEnterDelayTimeout(isManual);\n };\n\n /**\n * Hide tooltip.\n */\n close = () => {\n if (!this.isOpen) return;\n this.isHovered = false;\n this.isFocused = false;\n this.isOpen = false;\n clearTimeout(this._enterDelayTimeout);\n this._setExitDelayTimeout();\n };\n\n _setExitDelayTimeout() {\n clearTimeout(this._exitDelayTimeout);\n this._exitDelayTimeout = setTimeout(() => {\n if (this.isHovered || this.isFocused) return;\n this._animateOut();\n }, this.options.exitDelay);\n }\n\n _setEnterDelayTimeout(isManual) {\n clearTimeout(this._enterDelayTimeout);\n this._enterDelayTimeout = setTimeout(() => {\n if (!this.isHovered && !this.isFocused && !isManual) return;\n this._animateIn();\n }, this.options.enterDelay);\n }\n\n _positionTooltip() {\n const tooltip: HTMLElement = this.tooltipEl;\n const origin = this.el as HTMLElement,\n originHeight = origin.offsetHeight,\n originWidth = origin.offsetWidth,\n tooltipHeight = tooltip.offsetHeight,\n tooltipWidth = tooltip.offsetWidth,\n margin = this.options.margin;\n\n this.xMovement = 0;\n this.yMovement = 0;\n\n const originRect = origin.getBoundingClientRect();\n let targetTop = originRect.top + Utils.getDocumentScrollTop();\n let targetLeft = originRect.left + Utils.getDocumentScrollLeft();\n if (this.options.position === 'top') {\n targetTop += -tooltipHeight - margin;\n targetLeft += originWidth / 2 - tooltipWidth / 2;\n this.yMovement = -this.options.transitionMovement;\n } else if (this.options.position === 'right') {\n targetTop += originHeight / 2 - tooltipHeight / 2;\n targetLeft += originWidth + margin;\n this.xMovement = this.options.transitionMovement;\n } else if (this.options.position === 'left') {\n targetTop += originHeight / 2 - tooltipHeight / 2;\n targetLeft += -tooltipWidth - margin;\n this.xMovement = -this.options.transitionMovement;\n } else {\n targetTop += originHeight + margin;\n targetLeft += originWidth / 2 - tooltipWidth / 2;\n this.yMovement = this.options.transitionMovement;\n }\n\n const newCoordinates = this._repositionWithinScreen(\n targetLeft,\n targetTop,\n tooltipWidth,\n tooltipHeight\n );\n\n tooltip.style.setProperty('--md-comp-tooltip-anchor-gap', `${Math.max(0, margin) + Math.abs(this.options.transitionMovement)}px`);\n tooltip.style.top = newCoordinates.y + 'px';\n tooltip.style.left = newCoordinates.x + 'px';\n }\n\n _repositionWithinScreen(x: number, y: number, width: number, height: number) {\n return Utils._repositionWithinScreen(\n x, y, width, height, this.options.margin, this.options.transitionMovement, 'center'\n );\n }\n\n _animateIn() { this._animate(true); }\n\n _animateOut() { this._animate(false); }\n\n _animate(show: boolean) {\n const style = this.tooltipEl.style;\n const reduce = this.el.ownerDocument.defaultView.matchMedia('(prefers-reduced-motion: reduce)').matches;\n const duration = reduce ? 0 : show ? this.options.inDuration : this.options.outDuration;\n if (show) {\n this._positionTooltip();\n style.visibility = 'visible';\n style.overflow = 'visible';\n }\n style.transition = `transform ${duration}ms ease-out, opacity ${duration}ms ease-out`;\n clearTimeout(this._animationTimeout);\n this._animationTimeout = setTimeout(() => {\n style.transform = show && !reduce ? `translateX(${this.xMovement}px) translateY(${this.yMovement}px)` : 'none';\n style.opacity = show ? (this.options.opacity || 1).toString() : '0';\n if (!show) this._animationTimeout = setTimeout(() => {\n style.visibility = 'hidden';\n style.overflow = '';\n }, duration);\n }, 1);\n }\n\n _handleMouseEnter = () => {\n this.isHovered = true;\n this.open(false);\n };\n\n _handleMouseLeave = (event: MouseEvent) => {\n const next = event.relatedTarget as Node | null;\n if (next && (this.el.contains(next) || this.tooltipEl.contains(next))) return;\n this.isHovered = false;\n if (!this.isFocused) this.close();\n };\n\n _handleKeydown = (event: KeyboardEvent) => {\n if (event.key !== 'Escape' || !this.isOpen) return;\n event.preventDefault();\n event.stopPropagation();\n this.close();\n clearTimeout(this._exitDelayTimeout);\n this._animateOut();\n };\n\n // Focus opens the tooltip only when it arrived by keyboard: a pointer press\n // on the trigger also focuses it, and _handleMouseEnter already covers that.\n _handleFocus = (event: FocusEvent) => {\n if ((event.target as HTMLElement).matches(':focus-visible')) {\n this.isFocused = true;\n this.open(false);\n }\n };\n\n _handleBlur = (event: FocusEvent) => {\n const next = event.relatedTarget as Node | null;\n if (next && (this.el.contains(next) || this.tooltipEl.contains(next))) return;\n this.isFocused = false;\n if (!this.isHovered) this.close();\n };\n\n _getAttributeOptions(): Partial<TooltipOptions> {\n const attributeOptions: Partial<TooltipOptions> = {};\n const tooltipTextOption = this.el.getAttribute('data-tooltip');\n const tooltipId = this.el.getAttribute('data-tooltip-id');\n const positionOption = this.el.getAttribute('data-position');\n if (tooltipTextOption) {\n attributeOptions.text = tooltipTextOption;\n }\n if (positionOption) {\n attributeOptions.position = positionOption as TooltipPosition;\n }\n if (tooltipId) {\n attributeOptions.tooltipId = tooltipId;\n }\n\n return attributeOptions;\n }\n}\n"],
5
+ "mappings": ";;;;;;;;AA2DA,IAAM,YAA4B;AAAA,EAChC,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,UAAU;AAAA,EACV,oBAAoB;AAAA,EACpB,SAAS;AACX;AAEO,IAAM,UAAN,MAAM,iBAAgB,UAA0B;AAAA,EA4BrD,YAAY,IAAiB,SAAkC;AAC7D,UAAM,IAAI,SAAS,QAAO;AA0I5B;AAAA;AAAA;AAAA,gBAAO,CAAC,WAAoB,SAAS;AACnC,UAAI,KAAK,OAAQ;AACjB,mBAAa,KAAK,iBAAiB;AACnC,mBAAa,KAAK,iBAAiB;AACnC,WAAK,SAAS;AAEd,WAAK,UAAU,EAAE,GAAG,KAAK,SAAS,GAAG,KAAK,qBAAqB,EAAE;AACjE,WAAK,sBAAsB;AAC3B,WAAK,sBAAsB,QAAQ;AAAA,IACrC;AAKA;AAAA;AAAA;AAAA,iBAAQ,MAAM;AACZ,UAAI,CAAC,KAAK,OAAQ;AAClB,WAAK,YAAY;AACjB,WAAK,YAAY;AACjB,WAAK,SAAS;AACd,mBAAa,KAAK,kBAAkB;AACpC,WAAK,qBAAqB;AAAA,IAC5B;AA8FA,6BAAoB,MAAM;AACxB,WAAK,YAAY;AACjB,WAAK,KAAK,KAAK;AAAA,IACjB;AAEA,6BAAoB,CAAC,UAAsB;AACzC,YAAM,OAAO,MAAM;AACnB,UAAI,SAAS,KAAK,GAAG,SAAS,IAAI,KAAK,KAAK,UAAU,SAAS,IAAI,GAAI;AACvE,WAAK,YAAY;AACjB,UAAI,CAAC,KAAK,UAAW,MAAK,MAAM;AAAA,IAClC;AAEA,0BAAiB,CAAC,UAAyB;AACzC,UAAI,MAAM,QAAQ,YAAY,CAAC,KAAK,OAAQ;AAC5C,YAAM,eAAe;AACrB,YAAM,gBAAgB;AACtB,WAAK,MAAM;AACX,mBAAa,KAAK,iBAAiB;AACnC,WAAK,YAAY;AAAA,IACnB;AAIA;AAAA;AAAA,wBAAe,CAAC,UAAsB;AACpC,UAAK,MAAM,OAAuB,QAAQ,gBAAgB,GAAG;AAC3D,aAAK,YAAY;AACjB,aAAK,KAAK,KAAK;AAAA,MACjB;AAAA,IACF;AAEA,uBAAc,CAAC,UAAsB;AACnC,YAAM,OAAO,MAAM;AACnB,UAAI,SAAS,KAAK,GAAG,SAAS,IAAI,KAAK,KAAK,UAAU,SAAS,IAAI,GAAI;AACvE,WAAK,YAAY;AACjB,UAAI,CAAC,KAAK,UAAW,MAAK,MAAM;AAAA,IAClC;AA/RE,SAAK,GAAG,oBAAoB,IAAI;AAEhC,SAAK,UAAU;AAAA,MACb,GAAG,SAAQ;AAAA,MACX,GAAG,KAAK,qBAAqB;AAAA,MAC7B,GAAG;AAAA,IACL;AAEA,SAAK,SAAS;AACd,SAAK,YAAY;AACjB,SAAK,YAAY;AACjB,SAAK,iBAAiB;AACtB,SAAK,oBAAoB;AAAA,EAC3B;AAAA,EAEA,WAAW,WAA2B;AACpC,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,OAAO,KACL,KACA,UAAmC,CAAC,GACf;AACrB,WAAO,MAAM,KAAK,KAAK,SAAS,QAAO;AAAA,EACzC;AAAA,EAEA,OAAO,YAAY,IAA0B;AAC3C,WAAO,GAAG,oBAAoB;AAAA,EAChC;AAAA,EAEA,UAAU;AACR,iBAAa,KAAK,kBAAkB;AACpC,iBAAa,KAAK,iBAAiB;AACnC,iBAAa,KAAK,iBAAiB;AACnC,SAAK,SAAS;AACd,SAAK,YAAY;AACjB,SAAK,YAAY;AACjB,UAAM,eAAe,KAAK,GAAG,aAAa,kBAAkB,GAAG,MAAM,KAAK;AAC1E,QAAI,cAAc,SAAS,KAAK,UAAU,EAAE,GAAG;AAC7C,YAAM,YAAY,aAAa,OAAO,QAAM,MAAM,OAAO,KAAK,UAAU,EAAE,EAAE,KAAK,GAAG;AACpF,UAAI,UAAW,MAAK,GAAG,aAAa,oBAAoB,SAAS;AAAA,UAC5D,MAAK,GAAG,gBAAgB,kBAAkB;AAAA,IACjD;AACA,QAAI,KAAK,kBAAkB;AACzB,YAAM,EAAE,IAAI,QAAQ,SAAS,UAAU,QAAQ,aAAa,IAAI,KAAK;AACrE,SAAG,MAAM,YAAY,WAAW,SAAS,QAAQ;AACjD,UAAI,WAAW,KAAM,IAAG,gBAAgB,QAAQ;AAAA,UAC3C,IAAG,aAAa,UAAU,MAAM;AACrC,SAAG,UAAU,OAAO,mBAAmB,YAAY;AACnD,UAAI,CAAC,GAAG,UAAW,IAAG,gBAAgB,OAAO;AAC7C,aAAO,YAAY,EAAE;AACrB,WAAK,mBAAmB;AAAA,IAC1B;AACA,SAAK,UAAU,OAAO;AACtB,SAAK,qBAAqB;AAC1B,SAAK,GAAG,oBAAoB,IAAI;AAAA,EAClC;AAAA,EAEA,mBAAmB;AACjB,SAAK,YAAY,SAAS,cAAc,KAAK;AAC7C,SAAK,UAAU,UAAU,IAAI,SAAS;AACtC,SAAK,UAAU,KAAK,WAAW,MAAM,KAAK,CAAC;AAC3C,SAAK,UAAU,aAAa,QAAQ,SAAS;AAC7C,SAAK,GAAG,aAAa,oBAAoB,CAAC,KAAK,GAAG,aAAa,kBAAkB,GAAG,KAAK,UAAU,EAAE,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG,CAAC;AAEhI,UAAM,mBAAmB,KAAK,QAAQ,YAClC,MAAM,eAAe,KAAK,IAAI,KAAK,QAAQ,SAAS,IACpD,SAAS,cAAc,KAAK;AAChC,QAAI,KAAK,QAAQ,WAAW;AAC1B,WAAK,UAAU,UAAU,IAAI,MAAM;AACnC,YAAM,SAAS,SAAS,cAAc,EAAE;AACxC,uBAAiB,OAAO,MAAM;AAC9B,WAAK,mBAAmB;AAAA,QACtB,IAAI;AAAA,QAAkB;AAAA,QACtB,SAAS,iBAAiB,MAAM;AAAA,QAChC,UAAU,iBAAiB,MAAM,oBAAoB,SAAS;AAAA,QAC9D,QAAQ,iBAAiB,aAAa,QAAQ;AAAA,QAC9C,cAAc,iBAAiB,UAAU,SAAS,iBAAiB;AAAA,MACrE;AACA,uBAAiB,gBAAgB,QAAQ;AAAA,IAC3C;AACA,qBAAiB,MAAM,UAAU;AACjC,qBAAiB,UAAU,IAAI,iBAAiB;AAChD,SAAK,mBAAmB,gBAAgB;AACxC,SAAK,UAAU,YAAY,gBAAgB;AAC3C,UAAM,WAAW,KAAK,EAAE,EAAE,YAAY,KAAK,SAAS;AAAA,EACtD;AAAA,EAEA,mBAAmB,kBAA+B;AAChD,QAAI,KAAK,QAAQ,UAAW;AAC5B,qBAAiB,YAAY,KAAK,QAAQ;AAAA,EAC5C;AAAA,EAEA,wBAAwB;AACtB,SAAK,mBAAmB,KAAK,UAAU,cAAc,kBAAkB,CAAC;AAAA,EAC1E;AAAA,EAEA,sBAAsB;AACpB,eAAW,MAAM,CAAC,KAAK,IAAI,KAAK,SAAS,GAAG;AAC1C,SAAG,iBAAiB,cAAc,KAAK,iBAAiB;AACxD,SAAG,iBAAiB,cAAc,KAAK,iBAAiB;AACxD,SAAG,iBAAiB,SAAS,KAAK,cAAc,IAAI;AACpD,SAAG,iBAAiB,QAAQ,KAAK,aAAa,IAAI;AAAA,IACpD;AACA,SAAK,GAAG,cAAc,iBAAiB,WAAW,KAAK,gBAAgB,IAAI;AAAA,EAC7E;AAAA,EAEA,uBAAuB;AACrB,eAAW,MAAM,CAAC,KAAK,IAAI,KAAK,SAAS,GAAG;AAC1C,SAAG,oBAAoB,cAAc,KAAK,iBAAiB;AAC3D,SAAG,oBAAoB,cAAc,KAAK,iBAAiB;AAC3D,SAAG,oBAAoB,SAAS,KAAK,cAAc,IAAI;AACvD,SAAG,oBAAoB,QAAQ,KAAK,aAAa,IAAI;AAAA,IACvD;AACA,SAAK,GAAG,cAAc,oBAAoB,WAAW,KAAK,gBAAgB,IAAI;AAAA,EAChF;AAAA,EA4BA,uBAAuB;AACrB,iBAAa,KAAK,iBAAiB;AACnC,SAAK,oBAAoB,WAAW,MAAM;AACxC,UAAI,KAAK,aAAa,KAAK,UAAW;AACtC,WAAK,YAAY;AAAA,IACnB,GAAG,KAAK,QAAQ,SAAS;AAAA,EAC3B;AAAA,EAEA,sBAAsB,UAAU;AAC9B,iBAAa,KAAK,kBAAkB;AACpC,SAAK,qBAAqB,WAAW,MAAM;AACzC,UAAI,CAAC,KAAK,aAAa,CAAC,KAAK,aAAa,CAAC,SAAU;AACrD,WAAK,WAAW;AAAA,IAClB,GAAG,KAAK,QAAQ,UAAU;AAAA,EAC5B;AAAA,EAEA,mBAAmB;AACjB,UAAM,UAAuB,KAAK;AAClC,UAAM,SAAS,KAAK,IAClB,eAAe,OAAO,cACtB,cAAc,OAAO,aACrB,gBAAgB,QAAQ,cACxB,eAAe,QAAQ,aACvB,SAAS,KAAK,QAAQ;AAExB,SAAK,YAAY;AACjB,SAAK,YAAY;AAEjB,UAAM,aAAa,OAAO,sBAAsB;AAChD,QAAI,YAAY,WAAW,MAAM,MAAM,qBAAqB;AAC5D,QAAI,aAAa,WAAW,OAAO,MAAM,sBAAsB;AAC/D,QAAI,KAAK,QAAQ,aAAa,OAAO;AACnC,mBAAa,CAAC,gBAAgB;AAC9B,oBAAc,cAAc,IAAI,eAAe;AAC/C,WAAK,YAAY,CAAC,KAAK,QAAQ;AAAA,IACjC,WAAW,KAAK,QAAQ,aAAa,SAAS;AAC5C,mBAAa,eAAe,IAAI,gBAAgB;AAChD,oBAAc,cAAc;AAC5B,WAAK,YAAY,KAAK,QAAQ;AAAA,IAChC,WAAW,KAAK,QAAQ,aAAa,QAAQ;AAC3C,mBAAa,eAAe,IAAI,gBAAgB;AAChD,oBAAc,CAAC,eAAe;AAC9B,WAAK,YAAY,CAAC,KAAK,QAAQ;AAAA,IACjC,OAAO;AACL,mBAAa,eAAe;AAC5B,oBAAc,cAAc,IAAI,eAAe;AAC/C,WAAK,YAAY,KAAK,QAAQ;AAAA,IAChC;AAEA,UAAM,iBAAiB,KAAK;AAAA,MAC1B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,YAAQ,MAAM,YAAY,gCAAgC,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI,KAAK,IAAI,KAAK,QAAQ,kBAAkB,CAAC,IAAI;AAChI,YAAQ,MAAM,MAAM,eAAe,IAAI;AACvC,YAAQ,MAAM,OAAO,eAAe,IAAI;AAAA,EAC1C;AAAA,EAEA,wBAAwB,GAAW,GAAW,OAAe,QAAgB;AAC3E,WAAO,MAAM;AAAA,MACX;AAAA,MAAG;AAAA,MAAG;AAAA,MAAO;AAAA,MAAQ,KAAK,QAAQ;AAAA,MAAQ,KAAK,QAAQ;AAAA,MAAoB;AAAA,IAC7E;AAAA,EACF;AAAA,EAEA,aAAa;AAAE,SAAK,SAAS,IAAI;AAAA,EAAG;AAAA,EAEpC,cAAc;AAAE,SAAK,SAAS,KAAK;AAAA,EAAG;AAAA,EAEtC,SAAS,MAAe;AACtB,UAAM,QAAQ,KAAK,UAAU;AAC7B,UAAM,SAAS,KAAK,GAAG,cAAc,YAAY,WAAW,kCAAkC,EAAE;AAChG,UAAM,WAAW,SAAS,IAAI,OAAO,KAAK,QAAQ,aAAa,KAAK,QAAQ;AAC5E,QAAI,MAAM;AACR,WAAK,iBAAiB;AACtB,YAAM,aAAa;AACnB,YAAM,WAAW;AAAA,IACnB;AACA,UAAM,aAAa,aAAa,QAAQ,wBAAwB,QAAQ;AACxE,iBAAa,KAAK,iBAAiB;AACnC,SAAK,oBAAoB,WAAW,MAAM;AACxC,YAAM,YAAY,QAAQ,CAAC,SAAS,cAAc,KAAK,SAAS,kBAAkB,KAAK,SAAS,QAAQ;AACxG,YAAM,UAAU,QAAQ,KAAK,QAAQ,WAAW,GAAG,SAAS,IAAI;AAChE,UAAI,CAAC,KAAM,MAAK,oBAAoB,WAAW,MAAM;AACnD,cAAM,aAAa;AACnB,cAAM,WAAW;AAAA,MACnB,GAAG,QAAQ;AAAA,IACb,GAAG,CAAC;AAAA,EACN;AAAA,EAuCA,uBAAgD;AAC9C,UAAM,mBAA4C,CAAC;AACnD,UAAM,oBAAoB,KAAK,GAAG,aAAa,cAAc;AAC7D,UAAM,YAAY,KAAK,GAAG,aAAa,iBAAiB;AACxD,UAAM,iBAAiB,KAAK,GAAG,aAAa,eAAe;AAC3D,QAAI,mBAAmB;AACrB,uBAAiB,OAAO;AAAA,IAC1B;AACA,QAAI,gBAAgB;AAClB,uBAAiB,WAAW;AAAA,IAC9B;AACA,QAAI,WAAW;AACb,uBAAiB,YAAY;AAAA,IAC/B;AAEA,WAAO;AAAA,EACT;AACF;",
6
+ "names": []
7
+ }
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  installSheetDrag
3
- } from "./chunk-LZVBJ33S.mjs";
3
+ } from "./chunk-GZWPXXY6.mjs";
4
4
  import {
5
5
  Utils
6
- } from "./chunk-MISGHDUU.mjs";
6
+ } from "./chunk-6OMRGML6.mjs";
7
7
 
8
8
  // src/ts/behaviors/bottomSheets.ts
9
9
  var SHEET_SELECTOR = "dialog.bottom-sheet, dialog.bottom";
@@ -52,4 +52,4 @@ var BottomSheets = _BottomSheets;
52
52
  export {
53
53
  BottomSheets
54
54
  };
55
- //# sourceMappingURL=chunk-KR44BSYQ.mjs.map
55
+ //# sourceMappingURL=chunk-DLWYKFEI.mjs.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Utils
3
- } from "./chunk-MISGHDUU.mjs";
3
+ } from "./chunk-6OMRGML6.mjs";
4
4
 
5
5
  // src/ts/plugins/dockedDisplayPlugin.ts
6
6
  var _defaults = {
@@ -75,4 +75,4 @@ var DockedDisplayPlugin = class _DockedDisplayPlugin {
75
75
  export {
76
76
  DockedDisplayPlugin
77
77
  };
78
- //# sourceMappingURL=chunk-SLFNPY5M.mjs.map
78
+ //# sourceMappingURL=chunk-EC63CHXU.mjs.map
@@ -0,0 +1,7 @@
1
+ // src/ts/modular.ts
2
+ var version = "0.12.0";
3
+
4
+ export {
5
+ version
6
+ };
7
+ //# sourceMappingURL=chunk-G3I5H2U3.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/ts/modular.ts"],
4
- "sourcesContent": ["export * from './components';\nexport { Dialogs } from './behaviors/dialogs';\nexport { BottomSheets } from './behaviors/bottomSheets';\nexport { SideSheets } from './behaviors/sideSheets';\nexport { Forms } from './behaviors/forms';\nexport { AutoInit } from './components/registry';\nexport type { AutoInitOptions } from './components/registry';\n\nexport const version = '0.10.1';\n\nexport type * from './components/autocomplete';\nexport type * from './components/appBar';\nexport type * from './components/buttons';\nexport type * from './components/buttonGroup';\nexport type * from './components/cards';\nexport type * from './components/expandingCard';\nexport type * from './components/carousel';\nexport type * from './components/characterCounter';\nexport type * from './components/chips';\nexport type * from './components/datepicker';\nexport type * from './components/menu';\nexport type * from './components/lightbox';\nexport type * from './components/slider';\nexport type * from './components/scrollspy';\nexport type * from './components/select';\nexport type * from './components/navigationRail';\nexport type * from './components/tabs';\nexport type * from './components/timepicker';\nexport type * from './components/snackbar';\nexport type * from './components/tooltip';\n"],
4
+ "sourcesContent": ["export * from './components';\nexport { Dialogs } from './behaviors/dialogs';\nexport { BottomSheets } from './behaviors/bottomSheets';\nexport { SideSheets } from './behaviors/sideSheets';\nexport { Forms } from './behaviors/forms';\nexport { AutoInit } from './components/registry';\nexport type { AutoInitOptions } from './components/registry';\n\nexport const version = '0.12.0';\n\nexport type * from './components/autocomplete';\nexport type * from './components/appBar';\nexport type * from './components/buttons';\nexport type * from './components/buttonGroup';\nexport type * from './components/cards';\nexport type * from './components/expandingCard';\nexport type * from './components/carousel';\nexport type * from './components/characterCounter';\nexport type * from './components/chips';\nexport type * from './components/datepicker';\nexport type * from './components/menu';\nexport type * from './components/lightbox';\nexport type * from './components/slider';\nexport type * from './components/scrollspy';\nexport type * from './components/select';\nexport type * from './components/navigationRail';\nexport type * from './components/tabs';\nexport type * from './components/timepicker';\nexport type * from './components/snackbar';\nexport type * from './components/tooltip';\n"],
5
5
  "mappings": ";AAQO,IAAM,UAAU;",
6
6
  "names": []
7
7
  }
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  Utils
3
- } from "./chunk-MISGHDUU.mjs";
3
+ } from "./chunk-6OMRGML6.mjs";
4
4
 
5
5
  // src/ts/behaviors/sheetDrag.ts
6
6
  var DISMISS_DISTANCE = 96;
7
7
  var DISMISS_VELOCITY = 0.5;
8
+ var FLICK_TIMEOUT = 100;
8
9
  var DRAG_SLOP = 4;
9
10
  function installSheetDrag(config) {
10
11
  const coord = (event) => config.axis === "x" ? event.clientX : event.clientY;
@@ -41,6 +42,7 @@ function installSheetDrag(config) {
41
42
  start: coord(event),
42
43
  last: coord(event),
43
44
  lastT: Date.now(),
45
+ velocity: 0,
44
46
  shift: 0
45
47
  };
46
48
  observer.observe(document, { childList: true, subtree: true, attributes: true, attributeFilter: ["open"], attributeOldValue: true });
@@ -53,8 +55,12 @@ function installSheetDrag(config) {
53
55
  }
54
56
  const delta = coord(event) - drag.start;
55
57
  drag.shift = drag.direction === 1 ? Math.max(0, delta) : Math.min(0, delta);
56
- drag.last = coord(event);
57
- drag.lastT = Date.now();
58
+ if (coord(event) !== drag.last) {
59
+ const now = Date.now();
60
+ drag.velocity = (coord(event) - drag.last) / Math.max(1, now - drag.lastT);
61
+ drag.last = coord(event);
62
+ drag.lastT = now;
63
+ }
58
64
  drag.dialog.style.setProperty(config.property, `${drag.shift}px`);
59
65
  };
60
66
  const onUp = (event) => {
@@ -64,13 +70,14 @@ function installSheetDrag(config) {
64
70
  onCancel();
65
71
  return;
66
72
  }
73
+ onMove(event);
67
74
  drag = null;
68
75
  observer.disconnect();
69
76
  held.dialog.style.transition = "";
70
- const dt = Math.max(1, Date.now() - held.lastT);
71
- const velocity = (coord(event) - held.last) / dt;
72
- config.onRelease?.(Math.abs(held.shift) > DRAG_SLOP);
73
- const dismiss = held.direction === 1 ? held.shift > DISMISS_DISTANCE || velocity > DISMISS_VELOCITY : held.shift < -DISMISS_DISTANCE || velocity < -DISMISS_VELOCITY;
77
+ const velocity = Date.now() - held.lastT < FLICK_TIMEOUT ? held.velocity : 0;
78
+ const dragged = Math.abs(held.shift) > DRAG_SLOP;
79
+ config.onRelease?.(dragged);
80
+ const dismiss = dragged && (held.direction === 1 ? held.shift > DISMISS_DISTANCE || velocity > DISMISS_VELOCITY : held.shift < -DISMISS_DISTANCE || velocity < -DISMISS_VELOCITY);
74
81
  if (dismiss && held.dialog.open) held.dialog.close();
75
82
  held.dialog.style.setProperty(config.property, "0px");
76
83
  };
@@ -99,4 +106,4 @@ function installSheetDrag(config) {
99
106
  export {
100
107
  installSheetDrag
101
108
  };
102
- //# sourceMappingURL=chunk-LZVBJ33S.mjs.map
109
+ //# sourceMappingURL=chunk-GZWPXXY6.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/ts/behaviors/sheetDrag.ts"],
4
+ "sourcesContent": ["import { Utils } from '../core/utils';\n\n/**\n * Drag-to-dismiss, shared by the bottom sheet and the side sheet.\n *\n * The two were the same state machine written twice on different axes - same\n * dismissal distance, same flick velocity, same transition suppression, same\n * pointer bookkeeping - so a fix to one could land without reaching the other.\n * What actually differs between them is stated as configuration below.\n *\n * Light-dismiss on the scrim is not here; it stays with `Dialogs`.\n */\nexport interface SheetDragConfig {\n /** Which dialogs this drag applies to. */\n selector: string;\n /** The axis the sheet travels on. */\n axis: 'x' | 'y';\n /** The custom property carrying the live drag offset. */\n property: string;\n /**\n * `1` when the sheet dismisses toward increasing coordinates (downward, or\n * rightward for an end-docked side sheet), `-1` when it dismisses toward\n * decreasing ones. A function rather than a constant because a side sheet's\n * direction depends on which edge each individual sheet is docked to.\n */\n direction: (dialog: HTMLDialogElement) => 1 | -1;\n /** Whether a press at this point landed on the sheet's drag handle. */\n inHandle: (event: PointerEvent, dialog: HTMLDialogElement) => boolean;\n /**\n * Called on primary `pointerdown`, after clearing the previous drag. The\n * bottom sheet clears its dragged flag here so a sequence abandoned without\n * a `pointerup` cannot leave the flag set and swallow the next tap.\n */\n onPress?: () => void;\n /** Called when a drag ends, with whether the pointer actually moved. */\n onRelease?: (dragged: boolean) => void;\n}\n\n/** Past this the sheet dismisses rather than snapping back, in pixels. */\nconst DISMISS_DISTANCE = 96;\n/** Past this a flick dismisses whatever the distance, in pixels per millisecond. */\nconst DISMISS_VELOCITY = 0.5;\n/** Ignore a flick after the pointer has rested for this many milliseconds. */\nconst FLICK_TIMEOUT = 100;\n/** Past this the pointer was dragging, not tapping. Hand jitter, in pixels. */\nconst DRAG_SLOP = 4;\n\n/**\n * Register one sheet kind's drag handlers on the document. Called once per kind\n * at import time; there is nothing to tear down.\n */\nexport function installSheetDrag(config: SheetDragConfig): void {\n const coord = (event: PointerEvent) => (config.axis === 'x' ? event.clientX : event.clientY);\n let observer: MutationObserver;\n\n let drag: {\n dialog: HTMLDialogElement;\n pointerId: number;\n direction: 1 | -1;\n start: number;\n last: number;\n lastT: number;\n velocity: number;\n shift: number;\n } | null = null;\n\n const sheetFor = (target: EventTarget | null): HTMLDialogElement | null => {\n if (!(target instanceof Element)) return null;\n const dialog = target.closest(config.selector);\n return dialog instanceof HTMLDialogElement ? dialog : null;\n };\n\n const reset = (dialog: HTMLDialogElement) => {\n dialog.style.transition = '';\n dialog.style.setProperty(config.property, '0px');\n };\n\n const onDown = (event: PointerEvent) => {\n // A press that is not the primary pointer is ignored without disturbing a\n // drag already in flight - a second finger must not abort the first one.\n // A press that lands off the sheet or off its handle does clear it.\n if (!event.isPrimary) return;\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n onCancel();\n config.onPress?.();\n const dialog = sheetFor(event.target);\n if (!dialog?.open) {\n drag = null;\n return;\n }\n if (!config.inHandle(event, dialog)) {\n drag = null;\n return;\n }\n dialog.style.transition = 'none';\n drag = {\n dialog,\n pointerId: event.pointerId,\n direction: config.direction(dialog),\n start: coord(event),\n last: coord(event),\n lastT: Date.now(),\n velocity: 0,\n shift: 0\n };\n observer.observe(document, { childList: true, subtree: true, attributes: true, attributeFilter: ['open'], attributeOldValue: true });\n };\n\n const onMove = (event: PointerEvent) => {\n if (!drag || drag.pointerId !== event.pointerId) return;\n if (!drag.dialog.open || !drag.dialog.isConnected) {\n onCancel();\n return;\n }\n const delta = coord(event) - drag.start;\n // Only movement toward dismissal counts; dragging the other way is a no-op\n // rather than a sheet that lifts off its edge.\n drag.shift = drag.direction === 1 ? Math.max(0, delta) : Math.min(0, delta);\n if (coord(event) !== drag.last) {\n const now = Date.now();\n drag.velocity = (coord(event) - drag.last) / Math.max(1, now - drag.lastT);\n drag.last = coord(event);\n drag.lastT = now;\n }\n drag.dialog.style.setProperty(config.property, `${drag.shift}px`);\n };\n\n const onUp = (event: PointerEvent) => {\n const held = drag;\n if (!held || held.pointerId !== event.pointerId) return;\n if (!held.dialog.open || !held.dialog.isConnected) {\n onCancel();\n return;\n }\n onMove(event);\n drag = null;\n observer.disconnect();\n // Not `reset()`, though it looks like it: the two halves belong on either\n // side of close(). The transition has to be back before the sheet closes,\n // so the dismissal animates; the shift has to clear after, or a snap-back\n // would jump to zero before the transition could carry it there.\n held.dialog.style.transition = '';\n const velocity = Date.now() - held.lastT < FLICK_TIMEOUT ? held.velocity : 0;\n const dragged = Math.abs(held.shift) > DRAG_SLOP;\n config.onRelease?.(dragged);\n const dismiss = dragged &&\n (held.direction === 1\n ? held.shift > DISMISS_DISTANCE || velocity > DISMISS_VELOCITY\n : held.shift < -DISMISS_DISTANCE || velocity < -DISMISS_VELOCITY);\n if (dismiss && held.dialog.open) held.dialog.close();\n held.dialog.style.setProperty(config.property, '0px');\n };\n\n const onCancel = (event?: PointerEvent) => {\n if (event && drag?.pointerId !== event.pointerId) return;\n observer.disconnect();\n config.onRelease?.(false);\n const held = drag;\n drag = null;\n if (held) reset(held.dialog);\n };\n\n Utils.onDocumentReady(() => {\n observer = new MutationObserver(records => {\n const dialog = drag?.dialog;\n if (dialog && (!dialog.open || !dialog.isConnected || records.some(record =>\n (record.type === 'attributes' && record.target === dialog && record.oldValue === null) ||\n [...record.removedNodes].some(node => node.contains(dialog))\n ))) onCancel();\n });\n document.addEventListener('pointerdown', onDown, { passive: true });\n document.addEventListener('pointermove', onMove, { passive: true });\n document.addEventListener('pointerup', onUp, { passive: true });\n document.addEventListener('pointercancel', onCancel, { passive: true });\n });\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  DockedDisplayPlugin
3
- } from "./chunk-SLFNPY5M.mjs";
3
+ } from "./chunk-EC63CHXU.mjs";
4
4
  import {
5
5
  FormSelect
6
- } from "./chunk-G576EP5O.mjs";
6
+ } from "./chunk-HB6IW7QQ.mjs";
7
7
  import {
8
8
  Utils
9
- } from "./chunk-MISGHDUU.mjs";
9
+ } from "./chunk-6OMRGML6.mjs";
10
10
  import {
11
11
  Component
12
- } from "./chunk-QSQ24FYT.mjs";
12
+ } from "./chunk-LTWPGFBR.mjs";
13
13
 
14
14
  // src/ts/components/datepicker.ts
15
15
  var _defaults = {
@@ -126,9 +126,7 @@ var _Datepicker = class _Datepicker extends Component {
126
126
  this._randId = null;
127
127
  this._focusedDate = null;
128
128
  this._handleInputClick = (e) => {
129
- if (e.type == "date") {
130
- e.preventDefault();
131
- }
129
+ if (e.target.type == "date" && (this.options.openByDefault || this.options.container)) e.preventDefault();
132
130
  this._batchDraws(() => {
133
131
  this.setDateFromInput(e.target);
134
132
  this.draw();
@@ -238,26 +236,8 @@ var _Datepicker = class _Datepicker extends Component {
238
236
  this.gotoYear(e.target.value);
239
237
  };
240
238
  this._handleInputChange = (e) => {
241
- let date;
242
- const el = e.target;
243
239
  if (e["detail"]?.firedBy === this) return;
244
- if (el == this.endDateEl && !this.date) return;
245
- if (this.options.parse) {
246
- date = this.options.parse(
247
- e.target.value,
248
- typeof this.options.format === "function" ? this.options.format(new Date(this.el.value)) : this.options.format
249
- );
250
- } else {
251
- date = new Date(Date.parse(e.target.value));
252
- }
253
- if (_Datepicker._isDate(date)) {
254
- if (el == this.endDateEl && date < this.date) return this.setInputValue(el, this.endDate);
255
- this.setDate(date, false, el == this.endDateEl, true);
256
- if (e.type == "date") {
257
- this.setDataDate(e, date);
258
- this.setInputValues();
259
- }
260
- }
240
+ this.setDateFromInput(e.target);
261
241
  };
262
242
  this._finishSelection = () => {
263
243
  this.setInputValues();
@@ -289,7 +269,7 @@ var _Datepicker = class _Datepicker extends Component {
289
269
  this._insertHTMLIntoDOM();
290
270
  this._setupEventHandlers();
291
271
  if (!this.options.defaultDate) {
292
- this.options.defaultDate = new Date(Date.parse(this.el.value));
272
+ this.options.defaultDate = this._parseInput(this.el.value);
293
273
  }
294
274
  const defDate = this.options.defaultDate;
295
275
  if (_Datepicker._isDate(defDate)) {
@@ -342,6 +322,19 @@ var _Datepicker = class _Datepicker extends Component {
342
322
  static _isDate(obj) {
343
323
  return /Date/.test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime());
344
324
  }
325
+ static _parseDate(value) {
326
+ value = value.trim();
327
+ if (!/^\d{4}-\d{2}-\d{2}$/.test(value)) return new Date(Date.parse(value));
328
+ const date = /* @__PURE__ */ new Date(value + "T00:00:00");
329
+ return date.getDate() === Number(value.slice(-2)) ? date : /* @__PURE__ */ new Date(NaN);
330
+ }
331
+ _parseInput(value) {
332
+ if (!value.trim() || !this.options.parse) return _Datepicker._parseDate(value);
333
+ return this.options.parse(
334
+ value,
335
+ typeof this.options.format === "string" ? this.options.format : ""
336
+ );
337
+ }
345
338
  static _isWeekend(date) {
346
339
  const day = date.getDay();
347
340
  return day === 0 || day === 6;
@@ -451,8 +444,22 @@ var _Datepicker = class _Datepicker extends Component {
451
444
  * Sets date from input field.
452
445
  */
453
446
  setDateFromInput(el) {
454
- const date = new Date(Date.parse(el.value));
455
- this.setDate(date, false, el == this.endDateEl, true);
447
+ if (el.type === "date") this.setDataDate(el, _Datepicker._parseDate(el.value));
448
+ if ((this.options.isDateRange || !this.options.isMultipleSelection) && !el.value.trim()) {
449
+ this.setSingleDate(null, el === this.endDateEl);
450
+ this.draw();
451
+ return;
452
+ }
453
+ const parsedDate = this._parseInput(el.value);
454
+ if (!_Datepicker._isDate(parsedDate)) return;
455
+ const date = new Date(parsedDate.getTime());
456
+ _Datepicker._setToStartOfDay(date);
457
+ const isEndDate = el === this.endDateEl;
458
+ if (this.options.isDateRange && (isEndDate ? this.date && date < this.date : this.endDate && date > this.endDate)) {
459
+ this.setInputValue(el, isEndDate ? this.endDate : this.date);
460
+ return;
461
+ }
462
+ this.setDate(date, false, isEndDate, true);
456
463
  }
457
464
  /**
458
465
  * Set a date on the datepicker.
@@ -480,7 +487,7 @@ var _Datepicker = class _Datepicker extends Component {
480
487
  return this.draw();
481
488
  }
482
489
  if (typeof date === "string") {
483
- date = new Date(Date.parse(date));
490
+ date = _Datepicker._parseDate(date);
484
491
  }
485
492
  if (!_Datepicker._isDate(date)) {
486
493
  return;
@@ -524,7 +531,7 @@ var _Datepicker = class _Datepicker extends Component {
524
531
  * Sets the data-date attribute on the date input field
525
532
  */
526
533
  setDataDate(el, date) {
527
- el.setAttribute("data-date", this.toString(date));
534
+ el.setAttribute("data-date", _Datepicker._isDate(date) ? this.toString(date) : "");
528
535
  }
529
536
  /**
530
537
  * Sets dates on the input values.
@@ -550,16 +557,15 @@ var _Datepicker = class _Datepicker extends Component {
550
557
  */
551
558
  setInputValue(el, date) {
552
559
  if (!el) return;
560
+ if (el.type == "date") this.setDataDate(el, date);
553
561
  if (!_Datepicker._isDate(date)) {
554
562
  el.value = "";
555
- if (el.type === "date") el.setAttribute("data-date", "");
556
563
  } else if (el.type == "date") {
557
- this.setDataDate(el, date);
558
564
  el.value = this.formatDate(date, "yyyy-mm-dd");
559
565
  } else {
560
566
  el.value = this.toString(date);
561
567
  }
562
- this.el.dispatchEvent(
568
+ el.dispatchEvent(
563
569
  new CustomEvent("change", {
564
570
  bubbles: true,
565
571
  cancelable: true,
@@ -650,7 +656,7 @@ var _Datepicker = class _Datepicker extends Component {
650
656
  cells += 7 - after;
651
657
  let isWeekSelected = false;
652
658
  for (let i = 0, r = 0; i < cells; i++) {
653
- const day = new Date(year, month, 1 + (i - before)), isToday = _Datepicker._compareDates(day, now), hasEvent = this.options.events.indexOf(day.toDateString()) !== -1, isEmpty = i < before || i >= days + before, isStartRange = this.options.startRange && _Datepicker._compareDates(this.options.startRange, day), isEndRange = this.options.endRange && _Datepicker._compareDates(this.options.endRange, day), isInRange = this.options.startRange && this.options.endRange && this.options.startRange < day && day < this.options.endRange, isDisabled = this.options.minDate && day < this.options.minDate || this.options.maxDate && day > this.options.maxDate || this.options.disableWeekends && _Datepicker._isWeekend(day) || this.options.disableDayFn && this.options.disableDayFn(day), isDateRangeStart = this.options.isDateRange && this.date && this.endDate && _Datepicker._compareDates(this.date, day), isDateRangeEnd = this.options.isDateRange && this.endDate && _Datepicker._compareDates(this.endDate, day), isDateRange = this.options.isDateRange && _Datepicker._isDate(this.endDate) && _Datepicker._compareWithinRange(day, this.date, this.endDate);
659
+ const day = new Date(year, month, 1 + (i - before)), isToday = _Datepicker._compareDates(day, now), hasEvent = this.options.events.indexOf(day.toDateString()) !== -1, isEmpty = i < before || i >= days + before, isStartRange = this.options.startRange && _Datepicker._compareDates(this.options.startRange, day), isEndRange = this.options.endRange && _Datepicker._compareDates(this.options.endRange, day), isInRange = this.options.startRange && this.options.endRange && this.options.startRange < day && day < this.options.endRange, isDisabled = this.options.minDate && day < this.options.minDate || this.options.maxDate && day > this.options.maxDate || this.options.disableWeekends && _Datepicker._isWeekend(day) || this.options.disableDayFn && this.options.disableDayFn(day), isDateRangeStart = this.options.isDateRange && this.date && this.endDate && _Datepicker._compareDates(this.date, day), isDateRangeEnd = this.options.isDateRange && this.endDate && _Datepicker._compareDates(this.endDate, day), isDateRange = this.options.isDateRange && _Datepicker._isDate(this.date) && _Datepicker._isDate(this.endDate) && _Datepicker._compareWithinRange(day, this.date, this.endDate);
654
660
  let dayNumber = 1 + (i - before), monthNumber = month, yearNumber = year;
655
661
  let isSelected = false;
656
662
  if (_Datepicker._isDate(this.date)) {
@@ -1085,6 +1091,7 @@ var _Datepicker = class _Datepicker extends Component {
1085
1091
  createDateInput() {
1086
1092
  const dateInput = this.el.cloneNode(true);
1087
1093
  dateInput.removeAttribute("id");
1094
+ dateInput.classList.add("no-autoinit");
1088
1095
  dateInput.addEventListener("click", this._handleInputClick);
1089
1096
  dateInput.addEventListener("keydown", this._handleInputKeydown);
1090
1097
  dateInput.addEventListener("change", this._handleInputChange);
@@ -1108,4 +1115,4 @@ var Datepicker = _Datepicker;
1108
1115
  export {
1109
1116
  Datepicker
1110
1117
  };
1111
- //# sourceMappingURL=chunk-QYCYP443.mjs.map
1118
+ //# sourceMappingURL=chunk-H2WA4XHH.mjs.map