@haiilo/catalyst 10.1.0 → 10.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/dist/catalyst/catalyst.css +13 -13
  2. package/dist/catalyst/catalyst.esm.js +1 -1
  3. package/dist/catalyst/catalyst.esm.js.map +1 -1
  4. package/dist/catalyst/index.esm.js +2 -3
  5. package/dist/catalyst/index.esm.js.map +1 -1
  6. package/dist/catalyst/p-20919029.js +3 -0
  7. package/dist/catalyst/p-20919029.js.map +1 -0
  8. package/dist/catalyst/p-37905c93.entry.js +10 -0
  9. package/dist/catalyst/p-37905c93.entry.js.map +1 -0
  10. package/dist/catalyst/p-8fc7b0f0.js +2 -0
  11. package/dist/catalyst/p-8fc7b0f0.js.map +1 -0
  12. package/dist/catalyst/p-e1255160.js +2 -0
  13. package/dist/catalyst/p-e1255160.js.map +1 -0
  14. package/dist/cjs/app-globals-3a1e7e63.js +7 -0
  15. package/dist/cjs/app-globals-3a1e7e63.js.map +1 -0
  16. package/dist/cjs/cat-alert_26.cjs.entry.js +209 -128
  17. package/dist/cjs/cat-alert_26.cjs.entry.js.map +1 -1
  18. package/dist/cjs/catalyst.cjs.js +5 -3
  19. package/dist/cjs/catalyst.cjs.js.map +1 -1
  20. package/dist/cjs/{index-eb056d5e.js → index-13aff0b4.js} +93 -38
  21. package/dist/cjs/index-13aff0b4.js.map +1 -0
  22. package/dist/cjs/index.cjs.js +9 -4
  23. package/dist/cjs/index.cjs.js.map +1 -1
  24. package/dist/cjs/loader.cjs.js +4 -2
  25. package/dist/cjs/loader.cjs.js.map +1 -1
  26. package/dist/cjs/{of-30c47b72.js → of-a6e7c491.js} +131 -66
  27. package/dist/cjs/of-a6e7c491.js.map +1 -0
  28. package/dist/collection/collection-manifest.json +2 -2
  29. package/dist/collection/components/cat-alert/cat-alert.css +5 -5
  30. package/dist/collection/components/cat-alert/cat-alert.js +1 -1
  31. package/dist/collection/components/cat-alert/cat-alert.js.map +1 -1
  32. package/dist/collection/components/cat-avatar/cat-avatar.js.map +1 -1
  33. package/dist/collection/components/cat-badge/cat-badge.css +3 -3
  34. package/dist/collection/components/cat-badge/cat-badge.js +1 -1
  35. package/dist/collection/components/cat-badge/cat-badge.js.map +1 -1
  36. package/dist/collection/components/cat-button/cat-button.css +10 -10
  37. package/dist/collection/components/cat-button/cat-button.js +3 -5
  38. package/dist/collection/components/cat-button/cat-button.js.map +1 -1
  39. package/dist/collection/components/cat-button-group/cat-button-group.js +1 -1
  40. package/dist/collection/components/cat-button-group/cat-button-group.js.map +1 -1
  41. package/dist/collection/components/cat-card/cat-card.js +1 -1
  42. package/dist/collection/components/cat-card/cat-card.js.map +1 -1
  43. package/dist/collection/components/cat-checkbox/cat-checkbox.js +4 -6
  44. package/dist/collection/components/cat-checkbox/cat-checkbox.js.map +1 -1
  45. package/dist/collection/components/cat-datepicker/cat-datepicker.config.js.map +1 -1
  46. package/dist/collection/components/cat-datepicker/cat-datepicker.js +6 -8
  47. package/dist/collection/components/cat-datepicker/cat-datepicker.js.map +1 -1
  48. package/dist/collection/components/cat-datepicker-inline/cat-datepicker-inline.js +2 -2
  49. package/dist/collection/components/cat-datepicker-inline/cat-datepicker-inline.js.map +1 -1
  50. package/dist/collection/components/cat-dropdown/cat-dropdown.js +2 -2
  51. package/dist/collection/components/cat-dropdown/cat-dropdown.js.map +1 -1
  52. package/dist/collection/components/cat-form-group/cat-form-group.js +1 -1
  53. package/dist/collection/components/cat-form-group/cat-form-group.js.map +1 -1
  54. package/dist/collection/components/cat-i18n/cat-i18n-registry.js.map +1 -1
  55. package/dist/collection/components/cat-icon/cat-icon-registry.js.map +1 -1
  56. package/dist/collection/components/cat-icon/cat-icon.js +1 -1
  57. package/dist/collection/components/cat-icon/cat-icon.js.map +1 -1
  58. package/dist/collection/components/cat-input/cat-input.css +13 -13
  59. package/dist/collection/components/cat-input/cat-input.js +6 -8
  60. package/dist/collection/components/cat-input/cat-input.js.map +1 -1
  61. package/dist/collection/components/cat-notification/cat-notification.js.map +1 -1
  62. package/dist/collection/components/cat-pagination/cat-pagination.js +2 -2
  63. package/dist/collection/components/cat-pagination/cat-pagination.js.map +1 -1
  64. package/dist/collection/components/cat-radio/cat-radio.js +4 -6
  65. package/dist/collection/components/cat-radio/cat-radio.js.map +1 -1
  66. package/dist/collection/components/cat-radio-group/cat-radio-group.js +1 -1
  67. package/dist/collection/components/cat-radio-group/cat-radio-group.js.map +1 -1
  68. package/dist/collection/components/cat-scrollable/cat-scrollable.js +3 -3
  69. package/dist/collection/components/cat-scrollable/cat-scrollable.js.map +1 -1
  70. package/dist/collection/components/cat-select/cat-select.css +13 -13
  71. package/dist/collection/components/cat-select/cat-select.js +11 -15
  72. package/dist/collection/components/cat-select/cat-select.js.map +1 -1
  73. package/dist/collection/components/cat-select-demo/cat-select-demo.js +1 -1
  74. package/dist/collection/components/cat-select-demo/cat-select-demo.js.map +1 -1
  75. package/dist/collection/components/cat-skeleton/cat-skeleton.js +1 -1
  76. package/dist/collection/components/cat-skeleton/cat-skeleton.js.map +1 -1
  77. package/dist/collection/components/cat-spinner/cat-spinner.js +2 -2
  78. package/dist/collection/components/cat-spinner/cat-spinner.js.map +1 -1
  79. package/dist/collection/components/cat-tab/cat-tab.js +1 -1
  80. package/dist/collection/components/cat-tab/cat-tab.js.map +1 -1
  81. package/dist/collection/components/cat-tabs/cat-tabs.js +7 -11
  82. package/dist/collection/components/cat-tabs/cat-tabs.js.map +1 -1
  83. package/dist/collection/components/cat-textarea/cat-textarea.css +13 -13
  84. package/dist/collection/components/cat-textarea/cat-textarea.js +6 -8
  85. package/dist/collection/components/cat-textarea/cat-textarea.js.map +1 -1
  86. package/dist/collection/components/cat-toggle/cat-toggle.js +4 -6
  87. package/dist/collection/components/cat-toggle/cat-toggle.js.map +1 -1
  88. package/dist/collection/components/cat-tooltip/cat-tooltip.js +3 -3
  89. package/dist/collection/components/cat-tooltip/cat-tooltip.js.map +1 -1
  90. package/dist/collection/utils/find-closest.js.map +1 -1
  91. package/dist/collection/utils/media-matcher.js.map +1 -1
  92. package/dist/collection/utils/platform.js.map +1 -1
  93. package/dist/collection/utils/setDefault.js.map +1 -1
  94. package/dist/components/cat-alert.js +4 -3
  95. package/dist/components/cat-alert.js.map +1 -1
  96. package/dist/components/cat-avatar2.js +4 -3
  97. package/dist/components/cat-avatar2.js.map +1 -1
  98. package/dist/components/cat-badge.js +4 -3
  99. package/dist/components/cat-badge.js.map +1 -1
  100. package/dist/components/cat-button-group.js +3 -2
  101. package/dist/components/cat-button-group.js.map +1 -1
  102. package/dist/components/cat-button2.js +6 -5
  103. package/dist/components/cat-button2.js.map +1 -1
  104. package/dist/components/cat-card.js +3 -2
  105. package/dist/components/cat-card.js.map +1 -1
  106. package/dist/components/cat-checkbox2.js +5 -4
  107. package/dist/components/cat-checkbox2.js.map +1 -1
  108. package/dist/components/cat-datepicker-inline.js +4 -3
  109. package/dist/components/cat-datepicker-inline.js.map +1 -1
  110. package/dist/components/cat-datepicker.js +4 -3
  111. package/dist/components/cat-datepicker.js.map +1 -1
  112. package/dist/components/cat-datepicker.locale.js +8 -4
  113. package/dist/components/cat-datepicker.locale.js.map +1 -1
  114. package/dist/components/cat-dropdown2.js +3 -2
  115. package/dist/components/cat-dropdown2.js.map +1 -1
  116. package/dist/components/cat-form-group.js +3 -2
  117. package/dist/components/cat-form-group.js.map +1 -1
  118. package/dist/components/cat-i18n-registry.js +7 -7
  119. package/dist/components/cat-i18n-registry.js.map +1 -1
  120. package/dist/components/cat-icon-registry.js +4 -4
  121. package/dist/components/cat-icon-registry.js.map +1 -1
  122. package/dist/components/cat-icon2.js +3 -2
  123. package/dist/components/cat-icon2.js.map +1 -1
  124. package/dist/components/cat-input2.js +8 -7
  125. package/dist/components/cat-input2.js.map +1 -1
  126. package/dist/components/cat-pagination.js +4 -3
  127. package/dist/components/cat-pagination.js.map +1 -1
  128. package/dist/components/cat-radio-group.js +3 -2
  129. package/dist/components/cat-radio-group.js.map +1 -1
  130. package/dist/components/cat-radio.js +5 -4
  131. package/dist/components/cat-radio.js.map +1 -1
  132. package/dist/components/cat-scrollable2.js +5 -4
  133. package/dist/components/cat-scrollable2.js.map +1 -1
  134. package/dist/components/cat-select-demo.js +1 -1
  135. package/dist/components/cat-select-demo.js.map +1 -1
  136. package/dist/components/cat-select2.js +10 -9
  137. package/dist/components/cat-select2.js.map +1 -1
  138. package/dist/components/cat-skeleton2.js +3 -2
  139. package/dist/components/cat-skeleton2.js.map +1 -1
  140. package/dist/components/cat-spinner2.js +4 -3
  141. package/dist/components/cat-spinner2.js.map +1 -1
  142. package/dist/components/cat-tab.js +3 -2
  143. package/dist/components/cat-tab.js.map +1 -1
  144. package/dist/components/cat-tabs.js +3 -2
  145. package/dist/components/cat-tabs.js.map +1 -1
  146. package/dist/components/cat-textarea.js +8 -7
  147. package/dist/components/cat-textarea.js.map +1 -1
  148. package/dist/components/cat-toggle.js +5 -4
  149. package/dist/components/cat-toggle.js.map +1 -1
  150. package/dist/components/cat-tooltip.js +5 -4
  151. package/dist/components/cat-tooltip.js.map +1 -1
  152. package/dist/components/floating-ui.dom.esm.js +97 -45
  153. package/dist/components/floating-ui.dom.esm.js.map +1 -1
  154. package/dist/components/from.js +16 -1
  155. package/dist/components/from.js.map +1 -1
  156. package/dist/components/index.js +9 -4
  157. package/dist/components/index.js.map +1 -1
  158. package/dist/components/loglevel.js +106 -55
  159. package/dist/components/loglevel.js.map +1 -1
  160. package/dist/esm/app-globals-0f993ce5.js +5 -0
  161. package/dist/esm/app-globals-0f993ce5.js.map +1 -0
  162. package/dist/esm/cat-alert_26.entry.js +209 -128
  163. package/dist/esm/cat-alert_26.entry.js.map +1 -1
  164. package/dist/esm/catalyst.js +6 -4
  165. package/dist/esm/catalyst.js.map +1 -1
  166. package/dist/esm/{index-acddba36.js → index-ecb4a974.js} +93 -38
  167. package/dist/esm/index-ecb4a974.js.map +1 -0
  168. package/dist/esm/index.js +10 -5
  169. package/dist/esm/index.js.map +1 -1
  170. package/dist/esm/loader.js +5 -3
  171. package/dist/esm/loader.js.map +1 -1
  172. package/dist/esm/{of-4b71dda1.js → of-d37c1933.js} +131 -65
  173. package/dist/esm/of-d37c1933.js.map +1 -0
  174. package/package.json +15 -15
  175. package/dist/catalyst/p-2a5b4714.entry.js +0 -10
  176. package/dist/catalyst/p-2a5b4714.entry.js.map +0 -1
  177. package/dist/catalyst/p-6cd4fa1e.js +0 -3
  178. package/dist/catalyst/p-6cd4fa1e.js.map +0 -1
  179. package/dist/catalyst/p-f5febe1f.js +0 -2
  180. package/dist/catalyst/p-f5febe1f.js.map +0 -1
  181. package/dist/cjs/index-eb056d5e.js.map +0 -1
  182. package/dist/cjs/of-30c47b72.js.map +0 -1
  183. package/dist/esm/index-acddba36.js.map +0 -1
  184. package/dist/esm/of-4b71dda1.js.map +0 -1
@@ -1 +1 @@
1
- {"file":"cat-tooltip.js","mappings":"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","names":["CatTooltip","isTouchScreen"],"sources":["src/utils/is-touch-screen.ts","src/components/cat-tooltip/cat-tooltip.scss?tag=cat-tooltip&encapsulation=shadow","src/components/cat-tooltip/cat-tooltip.tsx"],"sourcesContent":["const isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n\nexport default isTouchDevice;\n","@use 'variables' as *;\n@use 'mixins' as *;\n\n$-max-width: 20rem;\n$-box-shadow: rgb(0 0 0 / 8%) 0 1px 8px 0;\n$-shift-padding: 0.25rem; // padding given to the shift() middleware\n\n:host {\n display: contents;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.tooltip {\n --cat-font-color-head: #{cat-token('color.ui.font.tooltip', $wrap: false)};\n --cat-font-color-body: #{cat-token('color.ui.font.tooltip', $wrap: false)};\n position: fixed;\n width: max-content;\n top: 0;\n left: 0;\n box-sizing: border-box;\n @include cat-body('s', 500);\n background-color: cat-token('color.ui.background.tooltip');\n border-radius: cat-border-radius('m');\n color: cat-token('color.ui.font.tooltip');\n transition:\n opacity cat-token('time.transition.m') linear,\n visibility cat-token('time.transition.m') linear;\n visibility: hidden;\n opacity: 0;\n box-shadow: $-box-shadow;\n z-index: cat-z-index('tooltip');\n max-width: min(calc(100vw - 2 * $-shift-padding), $-max-width);\n\n &-hidden {\n @include cat-visually-hidden;\n }\n\n &-show {\n opacity: 1;\n visibility: visible;\n }\n\n p {\n margin: 0;\n }\n}\n\n// ----- round\n\n.tooltip-round {\n border-radius: 10rem;\n}\n\n// ----- size\n\n.tooltip-s {\n padding: 0.375rem 0.5rem;\n\n &.tooltip-round {\n padding: 0.375rem 0.75rem;\n }\n}\n\n.tooltip-m {\n padding: 0.75rem;\n\n &.tooltip-round {\n padding: 0.75rem 1rem;\n }\n}\n\n.tooltip-l {\n padding: 1rem;\n\n &.tooltip-round {\n padding: 1rem 1.5rem;\n }\n}\n","import { autoUpdate, computePosition, flip, offset, Placement, shift } from '@floating-ui/dom';\nimport { Component, Element, h, Host, Listen, Prop, State } from '@stencil/core';\nimport isTouchScreen from '../../utils/is-touch-screen';\n\nlet nextUniqueId = 0;\n\n@Component({\n tag: 'cat-tooltip',\n styleUrl: 'cat-tooltip.scss',\n shadow: true\n})\nexport class CatTooltip {\n private static readonly OFFSET = 4;\n private static readonly SHIFT_PADDING = 4;\n private readonly id = `cat-tooltip-${nextUniqueId++}`;\n private tooltip?: HTMLElement;\n private trigger?: Element;\n private showTimeout?: number;\n private hideTimeout?: number;\n private touchTimeout?: number;\n private inactive = false;\n private cleanupFloatingUi?: () => void;\n\n private readonly boundShowListener: () => void;\n private readonly boundHideListener: () => void;\n private readonly boundWindowTouchStartListener: () => void;\n private readonly boundTouchStartListener: (event: Event) => void;\n private readonly boundTouchEndListener: () => void;\n\n constructor() {\n this.boundShowListener = this.showListener.bind(this);\n this.boundHideListener = this.hideListener.bind(this);\n this.boundWindowTouchStartListener = this.windowTouchStartListener.bind(this);\n this.boundTouchStartListener = this.touchStartListener.bind(this);\n this.boundTouchEndListener = this.touchEndListener.bind(this);\n }\n\n @Element() hostElement!: HTMLElement;\n\n @State() open = false;\n\n /**\n * The content of the tooltip.\n */\n @Prop() content = '';\n\n /**\n * Specifies that the tooltip should be disabled. A disabled tooltip is unusable,\n * and invisible. Corresponds with the native HTML disabled attribute.\n */\n @Prop() disabled = false;\n\n /**\n * The placement of the tooltip.\n */\n @Prop() placement: Placement = 'top';\n\n /**\n * Use round tooltip edges.\n */\n @Prop() round = false;\n\n /**\n * The size of the tooltip.\n */\n @Prop() size: 's' | 'm' | 'l' = 'm';\n\n /**\n * The delay time for showing tooltip in ms.\n */\n @Prop() showDelay = 250;\n\n /**\n * The delay time for hiding tooltip in ms.\n */\n @Prop() hideDelay = 0;\n\n /**\n * The duration of tap to show the tooltip.\n */\n @Prop() longTouchDuration = 1000;\n\n @Listen('keydown')\n handleKeyDown({ key }: KeyboardEvent) {\n key === 'Escape' && this.hideTooltip();\n }\n\n componentDidLoad(): void {\n const slot = this.hostElement.shadowRoot?.querySelector('slot');\n this.trigger = slot?.assignedElements?.()?.[0];\n if (this.trigger && !this.trigger.hasAttribute('aria-describedby')) {\n this.trigger.setAttribute('aria-describedby', this.id);\n }\n\n if (isTouchScreen) {\n window.addEventListener('touchstart', this.boundWindowTouchStartListener);\n this.trigger?.addEventListener('touchstart', this.boundTouchStartListener);\n this.trigger?.addEventListener('touchend', this.boundTouchEndListener);\n } else {\n this.trigger?.addEventListener('focusin', this.boundShowListener);\n this.trigger?.addEventListener('focusout', this.boundHideListener);\n this.trigger?.addEventListener('mouseenter', this.boundShowListener);\n this.trigger?.addEventListener('mouseleave', this.boundHideListener);\n }\n }\n\n componentWillRender(): void {\n this.inactive = this.disabled || (!this.content && !this.hostElement.querySelector('[slot=\"content\"]'));\n }\n\n disconnectedCallback(): void {\n if (isTouchScreen) {\n window.removeEventListener('touchstart', this.boundWindowTouchStartListener);\n this.trigger?.removeEventListener('touchstart', this.boundTouchStartListener);\n this.trigger?.removeEventListener('touchend', this.boundTouchEndListener);\n } else {\n this.trigger?.removeEventListener('mouseenter', this.boundShowListener);\n this.trigger?.removeEventListener('mouseleave', this.boundHideListener);\n this.trigger?.removeEventListener('focusin', this.boundShowListener);\n this.trigger?.removeEventListener('focusout', this.boundHideListener);\n }\n }\n\n render() {\n return (\n <Host>\n <slot />\n <div\n ref={el => (this.tooltip = el)}\n id={this.id}\n role=\"tooltip\"\n aria-hidden={!this.open}\n aria-live={this.open ? 'polite' : 'off'}\n class={{\n tooltip: true,\n 'tooltip-hidden': this.inactive,\n 'tooltip-round': this.round,\n [`tooltip-${this.size}`]: Boolean(this.size)\n }}\n >\n <slot name=\"content\">\n {/* The paragraph is needed here to make aria-live work properly. */}\n <p>{this.content}</p>\n </slot>\n </div>\n </Host>\n );\n }\n\n private async update() {\n if (this.trigger && this.tooltip) {\n await computePosition(this.trigger, this.tooltip, {\n strategy: 'fixed',\n placement: this.placement,\n middleware: [\n offset(CatTooltip.OFFSET),\n flip({ fallbackAxisSideDirection: 'start' }),\n shift({ padding: CatTooltip.SHIFT_PADDING })\n ]\n }).then(({ x, y }) => {\n if (this.tooltip) {\n Object.assign(this.tooltip.style, {\n left: `${Math.max(0, x)}px`,\n top: `${y}px`\n });\n }\n });\n }\n }\n\n private showListener() {\n window.clearTimeout(this.hideTimeout);\n this.hideTimeout = undefined;\n if (!this.showTimeout) {\n this.showTimeout = window.setTimeout(() => {\n this.showTimeout = undefined;\n this.showTooltip();\n }, this.showDelay);\n }\n }\n\n private hideListener() {\n window.clearTimeout(this.showTimeout);\n this.showTimeout = undefined;\n if (!this.hideTimeout) {\n this.hideTimeout = window.setTimeout(() => {\n this.hideTimeout = undefined;\n this.hideTooltip();\n }, this.hideDelay);\n }\n }\n\n private touchStartListener(event: Event) {\n event.stopPropagation();\n if (!this.touchTimeout) {\n this.touchTimeout = window.setTimeout(() => {\n this.touchTimeout = undefined;\n this.showTooltip();\n }, this.longTouchDuration);\n }\n }\n\n private touchEndListener() {\n window.clearTimeout(this.touchTimeout);\n this.touchTimeout = undefined;\n this.hideTooltip();\n }\n\n private windowTouchStartListener() {\n this.hideTooltip();\n }\n\n private showTooltip() {\n if (this.trigger && this.tooltip) {\n this.cleanupFloatingUi = autoUpdate(this.trigger, this.tooltip, () => this.update());\n }\n if (!this.inactive) {\n this.open = true;\n this.tooltip?.classList.add('tooltip-show');\n }\n }\n\n private hideTooltip() {\n this.open = false;\n this.tooltip?.classList.remove('tooltip-show');\n this.cleanupFloatingUi?.();\n this.cleanupFloatingUi = undefined;\n }\n}\n"],"version":3}
1
+ {"file":"cat-tooltip.js","mappings":"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","names":["CatTooltip","isTouchScreen"],"sources":["src/utils/is-touch-screen.ts","src/components/cat-tooltip/cat-tooltip.scss?tag=cat-tooltip&encapsulation=shadow","src/components/cat-tooltip/cat-tooltip.tsx"],"sourcesContent":["const isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n\nexport default isTouchDevice;\n","@use 'variables' as *;\n@use 'mixins' as *;\n\n$-max-width: 20rem;\n$-box-shadow: rgb(0 0 0 / 8%) 0 1px 8px 0;\n$-shift-padding: 0.25rem; // padding given to the shift() middleware\n\n:host {\n display: contents;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.tooltip {\n --cat-font-color-head: #{cat-token('color.ui.font.tooltip', $wrap: false)};\n --cat-font-color-body: #{cat-token('color.ui.font.tooltip', $wrap: false)};\n position: fixed;\n width: max-content;\n top: 0;\n left: 0;\n box-sizing: border-box;\n @include cat-body('s', 500);\n background-color: cat-token('color.ui.background.tooltip');\n border-radius: cat-border-radius('m');\n color: cat-token('color.ui.font.tooltip');\n transition:\n opacity cat-token('time.transition.m') linear,\n visibility cat-token('time.transition.m') linear;\n visibility: hidden;\n opacity: 0;\n box-shadow: $-box-shadow;\n z-index: cat-z-index('tooltip');\n max-width: min(calc(100vw - 2 * $-shift-padding), $-max-width);\n\n &-hidden {\n @include cat-visually-hidden;\n }\n\n &-show {\n opacity: 1;\n visibility: visible;\n }\n\n p {\n margin: 0;\n }\n}\n\n// ----- round\n\n.tooltip-round {\n border-radius: 10rem;\n}\n\n// ----- size\n\n.tooltip-s {\n padding: 0.375rem 0.5rem;\n\n &.tooltip-round {\n padding: 0.375rem 0.75rem;\n }\n}\n\n.tooltip-m {\n padding: 0.75rem;\n\n &.tooltip-round {\n padding: 0.75rem 1rem;\n }\n}\n\n.tooltip-l {\n padding: 1rem;\n\n &.tooltip-round {\n padding: 1rem 1.5rem;\n }\n}\n","import { autoUpdate, computePosition, flip, offset, Placement, shift } from '@floating-ui/dom';\nimport { Component, Element, h, Host, Listen, Prop, State } from '@stencil/core';\nimport isTouchScreen from '../../utils/is-touch-screen';\n\nlet nextUniqueId = 0;\n\n@Component({\n tag: 'cat-tooltip',\n styleUrl: 'cat-tooltip.scss',\n shadow: true\n})\nexport class CatTooltip {\n private static readonly OFFSET = 4;\n private static readonly SHIFT_PADDING = 4;\n private readonly id = `cat-tooltip-${nextUniqueId++}`;\n private tooltip?: HTMLElement;\n private trigger?: Element;\n private showTimeout?: number;\n private hideTimeout?: number;\n private touchTimeout?: number;\n private inactive = false;\n private cleanupFloatingUi?: () => void;\n\n private readonly boundShowListener: () => void;\n private readonly boundHideListener: () => void;\n private readonly boundWindowTouchStartListener: () => void;\n private readonly boundTouchStartListener: (event: Event) => void;\n private readonly boundTouchEndListener: () => void;\n\n constructor() {\n this.boundShowListener = this.showListener.bind(this);\n this.boundHideListener = this.hideListener.bind(this);\n this.boundWindowTouchStartListener = this.windowTouchStartListener.bind(this);\n this.boundTouchStartListener = this.touchStartListener.bind(this);\n this.boundTouchEndListener = this.touchEndListener.bind(this);\n }\n\n @Element() hostElement!: HTMLElement;\n\n @State() open = false;\n\n /**\n * The content of the tooltip.\n */\n @Prop() content = '';\n\n /**\n * Specifies that the tooltip should be disabled. A disabled tooltip is unusable,\n * and invisible. Corresponds with the native HTML disabled attribute.\n */\n @Prop() disabled = false;\n\n /**\n * The placement of the tooltip.\n */\n @Prop() placement: Placement = 'top';\n\n /**\n * Use round tooltip edges.\n */\n @Prop() round = false;\n\n /**\n * The size of the tooltip.\n */\n @Prop() size: 's' | 'm' | 'l' = 'm';\n\n /**\n * The delay time for showing tooltip in ms.\n */\n @Prop() showDelay = 250;\n\n /**\n * The delay time for hiding tooltip in ms.\n */\n @Prop() hideDelay = 0;\n\n /**\n * The duration of tap to show the tooltip.\n */\n @Prop() longTouchDuration = 1000;\n\n @Listen('keydown')\n handleKeyDown({ key }: KeyboardEvent) {\n key === 'Escape' && this.hideTooltip();\n }\n\n componentDidLoad(): void {\n const slot = this.hostElement.shadowRoot?.querySelector('slot');\n this.trigger = slot?.assignedElements?.()?.[0];\n if (this.trigger && !this.trigger.hasAttribute('aria-describedby')) {\n this.trigger.setAttribute('aria-describedby', this.id);\n }\n\n if (isTouchScreen) {\n window.addEventListener('touchstart', this.boundWindowTouchStartListener);\n this.trigger?.addEventListener('touchstart', this.boundTouchStartListener);\n this.trigger?.addEventListener('touchend', this.boundTouchEndListener);\n } else {\n this.trigger?.addEventListener('focusin', this.boundShowListener);\n this.trigger?.addEventListener('focusout', this.boundHideListener);\n this.trigger?.addEventListener('mouseenter', this.boundShowListener);\n this.trigger?.addEventListener('mouseleave', this.boundHideListener);\n }\n }\n\n componentWillRender(): void {\n this.inactive = this.disabled || (!this.content && !this.hostElement.querySelector('[slot=\"content\"]'));\n }\n\n disconnectedCallback(): void {\n if (isTouchScreen) {\n window.removeEventListener('touchstart', this.boundWindowTouchStartListener);\n this.trigger?.removeEventListener('touchstart', this.boundTouchStartListener);\n this.trigger?.removeEventListener('touchend', this.boundTouchEndListener);\n } else {\n this.trigger?.removeEventListener('mouseenter', this.boundShowListener);\n this.trigger?.removeEventListener('mouseleave', this.boundHideListener);\n this.trigger?.removeEventListener('focusin', this.boundShowListener);\n this.trigger?.removeEventListener('focusout', this.boundHideListener);\n }\n }\n\n render() {\n return (\n <Host>\n <slot />\n <div\n ref={el => (this.tooltip = el)}\n id={this.id}\n role=\"tooltip\"\n aria-hidden={!this.open}\n aria-live={this.open ? 'polite' : 'off'}\n class={{\n tooltip: true,\n 'tooltip-hidden': this.inactive,\n 'tooltip-round': this.round,\n [`tooltip-${this.size}`]: Boolean(this.size)\n }}\n >\n <slot name=\"content\">\n {/* The paragraph is needed here to make aria-live work properly. */}\n <p>{this.content}</p>\n </slot>\n </div>\n </Host>\n );\n }\n\n private async update() {\n if (this.trigger && this.tooltip) {\n await computePosition(this.trigger, this.tooltip, {\n strategy: 'fixed',\n placement: this.placement,\n middleware: [\n offset(CatTooltip.OFFSET),\n flip({ fallbackAxisSideDirection: 'start' }),\n shift({ padding: CatTooltip.SHIFT_PADDING })\n ]\n }).then(({ x, y }) => {\n if (this.tooltip) {\n Object.assign(this.tooltip.style, {\n left: `${Math.max(0, x)}px`,\n top: `${y}px`\n });\n }\n });\n }\n }\n\n private showListener() {\n window.clearTimeout(this.hideTimeout);\n this.hideTimeout = undefined;\n if (!this.showTimeout) {\n this.showTimeout = window.setTimeout(() => {\n this.showTimeout = undefined;\n this.showTooltip();\n }, this.showDelay);\n }\n }\n\n private hideListener() {\n window.clearTimeout(this.showTimeout);\n this.showTimeout = undefined;\n if (!this.hideTimeout) {\n this.hideTimeout = window.setTimeout(() => {\n this.hideTimeout = undefined;\n this.hideTooltip();\n }, this.hideDelay);\n }\n }\n\n private touchStartListener(event: Event) {\n event.stopPropagation();\n if (!this.touchTimeout) {\n this.touchTimeout = window.setTimeout(() => {\n this.touchTimeout = undefined;\n this.showTooltip();\n }, this.longTouchDuration);\n }\n }\n\n private touchEndListener() {\n window.clearTimeout(this.touchTimeout);\n this.touchTimeout = undefined;\n this.hideTooltip();\n }\n\n private windowTouchStartListener() {\n this.hideTooltip();\n }\n\n private showTooltip() {\n if (this.trigger && this.tooltip) {\n this.cleanupFloatingUi = autoUpdate(this.trigger, this.tooltip, () => this.update());\n }\n if (!this.inactive) {\n this.open = true;\n this.tooltip?.classList.add('tooltip-show');\n }\n }\n\n private hideTooltip() {\n this.open = false;\n this.tooltip?.classList.remove('tooltip-show');\n this.cleanupFloatingUi?.();\n this.cleanupFloatingUi = undefined;\n }\n}\n"],"version":3}
@@ -1,11 +1,5 @@
1
- const min = Math.min;
2
- const max = Math.max;
3
- const round = Math.round;
4
- const floor = Math.floor;
5
- const createCoords = v => ({
6
- x: v,
7
- y: v
8
- });
1
+ const min$1 = Math.min;
2
+ const max$1 = Math.max;
9
3
  const oppositeSideMap = {
10
4
  left: 'right',
11
5
  right: 'left',
@@ -17,7 +11,7 @@ const oppositeAlignmentMap = {
17
11
  end: 'start'
18
12
  };
19
13
  function clamp(start, value, end) {
20
- return max(start, min(value, end));
14
+ return max$1(start, min$1(value, end));
21
15
  }
22
16
  function evaluate(value, param) {
23
17
  return typeof value === 'function' ? value(param) : value;
@@ -335,7 +329,7 @@ async function detectOverflow(state, options) {
335
329
  * clipping boundary. Alternative to `autoPlacement`.
336
330
  * @see https://floating-ui.com/docs/flip
337
331
  */
338
- const flip = function (options) {
332
+ const flip$1 = function (options) {
339
333
  if (options === void 0) {
340
334
  options = {};
341
335
  }
@@ -521,7 +515,7 @@ const offset = function (options) {
521
515
  * keep it in view when it will overflow the clipping boundary.
522
516
  * @see https://floating-ui.com/docs/shift
523
517
  */
524
- const shift = function (options) {
518
+ const shift$1 = function (options) {
525
519
  if (options === void 0) {
526
520
  options = {};
527
521
  }
@@ -596,7 +590,7 @@ const shift = function (options) {
596
590
  * width of the reference element.
597
591
  * @see https://floating-ui.com/docs/size
598
592
  */
599
- const size = function (options) {
593
+ const size$1 = function (options) {
600
594
  if (options === void 0) {
601
595
  options = {};
602
596
  }
@@ -638,20 +632,20 @@ const size = function (options) {
638
632
  let availableWidth = overflowAvailableWidth;
639
633
  if (isYAxis) {
640
634
  const maximumClippingWidth = width - overflow.left - overflow.right;
641
- availableWidth = alignment || noShift ? min(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;
635
+ availableWidth = alignment || noShift ? min$1(overflowAvailableWidth, maximumClippingWidth) : maximumClippingWidth;
642
636
  } else {
643
637
  const maximumClippingHeight = height - overflow.top - overflow.bottom;
644
- availableHeight = alignment || noShift ? min(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;
638
+ availableHeight = alignment || noShift ? min$1(overflowAvailableHeight, maximumClippingHeight) : maximumClippingHeight;
645
639
  }
646
640
  if (noShift && !alignment) {
647
- const xMin = max(overflow.left, 0);
648
- const xMax = max(overflow.right, 0);
649
- const yMin = max(overflow.top, 0);
650
- const yMax = max(overflow.bottom, 0);
641
+ const xMin = max$1(overflow.left, 0);
642
+ const xMax = max$1(overflow.right, 0);
643
+ const yMin = max$1(overflow.top, 0);
644
+ const yMax = max$1(overflow.bottom, 0);
651
645
  if (isYAxis) {
652
- availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));
646
+ availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max$1(overflow.left, overflow.right));
653
647
  } else {
654
- availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));
648
+ availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max$1(overflow.top, overflow.bottom));
655
649
  }
656
650
  }
657
651
  await apply({
@@ -672,6 +666,19 @@ const size = function (options) {
672
666
  };
673
667
  };
674
668
 
669
+ /**
670
+ * Custom positioning reference element.
671
+ * @see https://floating-ui.com/docs/virtual-elements
672
+ */
673
+ const min = Math.min;
674
+ const max = Math.max;
675
+ const round = Math.round;
676
+ const floor = Math.floor;
677
+ const createCoords = v => ({
678
+ x: v,
679
+ y: v
680
+ });
681
+
675
682
  function getNodeName(node) {
676
683
  if (isNode(node)) {
677
684
  return (node.nodeName || '').toLowerCase();
@@ -683,7 +690,7 @@ function getNodeName(node) {
683
690
  }
684
691
  function getWindow(node) {
685
692
  var _node$ownerDocument;
686
- return (node == null ? void 0 : (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;
693
+ return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;
687
694
  }
688
695
  function getDocumentElement(node) {
689
696
  var _ref;
@@ -900,8 +907,9 @@ function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetPar
900
907
  if (domElement) {
901
908
  const win = getWindow(domElement);
902
909
  const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;
903
- let currentIFrame = win.frameElement;
904
- while (currentIFrame && offsetParent && offsetWin !== win) {
910
+ let currentWin = win;
911
+ let currentIFrame = currentWin.frameElement;
912
+ while (currentIFrame && offsetParent && offsetWin !== currentWin) {
905
913
  const iframeScale = getScale(currentIFrame);
906
914
  const iframeRect = currentIFrame.getBoundingClientRect();
907
915
  const css = getComputedStyle(currentIFrame);
@@ -913,7 +921,8 @@ function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetPar
913
921
  height *= iframeScale.y;
914
922
  x += left;
915
923
  y += top;
916
- currentIFrame = getWindow(currentIFrame).frameElement;
924
+ currentWin = getWindow(currentIFrame);
925
+ currentIFrame = currentWin.frameElement;
917
926
  }
918
927
  }
919
928
  return rectToClientRect({
@@ -924,15 +933,28 @@ function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetPar
924
933
  });
925
934
  }
926
935
 
936
+ const topLayerSelectors = [':popover-open', ':modal'];
937
+ function isTopLayer(floating) {
938
+ return topLayerSelectors.some(selector => {
939
+ try {
940
+ return floating.matches(selector);
941
+ } catch (e) {
942
+ return false;
943
+ }
944
+ });
945
+ }
946
+
927
947
  function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
928
948
  let {
949
+ elements,
929
950
  rect,
930
951
  offsetParent,
931
952
  strategy
932
953
  } = _ref;
933
- const isOffsetParentAnElement = isHTMLElement(offsetParent);
954
+ const isFixed = strategy === 'fixed';
934
955
  const documentElement = getDocumentElement(offsetParent);
935
- if (offsetParent === documentElement) {
956
+ const topLayer = elements ? isTopLayer(elements.floating) : false;
957
+ if (offsetParent === documentElement || topLayer && isFixed) {
936
958
  return rect;
937
959
  }
938
960
  let scroll = {
@@ -941,7 +963,8 @@ function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
941
963
  };
942
964
  let scale = createCoords(1);
943
965
  const offsets = createCoords(0);
944
- if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {
966
+ const isOffsetParentAnElement = isHTMLElement(offsetParent);
967
+ if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
945
968
  if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
946
969
  scroll = getNodeScroll(offsetParent);
947
970
  }
@@ -1122,7 +1145,14 @@ function getClippingRect(_ref) {
1122
1145
  }
1123
1146
 
1124
1147
  function getDimensions(element) {
1125
- return getCssDimensions(element);
1148
+ const {
1149
+ width,
1150
+ height
1151
+ } = getCssDimensions(element);
1152
+ return {
1153
+ width,
1154
+ height
1155
+ };
1126
1156
  }
1127
1157
 
1128
1158
  function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
@@ -1147,9 +1177,11 @@ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
1147
1177
  offsets.x = getWindowScrollBarX(documentElement);
1148
1178
  }
1149
1179
  }
1180
+ const x = rect.left + scroll.scrollLeft - offsets.x;
1181
+ const y = rect.top + scroll.scrollTop - offsets.y;
1150
1182
  return {
1151
- x: rect.left + scroll.scrollLeft - offsets.x,
1152
- y: rect.top + scroll.scrollTop - offsets.y,
1183
+ x,
1184
+ y,
1153
1185
  width: rect.width,
1154
1186
  height: rect.height
1155
1187
  };
@@ -1169,7 +1201,7 @@ function getTrueOffsetParent(element, polyfill) {
1169
1201
  // such as table ancestors and cross browser bugs.
1170
1202
  function getOffsetParent(element, polyfill) {
1171
1203
  const window = getWindow(element);
1172
- if (!isHTMLElement(element)) {
1204
+ if (!isHTMLElement(element) || isTopLayer(element)) {
1173
1205
  return window;
1174
1206
  }
1175
1207
  let offsetParent = getTrueOffsetParent(element, polyfill);
@@ -1182,20 +1214,15 @@ function getOffsetParent(element, polyfill) {
1182
1214
  return offsetParent || getContainingBlock(element) || window;
1183
1215
  }
1184
1216
 
1185
- const getElementRects = async function (_ref) {
1186
- let {
1187
- reference,
1188
- floating,
1189
- strategy
1190
- } = _ref;
1217
+ const getElementRects = async function (data) {
1191
1218
  const getOffsetParentFn = this.getOffsetParent || getOffsetParent;
1192
1219
  const getDimensionsFn = this.getDimensions;
1193
1220
  return {
1194
- reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),
1221
+ reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),
1195
1222
  floating: {
1196
1223
  x: 0,
1197
1224
  y: 0,
1198
- ...(await getDimensionsFn(floating))
1225
+ ...(await getDimensionsFn(data.floating))
1199
1226
  }
1200
1227
  };
1201
1228
  };
@@ -1223,8 +1250,9 @@ function observeMove(element, onMove) {
1223
1250
  let timeoutId;
1224
1251
  const root = getDocumentElement(element);
1225
1252
  function cleanup() {
1253
+ var _io;
1226
1254
  clearTimeout(timeoutId);
1227
- io && io.disconnect();
1255
+ (_io = io) == null || _io.disconnect();
1228
1256
  io = null;
1229
1257
  }
1230
1258
  function refresh(skip, threshold) {
@@ -1330,7 +1358,8 @@ function autoUpdate(reference, floating, update, options) {
1330
1358
  resizeObserver.unobserve(floating);
1331
1359
  cancelAnimationFrame(reobserveFrame);
1332
1360
  reobserveFrame = requestAnimationFrame(() => {
1333
- resizeObserver && resizeObserver.observe(floating);
1361
+ var _resizeObserver;
1362
+ (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);
1334
1363
  });
1335
1364
  }
1336
1365
  update();
@@ -1355,12 +1384,13 @@ function autoUpdate(reference, floating, update, options) {
1355
1384
  }
1356
1385
  update();
1357
1386
  return () => {
1387
+ var _resizeObserver2;
1358
1388
  ancestors.forEach(ancestor => {
1359
1389
  ancestorScroll && ancestor.removeEventListener('scroll', update);
1360
1390
  ancestorResize && ancestor.removeEventListener('resize', update);
1361
1391
  });
1362
- cleanupIo && cleanupIo();
1363
- resizeObserver && resizeObserver.disconnect();
1392
+ cleanupIo == null || cleanupIo();
1393
+ (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();
1364
1394
  resizeObserver = null;
1365
1395
  if (animationFrame) {
1366
1396
  cancelAnimationFrame(frameId);
@@ -1368,10 +1398,32 @@ function autoUpdate(reference, floating, update, options) {
1368
1398
  };
1369
1399
  }
1370
1400
 
1401
+ /**
1402
+ * Optimizes the visibility of the floating element by shifting it in order to
1403
+ * keep it in view when it will overflow the clipping boundary.
1404
+ * @see https://floating-ui.com/docs/shift
1405
+ */
1406
+ const shift = shift$1;
1407
+
1408
+ /**
1409
+ * Optimizes the visibility of the floating element by flipping the `placement`
1410
+ * in order to keep it in view when the preferred placement(s) will overflow the
1411
+ * clipping boundary. Alternative to `autoPlacement`.
1412
+ * @see https://floating-ui.com/docs/flip
1413
+ */
1414
+ const flip = flip$1;
1415
+
1416
+ /**
1417
+ * Provides data that allows you to change the size of the floating element —
1418
+ * for instance, prevent it from overflowing the clipping boundary or match the
1419
+ * width of the reference element.
1420
+ * @see https://floating-ui.com/docs/size
1421
+ */
1422
+ const size = size$1;
1423
+
1371
1424
  /**
1372
1425
  * Computes the `x` and `y` coordinates that will place the floating element
1373
- * next to a reference element when it is given a certain CSS positioning
1374
- * strategy.
1426
+ * next to a given reference element.
1375
1427
  */
1376
1428
  const computePosition = (reference, floating, options) => {
1377
1429
  // This caches the expensive `getClippingElementAncestors` function so that