@public-ui/components 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/cheat-sheet.html +6 -6
  2. package/custom-elements.json +3 -3
  3. package/dist/cjs/{controller-8342e490.js → controller-3b86e1c6.js} +1 -1
  4. package/dist/cjs/{controller-8342e490.js.map → controller-3b86e1c6.js.map} +1 -1
  5. package/dist/cjs/{controller-d28e02c0.js → controller-3f64b13e.js} +1 -1
  6. package/dist/cjs/{controller-d28e02c0.js.map → controller-3f64b13e.js.map} +1 -1
  7. package/dist/cjs/{controller-37208c19.js → controller-9ecb5be4.js} +1 -1
  8. package/dist/cjs/{controller-37208c19.js.map → controller-9ecb5be4.js.map} +1 -1
  9. package/dist/cjs/{controller-fc8515bc.js → controller-c22d561c.js} +1 -1
  10. package/dist/cjs/{controller-fc8515bc.js.map → controller-c22d561c.js.map} +1 -1
  11. package/dist/cjs/kol-button-link.cjs.entry.js +1 -1
  12. package/dist/cjs/kol-button-wc_2.cjs.entry.js +1 -1
  13. package/dist/cjs/kol-button-wc_2.cjs.entry.js.map +1 -1
  14. package/dist/cjs/kol-button.cjs.entry.js +1 -1
  15. package/dist/cjs/kol-icon.cjs.entry.js.map +1 -1
  16. package/dist/cjs/kol-input-checkbox.cjs.entry.js +1 -1
  17. package/dist/cjs/kol-input-color.cjs.entry.js +1 -1
  18. package/dist/cjs/kol-input-date.cjs.entry.js +1 -1
  19. package/dist/cjs/kol-input-email.cjs.entry.js +1 -1
  20. package/dist/cjs/kol-input-file.cjs.entry.js +1 -1
  21. package/dist/cjs/kol-input-number.cjs.entry.js +1 -1
  22. package/dist/cjs/kol-input-password.cjs.entry.js +1 -1
  23. package/dist/cjs/kol-input-radio.cjs.entry.js +1 -1
  24. package/dist/cjs/kol-input-range.cjs.entry.js +1 -1
  25. package/dist/cjs/kol-input-text.cjs.entry.js +1 -1
  26. package/dist/cjs/kol-link-button.cjs.entry.js +1 -1
  27. package/dist/cjs/kol-link-wc.cjs.entry.js +1 -1
  28. package/dist/cjs/kol-link.cjs.entry.js +1 -1
  29. package/dist/cjs/kol-pagination.cjs.entry.js +1 -1
  30. package/dist/cjs/kol-select.cjs.entry.js +1 -1
  31. package/dist/cjs/kol-textarea.cjs.entry.js +1 -1
  32. package/dist/cjs/kol-tooltip.cjs.entry.js +1 -1
  33. package/dist/cjs/kol-tooltip.cjs.entry.js.map +1 -1
  34. package/dist/cjs/{label-88419619.js → label-370414db.js} +1 -1
  35. package/dist/cjs/{label-88419619.js.map → label-370414db.js.map} +1 -1
  36. package/dist/cjs/reuse-28825ead.js +4 -0
  37. package/dist/cjs/reuse-28825ead.js.map +1 -0
  38. package/dist/cjs/{tab-index-c69625a6.js → tab-index-954dd1d8.js} +1 -1
  39. package/dist/cjs/{tab-index-c69625a6.js.map → tab-index-954dd1d8.js.map} +1 -1
  40. package/dist/cjs/validator-953ea58f.js +4 -0
  41. package/dist/cjs/validator-953ea58f.js.map +1 -0
  42. package/dist/components/component.js +1 -1
  43. package/dist/components/component.js.map +1 -1
  44. package/dist/components/component2.js.map +1 -1
  45. package/dist/components/component3.js +1 -1
  46. package/dist/components/component3.js.map +1 -1
  47. package/dist/esm/{controller-8e33192f.js → controller-1362fa2f.js} +1 -1
  48. package/dist/esm/{controller-8e33192f.js.map → controller-1362fa2f.js.map} +1 -1
  49. package/dist/esm/{controller-46b28944.js → controller-c34d5da2.js} +1 -1
  50. package/dist/esm/{controller-46b28944.js.map → controller-c34d5da2.js.map} +1 -1
  51. package/dist/esm/{controller-9bcf44e5.js → controller-ce5dfb44.js} +1 -1
  52. package/dist/esm/{controller-9bcf44e5.js.map → controller-ce5dfb44.js.map} +1 -1
  53. package/dist/esm/{controller-1753b7f0.js → controller-f0f7cbc7.js} +1 -1
  54. package/dist/esm/{controller-1753b7f0.js.map → controller-f0f7cbc7.js.map} +1 -1
  55. package/dist/esm/kol-button-link.entry.js +1 -1
  56. package/dist/esm/kol-button-wc_2.entry.js +1 -1
  57. package/dist/esm/kol-button-wc_2.entry.js.map +1 -1
  58. package/dist/esm/kol-button.entry.js +1 -1
  59. package/dist/esm/kol-icon.entry.js.map +1 -1
  60. package/dist/esm/kol-input-checkbox.entry.js +1 -1
  61. package/dist/esm/kol-input-color.entry.js +1 -1
  62. package/dist/esm/kol-input-date.entry.js +1 -1
  63. package/dist/esm/kol-input-email.entry.js +1 -1
  64. package/dist/esm/kol-input-file.entry.js +1 -1
  65. package/dist/esm/kol-input-number.entry.js +1 -1
  66. package/dist/esm/kol-input-password.entry.js +1 -1
  67. package/dist/esm/kol-input-radio.entry.js +1 -1
  68. package/dist/esm/kol-input-range.entry.js +1 -1
  69. package/dist/esm/kol-input-text.entry.js +1 -1
  70. package/dist/esm/kol-link-button.entry.js +1 -1
  71. package/dist/esm/kol-link-wc.entry.js +1 -1
  72. package/dist/esm/kol-link.entry.js +1 -1
  73. package/dist/esm/kol-pagination.entry.js +1 -1
  74. package/dist/esm/kol-select.entry.js +1 -1
  75. package/dist/esm/kol-textarea.entry.js +1 -1
  76. package/dist/esm/kol-tooltip.entry.js +1 -1
  77. package/dist/esm/kol-tooltip.entry.js.map +1 -1
  78. package/dist/esm/{label-6c8f8ebb.js → label-a6e1b813.js} +1 -1
  79. package/dist/esm/{label-6c8f8ebb.js.map → label-a6e1b813.js.map} +1 -1
  80. package/dist/esm/reuse-2f7da8fc.js +4 -0
  81. package/dist/esm/reuse-2f7da8fc.js.map +1 -0
  82. package/dist/esm/{tab-index-4314d33e.js → tab-index-2f165a2f.js} +1 -1
  83. package/dist/esm/{tab-index-4314d33e.js.map → tab-index-2f165a2f.js.map} +1 -1
  84. package/dist/esm/validator-2e4f8df6.js +4 -0
  85. package/dist/esm/validator-2e4f8df6.js.map +1 -0
  86. package/dist/kolibri/assets/fontawesome-free/{v6/LICENSE.txt → LICENSE.txt} +0 -0
  87. package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/all.css +2597 -5174
  88. package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/all.min.css +0 -0
  89. package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/brands.css +0 -0
  90. package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/brands.min.css +0 -0
  91. package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/fontawesome.css +0 -0
  92. package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/fontawesome.min.css +0 -0
  93. package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/regular.css +0 -0
  94. package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/regular.min.css +0 -0
  95. package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/solid.css +0 -0
  96. package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/solid.min.css +0 -0
  97. package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/svg-with-js.css +0 -0
  98. package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/svg-with-js.min.css +0 -0
  99. package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/v4-font-face.css +0 -0
  100. package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/v4-font-face.min.css +0 -0
  101. package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/v4-shims.css +0 -0
  102. package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/v4-shims.min.css +0 -0
  103. package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/v5-font-face.css +0 -0
  104. package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/v5-font-face.min.css +0 -0
  105. package/dist/kolibri/assets/fontawesome-free/{v6/webfonts → webfonts}/fa-brands-400.ttf +0 -0
  106. package/dist/kolibri/assets/fontawesome-free/{v6/webfonts → webfonts}/fa-brands-400.woff2 +0 -0
  107. package/dist/kolibri/assets/fontawesome-free/{v6/webfonts → webfonts}/fa-regular-400.ttf +0 -0
  108. package/dist/kolibri/assets/fontawesome-free/{v6/webfonts → webfonts}/fa-regular-400.woff2 +0 -0
  109. package/dist/kolibri/assets/fontawesome-free/{v6/webfonts → webfonts}/fa-solid-900.ttf +0 -0
  110. package/dist/kolibri/assets/fontawesome-free/{v6/webfonts → webfonts}/fa-solid-900.woff2 +0 -0
  111. package/dist/kolibri/assets/fontawesome-free/{v6/webfonts → webfonts}/fa-v4compatibility.ttf +0 -0
  112. package/dist/kolibri/assets/fontawesome-free/{v6/webfonts → webfonts}/fa-v4compatibility.woff2 +0 -0
  113. package/dist/kolibri/assets/kreon/Kreon-VariableFont_wght.ttf +0 -0
  114. package/dist/kolibri/assets/kreon/OFL.txt +93 -0
  115. package/dist/kolibri/assets/kreon/README.txt +67 -0
  116. package/dist/kolibri/assets/kreon/static/Kreon-Bold.ttf +0 -0
  117. package/dist/kolibri/assets/kreon/static/Kreon-Light.ttf +0 -0
  118. package/dist/kolibri/assets/kreon/static/Kreon-Medium.ttf +0 -0
  119. package/dist/kolibri/assets/kreon/static/Kreon-Regular.ttf +0 -0
  120. package/dist/kolibri/assets/kreon/static/Kreon-SemiBold.ttf +0 -0
  121. package/dist/kolibri/assets/kreon/style.css +41 -0
  122. package/dist/kolibri/{controller-8e33192f.js → controller-1362fa2f.js} +1 -1
  123. package/dist/kolibri/{controller-8e33192f.js.map → controller-1362fa2f.js.map} +0 -0
  124. package/dist/kolibri/{controller-46b28944.js → controller-c34d5da2.js} +1 -1
  125. package/dist/kolibri/{controller-46b28944.js.map → controller-c34d5da2.js.map} +0 -0
  126. package/dist/kolibri/controller-ce5dfb44.js +4 -0
  127. package/dist/kolibri/{controller-9bcf44e5.js.map → controller-ce5dfb44.js.map} +1 -1
  128. package/dist/kolibri/{controller-1753b7f0.js → controller-f0f7cbc7.js} +1 -1
  129. package/dist/kolibri/{controller-1753b7f0.js.map → controller-f0f7cbc7.js.map} +0 -0
  130. package/dist/kolibri/kol-button-link.entry.js +1 -1
  131. package/dist/kolibri/kol-button-wc_2.entry.js +1 -1
  132. package/dist/kolibri/kol-button-wc_2.entry.js.map +1 -1
  133. package/dist/kolibri/kol-button.entry.js +1 -1
  134. package/dist/kolibri/kol-icon.entry.js.map +1 -1
  135. package/dist/kolibri/kol-input-checkbox.entry.js +1 -1
  136. package/dist/kolibri/kol-input-color.entry.js +1 -1
  137. package/dist/kolibri/kol-input-date.entry.js +1 -1
  138. package/dist/kolibri/kol-input-email.entry.js +1 -1
  139. package/dist/kolibri/kol-input-file.entry.js +1 -1
  140. package/dist/kolibri/kol-input-number.entry.js +1 -1
  141. package/dist/kolibri/kol-input-password.entry.js +1 -1
  142. package/dist/kolibri/kol-input-radio.entry.js +1 -1
  143. package/dist/kolibri/kol-input-range.entry.js +1 -1
  144. package/dist/kolibri/kol-input-text.entry.js +1 -1
  145. package/dist/kolibri/kol-link-button.entry.js +1 -1
  146. package/dist/kolibri/kol-link-wc.entry.js +1 -1
  147. package/dist/kolibri/kol-link-wc.entry.js.map +1 -1
  148. package/dist/kolibri/kol-link.entry.js +1 -1
  149. package/dist/kolibri/kol-pagination.entry.js +1 -1
  150. package/dist/kolibri/kol-select.entry.js +1 -1
  151. package/dist/kolibri/kol-textarea.entry.js +1 -1
  152. package/dist/kolibri/kol-tooltip.entry.js +1 -1
  153. package/dist/kolibri/kol-tooltip.entry.js.map +1 -1
  154. package/dist/kolibri/{label-6c8f8ebb.js → label-a6e1b813.js} +1 -1
  155. package/dist/kolibri/{label-6c8f8ebb.js.map → label-a6e1b813.js.map} +0 -0
  156. package/dist/kolibri/reuse-2f7da8fc.js +4 -0
  157. package/dist/kolibri/reuse-2f7da8fc.js.map +1 -0
  158. package/dist/kolibri/{tab-index-4314d33e.js → tab-index-2f165a2f.js} +1 -1
  159. package/dist/kolibri/{tab-index-4314d33e.js.map → tab-index-2f165a2f.js.map} +0 -0
  160. package/dist/kolibri/{validator-8ee8737c.js → validator-2e4f8df6.js} +1 -1
  161. package/dist/kolibri/validator-2e4f8df6.js.map +1 -0
  162. package/dist/types/components/tooltip/component.d.ts +12 -5
  163. package/dist/types/components.d.ts +2 -2
  164. package/doc/tooltip.md +1 -1
  165. package/jest-test-results.json +1 -1
  166. package/package.json +1 -1
  167. package/dist/cjs/reuse-d95dc094.js +0 -4
  168. package/dist/cjs/reuse-d95dc094.js.map +0 -1
  169. package/dist/cjs/validator-6f53d4a2.js +0 -4
  170. package/dist/cjs/validator-6f53d4a2.js.map +0 -1
  171. package/dist/esm/reuse-f9be4952.js +0 -4
  172. package/dist/esm/reuse-f9be4952.js.map +0 -1
  173. package/dist/esm/validator-8ee8737c.js +0 -4
  174. package/dist/esm/validator-8ee8737c.js.map +0 -1
  175. package/dist/kolibri/assets/fontawesome-free/v5/LICENSE.txt +0 -34
  176. package/dist/kolibri/assets/fontawesome-free/v5/css/all.css +0 -4616
  177. package/dist/kolibri/assets/fontawesome-free/v5/css/all.min.css +0 -5
  178. package/dist/kolibri/assets/fontawesome-free/v5/css/brands.css +0 -15
  179. package/dist/kolibri/assets/fontawesome-free/v5/css/brands.min.css +0 -5
  180. package/dist/kolibri/assets/fontawesome-free/v5/css/fontawesome.css +0 -4582
  181. package/dist/kolibri/assets/fontawesome-free/v5/css/fontawesome.min.css +0 -5
  182. package/dist/kolibri/assets/fontawesome-free/v5/css/regular.css +0 -15
  183. package/dist/kolibri/assets/fontawesome-free/v5/css/regular.min.css +0 -5
  184. package/dist/kolibri/assets/fontawesome-free/v5/css/solid.css +0 -16
  185. package/dist/kolibri/assets/fontawesome-free/v5/css/solid.min.css +0 -5
  186. package/dist/kolibri/assets/fontawesome-free/v5/css/svg-with-js.css +0 -371
  187. package/dist/kolibri/assets/fontawesome-free/v5/css/svg-with-js.min.css +0 -5
  188. package/dist/kolibri/assets/fontawesome-free/v5/css/v4-shims.css +0 -2172
  189. package/dist/kolibri/assets/fontawesome-free/v5/css/v4-shims.min.css +0 -5
  190. package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-brands-400.eot +0 -0
  191. package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-brands-400.svg +0 -3717
  192. package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-brands-400.ttf +0 -0
  193. package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-brands-400.woff +0 -0
  194. package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-brands-400.woff2 +0 -0
  195. package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-regular-400.eot +0 -0
  196. package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-regular-400.svg +0 -801
  197. package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-regular-400.ttf +0 -0
  198. package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-regular-400.woff +0 -0
  199. package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-regular-400.woff2 +0 -0
  200. package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-solid-900.eot +0 -0
  201. package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-solid-900.svg +0 -5034
  202. package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-solid-900.ttf +0 -0
  203. package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-solid-900.woff +0 -0
  204. package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-solid-900.woff2 +0 -0
  205. package/dist/kolibri/controller-9bcf44e5.js +0 -4
  206. package/dist/kolibri/reuse-f9be4952.js +0 -4
  207. package/dist/kolibri/reuse-f9be4952.js.map +0 -1
  208. package/dist/kolibri/validator-8ee8737c.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["KolLinkWc","this","nonce","catchRef","ref","propergateFocus","host","onClick","event","_a","state","_on","preventDefault","setEventTargetAndStopPropagation","_b","_href","getRenderValues","goToProps","_selector","role","tabIndex","scrollBySelector","onKeyPress","isExternal","_target","tagAttrs","href","length","target","undefined","rel","_useCase","_iconOnly","_ariaLabel","devHint","translate","_icon","_iconAlign","_label","render","h","Host","Object","assign","_ariaControls","_ariaCurrent","mapBoolean2String","_ariaExpanded","_ariaSelected","class","disabled","_disabled","_stealth","_role","_tabIndex","name","slot","_targetDescription","_align","_tooltipAlign","_id","validateAriaControls","value","watchString","validateAriaCurrent","watchValidator","Set","validateAriaExpanded","watchBoolean","validateAriaLabel","validateAriaSelected","validateDisabled","a11yHintDisabled","validateHref","validateIcon","validateIconAlign","watchIconAlign","validateIconOnly","validateLabel","validateOn","prototype","hasOwnProperty","call","validateRole","validateSelector","validateStealth","validateTabIndex","validateTarget","validateTargetDescription","validateTooltipAlign","watchTooltipAlignment","validateUseCase","componentWillLoad"],"sources":["./src/components/link/component.tsx"],"sourcesContent":["import { Component, Element, h, Host, JSX, Prop, State, Watch } from '@stencil/core';\n\nimport { Generic } from '@a11y-ui/core';\nimport { translate } from '../../i18n';\nimport {\n\tAlternativButtonLinkRole,\n\tAriaCurrent,\n\tLinkOnCallbacks,\n\tLinkStates,\n\tLinkTarget,\n\tLinkUseCase,\n\tOptionalLinkProps,\n\tOptionalLinkStates,\n\tRequiredLinkProps,\n\tRequiredLinkStates,\n\twatchTooltipAlignment,\n} from '../../types/button-link';\nimport { Stringified } from '../../types/common';\nimport { KoliBriIconProp } from '../../types/icon';\nimport { Alignment } from '../../types/props/alignment';\nimport { a11yHintDisabled, devHint } from '../../utils/a11y.tipps';\nimport { nonce } from '../../utils/dev.utils';\nimport { mapBoolean2String, scrollBySelector, setEventTargetAndStopPropagation, watchBoolean, watchString, watchValidator } from '../../utils/prop.validators';\nimport { propergateFocus } from '../../utils/reuse';\nimport { validateIcon, watchIconAlign } from '../../utils/validators/icon';\nimport { validateAriaLabel, validateLabel } from '../../utils/validators/label';\nimport { validateTabIndex } from '../../utils/validators/tab-index';\n\ntype RequiredNavLinkProps = RequiredLinkProps;\ntype OptionalNavLinkProps = OptionalLinkProps & {\n\tactive: boolean;\n};\nexport type NavLinkProps = Generic.Element.Members<RequiredNavLinkProps, OptionalNavLinkProps>;\n\n/**\n * @internal\n */\n@Component({\n\ttag: 'kol-link-wc',\n\tshadow: false,\n})\nexport class KolLinkWc implements Generic.Element.ComponentApi<RequiredLinkProps, OptionalLinkProps, RequiredLinkStates, OptionalLinkStates> {\n\t@Element() private readonly host?: HTMLKolLinkWcElement;\n\tprivate readonly nonce = nonce();\n\tprivate ref?: HTMLAnchorElement;\n\n\tprivate readonly catchRef = (ref?: HTMLAnchorElement) => {\n\t\tthis.ref = ref;\n\t\tpropergateFocus(this.host, this.ref);\n\t};\n\n\tprivate readonly onClick = (event: Event) => {\n\t\tif (typeof this.state._on?.onClick === 'function') {\n\t\t\tevent.preventDefault();\n\t\t\tsetEventTargetAndStopPropagation(event, this.ref);\n\t\t\tthis.state._on?.onClick(event, this.state._href);\n\t\t}\n\t};\n\n\tprivate readonly getRenderValues = () => {\n\t\t/**\n\t\t * DX\n\t\t * Das möchte ich ungern für HTML machen, sondern nur für Barrierefreiheitsthemen.\n\t\t */\n\t\t// if (typeof this.state._href === 'string' && this.state._href.length > 0) {\n\t\t// console.error('Setz den URL.');\n\t\t// throw new Error('Setz den URL.');\n\t\t// }\n\n\t\t// switch (this.state._target) {\n\t\t// case '_blank':\n\t\t// case '_self':\n\t\t// break;\n\t\t// default:\n\t\t// console.error('Fehlerhaftes Target.');\n\t\t// throw new Error('Fehlerhaftes Target.');\n\t\t// }\n\n\t\t// ROBUSTHEIT durch Validierung\n\t\tlet goToProps = {};\n\t\tif (typeof this.state._selector === 'string') {\n\t\t\tgoToProps = {\n\t\t\t\trole: 'link',\n\t\t\t\ttabIndex: 0,\n\t\t\t\tonClick: () => {\n\t\t\t\t\tscrollBySelector(this.state._selector as string);\n\t\t\t\t},\n\t\t\t\tonKeyPress: () => {\n\t\t\t\t\tscrollBySelector(this.state._selector as string);\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tconst isExternal = typeof this.state._target === 'string' && this.state._target !== '_self';\n\n\t\tconst tagAttrs = {\n\t\t\thref: typeof this.state._href === 'string' && this.state._href.length > 0 ? this.state._href : 'javascript:void(0)',\n\t\t\ttarget: typeof this.state._target === 'string' && this.state._target.length > 0 ? this.state._target : undefined,\n\t\t\trel: isExternal ? 'noopener' : undefined,\n\t\t};\n\n\t\tif (\n\t\t\t(this.state._useCase === 'image' || this.state._iconOnly === true) &&\n\t\t\t(typeof this.state._ariaLabel !== 'string' || this.state._ariaLabel.length === 0)\n\t\t) {\n\t\t\tdevHint(`[KolLink] Es muss ein Aria-Label gesetzt werden, wenn eine Grafik verlinkt oder der Icon-Only-Modus verwendet wird.`);\n\t\t}\n\t\treturn { isExternal, tagAttrs, goToProps };\n\t};\n\n\tpublic render(): JSX.Element {\n\t\tconst { isExternal, tagAttrs, goToProps } = this.getRenderValues();\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<a\n\t\t\t\t\tref={this.catchRef}\n\t\t\t\t\t{...tagAttrs}\n\t\t\t\t\taria-controls={this.state._ariaControls}\n\t\t\t\t\taria-current={this.state._ariaCurrent}\n\t\t\t\t\taria-expanded={mapBoolean2String(this.state._ariaExpanded)}\n\t\t\t\t\taria-labelledby={this.state._useCase === 'image' || this.state._iconOnly === true ? this.nonce : undefined}\n\t\t\t\t\taria-selected={mapBoolean2String(this.state._ariaSelected)}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\tdisabled: this.state._disabled === true,\n\t\t\t\t\t\t'skip ': this.state._stealth !== false,\n\t\t\t\t\t\t'icon-only': this.state._iconOnly === true,\n\t\t\t\t\t\t'external-link': isExternal,\n\t\t\t\t\t}}\n\t\t\t\t\t{...this.state._on}\n\t\t\t\t\t// https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/click-events-have-key-events.md\n\t\t\t\t\tonClick={this.onClick}\n\t\t\t\t\tonKeyPress={this.onClick}\n\t\t\t\t\t{...goToProps}\n\t\t\t\t\trole={this.state._role}\n\t\t\t\t\ttabIndex={this.state._tabIndex}\n\t\t\t\t>\n\t\t\t\t\t<kol-span-wc _icon={this._icon} _iconOnly={this._iconOnly} _label={this.state._ariaLabel || this.state._label}>\n\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\tEs ist keine gute Idee hier einen Slot einzufügen, da dadurch\n\t\t\t\t\t\t\tdie Unterstützung hinsichtlich der Barrierefreiheit der Komponente\n\t\t\t\t\t\t\tumgangen werden kann.\n\t\t\t\t\t\t*/}\n\t\t\t\t\t\t<slot name=\"expert\" slot=\"expert\" />\n\t\t\t\t\t</kol-span-wc>\n\t\t\t\t\t{isExternal && (\n\t\t\t\t\t\t<kol-icon class=\"external-link-icon\" _ariaLabel={this.state._targetDescription as string} _icon={'fa-solid fa-arrow-up-right-from-square'} />\n\t\t\t\t\t)}\n\t\t\t\t</a>\n\t\t\t\t{(this.state._iconOnly === true || this.state._useCase === 'image') && (\n\t\t\t\t\t<kol-tooltip\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Dieses Aria-Hidden verhindert das doppelte Vorlesen des Labels,\n\t\t\t\t\t\t * verhindert aber nicht das Aria-Labelledby vorgelesen wird.\n\t\t\t\t\t\t */\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t_align={this.state._tooltipAlign}\n\t\t\t\t\t\t_id={this.nonce}\n\t\t\t\t\t\t_label={this.state._ariaLabel || this.state._label}\n\t\t\t\t\t></kol-tooltip>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t);\n\t}\n\n\t/**\n\t * Gibt an, welche Elemente kontrolliert werden. (https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-controls)\n\t */\n\t@Prop() public _ariaControls?: string;\n\n\t/**\n\t * Gibt an, welchen aktuellen Auswahlstatus der Link hat. (https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current)\n\t */\n\t@Prop() public _ariaCurrent?: AriaCurrent;\n\n\t/**\n\t * Gibt an, ob durch den Link etwas aufgeklappt wurde. (https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-expanded)\n\t */\n\t@Prop({ reflect: true }) public _ariaExpanded?: boolean;\n\n\t/**\n\t * Gibt einen beschreibenden Text des Links an. (https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-label)\n\t */\n\t@Prop() public _ariaLabel?: string = '';\n\n\t/**\n\t * Gibt an, ob Element ausgewählt ist (role=tab). (https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-selected)\n\t */\n\t@Prop({ reflect: true }) public _ariaSelected?: boolean;\n\n\t/**\n\t * Gibt an, ob der Link deaktiviert ist.\n\t */\n\t@Prop({ reflect: true }) public _disabled?: boolean = false;\n\n\t/**\n\t * Gibt die Ziel-Url des Links an.\n\t */\n\t@Prop() public _href!: string;\n\n\t/**\n\t * Gibt den Class-Identifier eines Icons eine eingebunden Icofont an. (z.B. https://icofont.com/)\n\t */\n\t@Prop() public _icon?: Stringified<KoliBriIconProp>;\n\n\t/**\n\t * Gibt an, ob das Icon entweder links oder rechts dargestellt werden soll.\n\t *\n\t * @deprecated Wird durch das neue flexibleren Icon-Typ abgedeckt.\n\t */\n\t@Prop() public _iconAlign?: Alignment = 'left';\n\n\t/**\n\t * Gibt an, ob nur das Icon angezeigt wird.\n\t */\n\t@Prop({ reflect: true }) public _iconOnly?: boolean = false;\n\n\t/**\n\t * Gibt den Label für die Beschriftung der Schaltfläche an.\n\t */\n\t// - eslint-disable-next-line @stencil/strict-mutable\n\t@Prop({ mutable: true, reflect: false }) public _label!: string;\n\n\t/**\n\t * Gibt die EventCallback-Funktionen für den Link an.\n\t *\n\t * @deprecated Hierzu sollte statt Link- die ButtonLink-Komponente verwendet werden.\n\t */\n\t@Prop() public _on?: LinkOnCallbacks;\n\n\t/**\n\t * Gibt an, welche Role der Schalter hat.\n\t */\n\t@Prop() public _role?: AlternativButtonLinkRole;\n\n\t/**\n\t * Gibt die ID eines DOM-Elements, zu dem gesprungen werden soll, aus.\n\t *\n\t * @deprecated Das Styling sollte stets über CSS erfolgen.\n\t */\n\t@Prop() public _selector?: string;\n\n\t/**\n\t * Gibt an, ob der Link nur beim Fokus sichtbar ist.\n\t *\n\t * @deprecated Das Styling sollte stets über CSS erfolgen.\n\t */\n\t@Prop({ reflect: true }) public _stealth?: boolean = false;\n\n\t/**\n\t * Gibt an, welchen Tab-Index der Button hat. (https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex)\n\t */\n\t@Prop() public _tabIndex?: number;\n\n\t/**\n\t * Definiert das Verhalten, bei dem der Link geöffnet werden soll.\n\t */\n\t@Prop() public _target?: LinkTarget;\n\n\t/**\n\t * Gibt die Beschreibung an, wenn der Link in einem anderen Programm geöffnet wird.\n\t */\n\t@Prop() public _targetDescription?: string = translate('kol-open-link-in-tab');\n\n\t/**\n\t * Gibt an, ob der Tooltip entweder oben, rechts, unten oder links angezeigt werden soll.\n\t */\n\t@Prop() public _tooltipAlign?: Alignment = 'right';\n\n\t/**\n\t * Gibt den Verwendungsfall des Links an.\n\t *\n\t * @deprecated Das Styling sollte stets über CSS erfolgen.\n\t */\n\t@Prop() public _useCase?: LinkUseCase = 'text';\n\n\t/**\n\t * @see: components/abbr/component.tsx (@State)\n\t */\n\t@State() public state: LinkStates = {\n\t\t_ariaLabel: '',\n\t\t_href: 'javascript:void(0)',\n\t\t_icon: {},\n\t\t/**\n\t\t * @deprecated\n\t\t */\n\t\t_iconAlign: 'left',\n\t\t_label: '',\n\t};\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_ariaControls')\n\tpublic validateAriaControls(value?: string): void {\n\t\twatchString(this, '_ariaControls', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_ariaCurrent')\n\tpublic validateAriaCurrent(value?: AriaCurrent): void {\n\t\twatchValidator(\n\t\t\tthis,\n\t\t\t'_ariaCurrent',\n\t\t\t(value) => value === true || value === 'date' || value === 'location' || value === 'page' || value === 'step' || value === 'time',\n\t\t\tnew Set(['boolean', 'String {data, location, page, step, time}']),\n\t\t\tvalue\n\t\t);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_ariaExpanded')\n\tpublic validateAriaExpanded(value?: boolean): void {\n\t\twatchBoolean(this, '_ariaExpanded', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_ariaLabel')\n\tpublic validateAriaLabel(value?: string): void {\n\t\tvalidateAriaLabel(this, value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_ariaSelected')\n\tpublic validateAriaSelected(value?: boolean): void {\n\t\twatchBoolean(this, '_ariaSelected', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_disabled')\n\tpublic validateDisabled(value?: boolean): void {\n\t\twatchBoolean(this, '_disabled', value);\n\t\tif (value === true) {\n\t\t\ta11yHintDisabled();\n\t\t}\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_href')\n\tpublic validateHref(value?: string): void {\n\t\twatchString(this, '_href', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_icon')\n\tpublic validateIcon(value?: KoliBriIconProp): void {\n\t\tvalidateIcon(this, value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t * @deprecated\n\t */\n\t@Watch('_iconAlign')\n\tpublic validateIconAlign(value?: Alignment): void {\n\t\twatchIconAlign(this, value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_iconOnly')\n\tpublic validateIconOnly(value?: boolean): void {\n\t\twatchBoolean(this, '_iconOnly', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_label')\n\tpublic validateLabel(value?: string): void {\n\t\tvalidateLabel(this, value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t * @deprecated\n\t */\n\t@Watch('_on')\n\tpublic validateOn(value?: LinkOnCallbacks): void {\n\t\tif (\n\t\t\ttypeof value === 'object' &&\n\t\t\tvalue !== null &&\n\t\t\t// https://eslint.org/docs/rules/no-prototype-builtins\n\t\t\tObject.prototype.hasOwnProperty.call(value, 'onClick') &&\n\t\t\ttypeof value.onClick === 'function'\n\t\t) {\n\t\t\tthis.state = {\n\t\t\t\t...this.state,\n\t\t\t\t_on: value,\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_role')\n\tpublic validateRole(value?: AlternativButtonLinkRole): void {\n\t\twatchString(this, '_role', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_selector')\n\tpublic validateSelector(value?: string): void {\n\t\twatchString(this, '_selector', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_stealth')\n\tpublic validateStealth(value?: boolean): void {\n\t\twatchBoolean(this, '_stealth', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_tabIndex')\n\tpublic validateTabIndex(value?: number): void {\n\t\tvalidateTabIndex(this, value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_target')\n\tpublic validateTarget(value?: LinkTarget): void {\n\t\twatchString(this, '_target', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_targetDescription')\n\tpublic validateTargetDescription(value?: string): void {\n\t\twatchString(this, '_targetDescription', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_tooltipAlign')\n\tpublic validateTooltipAlign(value?: Alignment): void {\n\t\twatchTooltipAlignment(this, '_tooltipAlign', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_useCase')\n\tpublic validateUseCase(value?: LinkUseCase): void {\n\t\tif (typeof value === 'string') {\n\t\t\tthis.state = {\n\t\t\t\t...this.state,\n\t\t\t\t_useCase: value,\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (componentWillLoad)\n\t */\n\tpublic componentWillLoad(): void {\n\t\tthis.validateAriaControls(this._ariaControls);\n\t\tthis.validateAriaCurrent(this._ariaCurrent);\n\t\tthis.validateAriaExpanded(this._ariaExpanded);\n\t\tthis.validateAriaLabel(this._ariaLabel);\n\t\tthis.validateAriaSelected(this._ariaSelected);\n\t\tthis.validateDisabled(this._disabled);\n\t\tthis.validateHref(this._href);\n\t\tthis.validateIcon(this._icon);\n\t\tthis.validateIconAlign(this._iconAlign);\n\t\tthis.validateIconOnly(this._iconOnly);\n\t\tthis.validateLabel(this._label);\n\t\tthis.validateOn(this._on);\n\t\tthis.validateRole(this._role);\n\t\tthis.validateSelector(this._selector);\n\t\tthis.validateStealth(this._stealth);\n\t\tthis.validateTabIndex(this._tabIndex);\n\t\tthis.validateTarget(this._target);\n\t\tthis.validateTargetDescription(this._targetDescription);\n\t\tthis.validateTooltipAlign(this._tooltipAlign);\n\t\tthis.validateUseCase(this._useCase);\n\t}\n}\n"],"mappings":";;;mjBAyCaA,EAAS,M,yBAEJC,KAAAC,MAAQA,IAGRD,KAAAE,SAAYC,IAC5BH,KAAKG,IAAMA,EACXC,EAAgBJ,KAAKK,KAAML,KAAKG,IAAI,EAGpBH,KAAAM,QAAWC,I,QAC3B,WAAWC,EAAAR,KAAKS,MAAMC,OAAG,MAAAF,SAAA,SAAAA,EAAEF,WAAY,WAAY,CAClDC,EAAMI,iBACNC,EAAiCL,EAAOP,KAAKG,MAC7CU,EAAAb,KAAKS,MAAMC,OAAG,MAAAG,SAAA,SAAAA,EAAEP,QAAQC,EAAOP,KAAKS,MAAMK,M,GAI3Bd,KAAAe,gBAAkB,KAoBlC,IAAIC,EAAY,GAChB,UAAWhB,KAAKS,MAAMQ,YAAc,SAAU,CAC7CD,EAAY,CACXE,KAAM,OACNC,SAAU,EACVb,QAAS,KACRc,EAAiBpB,KAAKS,MAAMQ,UAAoB,EAEjDI,WAAY,KACXD,EAAiBpB,KAAKS,MAAMQ,UAAoB,E,CAKnD,MAAMK,SAAoBtB,KAAKS,MAAMc,UAAY,UAAYvB,KAAKS,MAAMc,UAAY,QAEpF,MAAMC,EAAW,CAChBC,YAAazB,KAAKS,MAAMK,QAAU,UAAYd,KAAKS,MAAMK,MAAMY,OAAS,EAAI1B,KAAKS,MAAMK,MAAQ,qBAC/Fa,cAAe3B,KAAKS,MAAMc,UAAY,UAAYvB,KAAKS,MAAMc,QAAQG,OAAS,EAAI1B,KAAKS,MAAMc,QAAUK,UACvGC,IAAKP,EAAa,WAAaM,WAGhC,IACE5B,KAAKS,MAAMqB,WAAa,SAAW9B,KAAKS,MAAMsB,YAAc,eACrD/B,KAAKS,MAAMuB,aAAe,UAAYhC,KAAKS,MAAMuB,WAAWN,SAAW,GAC9E,CACDO,EAAQ,sH,CAET,MAAO,CAAEX,aAAYE,WAAUR,YAAW,E,sGA2EN,G,4CAUiB,M,0DAiBd,O,eAKc,M,qGAgCD,M,wEAeRkB,EAAU,wB,mBAKZ,Q,cAOH,O,WAKJ,CACnCF,WAAY,GACZlB,MAAO,qBACPqB,MAAO,GAIPC,WAAY,OACZC,OAAQ,G,CAhLFC,SACN,MAAMhB,WAAEA,EAAUE,SAAEA,EAAQR,UAAEA,GAAchB,KAAKe,kBACjD,OACCwB,EAACC,EAAI,KACJD,EAAA,IAAAE,OAAAC,OAAA,CACCvC,IAAKH,KAAKE,UACNsB,EAAQ,iBACGxB,KAAKS,MAAMkC,cAAa,eACzB3C,KAAKS,MAAMmC,aAAY,gBACtBC,EAAkB7C,KAAKS,MAAMqC,eAAc,kBACzC9C,KAAKS,MAAMqB,WAAa,SAAW9B,KAAKS,MAAMsB,YAAc,KAAO/B,KAAKC,MAAQ2B,UAAS,gBAC3FiB,EAAkB7C,KAAKS,MAAMsC,eAC5CC,MAAO,CACNC,SAAUjD,KAAKS,MAAMyC,YAAc,KACnC,QAASlD,KAAKS,MAAM0C,WAAa,MACjC,YAAanD,KAAKS,MAAMsB,YAAc,KACtC,gBAAiBT,IAEdtB,KAAKS,MAAMC,IAAG,CAElBJ,QAASN,KAAKM,QACde,WAAYrB,KAAKM,SACbU,EAAS,CACbE,KAAMlB,KAAKS,MAAM2C,MACjBjC,SAAUnB,KAAKS,MAAM4C,YAErBd,EAAA,eAAaJ,MAAOnC,KAAKmC,MAAOJ,UAAW/B,KAAK+B,UAAWM,OAAQrC,KAAKS,MAAMuB,YAAchC,KAAKS,MAAM4B,QAMtGE,EAAA,QAAMe,KAAK,SAASC,KAAK,YAEzBjC,GACAiB,EAAA,YAAUS,MAAM,qBAAqBhB,WAAYhC,KAAKS,MAAM+C,mBAA8BrB,MAAO,6CAGjGnC,KAAKS,MAAMsB,YAAc,MAAQ/B,KAAKS,MAAMqB,WAAa,UAC1DS,EAAA,6BAKa,OACZkB,OAAQzD,KAAKS,MAAMiD,cACnBC,IAAK3D,KAAKC,MACVoC,OAAQrC,KAAKS,MAAMuB,YAAchC,KAAKS,MAAM4B,S,CAwI1CuB,qBAAqBC,GAC3BC,EAAY9D,KAAM,gBAAiB6D,E,CAO7BE,oBAAoBF,GAC1BG,EACChE,KACA,gBACC6D,GAAUA,IAAU,MAAQA,IAAU,QAAUA,IAAU,YAAcA,IAAU,QAAUA,IAAU,QAAUA,IAAU,QAC3H,IAAII,IAAI,CAAC,UAAW,8CACpBJ,E,CAQKK,qBAAqBL,GAC3BM,EAAanE,KAAM,gBAAiB6D,E,CAO9BO,kBAAkBP,GACxBO,EAAkBpE,KAAM6D,E,CAOlBQ,qBAAqBR,GAC3BM,EAAanE,KAAM,gBAAiB6D,E,CAO9BS,iBAAiBT,GACvBM,EAAanE,KAAM,YAAa6D,GAChC,GAAIA,IAAU,KAAM,CACnBU,G,EAQKC,aAAaX,GACnBC,EAAY9D,KAAM,QAAS6D,E,CAOrBY,aAAaZ,GACnBY,EAAazE,KAAM6D,E,CAQba,kBAAkBb,GACxBc,EAAe3E,KAAM6D,E,CAOfe,iBAAiBf,GACvBM,EAAanE,KAAM,YAAa6D,E,CAO1BgB,cAAchB,GACpBgB,EAAc7E,KAAM6D,E,CAQdiB,WAAWjB,GACjB,UACQA,IAAU,UACjBA,IAAU,MAEVpB,OAAOsC,UAAUC,eAAeC,KAAKpB,EAAO,mBACrCA,EAAMvD,UAAY,WACxB,CACDN,KAAKS,MAAKgC,OAAAC,OAAAD,OAAAC,OAAA,GACN1C,KAAKS,OAAK,CACbC,IAAKmD,G,EASDqB,aAAarB,GACnBC,EAAY9D,KAAM,QAAS6D,E,CAOrBsB,iBAAiBtB,GACvBC,EAAY9D,KAAM,YAAa6D,E,CAOzBuB,gBAAgBvB,GACtBM,EAAanE,KAAM,WAAY6D,E,CAOzBwB,iBAAiBxB,GACvBwB,EAAiBrF,KAAM6D,E,CAOjByB,eAAezB,GACrBC,EAAY9D,KAAM,UAAW6D,E,CAOvB0B,0BAA0B1B,GAChCC,EAAY9D,KAAM,qBAAsB6D,E,CAOlC2B,qBAAqB3B,GAC3B4B,EAAsBzF,KAAM,gBAAiB6D,E,CAOvC6B,gBAAgB7B,GACtB,UAAWA,IAAU,SAAU,CAC9B7D,KAAKS,MAAKgC,OAAAC,OAAAD,OAAAC,OAAA,GACN1C,KAAKS,OAAK,CACbqB,SAAU+B,G,EAQN8B,oBACN3F,KAAK4D,qBAAqB5D,KAAK2C,eAC/B3C,KAAK+D,oBAAoB/D,KAAK4C,cAC9B5C,KAAKkE,qBAAqBlE,KAAK8C,eAC/B9C,KAAKoE,kBAAkBpE,KAAKgC,YAC5BhC,KAAKqE,qBAAqBrE,KAAK+C,eAC/B/C,KAAKsE,iBAAiBtE,KAAKkD,WAC3BlD,KAAKwE,aAAaxE,KAAKc,OACvBd,KAAKyE,aAAazE,KAAKmC,OACvBnC,KAAK0E,kBAAkB1E,KAAKoC,YAC5BpC,KAAK4E,iBAAiB5E,KAAK+B,WAC3B/B,KAAK6E,cAAc7E,KAAKqC,QACxBrC,KAAK8E,WAAW9E,KAAKU,KACrBV,KAAKkF,aAAalF,KAAKoD,OACvBpD,KAAKmF,iBAAiBnF,KAAKiB,WAC3BjB,KAAKoF,gBAAgBpF,KAAKmD,UAC1BnD,KAAKqF,iBAAiBrF,KAAKqD,WAC3BrD,KAAKsF,eAAetF,KAAKuB,SACzBvB,KAAKuF,0BAA0BvF,KAAKwD,oBACpCxD,KAAKwF,qBAAqBxF,KAAK0D,eAC/B1D,KAAK0F,gBAAgB1F,KAAK8B,S"}
1
+ {"version":3,"names":["KolLinkWc","this","nonce","catchRef","ref","propergateFocus","host","onClick","event","_a","state","_on","preventDefault","setEventTargetAndStopPropagation","_b","_href","getRenderValues","goToProps","_selector","role","tabIndex","scrollBySelector","onKeyPress","isExternal","_target","tagAttrs","href","length","target","undefined","rel","_useCase","_iconOnly","_ariaLabel","devHint","translate","_icon","_iconAlign","_label","render","h","Host","Object","assign","_ariaControls","_ariaCurrent","mapBoolean2String","_ariaExpanded","_ariaSelected","class","disabled","_disabled","_stealth","_role","_tabIndex","name","slot","_targetDescription","_align","_tooltipAlign","_id","validateAriaControls","value","watchString","validateAriaCurrent","watchValidator","Set","validateAriaExpanded","watchBoolean","validateAriaLabel","validateAriaSelected","validateDisabled","a11yHintDisabled","validateHref","validateIcon","validateIconAlign","watchIconAlign","validateIconOnly","validateLabel","validateOn","prototype","hasOwnProperty","call","validateRole","validateSelector","validateStealth","validateTabIndex","validateTarget","validateTargetDescription","validateTooltipAlign","watchTooltipAlignment","validateUseCase","componentWillLoad"],"sources":["./src/components/link/component.tsx"],"sourcesContent":["import { Component, Element, h, Host, JSX, Prop, State, Watch } from '@stencil/core';\n\nimport { Generic } from '@a11y-ui/core';\nimport { translate } from '../../i18n';\nimport {\n\tAlternativButtonLinkRole,\n\tAriaCurrent,\n\tLinkOnCallbacks,\n\tLinkStates,\n\tLinkTarget,\n\tLinkUseCase,\n\tOptionalLinkProps,\n\tOptionalLinkStates,\n\tRequiredLinkProps,\n\tRequiredLinkStates,\n\twatchTooltipAlignment,\n} from '../../types/button-link';\nimport { Stringified } from '../../types/common';\nimport { KoliBriIconProp } from '../../types/icon';\nimport { Alignment } from '../../types/props/alignment';\nimport { a11yHintDisabled, devHint } from '../../utils/a11y.tipps';\nimport { nonce } from '../../utils/dev.utils';\nimport { mapBoolean2String, scrollBySelector, setEventTargetAndStopPropagation, watchBoolean, watchString, watchValidator } from '../../utils/prop.validators';\nimport { propergateFocus } from '../../utils/reuse';\nimport { validateIcon, watchIconAlign } from '../../utils/validators/icon';\nimport { validateAriaLabel, validateLabel } from '../../utils/validators/label';\nimport { validateTabIndex } from '../../utils/validators/tab-index';\n\ntype RequiredNavLinkProps = RequiredLinkProps;\ntype OptionalNavLinkProps = OptionalLinkProps & {\n\tactive: boolean;\n};\nexport type NavLinkProps = Generic.Element.Members<RequiredNavLinkProps, OptionalNavLinkProps>;\n\n/**\n * @internal\n */\n@Component({\n\ttag: 'kol-link-wc',\n\tshadow: false,\n})\nexport class KolLinkWc implements Generic.Element.ComponentApi<RequiredLinkProps, OptionalLinkProps, RequiredLinkStates, OptionalLinkStates> {\n\t@Element() private readonly host?: HTMLKolLinkWcElement;\n\tprivate readonly nonce = nonce();\n\tprivate ref?: HTMLAnchorElement;\n\n\tprivate readonly catchRef = (ref?: HTMLAnchorElement) => {\n\t\tthis.ref = ref;\n\t\tpropergateFocus(this.host, this.ref);\n\t};\n\n\tprivate readonly onClick = (event: Event) => {\n\t\tif (typeof this.state._on?.onClick === 'function') {\n\t\t\tevent.preventDefault();\n\t\t\tsetEventTargetAndStopPropagation(event, this.ref);\n\t\t\tthis.state._on?.onClick(event, this.state._href);\n\t\t}\n\t};\n\n\tprivate readonly getRenderValues = () => {\n\t\t/**\n\t\t * DX\n\t\t * Das möchte ich ungern für HTML machen, sondern nur für Barrierefreiheitsthemen.\n\t\t */\n\t\t// if (typeof this.state._href === 'string' && this.state._href.length > 0) {\n\t\t// console.error('Setz den URL.');\n\t\t// throw new Error('Setz den URL.');\n\t\t// }\n\n\t\t// switch (this.state._target) {\n\t\t// case '_blank':\n\t\t// case '_self':\n\t\t// break;\n\t\t// default:\n\t\t// console.error('Fehlerhaftes Target.');\n\t\t// throw new Error('Fehlerhaftes Target.');\n\t\t// }\n\n\t\t// ROBUSTHEIT durch Validierung\n\t\tlet goToProps = {};\n\t\tif (typeof this.state._selector === 'string') {\n\t\t\tgoToProps = {\n\t\t\t\trole: 'link',\n\t\t\t\ttabIndex: 0,\n\t\t\t\tonClick: () => {\n\t\t\t\t\tscrollBySelector(this.state._selector as string);\n\t\t\t\t},\n\t\t\t\tonKeyPress: () => {\n\t\t\t\t\tscrollBySelector(this.state._selector as string);\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tconst isExternal = typeof this.state._target === 'string' && this.state._target !== '_self';\n\n\t\tconst tagAttrs = {\n\t\t\thref: typeof this.state._href === 'string' && this.state._href.length > 0 ? this.state._href : 'javascript:void(0)',\n\t\t\ttarget: typeof this.state._target === 'string' && this.state._target.length > 0 ? this.state._target : undefined,\n\t\t\trel: isExternal ? 'noopener' : undefined,\n\t\t};\n\n\t\tif (\n\t\t\t(this.state._useCase === 'image' || this.state._iconOnly === true) &&\n\t\t\t(typeof this.state._ariaLabel !== 'string' || this.state._ariaLabel.length === 0)\n\t\t) {\n\t\t\tdevHint(`[KolLink] Es muss ein Aria-Label gesetzt werden, wenn eine Grafik verlinkt oder der Icon-Only-Modus verwendet wird.`);\n\t\t}\n\t\treturn { isExternal, tagAttrs, goToProps };\n\t};\n\n\tpublic render(): JSX.Element {\n\t\tconst { isExternal, tagAttrs, goToProps } = this.getRenderValues();\n\t\treturn (\n\t\t\t<Host>\n\t\t\t\t<a\n\t\t\t\t\tref={this.catchRef}\n\t\t\t\t\t{...tagAttrs}\n\t\t\t\t\taria-controls={this.state._ariaControls}\n\t\t\t\t\taria-current={this.state._ariaCurrent}\n\t\t\t\t\taria-expanded={mapBoolean2String(this.state._ariaExpanded)}\n\t\t\t\t\taria-labelledby={this.state._useCase === 'image' || this.state._iconOnly === true ? this.nonce : undefined}\n\t\t\t\t\taria-selected={mapBoolean2String(this.state._ariaSelected)}\n\t\t\t\t\tclass={{\n\t\t\t\t\t\tdisabled: this.state._disabled === true,\n\t\t\t\t\t\t'skip ': this.state._stealth !== false,\n\t\t\t\t\t\t'icon-only': this.state._iconOnly === true,\n\t\t\t\t\t\t'external-link': isExternal,\n\t\t\t\t\t}}\n\t\t\t\t\t{...this.state._on}\n\t\t\t\t\t// https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/click-events-have-key-events.md\n\t\t\t\t\tonClick={this.onClick}\n\t\t\t\t\tonKeyPress={this.onClick}\n\t\t\t\t\t{...goToProps}\n\t\t\t\t\trole={this.state._role}\n\t\t\t\t\ttabIndex={this.state._tabIndex}\n\t\t\t\t>\n\t\t\t\t\t<kol-span-wc _icon={this._icon} _iconOnly={this._iconOnly} _label={this.state._ariaLabel || this.state._label}>\n\t\t\t\t\t\t{/*\n\t\t\t\t\t\t\tEs ist keine gute Idee hier einen Slot einzufügen, da dadurch\n\t\t\t\t\t\t\tdie Unterstützung hinsichtlich der Barrierefreiheit der Komponente\n\t\t\t\t\t\t\tumgangen werden kann.\n\t\t\t\t\t\t*/}\n\t\t\t\t\t\t<slot name=\"expert\" slot=\"expert\" />\n\t\t\t\t\t</kol-span-wc>\n\t\t\t\t\t{isExternal && (\n\t\t\t\t\t\t<kol-icon class=\"external-link-icon\" _ariaLabel={this.state._targetDescription as string} _icon={'fa-solid fa-arrow-up-right-from-square'} />\n\t\t\t\t\t)}\n\t\t\t\t</a>\n\t\t\t\t{(this.state._iconOnly === true || this.state._useCase === 'image') && (\n\t\t\t\t\t<kol-tooltip\n\t\t\t\t\t\t/**\n\t\t\t\t\t\t * Dieses Aria-Hidden verhindert das doppelte Vorlesen des Labels,\n\t\t\t\t\t\t * verhindert aber nicht das Aria-Labelledby vorgelesen wird.\n\t\t\t\t\t\t */\n\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t_align={this.state._tooltipAlign}\n\t\t\t\t\t\t_id={this.nonce}\n\t\t\t\t\t\t_label={this.state._ariaLabel || this.state._label}\n\t\t\t\t\t></kol-tooltip>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t);\n\t}\n\n\t/**\n\t * Gibt an, welche Elemente kontrolliert werden. (https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-controls)\n\t */\n\t@Prop() public _ariaControls?: string;\n\n\t/**\n\t * Gibt an, welchen aktuellen Auswahlstatus der Link hat. (https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-current)\n\t */\n\t@Prop() public _ariaCurrent?: AriaCurrent;\n\n\t/**\n\t * Gibt an, ob durch den Link etwas aufgeklappt wurde. (https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-expanded)\n\t */\n\t@Prop({ reflect: true }) public _ariaExpanded?: boolean;\n\n\t/**\n\t * Gibt einen beschreibenden Text des Links an. (https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-label)\n\t */\n\t@Prop() public _ariaLabel?: string = '';\n\n\t/**\n\t * Gibt an, ob Element ausgewählt ist (role=tab). (https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-selected)\n\t */\n\t@Prop({ reflect: true }) public _ariaSelected?: boolean;\n\n\t/**\n\t * Gibt an, ob der Link deaktiviert ist.\n\t */\n\t@Prop({ reflect: true }) public _disabled?: boolean = false;\n\n\t/**\n\t * Gibt die Ziel-Url des Links an.\n\t */\n\t@Prop() public _href!: string;\n\n\t/**\n\t * Gibt den Class-Identifier eines Icons eine eingebunden Icofont an. (z.B. https://icofont.com/)\n\t */\n\t@Prop() public _icon?: Stringified<KoliBriIconProp>;\n\n\t/**\n\t * Gibt an, ob das Icon entweder links oder rechts dargestellt werden soll.\n\t *\n\t * @deprecated Wird durch das neue flexibleren Icon-Typ abgedeckt.\n\t */\n\t@Prop() public _iconAlign?: Alignment = 'left';\n\n\t/**\n\t * Gibt an, ob nur das Icon angezeigt wird.\n\t */\n\t@Prop({ reflect: true }) public _iconOnly?: boolean = false;\n\n\t/**\n\t * Gibt den Label für die Beschriftung der Schaltfläche an.\n\t */\n\t// - eslint-disable-next-line @stencil/strict-mutable\n\t@Prop({ mutable: true, reflect: false }) public _label!: string;\n\n\t/**\n\t * Gibt die EventCallback-Funktionen für den Link an.\n\t *\n\t * @deprecated Hierzu sollte statt Link- die ButtonLink-Komponente verwendet werden.\n\t */\n\t@Prop() public _on?: LinkOnCallbacks;\n\n\t/**\n\t * Gibt an, welche Role der Schalter hat.\n\t */\n\t@Prop() public _role?: AlternativButtonLinkRole;\n\n\t/**\n\t * Gibt die ID eines DOM-Elements, zu dem gesprungen werden soll, aus.\n\t *\n\t * @deprecated Das Styling sollte stets über CSS erfolgen.\n\t */\n\t@Prop() public _selector?: string;\n\n\t/**\n\t * Gibt an, ob der Link nur beim Fokus sichtbar ist.\n\t *\n\t * @deprecated Das Styling sollte stets über CSS erfolgen.\n\t */\n\t@Prop({ reflect: true }) public _stealth?: boolean = false;\n\n\t/**\n\t * Gibt an, welchen Tab-Index der Button hat. (https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex)\n\t */\n\t@Prop() public _tabIndex?: number;\n\n\t/**\n\t * Definiert das Verhalten, bei dem der Link geöffnet werden soll.\n\t */\n\t@Prop() public _target?: LinkTarget;\n\n\t/**\n\t * Gibt die Beschreibung an, wenn der Link in einem anderen Programm geöffnet wird.\n\t */\n\t@Prop() public _targetDescription?: string = translate('kol-open-link-in-tab');\n\n\t/**\n\t * Gibt an, ob der Tooltip entweder oben, rechts, unten oder links angezeigt werden soll.\n\t */\n\t@Prop() public _tooltipAlign?: Alignment = 'right';\n\n\t/**\n\t * Gibt den Verwendungsfall des Links an.\n\t *\n\t * @deprecated Das Styling sollte stets über CSS erfolgen.\n\t */\n\t@Prop() public _useCase?: LinkUseCase = 'text';\n\n\t/**\n\t * @see: components/abbr/component.tsx (@State)\n\t */\n\t@State() public state: LinkStates = {\n\t\t_ariaLabel: '',\n\t\t_href: 'javascript:void(0)',\n\t\t_icon: {},\n\t\t/**\n\t\t * @deprecated\n\t\t */\n\t\t_iconAlign: 'left',\n\t\t_label: '',\n\t};\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_ariaControls')\n\tpublic validateAriaControls(value?: string): void {\n\t\twatchString(this, '_ariaControls', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_ariaCurrent')\n\tpublic validateAriaCurrent(value?: AriaCurrent): void {\n\t\twatchValidator(\n\t\t\tthis,\n\t\t\t'_ariaCurrent',\n\t\t\t(value) => value === true || value === 'date' || value === 'location' || value === 'page' || value === 'step' || value === 'time',\n\t\t\tnew Set(['boolean', 'String {data, location, page, step, time}']),\n\t\t\tvalue\n\t\t);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_ariaExpanded')\n\tpublic validateAriaExpanded(value?: boolean): void {\n\t\twatchBoolean(this, '_ariaExpanded', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_ariaLabel')\n\tpublic validateAriaLabel(value?: string): void {\n\t\tvalidateAriaLabel(this, value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_ariaSelected')\n\tpublic validateAriaSelected(value?: boolean): void {\n\t\twatchBoolean(this, '_ariaSelected', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_disabled')\n\tpublic validateDisabled(value?: boolean): void {\n\t\twatchBoolean(this, '_disabled', value);\n\t\tif (value === true) {\n\t\t\ta11yHintDisabled();\n\t\t}\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_href')\n\tpublic validateHref(value?: string): void {\n\t\twatchString(this, '_href', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_icon')\n\tpublic validateIcon(value?: KoliBriIconProp): void {\n\t\tvalidateIcon(this, value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t * @deprecated\n\t */\n\t@Watch('_iconAlign')\n\tpublic validateIconAlign(value?: Alignment): void {\n\t\twatchIconAlign(this, value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_iconOnly')\n\tpublic validateIconOnly(value?: boolean): void {\n\t\twatchBoolean(this, '_iconOnly', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_label')\n\tpublic validateLabel(value?: string): void {\n\t\tvalidateLabel(this, value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t * @deprecated\n\t */\n\t@Watch('_on')\n\tpublic validateOn(value?: LinkOnCallbacks): void {\n\t\tif (\n\t\t\ttypeof value === 'object' &&\n\t\t\tvalue !== null &&\n\t\t\t// https://eslint.org/docs/rules/no-prototype-builtins\n\t\t\tObject.prototype.hasOwnProperty.call(value, 'onClick') &&\n\t\t\ttypeof value.onClick === 'function'\n\t\t) {\n\t\t\tthis.state = {\n\t\t\t\t...this.state,\n\t\t\t\t_on: value,\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_role')\n\tpublic validateRole(value?: AlternativButtonLinkRole): void {\n\t\twatchString(this, '_role', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_selector')\n\tpublic validateSelector(value?: string): void {\n\t\twatchString(this, '_selector', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_stealth')\n\tpublic validateStealth(value?: boolean): void {\n\t\twatchBoolean(this, '_stealth', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_tabIndex')\n\tpublic validateTabIndex(value?: number): void {\n\t\tvalidateTabIndex(this, value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_target')\n\tpublic validateTarget(value?: LinkTarget): void {\n\t\twatchString(this, '_target', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_targetDescription')\n\tpublic validateTargetDescription(value?: string): void {\n\t\twatchString(this, '_targetDescription', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_tooltipAlign')\n\tpublic validateTooltipAlign(value?: Alignment): void {\n\t\twatchTooltipAlignment(this, '_tooltipAlign', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_useCase')\n\tpublic validateUseCase(value?: LinkUseCase): void {\n\t\tif (typeof value === 'string') {\n\t\t\tthis.state = {\n\t\t\t\t...this.state,\n\t\t\t\t_useCase: value,\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (componentWillLoad)\n\t */\n\tpublic componentWillLoad(): void {\n\t\tthis.validateAriaControls(this._ariaControls);\n\t\tthis.validateAriaCurrent(this._ariaCurrent);\n\t\tthis.validateAriaExpanded(this._ariaExpanded);\n\t\tthis.validateAriaLabel(this._ariaLabel);\n\t\tthis.validateAriaSelected(this._ariaSelected);\n\t\tthis.validateDisabled(this._disabled);\n\t\tthis.validateHref(this._href);\n\t\tthis.validateIcon(this._icon);\n\t\tthis.validateIconAlign(this._iconAlign);\n\t\tthis.validateIconOnly(this._iconOnly);\n\t\tthis.validateLabel(this._label);\n\t\tthis.validateOn(this._on);\n\t\tthis.validateRole(this._role);\n\t\tthis.validateSelector(this._selector);\n\t\tthis.validateStealth(this._stealth);\n\t\tthis.validateTabIndex(this._tabIndex);\n\t\tthis.validateTarget(this._target);\n\t\tthis.validateTargetDescription(this._targetDescription);\n\t\tthis.validateTooltipAlign(this._tooltipAlign);\n\t\tthis.validateUseCase(this._useCase);\n\t}\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * KoliBri - The accessible HTML-Standard
3
3
  */
4
- import{r as i,h as t,H as e,g as s}from"./index-0dce65d2.js";import{p as n}from"./reuse-f9be4952.js";import"./validator-8ee8737c.js";const o="@windicss; *{box-sizing:border-box;font-size:inherit;hyphens:auto;letter-spacing:inherit;word-break:break-word;word-spacing:inherit}kol-heading-wc{font-weight:700}kol-icon{color:inherit}kol-span-wc{display:grid;place-items:center;width:100%}kol-span-wc>span{display:flex;gap:0.25rem;place-items:center}a,button{cursor:pointer}a.icon-only>kol-span-wc>span>span,button.icon-only>kol-span-wc>span>span{display:none}a{display:inline-flex;place-items:baseline}button{border-width:0}:host>*{width:inherit;word-spacing:inherit}:host a{overflow:inherit;text-overflow:inherit}:host a:active{text-decoration:none}:host a:focus,:host a:hover{text-decoration-thickness:3px}:host a.kol-visited:visited{color:var(--kolibri-color-visited)}:host a .screen-reader-only{position:absolute;width:1px;clip:rect(0 0 0 0);overflow:hidden}:host a.skip{left:-99999px;overflow:hidden;position:absolute;z-index:9999999}:host a.skip:focus{background:white;box-shadow:0 0 0.5rem 0.5rem white;left:unset;position:unset}",h=class{constructor(t){i(this,t),this.catchRef=t=>{this.ref=t,n(this.host,this.ref)},this._ariaControls=void 0,this._ariaCurrent=void 0,this._ariaExpanded=void 0,this._ariaLabel="",this._ariaSelected=void 0,this._disabled=!1,this._href=void 0,this._icon=void 0,this._iconAlign="left",this._iconOnly=!1,this._label=void 0,this._on=void 0,this._role=void 0,this._selector=void 0,this._stealth=!1,this._tabIndex=void 0,this._target=void 0,this._targetDescription="Der Link wird in einem neuen Tab geöffnet.",this._tooltipAlign="right",this._useCase="text"}render(){return t(e,null,t("kol-link-wc",{ref:this.catchRef,_ariaControls:this._ariaControls,_ariaCurrent:this._ariaCurrent,_ariaExpanded:this._ariaExpanded,_ariaLabel:this._ariaLabel,_ariaSelected:this._ariaSelected,_disabled:this._disabled,_href:this._href,_icon:this._icon,_iconAlign:this._iconAlign,_iconOnly:this._iconOnly,_label:this._label,_on:this._on,_role:this._role,_selector:this._selector,_stealth:this._stealth,_tabIndex:this._tabIndex,_target:this._target,_targetDescription:this._targetDescription,_tooltipAlign:this._tooltipAlign,_useCase:this._useCase},t("slot",{name:"expert",slot:"expert"}),t("slot",{slot:"expert"})))}get host(){return s(this)}};h.style={default:o};export{h as kol_link};
4
+ import{r as i,h as t,H as e,g as s}from"./index-0dce65d2.js";import{p as n}from"./reuse-2f7da8fc.js";import"./validator-2e4f8df6.js";const o="@windicss; *{box-sizing:border-box;font-size:inherit;hyphens:auto;letter-spacing:inherit;word-break:break-word;word-spacing:inherit}kol-heading-wc{font-weight:700}kol-icon{color:inherit}kol-span-wc{display:grid;place-items:center;width:100%}kol-span-wc>span{display:flex;gap:0.25rem;place-items:center}a,button{cursor:pointer}a.icon-only>kol-span-wc>span>span,button.icon-only>kol-span-wc>span>span{display:none}a{display:inline-flex;place-items:baseline}button{border-width:0}:host>*{width:inherit;word-spacing:inherit}:host a{overflow:inherit;text-overflow:inherit}:host a:active{text-decoration:none}:host a:focus,:host a:hover{text-decoration-thickness:3px}:host a.kol-visited:visited{color:var(--kolibri-color-visited)}:host a .screen-reader-only{position:absolute;width:1px;clip:rect(0 0 0 0);overflow:hidden}:host a.skip{left:-99999px;overflow:hidden;position:absolute;z-index:9999999}:host a.skip:focus{background:white;box-shadow:0 0 0.5rem 0.5rem white;left:unset;position:unset}",h=class{constructor(t){i(this,t),this.catchRef=t=>{this.ref=t,n(this.host,this.ref)},this._ariaControls=void 0,this._ariaCurrent=void 0,this._ariaExpanded=void 0,this._ariaLabel="",this._ariaSelected=void 0,this._disabled=!1,this._href=void 0,this._icon=void 0,this._iconAlign="left",this._iconOnly=!1,this._label=void 0,this._on=void 0,this._role=void 0,this._selector=void 0,this._stealth=!1,this._tabIndex=void 0,this._target=void 0,this._targetDescription="Der Link wird in einem neuen Tab geöffnet.",this._tooltipAlign="right",this._useCase="text"}render(){return t(e,null,t("kol-link-wc",{ref:this.catchRef,_ariaControls:this._ariaControls,_ariaCurrent:this._ariaCurrent,_ariaExpanded:this._ariaExpanded,_ariaLabel:this._ariaLabel,_ariaSelected:this._ariaSelected,_disabled:this._disabled,_href:this._href,_icon:this._icon,_iconAlign:this._iconAlign,_iconOnly:this._iconOnly,_label:this._label,_on:this._on,_role:this._role,_selector:this._selector,_stealth:this._stealth,_tabIndex:this._tabIndex,_target:this._target,_targetDescription:this._targetDescription,_tooltipAlign:this._tooltipAlign,_useCase:this._useCase},t("slot",{name:"expert",slot:"expert"}),t("slot",{slot:"expert"})))}get host(){return s(this)}};h.style={default:o};export{h as kol_link};
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * KoliBri - The accessible HTML-Standard
3
3
  */
4
- import{r as t,h as i,H as s}from"./index-0dce65d2.js";import{w as e}from"./button-link-e6d7d116.js";import{n as a}from"./dev.utils-daaf2f39.js";import{d as o,w as n,a as l,c as h,p as r}from"./prop.validators-ceeab1fe.js";import{w as p}from"./controller-f22ebfae.js";import{S as u}from"./validator-8ee8737c.js";import{a as c}from"./i18n-640debcf.js";import"./index-eb735af6.js";import"./index.m-86dc8c44.js";import"./a11y.tipps-ff5a1a99.js";const d="@windicss; *{box-sizing:border-box;font-size:inherit;hyphens:auto;letter-spacing:inherit;word-break:break-word;word-spacing:inherit}kol-heading-wc{font-weight:700}kol-icon{color:inherit}kol-span-wc{display:grid;place-items:center;width:100%}kol-span-wc>span{display:flex;gap:0.25rem;place-items:center}a,button{cursor:pointer}a.icon-only>kol-span-wc>span>span,button.icon-only>kol-span-wc>span>span{display:none}a{display:inline-flex;place-items:baseline}button{border-width:0}",_={left:"fa-solid fa-angles-left"},f={left:"fa-solid fa-angle-left"},g={right:"fa-solid fa-angle-right"},b={right:"fa-solid fa-angles-right"},v=class{constructor(e){t(this,e),this.nonce=a(),this.calcCount=(t,a=1)=>Math.ceil(t/a),this.getCount=()=>this.calcCount(this.state._total,this.state._pageSize),this.onClick=(t,a)=>{"function"==typeof this.state._on.onClick&&this.state._on.onClick(t,a),this.onChangePage(t,a)},this.onChangePage=(t,a)=>{const e=setTimeout((()=>{clearTimeout(e),"function"==typeof this.state._on.onChangePage&&this.state._on.onChangePage(t,a)}))},this.onChangePageSize=(t,a)=>{if("number"==typeof(a=parseInt(a[0]))&&a>0&&this._pageSize!==a){this._pageSize=a;const e=setTimeout((()=>{clearTimeout(e),"function"==typeof this.state._on.onChangePageSize&&this.state._on.onChangePageSize(t,this._pageSize)}))}},this.onGoToFirst={onClick:t=>{this.onClick(t,1)}},this.onGoToEnd={onClick:t=>{this.onClick(t,this.getCount())}},this.onGoBackward={onClick:t=>{this.onClick(t,this.state._page-1)}},this.onGoForward={onClick:t=>{this.onClick(t,this.state._page+1)}},this.beforePageSize=(t,a)=>{let e=a.has("_pageSize")?a.get("_pageSize"):this.state._pageSize;const s=a.has("_pageSizeOptions")?a.get("_pageSizeOptions"):this.state._pageSizeOptions;if(Array.isArray(s)&&s.length>0){const t=s.find((t=>t.value===e));e=void 0===t?s[0].value:t.value,a.set("_pageSize",e)}const i=a.has("_page")?a.get("_page"):this.state._page,o=a.has("_total")?a.get("_total"):this.state._total;this.syncPage(a,i,a.get("_pageSize"),o)},this.syncPage=(t,a,e,s)=>{if(s>0){const i=this.calcCount(s,e);i>0&&(a>i?(t.set("_page",i),this.onChangePage(u,i)):a<1&&(t.set("_page",1),this.onChangePage(u,1)))}},this.beforePageSizeOptions=(t,a)=>{const e=[];if(Array.isArray(t))for(const a of t)"number"==typeof a&&e.push({label:c("kol-page-per-site",{placeholders:{entries:`${a}`}}),value:a});a.set("_pageSizeOptions",e),this.beforePageSize(e,a)},this._boundaryCount=1,this._customClass=void 0,this._hasButtons=void 0,this._page=void 0,this._pageSize=1,this._pageSizeOptions=[],this._on=void 0,this._siblingCount=1,this._tooltipAlign="top",this._total=void 0,this._variant="normal",this.state={_boundaryCount:1,_hasButtons:{first:!0,last:!0,next:!0,previous:!0},_on:{onClick:()=>null},_page:0,_pageSize:1,_pageSizeOptions:[],_siblingCount:1,_total:0,_variant:"normal"}}render(){var t;let a=!1;const e=this.getCount(),o=Array.from(Array(e).keys()).map((t=>t+1)).map((t=>t<=this.state._boundaryCount||t>e-this.state._boundaryCount||t>=this.state._page-this.state._siblingCount&&t<=this.state._page+this.state._siblingCount?(a=!0,this.state._page===t?this.getSelectedPageButton(t):this.getUnselectedPageButton(t)):!0===a?(a=!1,i("span",{key:`${this.nonce}-el-${t}`},"•••")):null));return i(s,null,i("div",null,this.state._hasButtons.first&&i("kol-button",{_customClass:this.state._customClass,_disabled:this.state._page<=1,_icon:_,_iconOnly:!0,_label:c("kol-page-first"),_on:this.onGoToFirst,_variant:this.state._variant,_tooltipAlign:this.state._tooltipAlign}),this.state._hasButtons.previous&&i("kol-button",{_customClass:this.state._customClass,_disabled:this.state._page<=1,_icon:f,_iconOnly:!0,_label:c("kol-page-back"),_on:this.onGoBackward,_variant:this.state._variant,_tooltipAlign:this.state._tooltipAlign}),o,this.state._hasButtons.next&&i("kol-button",{_customClass:this.state._customClass,_disabled:e<=this.state._page,_icon:g,_iconOnly:!0,_label:c("kol-page-next"),_on:this.onGoForward,_variant:this.state._variant,_tooltipAlign:this.state._tooltipAlign}),this.state._hasButtons.last&&i("kol-button",{_customClass:this.state._customClass,_disabled:e<=this.state._page,_icon:b,_iconOnly:!0,_label:c("kol-page-last"),_on:this.onGoToEnd,_variant:this.state._variant,_tooltipAlign:this.state._tooltipAlign})),(null===(t=this.state._pageSizeOptions)||void 0===t?void 0:t.length)>0&&i("kol-select",{_hideLabel:!0,_id:"pagination-size",_list:this.state._pageSizeOptions,_on:{onChange:this.onChangePageSize},_value:[this.state._pageSize]},c("kol-entries-per-site")))}getUnselectedPageButton(t){return i("kol-button",{key:`${this.nonce}-${t}`,_customClass:this.state._customClass,_ariaLabel:c("kol-page-current",{placeholders:{page:t.toFixed(0)}}),_label:`${t}`,_on:{onClick:a=>{this.onClick(a,t)}},_variant:this.state._variant})}getSelectedPageButton(t){return i("kol-button-wc",{class:"selected",key:`${this.nonce}-selected`,_customClass:this.state._customClass,_disabled:!0,_ariaCurrent:!0,_ariaLabel:c("kol-page-selected",{placeholders:{page:t.toFixed(0)}}),_label:`${t}`,_variant:this.state._variant})}validateBoundaryCount(t){o(this,"_boundaryCount",Math.max(0,null!=t?t:1))}validateCustomClass(t){n(this,"_customClass",t,{defaultValue:void 0})}validateHasButtons(t){l(this,"_hasButtons",(t=>"boolean"==typeof t||"string"==typeof t||"object"==typeof t&&null!==t),new Set(["Boolean","PaginationHasButton"]),t,{hooks:{beforePatch:(t,a)=>{if("boolean"==typeof t)a.set("_hasButtons",{first:t,last:t,next:t,previous:t});else{if("string"==typeof t)try{t=r(t)}catch(t){a.delete("_hasButtons")}"object"==typeof t&&null!==t&&a.set("_hasButtons",Object.assign(Object.assign({},this.state._hasButtons),{first:"boolean"==typeof t.first?!0===t.first:this.state._hasButtons.first,last:"boolean"==typeof t.last?!0===t.last:this.state._hasButtons.last,next:"boolean"==typeof t.next?!0===t.next:this.state._hasButtons.next,previous:"boolean"==typeof t.previous?!0===t.previous:this.state._hasButtons.previous}))}}}})}validateOn(t){"object"==typeof t&&null!==t&&(this.state=Object.assign(Object.assign({},this.state),{_on:t}))}validatePage(t){o(this,"_page",t,{hooks:{beforePatch:(t,a)=>{const e=a.has("_pageSize")?a.get("_pageSize"):this.state._pageSize,s=a.has("_total")?a.get("_total"):this.state._total;this.syncPage(a,t,e,s)}}})}validatePageSize(t){o(this,"_pageSize",t,{hooks:{beforePatch:this.beforePageSize}})}validatePageSizeOptions(t){h(this,"_pageSizeOptions",(t=>"number"==typeof t),t,void 0,{hooks:{beforePatch:this.beforePageSizeOptions}})}validateSiblingCount(t){o(this,"_siblingCount",Math.max(0,null!=t?t:1))}validateTotal(t){o(this,"_total",t,{hooks:{beforePatch:(t,a)=>{const e=a.has("_page")?a.get("_page"):this.state._page,s=a.has("_pageSize")?a.get("_pageSize"):this.state._pageSize;this.syncPage(a,e,s,t)}}})}validateTooltipAlign(t){e(this,"_tooltipAlign",t)}validateVariant(t){p(this,"_variant",t)}componentWillLoad(){this.validateBoundaryCount(this._boundaryCount),this.validateCustomClass(this._customClass),this.validateHasButtons(this._hasButtons),this.validateOn(this._on),this.validatePage(this._page),this.validatePageSize(this._pageSize),this.validatePageSizeOptions(this._pageSizeOptions),this.validateSiblingCount(this._siblingCount),this.validateTooltipAlign(this._tooltipAlign),this.validateTotal(this._total),this.validateVariant(this._variant),this.validatePage(this._page)}static get watchers(){return{_boundaryCount:["validateBoundaryCount"],_customClass:["validateCustomClass"],_hasButtons:["validateHasButtons"],_on:["validateOn"],_page:["validatePage"],_pageSize:["validatePageSize"],_pageSizeOptions:["validatePageSizeOptions"],_siblingCount:["validateSiblingCount"],_total:["validateTotal"],_tooltipAlign:["validateTooltipAlign"],_variant:["validateVariant"]}}};v.style={default:d};export{v as kol_pagination};
4
+ import{r as t,h as i,H as s}from"./index-0dce65d2.js";import{w as e}from"./button-link-e6d7d116.js";import{n as a}from"./dev.utils-daaf2f39.js";import{d as o,w as n,a as l,c as h,p as r}from"./prop.validators-ceeab1fe.js";import{w as p}from"./controller-f22ebfae.js";import{S as u}from"./validator-2e4f8df6.js";import{a as c}from"./i18n-640debcf.js";import"./index-eb735af6.js";import"./index.m-86dc8c44.js";import"./a11y.tipps-ff5a1a99.js";const d="@windicss; *{box-sizing:border-box;font-size:inherit;hyphens:auto;letter-spacing:inherit;word-break:break-word;word-spacing:inherit}kol-heading-wc{font-weight:700}kol-icon{color:inherit}kol-span-wc{display:grid;place-items:center;width:100%}kol-span-wc>span{display:flex;gap:0.25rem;place-items:center}a,button{cursor:pointer}a.icon-only>kol-span-wc>span>span,button.icon-only>kol-span-wc>span>span{display:none}a{display:inline-flex;place-items:baseline}button{border-width:0}",_={left:"fa-solid fa-angles-left"},f={left:"fa-solid fa-angle-left"},g={right:"fa-solid fa-angle-right"},b={right:"fa-solid fa-angles-right"},v=class{constructor(e){t(this,e),this.nonce=a(),this.calcCount=(t,a=1)=>Math.ceil(t/a),this.getCount=()=>this.calcCount(this.state._total,this.state._pageSize),this.onClick=(t,a)=>{"function"==typeof this.state._on.onClick&&this.state._on.onClick(t,a),this.onChangePage(t,a)},this.onChangePage=(t,a)=>{const e=setTimeout((()=>{clearTimeout(e),"function"==typeof this.state._on.onChangePage&&this.state._on.onChangePage(t,a)}))},this.onChangePageSize=(t,a)=>{if("number"==typeof(a=parseInt(a[0]))&&a>0&&this._pageSize!==a){this._pageSize=a;const e=setTimeout((()=>{clearTimeout(e),"function"==typeof this.state._on.onChangePageSize&&this.state._on.onChangePageSize(t,this._pageSize)}))}},this.onGoToFirst={onClick:t=>{this.onClick(t,1)}},this.onGoToEnd={onClick:t=>{this.onClick(t,this.getCount())}},this.onGoBackward={onClick:t=>{this.onClick(t,this.state._page-1)}},this.onGoForward={onClick:t=>{this.onClick(t,this.state._page+1)}},this.beforePageSize=(t,a)=>{let e=a.has("_pageSize")?a.get("_pageSize"):this.state._pageSize;const s=a.has("_pageSizeOptions")?a.get("_pageSizeOptions"):this.state._pageSizeOptions;if(Array.isArray(s)&&s.length>0){const t=s.find((t=>t.value===e));e=void 0===t?s[0].value:t.value,a.set("_pageSize",e)}const i=a.has("_page")?a.get("_page"):this.state._page,o=a.has("_total")?a.get("_total"):this.state._total;this.syncPage(a,i,a.get("_pageSize"),o)},this.syncPage=(t,a,e,s)=>{if(s>0){const i=this.calcCount(s,e);i>0&&(a>i?(t.set("_page",i),this.onChangePage(u,i)):a<1&&(t.set("_page",1),this.onChangePage(u,1)))}},this.beforePageSizeOptions=(t,a)=>{const e=[];if(Array.isArray(t))for(const a of t)"number"==typeof a&&e.push({label:c("kol-page-per-site",{placeholders:{entries:`${a}`}}),value:a});a.set("_pageSizeOptions",e),this.beforePageSize(e,a)},this._boundaryCount=1,this._customClass=void 0,this._hasButtons=void 0,this._page=void 0,this._pageSize=1,this._pageSizeOptions=[],this._on=void 0,this._siblingCount=1,this._tooltipAlign="top",this._total=void 0,this._variant="normal",this.state={_boundaryCount:1,_hasButtons:{first:!0,last:!0,next:!0,previous:!0},_on:{onClick:()=>null},_page:0,_pageSize:1,_pageSizeOptions:[],_siblingCount:1,_total:0,_variant:"normal"}}render(){var t;let a=!1;const e=this.getCount(),o=Array.from(Array(e).keys()).map((t=>t+1)).map((t=>t<=this.state._boundaryCount||t>e-this.state._boundaryCount||t>=this.state._page-this.state._siblingCount&&t<=this.state._page+this.state._siblingCount?(a=!0,this.state._page===t?this.getSelectedPageButton(t):this.getUnselectedPageButton(t)):!0===a?(a=!1,i("span",{key:`${this.nonce}-el-${t}`},"•••")):null));return i(s,null,i("div",null,this.state._hasButtons.first&&i("kol-button",{_customClass:this.state._customClass,_disabled:this.state._page<=1,_icon:_,_iconOnly:!0,_label:c("kol-page-first"),_on:this.onGoToFirst,_variant:this.state._variant,_tooltipAlign:this.state._tooltipAlign}),this.state._hasButtons.previous&&i("kol-button",{_customClass:this.state._customClass,_disabled:this.state._page<=1,_icon:f,_iconOnly:!0,_label:c("kol-page-back"),_on:this.onGoBackward,_variant:this.state._variant,_tooltipAlign:this.state._tooltipAlign}),o,this.state._hasButtons.next&&i("kol-button",{_customClass:this.state._customClass,_disabled:e<=this.state._page,_icon:g,_iconOnly:!0,_label:c("kol-page-next"),_on:this.onGoForward,_variant:this.state._variant,_tooltipAlign:this.state._tooltipAlign}),this.state._hasButtons.last&&i("kol-button",{_customClass:this.state._customClass,_disabled:e<=this.state._page,_icon:b,_iconOnly:!0,_label:c("kol-page-last"),_on:this.onGoToEnd,_variant:this.state._variant,_tooltipAlign:this.state._tooltipAlign})),(null===(t=this.state._pageSizeOptions)||void 0===t?void 0:t.length)>0&&i("kol-select",{_hideLabel:!0,_id:"pagination-size",_list:this.state._pageSizeOptions,_on:{onChange:this.onChangePageSize},_value:[this.state._pageSize]},c("kol-entries-per-site")))}getUnselectedPageButton(t){return i("kol-button",{key:`${this.nonce}-${t}`,_customClass:this.state._customClass,_ariaLabel:c("kol-page-current",{placeholders:{page:t.toFixed(0)}}),_label:`${t}`,_on:{onClick:a=>{this.onClick(a,t)}},_variant:this.state._variant})}getSelectedPageButton(t){return i("kol-button-wc",{class:"selected",key:`${this.nonce}-selected`,_customClass:this.state._customClass,_disabled:!0,_ariaCurrent:!0,_ariaLabel:c("kol-page-selected",{placeholders:{page:t.toFixed(0)}}),_label:`${t}`,_variant:this.state._variant})}validateBoundaryCount(t){o(this,"_boundaryCount",Math.max(0,null!=t?t:1))}validateCustomClass(t){n(this,"_customClass",t,{defaultValue:void 0})}validateHasButtons(t){l(this,"_hasButtons",(t=>"boolean"==typeof t||"string"==typeof t||"object"==typeof t&&null!==t),new Set(["Boolean","PaginationHasButton"]),t,{hooks:{beforePatch:(t,a)=>{if("boolean"==typeof t)a.set("_hasButtons",{first:t,last:t,next:t,previous:t});else{if("string"==typeof t)try{t=r(t)}catch(t){a.delete("_hasButtons")}"object"==typeof t&&null!==t&&a.set("_hasButtons",Object.assign(Object.assign({},this.state._hasButtons),{first:"boolean"==typeof t.first?!0===t.first:this.state._hasButtons.first,last:"boolean"==typeof t.last?!0===t.last:this.state._hasButtons.last,next:"boolean"==typeof t.next?!0===t.next:this.state._hasButtons.next,previous:"boolean"==typeof t.previous?!0===t.previous:this.state._hasButtons.previous}))}}}})}validateOn(t){"object"==typeof t&&null!==t&&(this.state=Object.assign(Object.assign({},this.state),{_on:t}))}validatePage(t){o(this,"_page",t,{hooks:{beforePatch:(t,a)=>{const e=a.has("_pageSize")?a.get("_pageSize"):this.state._pageSize,s=a.has("_total")?a.get("_total"):this.state._total;this.syncPage(a,t,e,s)}}})}validatePageSize(t){o(this,"_pageSize",t,{hooks:{beforePatch:this.beforePageSize}})}validatePageSizeOptions(t){h(this,"_pageSizeOptions",(t=>"number"==typeof t),t,void 0,{hooks:{beforePatch:this.beforePageSizeOptions}})}validateSiblingCount(t){o(this,"_siblingCount",Math.max(0,null!=t?t:1))}validateTotal(t){o(this,"_total",t,{hooks:{beforePatch:(t,a)=>{const e=a.has("_page")?a.get("_page"):this.state._page,s=a.has("_pageSize")?a.get("_pageSize"):this.state._pageSize;this.syncPage(a,e,s,t)}}})}validateTooltipAlign(t){e(this,"_tooltipAlign",t)}validateVariant(t){p(this,"_variant",t)}componentWillLoad(){this.validateBoundaryCount(this._boundaryCount),this.validateCustomClass(this._customClass),this.validateHasButtons(this._hasButtons),this.validateOn(this._on),this.validatePage(this._page),this.validatePageSize(this._pageSize),this.validatePageSizeOptions(this._pageSizeOptions),this.validateSiblingCount(this._siblingCount),this.validateTooltipAlign(this._tooltipAlign),this.validateTotal(this._total),this.validateVariant(this._variant),this.validatePage(this._page)}static get watchers(){return{_boundaryCount:["validateBoundaryCount"],_customClass:["validateCustomClass"],_hasButtons:["validateHasButtons"],_on:["validateOn"],_page:["validatePage"],_pageSize:["validatePageSize"],_pageSizeOptions:["validatePageSizeOptions"],_siblingCount:["validateSiblingCount"],_total:["validateTotal"],_tooltipAlign:["validateTooltipAlign"],_variant:["validateVariant"]}}};v.style={default:d};export{v as kol_pagination};
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * KoliBri - The accessible HTML-Standard
3
3
  */
4
- import{h as i,H as t,r as e,g as s}from"./index-0dce65d2.js";import{p as a}from"./reuse-f9be4952.js";import{I as l,g as h}from"./controller-9bcf44e5.js";import{w as d,c as r,b as n,d as o}from"./prop.validators-ceeab1fe.js";import{S as u}from"./validator-8ee8737c.js";import{f as c}from"./controller-8e33192f.js";import"./a11y.tipps-ff5a1a99.js";import"./dev.utils-daaf2f39.js";import"./tab-index-4314d33e.js";import"./index-eb735af6.js";import"./index.m-86dc8c44.js";const f=t=>"object"==typeof t&&null!==t&&"string"==typeof t.label&&t.label.length>0&&(!Array.isArray(t.options)||void 0===t.options.find((t=>!1===f(t))));class p extends l{constructor(t,e,i){super(t,e,i),this.keyOptionMap=new Map,this.getOptionByKey=t=>this.keyOptionMap.get(t),this.isValueInOptions=(t,e)=>void 0!==e.find((e=>"string"==typeof e.value?e.value===t:!!Array.isArray(e.options)&&this.isValueInOptions(t,e.options))),this.filterValuesInOptions=(t,e)=>t.filter((t=>void 0!==this.isValueInOptions(t,e))),this.beforePatchListValue=(t,e)=>{const i=e.has("_list")?e.get("_list"):this.component.state._list;if(Array.isArray(i)&&i.length>0){this.keyOptionMap.clear(),c(this.keyOptionMap,i);const t=e.has("_value")?e.get("_value"):this.component.state._value,a=this.filterValuesInOptions(Array.isArray(t)&&t.length>0?t:[],i);!1===this.component._multiple&&0===a.length?(e.set("_value",[i[0].value]),this.onStateChange()):Array.isArray(t)&&a.length<t.length&&(e.set("_value",a),this.onStateChange())}},this.component=t}validateHeight(t){d(this.component,"_height",t)}validateList(t){r(this.component,"_list",f,t,void 0,{hooks:{beforePatch:this.beforePatchListValue}})}validateMultiple(t){n(this.component,"_multiple",t,{hooks:{beforePatch:this.beforePatchListValue}})}validateRequired(t){n(this.component,"_required",t)}validateSize(t){o(this.component,"_size",t,{min:1})}validateValue(t){r(this.component,"_value",(()=>!0),t,void 0,{hooks:{beforePatch:this.beforePatchListValue}}),this.setFormAssociatedValue(this.component._value)}componentWillLoad(t){super.componentWillLoad(),this.onStateChange=()=>{if("function"==typeof t){const e=setTimeout((()=>{clearTimeout(e),t(u)}))}},this.validateHeight(this.component._height),this.validateList(this.component._list),this.validateMultiple(this.component._multiple),this.validateRequired(this.component._required),this.validateSize(this.component._size),this.validateValue(this.component._value)}}const v="@windicss; *{box-sizing:border-box;font-size:inherit;hyphens:auto;letter-spacing:inherit;word-break:break-word;word-spacing:inherit}kol-heading-wc{font-weight:700}kol-icon{color:inherit}kol-span-wc{display:grid;place-items:center;width:100%}kol-span-wc>span{display:flex;gap:0.25rem;place-items:center}a,button{cursor:pointer}a.icon-only>kol-span-wc>span>span,button.icon-only>kol-span-wc>span>span{display:none}a{display:inline-flex;place-items:baseline}button{border-width:0}",b=(t,e)=>Array.isArray(t)&&t.includes(e),_=class{renderOptgroup(t,e){var a;return i("optgroup",{disabled:!0===t.disabled,label:t.label},null===(a=t.options)||void 0===a?void 0:a.map(((t,a)=>{const s=`${e}-${a}`;return Array.isArray(t.options)?this.renderOptgroup(t,s):i("option",{disabled:!0===t.disabled,key:s,selected:b(this.state._value,t.value),value:s},t.label)})))}render(){const{ariaDiscribedBy:e}=h(this.state);return i(t,null,i("kol-input",{_disabled:this.state._disabled,_error:this.state._error,_hideLabel:this.state._hideLabel,_hint:this.state._hint,_icon:this.state._icon,_id:this.state._id,_required:this.state._required,_touched:this.state._touched},i("span",{slot:"label"},i("slot",null)),i("select",Object.assign({ref:this.catchRef,part:"select",title:"",accessKey:this.state._accessKey,"aria-describedby":e.length>0?e.join(" "):void 0,"aria-labelledby":`${this.state._id}-label`,autoCapitalize:"off",autoCorrect:"off",disabled:this.state._disabled,id:this.state._id,multiple:this.state._multiple,name:this.state._name,required:this.state._required,size:this.state._size,slot:"input",spellcheck:"false",style:{height:this.state._height}},{onClick:this.controller.onFacade.onClick,onBlur:this.controller.onFacade.onBlur,onFocus:this.controller.onFacade.onFocus},{onChange:this.onChange}),this.state._list.map(((t,e)=>{const a=`-${e}`;return Array.isArray(t.options)?this.renderOptgroup(t,a):i("option",{disabled:!0===t.disabled,key:a,selected:b(this.state._value,t.value),value:a},t.label)})))))}constructor(t){e(this,t),this.catchRef=t=>{this.ref=t,a(this.host,this.ref)},this.onChange=t=>{var e,i;this._value=Array.from((null===(e=this.ref)||void 0===e?void 0:e.options)||[]).filter((t=>!0===t.selected)).map((t=>{var e;return null===(e=this.controller.getOptionByKey(t.value))||void 0===e?void 0:e.value})),this.controller.setFormAssociatedValue(this._value),"function"==typeof(null===(i=this.state._on)||void 0===i?void 0:i.onChange)&&this.state._on.onChange(t,this._value)},this._accessKey=void 0,this._alert=!0,this._disabled=void 0,this._error=void 0,this._height=void 0,this._hideLabel=void 0,this._hint="",this._icon=void 0,this._id=void 0,this._list=void 0,this._multiple=!1,this._name=void 0,this._on=void 0,this._required=void 0,this._size=void 0,this._tabIndex=void 0,this._touched=!1,this._value=void 0,this.state={_height:"",_id:"⚠",_list:[],_multiple:!1,_value:[]},this.controller=new p(this,"textarea",this.host)}validateAccessKey(t){this.controller.validateAccessKey(t)}validateAlert(t){this.controller.validateAlert(t)}validateDisabled(t){this.controller.validateDisabled(t)}validateError(t){this.controller.validateError(t)}validateHeight(t){this.controller.validateHeight(t)}validateHideLabel(t){this.controller.validateHideLabel(t)}validateHint(t){this.controller.validateHint(t)}validateIcon(t){this.controller.validateIcon(t)}validateId(t){this.controller.validateId(t)}validateList(t){this.controller.validateList(t)}validateMultiple(t){this.controller.validateMultiple(t)}validateName(t){this.controller.validateName(t)}validateOn(t){this.controller.validateOn(t)}validateRequired(t){this.controller.validateRequired(t)}validateSize(t){this.controller.validateSize(t)}validateTabIndex(t){this.controller.validateTabIndex(t)}validateTouched(t){this.controller.validateTouched(t)}validateValue(t){this.controller.validateValue(t)}componentWillLoad(){this._alert=!0===this._alert,this._touched=!0===this._touched,this.controller.componentWillLoad(this.onChange)}get host(){return s(this)}static get watchers(){return{_accessKey:["validateAccessKey"],_alert:["validateAlert"],_disabled:["validateDisabled"],_error:["validateError"],_height:["validateHeight"],_hideLabel:["validateHideLabel"],_hint:["validateHint"],_icon:["validateIcon"],_id:["validateId"],_list:["validateList"],_multiple:["validateMultiple"],_name:["validateName"],_on:["validateOn"],_required:["validateRequired"],_size:["validateSize"],_tabIndex:["validateTabIndex"],_touched:["validateTouched"],_value:["validateValue"]}}};_.style={default:v};export{_ as kol_select};
4
+ import{h as i,H as t,r as e,g as s}from"./index-0dce65d2.js";import{p as a}from"./reuse-2f7da8fc.js";import{I as l,g as d}from"./controller-ce5dfb44.js";import{w as h,c as r,b as n,d as o}from"./prop.validators-ceeab1fe.js";import{S as u}from"./validator-2e4f8df6.js";import{f as c}from"./controller-1362fa2f.js";import"./a11y.tipps-ff5a1a99.js";import"./dev.utils-daaf2f39.js";import"./tab-index-2f165a2f.js";import"./index-eb735af6.js";import"./index.m-86dc8c44.js";const f=t=>"object"==typeof t&&null!==t&&"string"==typeof t.label&&t.label.length>0&&(!Array.isArray(t.options)||void 0===t.options.find((t=>!1===f(t))));class p extends l{constructor(t,e,i){super(t,e,i),this.keyOptionMap=new Map,this.getOptionByKey=t=>this.keyOptionMap.get(t),this.isValueInOptions=(t,e)=>void 0!==e.find((e=>"string"==typeof e.value?e.value===t:!!Array.isArray(e.options)&&this.isValueInOptions(t,e.options))),this.filterValuesInOptions=(t,e)=>t.filter((t=>void 0!==this.isValueInOptions(t,e))),this.beforePatchListValue=(t,e)=>{const i=e.has("_list")?e.get("_list"):this.component.state._list;if(Array.isArray(i)&&i.length>0){this.keyOptionMap.clear(),c(this.keyOptionMap,i);const t=e.has("_value")?e.get("_value"):this.component.state._value,a=this.filterValuesInOptions(Array.isArray(t)&&t.length>0?t:[],i);!1===this.component._multiple&&0===a.length?(e.set("_value",[i[0].value]),this.onStateChange()):Array.isArray(t)&&a.length<t.length&&(e.set("_value",a),this.onStateChange())}},this.component=t}validateHeight(t){h(this.component,"_height",t)}validateList(t){r(this.component,"_list",f,t,void 0,{hooks:{beforePatch:this.beforePatchListValue}})}validateMultiple(t){n(this.component,"_multiple",t,{hooks:{beforePatch:this.beforePatchListValue}})}validateRequired(t){n(this.component,"_required",t)}validateSize(t){o(this.component,"_size",t,{min:1})}validateValue(t){r(this.component,"_value",(()=>!0),t,void 0,{hooks:{beforePatch:this.beforePatchListValue}}),this.setFormAssociatedValue(this.component._value)}componentWillLoad(t){super.componentWillLoad(),this.onStateChange=()=>{if("function"==typeof t){const e=setTimeout((()=>{clearTimeout(e),t(u)}))}},this.validateHeight(this.component._height),this.validateList(this.component._list),this.validateMultiple(this.component._multiple),this.validateRequired(this.component._required),this.validateSize(this.component._size),this.validateValue(this.component._value)}}const v="@windicss; *{box-sizing:border-box;font-size:inherit;hyphens:auto;letter-spacing:inherit;word-break:break-word;word-spacing:inherit}kol-heading-wc{font-weight:700}kol-icon{color:inherit}kol-span-wc{display:grid;place-items:center;width:100%}kol-span-wc>span{display:flex;gap:0.25rem;place-items:center}a,button{cursor:pointer}a.icon-only>kol-span-wc>span>span,button.icon-only>kol-span-wc>span>span{display:none}a{display:inline-flex;place-items:baseline}button{border-width:0}",_=(t,e)=>Array.isArray(t)&&t.includes(e),b=class{renderOptgroup(t,e){var a;return i("optgroup",{disabled:!0===t.disabled,label:t.label},null===(a=t.options)||void 0===a?void 0:a.map(((t,a)=>{const s=`${e}-${a}`;return Array.isArray(t.options)?this.renderOptgroup(t,s):i("option",{disabled:!0===t.disabled,key:s,selected:_(this.state._value,t.value),value:s},t.label)})))}render(){const{ariaDiscribedBy:e}=d(this.state);return i(t,null,i("kol-input",{_disabled:this.state._disabled,_error:this.state._error,_hideLabel:this.state._hideLabel,_hint:this.state._hint,_icon:this.state._icon,_id:this.state._id,_required:this.state._required,_touched:this.state._touched},i("span",{slot:"label"},i("slot",null)),i("select",Object.assign({ref:this.catchRef,part:"select",title:"",accessKey:this.state._accessKey,"aria-describedby":e.length>0?e.join(" "):void 0,"aria-labelledby":`${this.state._id}-label`,autoCapitalize:"off",autoCorrect:"off",disabled:this.state._disabled,id:this.state._id,multiple:this.state._multiple,name:this.state._name,required:this.state._required,size:this.state._size,slot:"input",spellcheck:"false",style:{height:this.state._height}},{onClick:this.controller.onFacade.onClick,onBlur:this.controller.onFacade.onBlur,onFocus:this.controller.onFacade.onFocus},{onChange:this.onChange}),this.state._list.map(((t,e)=>{const a=`-${e}`;return Array.isArray(t.options)?this.renderOptgroup(t,a):i("option",{disabled:!0===t.disabled,key:a,selected:_(this.state._value,t.value),value:a},t.label)})))))}constructor(t){e(this,t),this.catchRef=t=>{this.ref=t,a(this.host,this.ref)},this.onChange=t=>{var e,i;this._value=Array.from((null===(e=this.ref)||void 0===e?void 0:e.options)||[]).filter((t=>!0===t.selected)).map((t=>{var e;return null===(e=this.controller.getOptionByKey(t.value))||void 0===e?void 0:e.value})),this.controller.setFormAssociatedValue(this._value),"function"==typeof(null===(i=this.state._on)||void 0===i?void 0:i.onChange)&&this.state._on.onChange(t,this._value)},this._accessKey=void 0,this._alert=!0,this._disabled=void 0,this._error=void 0,this._height=void 0,this._hideLabel=void 0,this._hint="",this._icon=void 0,this._id=void 0,this._list=void 0,this._multiple=!1,this._name=void 0,this._on=void 0,this._required=void 0,this._size=void 0,this._tabIndex=void 0,this._touched=!1,this._value=void 0,this.state={_height:"",_id:"⚠",_list:[],_multiple:!1,_value:[]},this.controller=new p(this,"textarea",this.host)}validateAccessKey(t){this.controller.validateAccessKey(t)}validateAlert(t){this.controller.validateAlert(t)}validateDisabled(t){this.controller.validateDisabled(t)}validateError(t){this.controller.validateError(t)}validateHeight(t){this.controller.validateHeight(t)}validateHideLabel(t){this.controller.validateHideLabel(t)}validateHint(t){this.controller.validateHint(t)}validateIcon(t){this.controller.validateIcon(t)}validateId(t){this.controller.validateId(t)}validateList(t){this.controller.validateList(t)}validateMultiple(t){this.controller.validateMultiple(t)}validateName(t){this.controller.validateName(t)}validateOn(t){this.controller.validateOn(t)}validateRequired(t){this.controller.validateRequired(t)}validateSize(t){this.controller.validateSize(t)}validateTabIndex(t){this.controller.validateTabIndex(t)}validateTouched(t){this.controller.validateTouched(t)}validateValue(t){this.controller.validateValue(t)}componentWillLoad(){this._alert=!0===this._alert,this._touched=!0===this._touched,this.controller.componentWillLoad(this.onChange)}get host(){return s(this)}static get watchers(){return{_accessKey:["validateAccessKey"],_alert:["validateAlert"],_disabled:["validateDisabled"],_error:["validateError"],_height:["validateHeight"],_hideLabel:["validateHideLabel"],_hint:["validateHint"],_icon:["validateIcon"],_id:["validateId"],_list:["validateList"],_multiple:["validateMultiple"],_name:["validateName"],_on:["validateOn"],_required:["validateRequired"],_size:["validateSize"],_tabIndex:["validateTabIndex"],_touched:["validateTouched"],_value:["validateValue"]}}};b.style={default:v};export{b as kol_select};
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * KoliBri - The accessible HTML-Standard
3
3
  */
4
- import{h as t,F as i,H as e,r as a,g as s}from"./index-0dce65d2.js";import{a as h}from"./i18n-640debcf.js";import{b as d,d as l,w as n,a as r,s as o}from"./prop.validators-ceeab1fe.js";import{p as c}from"./reuse-f9be4952.js";import{I as u,g as v}from"./controller-9bcf44e5.js";import"./index-eb735af6.js";import"./a11y.tipps-ff5a1a99.js";import"./dev.utils-daaf2f39.js";import"./index.m-86dc8c44.js";import"./validator-8ee8737c.js";import"./tab-index-4314d33e.js";class p extends u{constructor(t,e,a){super(t,e,a),this.afterSyncCharCounter=()=>{"string"==typeof this.component._value&&this.component._value.length>0&&(this.component.state._currentLength=this.component._value.length)},this.component=t}validateHasCounter(t){d(this.component,"_hasCounter",t,{hooks:{afterPatch:this.afterSyncCharCounter}})}validateMaxLength(t){l(this.component,"_maxLength",t,{hooks:{afterPatch:this.afterSyncCharCounter},min:0})}validatePlaceholder(t){n(this.component,"_placeholder",t)}validateReadOnly(t){d(this.component,"_readOnly",t)}validateResize(t){r(this.component,"_resize",(t=>"string"==typeof t&&("both"===t||"horizontal"===t||"none"===t||"vertical"===t)),new Set("String {both, horizontal, vertical, none}"),t)}validateRequired(t){d(this.component,"_required",t)}validateRows(t){l(this.component,"_rows",t)}validateValue(t){n(this.component,"_value",t,{hooks:{afterPatch:this.afterSyncCharCounter}}),this.setFormAssociatedValue(this.component._value)}componentWillLoad(){super.componentWillLoad(),this.validateHasCounter(this.component._hasCounter),this.validateMaxLength(this.component._maxLength),this.validatePlaceholder(this.component._placeholder),this.validateReadOnly(this.component._readOnly),this.validateResize(this.component._resize),this.validateRequired(this.component._required),this.validateRows(this.component._rows),this.validateValue(this.component._value)}}const f="@windicss; *{box-sizing:border-box;font-size:inherit;hyphens:auto;letter-spacing:inherit;word-break:break-word;word-spacing:inherit}kol-heading-wc{font-weight:700}kol-icon{color:inherit}kol-span-wc{display:grid;place-items:center;width:100%}kol-span-wc>span{display:flex;gap:0.25rem;place-items:center}a,button{cursor:pointer}a.icon-only>kol-span-wc>span>span,button.icon-only>kol-span-wc>span>span{display:none}a{display:inline-flex;place-items:baseline}button{border-width:0}",_=t=>{t.style.overflow="hidden";const e=t.rows,a=t.clientHeight/e;t.rows=1;const i=Math.round(t.scrollHeight/a);return t.rows=e,i},b=class{render(){const{ariaDiscribedBy:a}=v(this.state);return t(e,null,t("kol-input",{_alert:this.state._alert,_disabled:this.state._disabled,_error:this.state._error,_hideLabel:this.state._hideLabel,_hint:this.state._hint,_id:this.state._id,_readOnly:this.state._readOnly,_required:this.state._required,_touched:this.state._touched},t("span",{slot:"label"},t("slot",null)),t("div",{slot:"input"},t("textarea",Object.assign({ref:this.catchRef,part:"textarea",title:"",accessKey:this.state._accessKey,"aria-describedby":a.length>0?a.join(" "):void 0,"aria-labelledby":`${this.state._id}-label`,autoCapitalize:"off",autoCorrect:"off",disabled:this.state._disabled,id:this.state._id,maxlength:this.state._maxLength,name:this.state._name,readOnly:this.state._readOnly,required:this.state._required,rows:this.state._rows,placeholder:this.state._placeholder,spellcheck:"false"},this.controller.onFacade,{onKeyUp:this.onChange,style:{resize:this.state._resize},value:this.state._value})),this.state._hasCounter&&t("span",{"aria-atomic":"true","aria-live":"polite"},this.state._currentLength,this.state._maxLength&&t(i,null,t("span",{"aria-label":h("kol-of"),role:"img"},"/"),this.state._maxLength)," ",t("span",null,h("kol-characters"))))))}constructor(t){a(this,t),this.catchRef=t=>{this.ref=t,c(this.host,this.ref)},this.onChange=t=>{this.ref instanceof HTMLTextAreaElement&&(o(this,"_currentLength",this.ref.value.length),this.state._adjustHeight&&(this._rows=_(this.ref))),"function"==typeof this.controller.onFacade.onChange&&this.controller.onFacade.onChange(t)},this._accessKey=void 0,this._adjustHeight=!1,this._alert=!0,this._hasCounter=void 0,this._disabled=void 0,this._error=void 0,this._hideLabel=void 0,this._hint="",this._id=void 0,this._maxLength=void 0,this._name=void 0,this._on=void 0,this._placeholder=void 0,this._readOnly=void 0,this._resize="vertical",this._required=void 0,this._rows=void 0,this._tabIndex=void 0,this._touched=!1,this._value=void 0,this.state={_adjustHeight:!1,_currentLength:0,_id:"⚠",_resize:"vertical"},this.controller=new p(this,"textarea",this.host)}validateAccessKey(t){this.controller.validateAccessKey(t)}validateAdjustHeight(t){this.controller.validateAdjustHeight(t)}validateAlert(t){this.controller.validateAlert(t)}validateDisabled(t){this.controller.validateDisabled(t)}validateError(t){this.controller.validateError(t)}validateHasCounter(t){this.controller.validateHasCounter(t)}validateHideLabel(t){this.controller.validateHideLabel(t)}validateHint(t){this.controller.validateHint(t)}validateId(t){this.controller.validateId(t)}validateMaxLength(t){this.controller.validateMaxLength(t)}validateName(t){this.controller.validateName(t)}validateOn(t){this.controller.validateOn(t)}validatePlaceholder(t){this.controller.validatePlaceholder(t)}validateReadOnly(t){this.controller.validateReadOnly(t)}validateResize(t){this.controller.validateResize(t)}validateRequired(t){this.controller.validateRequired(t)}validateRows(t){this.controller.validateRows(t)}validateTabIndex(t){this.controller.validateTabIndex(t)}validateTouched(t){this.controller.validateTouched(t)}validateValue(t){this.controller.validateValue(t)}componentWillLoad(){this._alert=!0===this._alert,this._touched=!0===this._touched,this.controller.componentWillLoad(),this.validateAdjustHeight(this._adjustHeight)}get host(){return s(this)}static get watchers(){return{_accessKey:["validateAccessKey"],_adjustHeight:["validateAdjustHeight"],_alert:["validateAlert"],_disabled:["validateDisabled"],_error:["validateError"],_hasCounter:["validateHasCounter"],_hideLabel:["validateHideLabel"],_hint:["validateHint"],_id:["validateId"],_maxLength:["validateMaxLength"],_name:["validateName"],_on:["validateOn"],_placeholder:["validatePlaceholder"],_readOnly:["validateReadOnly"],_resize:["validateResize"],_required:["validateRequired"],_rows:["validateRows"],_tabIndex:["validateTabIndex"],_touched:["validateTouched"],_value:["validateValue"]}}};b.style={default:f};export{b as kol_textarea};
4
+ import{h as t,F as i,H as e,r as a,g as s}from"./index-0dce65d2.js";import{a as h}from"./i18n-640debcf.js";import{b as d,d as l,w as n,a as r,s as o}from"./prop.validators-ceeab1fe.js";import{p as c}from"./reuse-2f7da8fc.js";import{I as u,g as f}from"./controller-ce5dfb44.js";import"./index-eb735af6.js";import"./a11y.tipps-ff5a1a99.js";import"./dev.utils-daaf2f39.js";import"./index.m-86dc8c44.js";import"./validator-2e4f8df6.js";import"./tab-index-2f165a2f.js";class v extends u{constructor(t,e,a){super(t,e,a),this.afterSyncCharCounter=()=>{"string"==typeof this.component._value&&this.component._value.length>0&&(this.component.state._currentLength=this.component._value.length)},this.component=t}validateHasCounter(t){d(this.component,"_hasCounter",t,{hooks:{afterPatch:this.afterSyncCharCounter}})}validateMaxLength(t){l(this.component,"_maxLength",t,{hooks:{afterPatch:this.afterSyncCharCounter},min:0})}validatePlaceholder(t){n(this.component,"_placeholder",t)}validateReadOnly(t){d(this.component,"_readOnly",t)}validateResize(t){r(this.component,"_resize",(t=>"string"==typeof t&&("both"===t||"horizontal"===t||"none"===t||"vertical"===t)),new Set("String {both, horizontal, vertical, none}"),t)}validateRequired(t){d(this.component,"_required",t)}validateRows(t){l(this.component,"_rows",t)}validateValue(t){n(this.component,"_value",t,{hooks:{afterPatch:this.afterSyncCharCounter}}),this.setFormAssociatedValue(this.component._value)}componentWillLoad(){super.componentWillLoad(),this.validateHasCounter(this.component._hasCounter),this.validateMaxLength(this.component._maxLength),this.validatePlaceholder(this.component._placeholder),this.validateReadOnly(this.component._readOnly),this.validateResize(this.component._resize),this.validateRequired(this.component._required),this.validateRows(this.component._rows),this.validateValue(this.component._value)}}const p="@windicss; *{box-sizing:border-box;font-size:inherit;hyphens:auto;letter-spacing:inherit;word-break:break-word;word-spacing:inherit}kol-heading-wc{font-weight:700}kol-icon{color:inherit}kol-span-wc{display:grid;place-items:center;width:100%}kol-span-wc>span{display:flex;gap:0.25rem;place-items:center}a,button{cursor:pointer}a.icon-only>kol-span-wc>span>span,button.icon-only>kol-span-wc>span>span{display:none}a{display:inline-flex;place-items:baseline}button{border-width:0}",_=t=>{t.style.overflow="hidden";const e=t.rows,a=t.clientHeight/e;t.rows=1;const i=Math.round(t.scrollHeight/a);return t.rows=e,i},b=class{render(){const{ariaDiscribedBy:a}=f(this.state);return t(e,null,t("kol-input",{_alert:this.state._alert,_disabled:this.state._disabled,_error:this.state._error,_hideLabel:this.state._hideLabel,_hint:this.state._hint,_id:this.state._id,_readOnly:this.state._readOnly,_required:this.state._required,_touched:this.state._touched},t("span",{slot:"label"},t("slot",null)),t("div",{slot:"input"},t("textarea",Object.assign({ref:this.catchRef,part:"textarea",title:"",accessKey:this.state._accessKey,"aria-describedby":a.length>0?a.join(" "):void 0,"aria-labelledby":`${this.state._id}-label`,autoCapitalize:"off",autoCorrect:"off",disabled:this.state._disabled,id:this.state._id,maxlength:this.state._maxLength,name:this.state._name,readOnly:this.state._readOnly,required:this.state._required,rows:this.state._rows,placeholder:this.state._placeholder,spellcheck:"false"},this.controller.onFacade,{onKeyUp:this.onChange,style:{resize:this.state._resize},value:this.state._value})),this.state._hasCounter&&t("span",{"aria-atomic":"true","aria-live":"polite"},this.state._currentLength,this.state._maxLength&&t(i,null,t("span",{"aria-label":h("kol-of"),role:"img"},"/"),this.state._maxLength)," ",t("span",null,h("kol-characters"))))))}constructor(t){a(this,t),this.catchRef=t=>{this.ref=t,c(this.host,this.ref)},this.onChange=t=>{this.ref instanceof HTMLTextAreaElement&&(o(this,"_currentLength",this.ref.value.length),this.state._adjustHeight&&(this._rows=_(this.ref))),"function"==typeof this.controller.onFacade.onChange&&this.controller.onFacade.onChange(t)},this._accessKey=void 0,this._adjustHeight=!1,this._alert=!0,this._hasCounter=void 0,this._disabled=void 0,this._error=void 0,this._hideLabel=void 0,this._hint="",this._id=void 0,this._maxLength=void 0,this._name=void 0,this._on=void 0,this._placeholder=void 0,this._readOnly=void 0,this._resize="vertical",this._required=void 0,this._rows=void 0,this._tabIndex=void 0,this._touched=!1,this._value=void 0,this.state={_adjustHeight:!1,_currentLength:0,_id:"⚠",_resize:"vertical"},this.controller=new v(this,"textarea",this.host)}validateAccessKey(t){this.controller.validateAccessKey(t)}validateAdjustHeight(t){this.controller.validateAdjustHeight(t)}validateAlert(t){this.controller.validateAlert(t)}validateDisabled(t){this.controller.validateDisabled(t)}validateError(t){this.controller.validateError(t)}validateHasCounter(t){this.controller.validateHasCounter(t)}validateHideLabel(t){this.controller.validateHideLabel(t)}validateHint(t){this.controller.validateHint(t)}validateId(t){this.controller.validateId(t)}validateMaxLength(t){this.controller.validateMaxLength(t)}validateName(t){this.controller.validateName(t)}validateOn(t){this.controller.validateOn(t)}validatePlaceholder(t){this.controller.validatePlaceholder(t)}validateReadOnly(t){this.controller.validateReadOnly(t)}validateResize(t){this.controller.validateResize(t)}validateRequired(t){this.controller.validateRequired(t)}validateRows(t){this.controller.validateRows(t)}validateTabIndex(t){this.controller.validateTabIndex(t)}validateTouched(t){this.controller.validateTouched(t)}validateValue(t){this.controller.validateValue(t)}componentWillLoad(){this._alert=!0===this._alert,this._touched=!0===this._touched,this.controller.componentWillLoad(),this.validateAdjustHeight(this._adjustHeight)}get host(){return s(this)}static get watchers(){return{_accessKey:["validateAccessKey"],_adjustHeight:["validateAdjustHeight"],_alert:["validateAlert"],_disabled:["validateDisabled"],_error:["validateError"],_hasCounter:["validateHasCounter"],_hideLabel:["validateHideLabel"],_hint:["validateHint"],_id:["validateId"],_maxLength:["validateMaxLength"],_name:["validateName"],_on:["validateOn"],_placeholder:["validatePlaceholder"],_readOnly:["validateReadOnly"],_resize:["validateResize"],_required:["validateRequired"],_rows:["validateRows"],_tabIndex:["validateTabIndex"],_touched:["validateTouched"],_value:["validateValue"]}}};b.style={default:p};export{b as kol_textarea};
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * KoliBri - The accessible HTML-Standard
3
3
  */
4
- import{r as t,h as i,H as a}from"./index-0dce65d2.js";import{w as s}from"./button-link-e6d7d116.js";import{g as o,n as e}from"./dev.utils-daaf2f39.js";import{w as r}from"./prop.validators-ceeab1fe.js";import"./index-eb735af6.js";import"./index.m-86dc8c44.js";import"./a11y.tipps-ff5a1a99.js";const l='kol-badge,.tooltip{font-size:1rem;position:fixed;animation-name:fadeInOpacity;animation-iteration-count:1;animation-timing-function:ease-in;animation-duration:0.5s;display:none;z-index:1000;max-width:300px;box-shadow:0 0 0.15rem rgba(255, 255, 255, 0.8)}kol-badge::after,.tooltip::after{content:" ";position:absolute;border-style:solid;border-width:5px}kol-badge.arrow-left::after,.tooltip.arrow-left::after{margin-top:-5px;top:50%;right:100%;border-color:transparent black transparent transparent}kol-badge.arrow-right::after,.tooltip.arrow-right::after{margin-top:-5px;top:50%;left:100%;border-color:transparent transparent transparent black}kol-badge.arrow-top::after,.tooltip.arrow-top::after{margin-left:-5px;left:50%;bottom:100%;border-color:transparent transparent black transparent}kol-badge.arrow-bottom::after,.tooltip.arrow-bottom::after{margin-left:-5px;left:50%;top:100%;border-color:black transparent transparent transparent}@keyframes fadeInOpacity{0%{opacity:0}100%{opacity:1}}',n=class{constructor(i){t(this,i),this.hydrated=!1,this.hostElement=null,this.childElements=[],this.alignTooltip=()=>{const t=this.childElements[0];{const e=t.getBoundingClientRect();if(this.tooltipElement){switch(this.state._align){case"top":case"bottom":this.tooltipElement.style.left=e.left+t.offsetWidth/2-this.tooltipElement.offsetWidth/2+"px";break;default:this.tooltipElement.style.top=e.top+e.height/2-this.tooltipElement.offsetHeight/2+"px"}switch(this.state._align){case"left":this.tooltipElement.style.left=`calc(${e.left-this.tooltipElement.offsetWidth}px - 0.5em)`;break;case"right":this.tooltipElement.style.left=`calc(${e.right}px + 0.5em)`;break;case"bottom":this.tooltipElement.style.top=`calc(${e.bottom}px + 0.5em)`;break;default:this.tooltipElement.style.top=`calc(${e.top-this.tooltipElement.offsetHeight}px - 0.5em)`}}}},this.showTooltip=()=>{this.tooltipElement&&(this.tooltipElement.style.setProperty("display","block"),o().body.addEventListener("keyup",this.hideTooltipByEscape),this.alignTooltip(),this.tooltipElement.style.setProperty("visibility","visible"),document.addEventListener("scroll",this.alignTooltip))},this.hideTooltip=()=>{this.tooltipElement&&(this.tooltipElement.style.setProperty("display","none"),this.tooltipElement.style.setProperty("visibility","hidden"),document.removeEventListener("scroll",this.alignTooltip))},this.hideTooltipByEscape=t=>{"Escape"===t.key&&(o().body.removeEventListener("keyup",this.hideTooltipByEscape),this.hideTooltip())},this.catchHostElement=t=>{if(this.hostElement=t,this.hostElement){const t=this.hostElement.previousElementSibling;t&&(t.removeEventListener("mouseover",this.showTooltip),t.addEventListener("mouseover",this.showTooltip),t.removeEventListener("focus",this.showTooltip),t.addEventListener("focus",this.showTooltip),t.removeEventListener("mouseout",this.hideTooltip),t.addEventListener("mouseout",this.hideTooltip),t.removeEventListener("blur",this.hideTooltip),t.addEventListener("blur",this.hideTooltip),this.childElements.push(t))}},this.catchTooltipElement=t=>{this.tooltipElement=t},this._align="top",this._id=void 0,this._label=void 0,this.state={_align:"top",_id:e(),_label:""}}render(){const t=setTimeout((()=>{clearTimeout(t),this.alignTooltip()}),250);return i(a,{ref:this.catchHostElement},""!==this.state._label&&i("kol-badge",{class:{"arrow-bottom":"top"===this.state._align,"arrow-left":"right"===this.state._align,"arrow-top":"bottom"===this.state._align,"arrow-right":"left"===this.state._align},id:this.state._id,ref:this.catchTooltipElement,_color:{backgroundColor:"#333",color:"#ddd"},_label:this.state._label}))}validateAlign(t){s(this,"_align",t)}validateId(t){r(this,"_id",t)}validateLabel(t){r(this,"_label",t)}componentWillLoad(){this.validateAlign(this._align),this.validateId(this._id),this.validateLabel(this._label),this.hydrated=!0}static get watchers(){return{_align:["validateAlign"],_id:["validateId"],_label:["validateLabel"]}}};n.style={default:l};export{n as kol_tooltip};
4
+ import{r as t,h as i,H as s}from"./index-0dce65d2.js";import{w as a}from"./button-link-e6d7d116.js";import{g as o,n as e}from"./dev.utils-daaf2f39.js";import{w as r}from"./prop.validators-ceeab1fe.js";import{s as h}from"./reuse-2f7da8fc.js";import"./index-eb735af6.js";import"./index.m-86dc8c44.js";import"./a11y.tipps-ff5a1a99.js";import"./validator-2e4f8df6.js";const l='kol-badge,.tooltip{font-size:1rem;position:fixed;animation-name:fadeInOpacity;animation-iteration-count:1;animation-timing-function:ease-in;animation-duration:0.5s;display:none;z-index:1000;max-width:300px;box-shadow:0 0 0.15rem rgba(255, 255, 255, 0.8)}kol-badge::after,.tooltip::after{content:" ";position:absolute;border-style:solid;border-width:5px}kol-badge.arrow-left::after,.tooltip.arrow-left::after{margin-top:-5px;top:50%;right:100%;border-color:transparent black transparent transparent}kol-badge.arrow-right::after,.tooltip.arrow-right::after{margin-top:-5px;top:50%;left:100%;border-color:transparent transparent transparent black}kol-badge.arrow-top::after,.tooltip.arrow-top::after{margin-left:-5px;left:50%;bottom:100%;border-color:transparent transparent black transparent}kol-badge.arrow-bottom::after,.tooltip.arrow-bottom::after{margin-left:-5px;left:50%;top:100%;border-color:black transparent transparent transparent}@keyframes fadeInOpacity{0%{opacity:0}100%{opacity:1}}',n=class{constructor(i){t(this,i),this.alignTooltip=()=>{if(this.previousSibling){const t=this.previousSibling.getBoundingClientRect();if(this.tooltipElement){switch(this.state._align){case"top":case"bottom":this.tooltipElement.style.left=t.left+this.previousSibling.offsetWidth/2-this.tooltipElement.offsetWidth/2+"px";break;default:this.tooltipElement.style.top=t.top+t.height/2-this.tooltipElement.offsetHeight/2+"px"}switch(this.state._align){case"left":this.tooltipElement.style.left=`calc(${t.left-this.tooltipElement.offsetWidth}px - 0.5em)`;break;case"right":this.tooltipElement.style.left=`calc(${t.right}px + 0.5em)`;break;case"bottom":this.tooltipElement.style.top=`calc(${t.bottom}px + 0.5em)`;break;default:this.tooltipElement.style.top=`calc(${t.top-this.tooltipElement.offsetHeight}px - 0.5em)`}}}},this.showTooltip=()=>{this.tooltipElement&&(this.tooltipElement.style.setProperty("display","block"),o().body.addEventListener("keyup",this.hideTooltipByEscape),this.alignTooltip(),this.tooltipElement.style.setProperty("visibility","visible"),document.addEventListener("scroll",this.alignTooltip))},this.hideTooltip=()=>{this.tooltipElement&&(this.tooltipElement.style.setProperty("display","none"),this.tooltipElement.style.setProperty("visibility","hidden"),document.removeEventListener("scroll",this.alignTooltip))},this.hideTooltipByEscape=t=>{"Escape"===t.key&&(o().body.removeEventListener("keyup",this.hideTooltipByEscape),this.hideTooltip())},this.addListeners=t=>{t.addEventListener("mouseover",this.incrementOverFocusCount),t.addEventListener("focus",this.incrementOverFocusCount),t.addEventListener("mouseout",this.decrementOverFocusCount),t.addEventListener("blur",this.decrementOverFocusCount)},this.removeListeners=t=>{t.removeEventListener("mouseover",this.incrementOverFocusCount),t.removeEventListener("focus",this.incrementOverFocusCount),t.removeEventListener("mouseout",this.decrementOverFocusCount),t.removeEventListener("blur",this.decrementOverFocusCount)},this.resyncListeners=t=>{this.removeListeners(t),this.addListeners(t)},this.catchHostElement=t=>{t&&(this.previousSibling=t.previousElementSibling,this.previousSibling&&this.resyncListeners(this.previousSibling))},this.catchTooltipElement=t=>{this.tooltipElement=t,this.tooltipElement&&this.resyncListeners(this.tooltipElement)},this.overFocusCount=0,this.incrementOverFocusCount=()=>{this.overFocusCount++,this.showOrHideTooltip()},this.decrementOverFocusCount=()=>{this.overFocusCount--,this.showOrHideTooltip()},this.showOrHideTooltip=()=>{clearTimeout(this.overFocusTimeout),this.overFocusTimeout=setTimeout((()=>{clearTimeout(this.overFocusTimeout),this.overFocusCount>0?this.showTooltip():this.hideTooltip()}),250)},this._align="top",this._id=void 0,this._label=void 0,this.state={_align:"top",_id:e(),_label:""}}render(){return h((()=>{this.alignTooltip(),h(this.alignTooltip,750)}),250),i(s,{ref:this.catchHostElement},""!==this.state._label&&i("kol-badge",{class:{"arrow-bottom":"top"===this.state._align,"arrow-left":"right"===this.state._align,"arrow-top":"bottom"===this.state._align,"arrow-right":"left"===this.state._align},id:this.state._id,ref:this.catchTooltipElement,_color:{backgroundColor:"#333",color:"#ddd"},_label:this.state._label}))}validateAlign(t){a(this,"_align",t)}validateId(t){r(this,"_id",t)}validateLabel(t){r(this,"_label",t)}componentWillLoad(){this.validateAlign(this._align),this.validateId(this._id),this.validateLabel(this._label)}disconnectedCallback(){this.previousSibling&&this.removeListeners(this.previousSibling),this.tooltipElement&&this.removeListeners(this.tooltipElement)}static get watchers(){return{_align:["validateAlign"],_id:["validateId"],_label:["validateLabel"]}}};n.style={default:l};export{n as kol_tooltip};
@@ -1 +1 @@
1
- {"version":3,"names":["defaultStyleCss","KolTooltip","this","hydrated","hostElement","childElements","alignTooltip","target","clientRect","getBoundingClientRect","tooltipElement","state","_align","style","left","offsetWidth","top","height","offsetHeight","right","bottom","showTooltip","setProperty","getDocument","body","addEventListener","hideTooltipByEscape","document","hideTooltip","removeEventListener","event","key","catchHostElement","element","previousSibling","previousElementSibling","push","catchTooltipElement","_id","nonce","_label","render","timeout","setTimeout","clearTimeout","h","Host","ref","class","id","_color","backgroundColor","color","validateAlign","value","watchTooltipAlignment","validateId","watchString","validateLabel","componentWillLoad"],"sources":["./src/components/tooltip/style.sass?tag=kol-tooltip&mode=default","./src/components/tooltip/component.tsx"],"sourcesContent":["/*\n// @import ../style\n\nkol-badge,\n.tooltip /* fix sass formatter */\n\tfont-size: 1rem\n\tposition: fixed\n\t\t// position: absolute\n\t\t// position: relative\n\tanimation-name: fadeInOpacity\n\tanimation-iteration-count: 1\n\tanimation-timing-function: ease-in\n\tanimation-duration: .5s\n\tdisplay: none\n\tz-index: 1000\n\tmax-width: 300px\n\tbox-shadow: 0 0 0.15rem rgba(255,255,255,0.8)\n\n\t&::after\n\t\tcontent: \" \"\n\t\tposition: absolute\n\t\tborder-style: solid\n\t\tborder-width: 5px\n\n\t&.arrow-left\n\t\t&::after\n\t\t\tmargin-top: -5px\n\t\t\ttop: 50%\n\t\t\tright: 100%\n\t\t\tborder-color: transparent black transparent transparent\n\n\t&.arrow-right\n\t\t&::after\n\t\t\tmargin-top: -5px\n\t\t\ttop: 50%\n\t\t\tleft: 100%\n\t\t\tborder-color: transparent transparent transparent black\n\n\t&.arrow-top\n\t\t&::after\n\t\t\tmargin-left: -5px\n\t\t\tleft: 50%\n\t\t\tbottom: 100%\n\t\t\tborder-color: transparent transparent black transparent\n\n\t&.arrow-bottom\n\t\t&::after\n\t\t\tmargin-left: -5px\n\t\t\tleft: 50%\n\t\t\ttop: 100%\n\t\t\tborder-color: black transparent transparent transparent\n\n\t// &::before\n\t// content: ''\n\t// display: inline-block\n\t// vertical-align: middle\n\t// -webkit-transform: rotate(360deg)\n\t// border-style: solid\n\t// border-width: .5rem .5rem .5rem 0\n\t// border-color: transparent black transparent transparent\n\n@keyframes fadeInOpacity\n\t0%\n\t\topacity: 0\n\n\t100%\n\t\topacity: 1\n","import { Component, h, Host, JSX, Prop, State, Watch } from '@stencil/core';\n\nimport { Generic } from '@a11y-ui/core';\nimport { watchTooltipAlignment } from '../../types/button-link';\nimport { Alignment } from '../../types/props/alignment';\nimport { getDocument, nonce } from '../../utils/dev.utils';\nimport { watchString } from '../../utils/prop.validators';\n\n/**\n * API\n */\ntype RequiredProps = {\n\tlabel: string;\n};\ntype OptionalProps = {\n\talign: Alignment;\n\tid: string;\n};\nexport type Props = Generic.Element.Members<RequiredProps, OptionalProps>;\n\ntype RequiredStates = RequiredProps & OptionalProps;\ntype OptionalStates = unknown;\nexport type States = Generic.Element.Members<RequiredStates, OptionalStates>;\n\n@Component({\n\ttag: 'kol-tooltip',\n\tstyleUrls: {\n\t\tdefault: './style.sass',\n\t},\n\tshadow: false,\n})\nexport class KolTooltip implements Generic.Element.ComponentApi<RequiredProps, OptionalProps, RequiredStates, OptionalStates> {\n\t// - eslint-disable-next-line @stencil/own-props-must-be-private\n\tpublic hydrated = false; // TODO: Why?!\n\n\tprivate hostElement?: HTMLElement | null = null;\n\tprivate readonly childElements: HTMLElement[] = [];\n\tprivate tooltipElement?: HTMLKolBadgeElement;\n\n\tprivate alignTooltip = (): void => {\n\t\tconst target = this.childElements[0];\n\n\t\t// getBoundingClientRect is not defined in test suite\n\t\tif (process.env.NODE_ENV !== 'test') {\n\t\t\tconst clientRect = target.getBoundingClientRect();\n\n\t\t\tif (this.tooltipElement /* SSR instanceof HTMLElement */) {\n\t\t\t\tswitch (this.state._align) {\n\t\t\t\t\tcase 'top':\n\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\tthis.tooltipElement.style.left = `${clientRect.left + target.offsetWidth / 2 - this.tooltipElement.offsetWidth / 2}px`;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'left':\n\t\t\t\t\tcase 'right':\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.tooltipElement.style.top = `${clientRect.top + clientRect.height / 2 - this.tooltipElement.offsetHeight / 2}px`;\n\t\t\t\t}\n\t\t\t\tswitch (this.state._align) {\n\t\t\t\t\tcase 'left':\n\t\t\t\t\t\tthis.tooltipElement.style.left = `calc(${clientRect.left - this.tooltipElement.offsetWidth}px - 0.5em)`;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'right':\n\t\t\t\t\t\tthis.tooltipElement.style.left = `calc(${clientRect.right}px + 0.5em)`;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\tthis.tooltipElement.style.top = `calc(${clientRect.bottom}px + 0.5em)`;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'top':\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tthis.tooltipElement.style.top = `calc(${clientRect.top - this.tooltipElement.offsetHeight}px - 0.5em)`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate showTooltip = (): void => {\n\t\tif (this.tooltipElement /* SSR instanceof HTMLElement */) {\n\t\t\tthis.tooltipElement.style.setProperty('display', 'block');\n\t\t\tgetDocument().body.addEventListener('keyup', this.hideTooltipByEscape);\n\t\t\tthis.alignTooltip();\n\t\t\tthis.tooltipElement.style.setProperty('visibility', 'visible');\n\t\t\tdocument.addEventListener('scroll', this.alignTooltip);\n\t\t}\n\t};\n\n\tprivate hideTooltip = (): void => {\n\t\tif (this.tooltipElement /* SSR instanceof HTMLElement */) {\n\t\t\tthis.tooltipElement.style.setProperty('display', 'none');\n\t\t\tthis.tooltipElement.style.setProperty('visibility', 'hidden');\n\t\t\tdocument.removeEventListener('scroll', this.alignTooltip);\n\t\t}\n\t};\n\n\tprivate hideTooltipByEscape = (event: KeyboardEvent): void => {\n\t\tif (event.key === 'Escape') {\n\t\t\tgetDocument().body.removeEventListener('keyup', this.hideTooltipByEscape);\n\t\t\tthis.hideTooltip();\n\t\t}\n\t};\n\n\tprivate catchHostElement = (element: HTMLElement | null): void => {\n\t\tthis.hostElement = element;\n\t\tif (this.hostElement /* SSR instanceof HTMLElement */) {\n\t\t\tconst previousSibling = this.hostElement.previousElementSibling;\n\t\t\tif (previousSibling /* SSR instanceof HTMLElement */) {\n\t\t\t\tpreviousSibling.removeEventListener('mouseover', this.showTooltip);\n\t\t\t\tpreviousSibling.addEventListener('mouseover', this.showTooltip);\n\t\t\t\tpreviousSibling.removeEventListener('focus', this.showTooltip);\n\t\t\t\tpreviousSibling.addEventListener('focus', this.showTooltip);\n\t\t\t\tpreviousSibling.removeEventListener('mouseout', this.hideTooltip);\n\t\t\t\tpreviousSibling.addEventListener('mouseout', this.hideTooltip);\n\t\t\t\tpreviousSibling.removeEventListener('blur', this.hideTooltip);\n\t\t\t\tpreviousSibling.addEventListener('blur', this.hideTooltip);\n\t\t\t\tthis.childElements.push(previousSibling as HTMLElement);\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate catchTooltipElement = (element?: HTMLKolBadgeElement): void => {\n\t\tthis.tooltipElement = element;\n\t};\n\n\tpublic render(): JSX.Element {\n\t\tconst timeout = setTimeout(() => {\n\t\t\tclearTimeout(timeout);\n\t\t\tthis.alignTooltip();\n\t\t}, 250);\n\t\treturn (\n\t\t\t<Host ref={this.catchHostElement}>\n\t\t\t\t{this.state._label !== '' && (\n\t\t\t\t\t<kol-badge\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t'arrow-bottom': this.state._align === 'top',\n\t\t\t\t\t\t\t'arrow-left': this.state._align === 'right',\n\t\t\t\t\t\t\t'arrow-top': this.state._align === 'bottom',\n\t\t\t\t\t\t\t'arrow-right': this.state._align === 'left',\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tid={this.state._id}\n\t\t\t\t\t\tref={this.catchTooltipElement}\n\t\t\t\t\t\t_color={{\n\t\t\t\t\t\t\tbackgroundColor: '#333',\n\t\t\t\t\t\t\tcolor: '#ddd',\n\t\t\t\t\t\t}}\n\t\t\t\t\t\t_label={this.state._label}\n\t\t\t\t\t></kol-badge>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t);\n\t}\n\n\t/**\n\t * Gibt an, ob der Tooltip oben, rechts, unten oder links angezeigt werden soll.\n\t */\n\t@Prop() public _align?: Alignment = 'top';\n\n\t/**\n\t * Gibt die ID an, wenn z.B. Aria-Labelledby (Link) verwendet wird.\n\t */\n\t@Prop() public _id?: string;\n\n\t/**\n\t * Das Label gibt an, welcher Text in dem Tooltip beim Fokussieren oder Maus-drüberfahren angezeigt wird.\n\t */\n\t@Prop() public _label!: string;\n\n\t/**\n\t * @see: components/abbr/component.tsx (@State)\n\t */\n\t@State() public state: States = {\n\t\t_align: 'top',\n\t\t_id: nonce(),\n\t\t_label: '',\n\t};\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_align')\n\tpublic validateAlign(value?: Alignment): void {\n\t\twatchTooltipAlignment(this, '_align', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_id')\n\tpublic validateId(value?: string): void {\n\t\twatchString(this, '_id', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_label')\n\tpublic validateLabel(value?: string): void {\n\t\twatchString(this, '_label', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (componentWillLoad)\n\t */\n\tpublic componentWillLoad(): void {\n\t\tthis.validateAlign(this._align);\n\t\tthis.validateId(this._id);\n\t\tthis.validateLabel(this._label);\n\t\tthis.hydrated = true;\n\t}\n}\n"],"mappings":";;;oSAAA,MAAMA,EAAkB,o+B,MC+BXC,EAAU,M,yBAEfC,KAAAC,SAAW,MAEVD,KAAAE,YAAmC,KAC1BF,KAAAG,cAA+B,GAGxCH,KAAAI,aAAe,KACtB,MAAMC,EAASL,KAAKG,cAAc,GAGG,CACpC,MAAMG,EAAaD,EAAOE,wBAE1B,GAAIP,KAAKQ,eAAiD,CACzD,OAAQR,KAAKS,MAAMC,QAClB,IAAK,MACL,IAAK,SACJV,KAAKQ,eAAeG,MAAMC,KAAO,GAAGN,EAAWM,KAAOP,EAAOQ,YAAc,EAAIb,KAAKQ,eAAeK,YAAc,MACjH,MACD,IAAK,OACL,IAAK,QACL,QACCb,KAAKQ,eAAeG,MAAMG,IAAM,GAAGR,EAAWQ,IAAMR,EAAWS,OAAS,EAAIf,KAAKQ,eAAeQ,aAAe,MAEjH,OAAQhB,KAAKS,MAAMC,QAClB,IAAK,OACJV,KAAKQ,eAAeG,MAAMC,KAAO,QAAQN,EAAWM,KAAOZ,KAAKQ,eAAeK,yBAC/E,MACD,IAAK,QACJb,KAAKQ,eAAeG,MAAMC,KAAO,QAAQN,EAAWW,mBACpD,MACD,IAAK,SACJjB,KAAKQ,eAAeG,MAAMG,IAAM,QAAQR,EAAWY,oBACnD,MACD,IAAK,MACL,QACClB,KAAKQ,eAAeG,MAAMG,IAAM,QAAQR,EAAWQ,IAAMd,KAAKQ,eAAeQ,0B,IAM1EhB,KAAAmB,YAAc,KACrB,GAAInB,KAAKQ,eAAiD,CACzDR,KAAKQ,eAAeG,MAAMS,YAAY,UAAW,SACjDC,IAAcC,KAAKC,iBAAiB,QAASvB,KAAKwB,qBAClDxB,KAAKI,eACLJ,KAAKQ,eAAeG,MAAMS,YAAY,aAAc,WACpDK,SAASF,iBAAiB,SAAUvB,KAAKI,a,GAInCJ,KAAA0B,YAAc,KACrB,GAAI1B,KAAKQ,eAAiD,CACzDR,KAAKQ,eAAeG,MAAMS,YAAY,UAAW,QACjDpB,KAAKQ,eAAeG,MAAMS,YAAY,aAAc,UACpDK,SAASE,oBAAoB,SAAU3B,KAAKI,a,GAItCJ,KAAAwB,oBAAuBI,IAC9B,GAAIA,EAAMC,MAAQ,SAAU,CAC3BR,IAAcC,KAAKK,oBAAoB,QAAS3B,KAAKwB,qBACrDxB,KAAK0B,a,GAIC1B,KAAA8B,iBAAoBC,IAC3B/B,KAAKE,YAAc6B,EACnB,GAAI/B,KAAKE,YAA8C,CACtD,MAAM8B,EAAkBhC,KAAKE,YAAY+B,uBACzC,GAAID,EAAkD,CACrDA,EAAgBL,oBAAoB,YAAa3B,KAAKmB,aACtDa,EAAgBT,iBAAiB,YAAavB,KAAKmB,aACnDa,EAAgBL,oBAAoB,QAAS3B,KAAKmB,aAClDa,EAAgBT,iBAAiB,QAASvB,KAAKmB,aAC/Ca,EAAgBL,oBAAoB,WAAY3B,KAAK0B,aACrDM,EAAgBT,iBAAiB,WAAYvB,KAAK0B,aAClDM,EAAgBL,oBAAoB,OAAQ3B,KAAK0B,aACjDM,EAAgBT,iBAAiB,OAAQvB,KAAK0B,aAC9C1B,KAAKG,cAAc+B,KAAKF,E,IAKnBhC,KAAAmC,oBAAuBJ,IAC9B/B,KAAKQ,eAAiBuB,CAAO,E,YAkCM,M,oDAeJ,CAC/BrB,OAAQ,MACR0B,IAAKC,IACLC,OAAQ,G,CAjDFC,SACN,MAAMC,EAAUC,YAAW,KAC1BC,aAAaF,GACbxC,KAAKI,cAAc,GACjB,KACH,OACCuC,EAACC,EAAI,CAACC,IAAK7C,KAAK8B,kBACd9B,KAAKS,MAAM6B,SAAW,IACtBK,EAAA,aACCG,MAAO,CACN,eAAgB9C,KAAKS,MAAMC,SAAW,MACtC,aAAcV,KAAKS,MAAMC,SAAW,QACpC,YAAaV,KAAKS,MAAMC,SAAW,SACnC,cAAeV,KAAKS,MAAMC,SAAW,QAEtCqC,GAAI/C,KAAKS,MAAM2B,IACfS,IAAK7C,KAAKmC,oBACVa,OAAQ,CACPC,gBAAiB,OACjBC,MAAO,QAERZ,OAAQtC,KAAKS,MAAM6B,S,CAmCjBa,cAAcC,GACpBC,EAAsBrD,KAAM,SAAUoD,E,CAOhCE,WAAWF,GACjBG,EAAYvD,KAAM,MAAOoD,E,CAOnBI,cAAcJ,GACpBG,EAAYvD,KAAM,SAAUoD,E,CAMtBK,oBACNzD,KAAKmD,cAAcnD,KAAKU,QACxBV,KAAKsD,WAAWtD,KAAKoC,KACrBpC,KAAKwD,cAAcxD,KAAKsC,QACxBtC,KAAKC,SAAW,I"}
1
+ {"version":3,"names":["defaultStyleCss","KolTooltip","this","alignTooltip","previousSibling","clientRect","getBoundingClientRect","tooltipElement","state","_align","style","left","offsetWidth","top","height","offsetHeight","right","bottom","showTooltip","setProperty","getDocument","body","addEventListener","hideTooltipByEscape","document","hideTooltip","removeEventListener","event","key","addListeners","el","incrementOverFocusCount","decrementOverFocusCount","removeListeners","resyncListeners","catchHostElement","previousElementSibling","catchTooltipElement","overFocusCount","showOrHideTooltip","clearTimeout","overFocusTimeout","setTimeout","_id","nonce","_label","render","smartSetTimeout","h","Host","ref","class","id","_color","backgroundColor","color","validateAlign","value","watchTooltipAlignment","validateId","watchString","validateLabel","componentWillLoad","disconnectedCallback"],"sources":["./src/components/tooltip/style.sass?tag=kol-tooltip&mode=default","./src/components/tooltip/component.tsx"],"sourcesContent":["/*\n// @import ../style\n\nkol-badge,\n.tooltip /* fix sass formatter */\n\tfont-size: 1rem\n\tposition: fixed\n\t\t// position: absolute\n\t\t// position: relative\n\tanimation-name: fadeInOpacity\n\tanimation-iteration-count: 1\n\tanimation-timing-function: ease-in\n\tanimation-duration: .5s\n\tdisplay: none\n\tz-index: 1000\n\tmax-width: 300px\n\tbox-shadow: 0 0 0.15rem rgba(255,255,255,0.8)\n\n\t&::after\n\t\tcontent: \" \"\n\t\tposition: absolute\n\t\tborder-style: solid\n\t\tborder-width: 5px\n\n\t&.arrow-left\n\t\t&::after\n\t\t\tmargin-top: -5px\n\t\t\ttop: 50%\n\t\t\tright: 100%\n\t\t\tborder-color: transparent black transparent transparent\n\n\t&.arrow-right\n\t\t&::after\n\t\t\tmargin-top: -5px\n\t\t\ttop: 50%\n\t\t\tleft: 100%\n\t\t\tborder-color: transparent transparent transparent black\n\n\t&.arrow-top\n\t\t&::after\n\t\t\tmargin-left: -5px\n\t\t\tleft: 50%\n\t\t\tbottom: 100%\n\t\t\tborder-color: transparent transparent black transparent\n\n\t&.arrow-bottom\n\t\t&::after\n\t\t\tmargin-left: -5px\n\t\t\tleft: 50%\n\t\t\ttop: 100%\n\t\t\tborder-color: black transparent transparent transparent\n\n\t// &::before\n\t// content: ''\n\t// display: inline-block\n\t// vertical-align: middle\n\t// -webkit-transform: rotate(360deg)\n\t// border-style: solid\n\t// border-width: .5rem .5rem .5rem 0\n\t// border-color: transparent black transparent transparent\n\n@keyframes fadeInOpacity\n\t0%\n\t\topacity: 0\n\n\t100%\n\t\topacity: 1\n","import { Component, h, Host, JSX, Prop, State, Watch } from '@stencil/core';\n\nimport { Generic } from '@a11y-ui/core';\nimport { watchTooltipAlignment } from '../../types/button-link';\nimport { Alignment } from '../../types/props/alignment';\nimport { getDocument, nonce } from '../../utils/dev.utils';\nimport { watchString } from '../../utils/prop.validators';\nimport { smartSetTimeout } from '../../utils/reuse';\n\n/**\n * API\n */\ntype RequiredProps = {\n\tid: string;\n\tlabel: string;\n};\ntype OptionalProps = {\n\talign: Alignment;\n};\nexport type Props = Generic.Element.Members<RequiredProps, OptionalProps>;\n\ntype RequiredStates = RequiredProps & OptionalProps;\ntype OptionalStates = unknown;\nexport type States = Generic.Element.Members<RequiredStates, OptionalStates>;\n\n@Component({\n\ttag: 'kol-tooltip',\n\tstyleUrls: {\n\t\tdefault: './style.sass',\n\t},\n\tshadow: false,\n})\nexport class KolTooltip implements Generic.Element.ComponentApi<RequiredProps, OptionalProps, RequiredStates, OptionalStates> {\n\tprivate previousSibling?: HTMLElement | null;\n\tprivate tooltipElement?: HTMLKolBadgeElement;\n\n\tprivate alignTooltip = (): void => {\n\t\t// getBoundingClientRect is not defined in test suite\n\t\tif (process.env.NODE_ENV !== 'test') {\n\t\t\tif (this.previousSibling /* SSR instanceof HTMLElement */) {\n\t\t\t\tconst clientRect = this.previousSibling.getBoundingClientRect();\n\t\t\t\tif (this.tooltipElement /* SSR instanceof HTMLElement */) {\n\t\t\t\t\tswitch (this.state._align) {\n\t\t\t\t\t\tcase 'top':\n\t\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\t\tthis.tooltipElement.style.left = `${clientRect.left + this.previousSibling.offsetWidth / 2 - this.tooltipElement.offsetWidth / 2}px`;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'left':\n\t\t\t\t\t\tcase 'right':\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tthis.tooltipElement.style.top = `${clientRect.top + clientRect.height / 2 - this.tooltipElement.offsetHeight / 2}px`;\n\t\t\t\t\t}\n\t\t\t\t\tswitch (this.state._align) {\n\t\t\t\t\t\tcase 'left':\n\t\t\t\t\t\t\tthis.tooltipElement.style.left = `calc(${clientRect.left - this.tooltipElement.offsetWidth}px - 0.5em)`;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'right':\n\t\t\t\t\t\t\tthis.tooltipElement.style.left = `calc(${clientRect.right}px + 0.5em)`;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'bottom':\n\t\t\t\t\t\t\tthis.tooltipElement.style.top = `calc(${clientRect.bottom}px + 0.5em)`;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'top':\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tthis.tooltipElement.style.top = `calc(${clientRect.top - this.tooltipElement.offsetHeight}px - 0.5em)`;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate showTooltip = (): void => {\n\t\tif (this.tooltipElement /* SSR instanceof HTMLElement */) {\n\t\t\tthis.tooltipElement.style.setProperty('display', 'block');\n\t\t\tgetDocument().body.addEventListener('keyup', this.hideTooltipByEscape);\n\t\t\tthis.alignTooltip();\n\t\t\tthis.tooltipElement.style.setProperty('visibility', 'visible');\n\t\t\tdocument.addEventListener('scroll', this.alignTooltip);\n\t\t}\n\t};\n\n\tprivate hideTooltip = (): void => {\n\t\tif (this.tooltipElement /* SSR instanceof HTMLElement */) {\n\t\t\tthis.tooltipElement.style.setProperty('display', 'none');\n\t\t\tthis.tooltipElement.style.setProperty('visibility', 'hidden');\n\t\t\tdocument.removeEventListener('scroll', this.alignTooltip);\n\t\t}\n\t};\n\n\tprivate hideTooltipByEscape = (event: KeyboardEvent): void => {\n\t\tif (event.key === 'Escape') {\n\t\t\tgetDocument().body.removeEventListener('keyup', this.hideTooltipByEscape);\n\t\t\tthis.hideTooltip();\n\t\t}\n\t};\n\n\tprivate addListeners = (el: Element): void => {\n\t\tel.addEventListener('mouseover', this.incrementOverFocusCount);\n\t\tel.addEventListener('focus', this.incrementOverFocusCount);\n\t\tel.addEventListener('mouseout', this.decrementOverFocusCount);\n\t\tel.addEventListener('blur', this.decrementOverFocusCount);\n\t};\n\n\tprivate removeListeners = (el: Element): void => {\n\t\tel.removeEventListener('mouseover', this.incrementOverFocusCount);\n\t\tel.removeEventListener('focus', this.incrementOverFocusCount);\n\t\tel.removeEventListener('mouseout', this.decrementOverFocusCount);\n\t\tel.removeEventListener('blur', this.decrementOverFocusCount);\n\t};\n\n\tprivate resyncListeners = (el: Element): void => {\n\t\tthis.removeListeners(el);\n\t\tthis.addListeners(el);\n\t};\n\n\tprivate catchHostElement = (el: HTMLElement | null): void => {\n\t\tif (el /* SSR instanceof HTMLElement */) {\n\t\t\tthis.previousSibling = el.previousElementSibling as HTMLElement | null;\n\t\t\tif (this.previousSibling /* SSR instanceof HTMLElement */) {\n\t\t\t\tthis.resyncListeners(this.previousSibling);\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate catchTooltipElement = (el?: HTMLKolBadgeElement): void => {\n\t\tthis.tooltipElement = el;\n\t\tif (this.tooltipElement /* SSR instanceof HTMLElement */) {\n\t\t\tthis.resyncListeners(this.tooltipElement);\n\t\t}\n\t};\n\n\tpublic render(): JSX.Element {\n\t\tsmartSetTimeout(() => {\n\t\t\tthis.alignTooltip();\n\t\t\tsmartSetTimeout(this.alignTooltip, 750);\n\t\t}, 250);\n\t\treturn (\n\t\t\t<Host ref={this.catchHostElement}>\n\t\t\t\t{this.state._label !== '' && (\n\t\t\t\t\t<kol-badge\n\t\t\t\t\t\tclass={{\n\t\t\t\t\t\t\t'arrow-bottom': this.state._align === 'top',\n\t\t\t\t\t\t\t'arrow-left': this.state._align === 'right',\n\t\t\t\t\t\t\t'arrow-top': this.state._align === 'bottom',\n\t\t\t\t\t\t\t'arrow-right': this.state._align === 'left',\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tid={this.state._id}\n\t\t\t\t\t\tref={this.catchTooltipElement}\n\t\t\t\t\t\t_color={{\n\t\t\t\t\t\t\tbackgroundColor: '#333',\n\t\t\t\t\t\t\tcolor: '#ddd',\n\t\t\t\t\t\t}}\n\t\t\t\t\t\t_label={this.state._label}\n\t\t\t\t\t></kol-badge>\n\t\t\t\t)}\n\t\t\t</Host>\n\t\t);\n\t}\n\n\t/**\n\t * Gibt an, ob der Tooltip oben, rechts, unten oder links angezeigt werden soll.\n\t */\n\t@Prop() public _align?: Alignment = 'top';\n\n\t/**\n\t * Gibt die ID an, wenn z.B. Aria-Labelledby (Link) verwendet wird.\n\t */\n\t@Prop() public _id!: string;\n\n\t/**\n\t * Das Label gibt an, welcher Text in dem Tooltip beim Fokussieren oder Maus-drüberfahren angezeigt wird.\n\t */\n\t@Prop() public _label!: string;\n\n\t/**\n\t * @see: components/abbr/component.tsx (@State)\n\t */\n\t@State() public state: States = {\n\t\t_align: 'top',\n\t\t_id: nonce(),\n\t\t_label: '',\n\t};\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_align')\n\tpublic validateAlign(value?: Alignment): void {\n\t\twatchTooltipAlignment(this, '_align', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_id')\n\tpublic validateId(value?: string): void {\n\t\twatchString(this, '_id', value);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (@Watch)\n\t */\n\t@Watch('_label')\n\tpublic validateLabel(value?: string): void {\n\t\twatchString(this, '_label', value);\n\t}\n\n\tprivate overFocusCount = 0;\n\tprivate overFocusTimeout?: ReturnType<typeof setTimeout>;\n\n\tprivate incrementOverFocusCount = (): void => {\n\t\tthis.overFocusCount++;\n\t\tthis.showOrHideTooltip();\n\t};\n\n\tprivate decrementOverFocusCount = (): void => {\n\t\tthis.overFocusCount--;\n\t\tthis.showOrHideTooltip();\n\t};\n\n\tprivate showOrHideTooltip = (): void => {\n\t\tclearTimeout(this.overFocusTimeout);\n\t\tthis.overFocusTimeout = setTimeout(() => {\n\t\t\tclearTimeout(this.overFocusTimeout);\n\t\t\tif (this.overFocusCount > 0) {\n\t\t\t\tthis.showTooltip();\n\t\t\t} else {\n\t\t\t\tthis.hideTooltip();\n\t\t\t}\n\t\t}, 250);\n\t};\n\n\t/**\n\t * @see: components/abbr/component.tsx (componentWillLoad)\n\t */\n\tpublic componentWillLoad(): void {\n\t\tthis.validateAlign(this._align);\n\t\tthis.validateId(this._id);\n\t\tthis.validateLabel(this._label);\n\t}\n\n\t/**\n\t * @see: components/abbr/component.tsx (componentDidLoad)\n\t */\n\tpublic disconnectedCallback(): void {\n\t\tif (this.previousSibling /* SSR instanceof HTMLElement */) {\n\t\t\tthis.removeListeners(this.previousSibling);\n\t\t}\n\t\tif (this.tooltipElement /* SSR instanceof HTMLElement */) {\n\t\t\tthis.removeListeners(this.tooltipElement);\n\t\t}\n\t}\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * KoliBri - The accessible HTML-Standard
3
3
  */
4
- import{e}from"./a11y.tipps-ff5a1a99.js";import{w as a}from"./prop.validators-ceeab1fe.js";import{c as r}from"./validator-8ee8737c.js";const i=(a,i,t,s)=>{const l=i.has("_ariaLabel")?i.get("_ariaLabel"):t.state._ariaLabel;if("string"==typeof l){const a=i.has("_label")?i.get("_label"):t.state._label;!1===r(a,l)&&("_ariaLabel"===s?i.set("_label",l):i.set("_ariaLabel",a),e("Das abweichende Aria-Label am Schalter ist nicht barrierefrei. Ein abweichendes Aria-Label muss aus Gründern der Barrierefreiheit für die Sprachsteuerung mit dem Label-Text beginnen."))}},s=(e,r)=>{a(e,"_ariaLabel",r,{hooks:{beforePatch:i}})},t=(e,r)=>{a(e,"_label",r,{hooks:{beforePatch:i},required:!0})};export{t as a,s as v};
4
+ import{e}from"./a11y.tipps-ff5a1a99.js";import{w as a}from"./prop.validators-ceeab1fe.js";import{c as r}from"./validator-2e4f8df6.js";const i=(a,i,t,s)=>{const l=i.has("_ariaLabel")?i.get("_ariaLabel"):t.state._ariaLabel;if("string"==typeof l){const a=i.has("_label")?i.get("_label"):t.state._label;!1===r(a,l)&&("_ariaLabel"===s?i.set("_label",l):i.set("_ariaLabel",a),e("Das abweichende Aria-Label am Schalter ist nicht barrierefrei. Ein abweichendes Aria-Label muss aus Gründern der Barrierefreiheit für die Sprachsteuerung mit dem Label-Text beginnen."))}},s=(e,r)=>{a(e,"_ariaLabel",r,{hooks:{beforePatch:i}})},t=(e,r)=>{a(e,"_label",r,{hooks:{beforePatch:i},required:!0})};export{t as a,s as v};
@@ -0,0 +1,4 @@
1
+ /*!
2
+ * KoliBri - The accessible HTML-Standard
3
+ */
4
+ import{i as o}from"./validator-2e4f8df6.js";const s=(s,t)=>{o(s)&&s&&(s.focus=o=>null==t?void 0:t.focus(o))},t=(o,s)=>{const t=setTimeout((()=>{clearTimeout(t),o()}),s)};export{s as p,t as s};
@@ -0,0 +1 @@
1
+ {"version":3,"names":["propergateFocus","host","ref","isObject","focus","ops","smartSetTimeout","cb","delay","timeout","setTimeout","clearTimeout"],"sources":["./src/utils/reuse.ts"],"sourcesContent":["import { isObject } from './validator';\n\nexport const propergateFocus = <H extends HTMLElement, R extends HTMLElement>(host?: H, ref?: R) => {\n\tif (isObject(host) && host) {\n\t\thost.focus = (ops: FocusOptions) => ref?.focus(ops);\n\t}\n};\n\n/**\n * If you need a tiny setTimeout with clearTimeout, you can\n * use this compact implementation.\n *\n * @param cb Callback with the code to run\n * @param delay Timeout delay\n */\n// ts-prune-ignore-next\nexport const smartSetTimeout = (cb: () => void, delay?: number) => {\n\tconst timeout = setTimeout(() => {\n\t\tclearTimeout(timeout);\n\t\tcb();\n\t}, delay);\n};\n"],"mappings":";;;kDAEaA,EAAkB,CAA+CC,EAAUC,KACvF,GAAIC,EAASF,IAASA,EAAM,CAC3BA,EAAKG,MAASC,GAAsBH,IAAG,MAAHA,SAAG,SAAHA,EAAKE,MAAMC,E,SAYpCC,EAAkB,CAACC,EAAgBC,KAC/C,MAAMC,EAAUC,YAAW,KAC1BC,aAAaF,GACbF,GAAI,GACFC,EAAM,S"}
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * KoliBri - The accessible HTML-Standard
3
3
  */
4
- import{b as o,e as t}from"./a11y.tipps-ff5a1a99.js";import{o as i,p as n,a as e,d as a}from"./prop.validators-ceeab1fe.js";import{a as l,b as s,i as c}from"./validator-8ee8737c.js";const r=(t,o,e)=>{c(e)?t[o]=e:l(e,1)&&(t[o]={icon:e})},d=(t,o)=>{let e={};if(l(t,1))if("right"===o)e={right:{icon:t}};else e={left:{icon:t}};else"object"==typeof t&&null!==t&&(r(e,"top",t.top),r(e,"right",t.right),r(e,"bottom",t.bottom),r(e,"left",t.left));return e},f=t=>{var o,e,i,n,l,a,r;if(null===(o=t.nextState)||void 0===o?void 0:o.has("_icon")){const o=null===(e=t.nextState)||void 0===e?void 0:e.get("_icon"),l=(null===(i=t.nextState)||void 0===i?void 0:i.get("_iconAlign"))||t.state._iconAlign;null===(n=t.nextState)||void 0===n||n.set("_icon",d(o,l))}else if(null===(l=t.nextState)||void 0===l?void 0:l.has("_iconAlign")){const o=t.state._iconAlign;null===(a=t.nextState)||void 0===a||a.set("_icon",{[o]:void 0,[null===(r=t.nextState)||void 0===r?void 0:r.get("_iconAlign")]:t.state._icon[o]})}},u=t=>"object"==typeof t&&null!==t&&(void 0===t.style||s(t.style))&&l(t.icon,1),h=(t,o)=>{i(o,(()=>{try{o=n(o)}catch(t){}e(t,"_icon",(t=>null===t||l(t,1)||"object"==typeof t&&null!==t&&(l(t.left,1)||u(t.left)||l(t.right,1)||u(t.right)||l(t.top,1)||u(t.top)||l(t.bottom,1)||u(t.bottom))),new Set(["KoliBriIcon"]),o,{hooks:{beforePatch:(o,e)=>{null===o&&e.set("_icon",{}),f(t)}},required:!0})}))},p=(t,i)=>{o("Das Property _icon-align bzw. _iconAlign ist veraltet. Die Ausrichtung der Icon's kann jetzt direkt über das _icon-Property vorgenommen werden. (v1.1.10: https://public-ui.github.io/?path=/story/backlog-und-changelog--page)"),e(t,"_iconAlign",(t=>"left"===t||"right"===t),new Set(["Alignment {left, right, top, bottom}"]),i,{hooks:{beforePatch:()=>{f(t)}}})},v={hooks:{afterPatch:o=>{-1!==o&&0!==o&&t("Don’t Use Tabindex Greater than 0: https://adrianroselli.com/2014/11/dont-use-tabindex-greater-than-0.html")}}},g=(t,o)=>{a(t,"_tabIndex",o,v)};export{h as a,u as i,g as v,p as w};
4
+ import{b as o,e as t}from"./a11y.tipps-ff5a1a99.js";import{o as i,p as n,a as e,d as a}from"./prop.validators-ceeab1fe.js";import{a as l,b as s,i as c}from"./validator-2e4f8df6.js";const r=(t,o,e)=>{c(e)?t[o]=e:l(e,1)&&(t[o]={icon:e})},d=(t,o)=>{let e={};if(l(t,1))if("right"===o)e={right:{icon:t}};else e={left:{icon:t}};else"object"==typeof t&&null!==t&&(r(e,"top",t.top),r(e,"right",t.right),r(e,"bottom",t.bottom),r(e,"left",t.left));return e},f=t=>{var o,e,i,n,l,a,r;if(null===(o=t.nextState)||void 0===o?void 0:o.has("_icon")){const o=null===(e=t.nextState)||void 0===e?void 0:e.get("_icon"),l=(null===(i=t.nextState)||void 0===i?void 0:i.get("_iconAlign"))||t.state._iconAlign;null===(n=t.nextState)||void 0===n||n.set("_icon",d(o,l))}else if(null===(l=t.nextState)||void 0===l?void 0:l.has("_iconAlign")){const o=t.state._iconAlign;null===(a=t.nextState)||void 0===a||a.set("_icon",{[o]:void 0,[null===(r=t.nextState)||void 0===r?void 0:r.get("_iconAlign")]:t.state._icon[o]})}},u=t=>"object"==typeof t&&null!==t&&(void 0===t.style||s(t.style))&&l(t.icon,1),h=(t,o)=>{i(o,(()=>{try{o=n(o)}catch(t){}e(t,"_icon",(t=>null===t||l(t,1)||"object"==typeof t&&null!==t&&(l(t.left,1)||u(t.left)||l(t.right,1)||u(t.right)||l(t.top,1)||u(t.top)||l(t.bottom,1)||u(t.bottom))),new Set(["KoliBriIcon"]),o,{hooks:{beforePatch:(o,e)=>{null===o&&e.set("_icon",{}),f(t)}},required:!0})}))},p=(t,i)=>{o("Das Property _icon-align bzw. _iconAlign ist veraltet. Die Ausrichtung der Icon's kann jetzt direkt über das _icon-Property vorgenommen werden. (v1.1.10: https://public-ui.github.io/?path=/story/backlog-und-changelog--page)"),e(t,"_iconAlign",(t=>"left"===t||"right"===t),new Set(["Alignment {left, right, top, bottom}"]),i,{hooks:{beforePatch:()=>{f(t)}}})},v={hooks:{afterPatch:o=>{-1!==o&&0!==o&&t("Don’t Use Tabindex Greater than 0: https://adrianroselli.com/2014/11/dont-use-tabindex-greater-than-0.html")}}},g=(t,o)=>{a(t,"_tabIndex",o,v)};export{h as a,u as i,g as v,p as w};
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * KoliBri - The accessible HTML-Standard
3
3
  */
4
- const t=e=>"object"==typeof e&&null!==e,e=(e,t=0)=>"string"==typeof e&&e.length>=t,n=t=>{if("object"!=typeof t||null===t)return e(t,1);for(const n in t)if(!1===e(n,1))return!1;return!0},s=(e,t)=>0===t.length&&new RegExp(`^${e}`).test(t),o=(e,t)=>0===t.length||s(e,t),a=new Event("StateChange");export{a as S,e as a,n as b,o as c,t as i};
4
+ const t=e=>"object"==typeof e&&null!==e,e=(e,t=0)=>"string"==typeof e&&e.length>=t,n=t=>{if("object"!=typeof t||null===t)return e(t,1);for(const n in t)if(!1===e(n,1))return!1;return!0},s=(e,t)=>new RegExp(`^${e}`).test(t),o=(e,t)=>0===t.length||s(e,t),a=new Event("StateChange");export{a as S,e as a,n as b,o as c,t as i};
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isObject","value","isString","minLength","length","isStyle","style","property","isPrefixOf","prefix","text","RegExp","test","isEmptyOrPrefixOf","STATE_CHANGE_EVENT","Event"],"sources":["./src/utils/validator.ts"],"sourcesContent":["export const isObject = (value: unknown): boolean => typeof value === 'object' && value !== null;\n\nexport const isString = (value: unknown, minLength = 0): boolean => typeof value === 'string' && value.length >= minLength;\n\nexport const isStyle = (style?: Record<string, string>): boolean => {\n\tif (typeof style === 'object' && style !== null) {\n\t\tfor (const property in style) {\n\t\t\tif (isString(property, 1) === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn isString(style, 1);\n\t}\n\treturn true;\n};\n\n/**\n * Validate, if a text contains a prefix.\n */\nconst isPrefixOf = (prefix: string, text: string) => new RegExp(`^${prefix}`).test(text);\n\n/**\n * Validate, if a text is empty or contains a prefix.\n */\nexport const isEmptyOrPrefixOf = (prefix: string, text: string) => text.length === 0 || isPrefixOf(prefix, text);\n\n/**\n * Fix event instance for state changes.\n */\nexport const STATE_CHANGE_EVENT = new Event('StateChange');\n"],"mappings":";;;MAAaA,EAAYC,UAAmCA,IAAU,UAAYA,IAAU,K,MAE/EC,EAAW,CAACD,EAAgBE,EAAY,WAAsBF,IAAU,UAAYA,EAAMG,QAAUD,E,MAEpGE,EAAWC,IACvB,UAAWA,IAAU,UAAYA,IAAU,KAAM,CAChD,IAAK,MAAMC,KAAYD,EAAO,CAC7B,GAAIJ,EAASK,EAAU,KAAO,MAAO,CACpC,OAAO,K,OAGH,CACN,OAAOL,EAASI,EAAO,E,CAExB,OAAO,IAAI,EAMZ,MAAME,EAAa,CAACC,EAAgBC,IAAiB,IAAIC,OAAO,IAAIF,KAAUG,KAAKF,G,MAKtEG,EAAoB,CAACJ,EAAgBC,IAAiBA,EAAKN,SAAW,GAAKI,EAAWC,EAAQC,G,MAK9FI,EAAqB,IAAIC,MAAM,sB"}
@@ -2,35 +2,42 @@ import { JSX } from '../../stencil-public-runtime';
2
2
  import { Generic } from '@a11y-ui/core';
3
3
  import { Alignment } from '../../types/props/alignment';
4
4
  type RequiredProps = {
5
+ id: string;
5
6
  label: string;
6
7
  };
7
8
  type OptionalProps = {
8
9
  align: Alignment;
9
- id: string;
10
10
  };
11
11
  export type Props = Generic.Element.Members<RequiredProps, OptionalProps>;
12
12
  type RequiredStates = RequiredProps & OptionalProps;
13
13
  type OptionalStates = unknown;
14
14
  export type States = Generic.Element.Members<RequiredStates, OptionalStates>;
15
15
  export declare class KolTooltip implements Generic.Element.ComponentApi<RequiredProps, OptionalProps, RequiredStates, OptionalStates> {
16
- hydrated: boolean;
17
- private hostElement?;
18
- private readonly childElements;
16
+ private previousSibling?;
19
17
  private tooltipElement?;
20
18
  private alignTooltip;
21
19
  private showTooltip;
22
20
  private hideTooltip;
23
21
  private hideTooltipByEscape;
22
+ private addListeners;
23
+ private removeListeners;
24
+ private resyncListeners;
24
25
  private catchHostElement;
25
26
  private catchTooltipElement;
26
27
  render(): JSX.Element;
27
28
  _align?: Alignment;
28
- _id?: string;
29
+ _id: string;
29
30
  _label: string;
30
31
  state: States;
31
32
  validateAlign(value?: Alignment): void;
32
33
  validateId(value?: string): void;
33
34
  validateLabel(value?: string): void;
35
+ private overFocusCount;
36
+ private overFocusTimeout?;
37
+ private incrementOverFocusCount;
38
+ private decrementOverFocusCount;
39
+ private showOrHideTooltip;
34
40
  componentWillLoad(): void;
41
+ disconnectedCallback(): void;
35
42
  }
36
43
  export {};
@@ -2160,7 +2160,7 @@ export namespace Components {
2160
2160
  /**
2161
2161
  * Gibt die ID an, wenn z.B. Aria-Labelledby (Link) verwendet wird.
2162
2162
  */
2163
- "_id"?: string;
2163
+ "_id": string;
2164
2164
  /**
2165
2165
  * Das Label gibt an, welcher Text in dem Tooltip beim Fokussieren oder Maus-drüberfahren angezeigt wird.
2166
2166
  */
@@ -4674,7 +4674,7 @@ declare namespace LocalJSX {
4674
4674
  /**
4675
4675
  * Gibt die ID an, wenn z.B. Aria-Labelledby (Link) verwendet wird.
4676
4676
  */
4677
- "_id"?: string;
4677
+ "_id": string;
4678
4678
  /**
4679
4679
  * Das Label gibt an, welcher Text in dem Tooltip beim Fokussieren oder Maus-drüberfahren angezeigt wird.
4680
4680
  */
package/doc/tooltip.md CHANGED
@@ -28,7 +28,7 @@ Aus Sicht des Barrierefreiheitstests können Tooltips ignoriert werden, solange
28
28
  | Property | Attribute | Description | Type | Default |
29
29
  | --------------------- | --------- | ------------------------------------------------------------------------------------------------------ | ----------------------------------------------------- | ----------- |
30
30
  | `_align` | `_align` | Gibt an, ob der Tooltip oben, rechts, unten oder links angezeigt werden soll. | `"bottom" \| "left" \| "right" \| "top" \| undefined` | `'top'` |
31
- | `_id` | `_id` | Gibt die ID an, wenn z.B. Aria-Labelledby (Link) verwendet wird. | `string \| undefined` | `undefined` |
31
+ | `_id` _(required)_ | `_id` | Gibt die ID an, wenn z.B. Aria-Labelledby (Link) verwendet wird. | `string` | `undefined` |
32
32
  | `_label` _(required)_ | `_label` | Das Label gibt an, welcher Text in dem Tooltip beim Fokussieren oder Maus-drüberfahren angezeigt wird. | `string` | `undefined` |
33
33
 
34
34