@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.
- package/cheat-sheet.html +6 -6
- package/custom-elements.json +3 -3
- package/dist/cjs/{controller-8342e490.js → controller-3b86e1c6.js} +1 -1
- package/dist/cjs/{controller-8342e490.js.map → controller-3b86e1c6.js.map} +1 -1
- package/dist/cjs/{controller-d28e02c0.js → controller-3f64b13e.js} +1 -1
- package/dist/cjs/{controller-d28e02c0.js.map → controller-3f64b13e.js.map} +1 -1
- package/dist/cjs/{controller-37208c19.js → controller-9ecb5be4.js} +1 -1
- package/dist/cjs/{controller-37208c19.js.map → controller-9ecb5be4.js.map} +1 -1
- package/dist/cjs/{controller-fc8515bc.js → controller-c22d561c.js} +1 -1
- package/dist/cjs/{controller-fc8515bc.js.map → controller-c22d561c.js.map} +1 -1
- package/dist/cjs/kol-button-link.cjs.entry.js +1 -1
- package/dist/cjs/kol-button-wc_2.cjs.entry.js +1 -1
- package/dist/cjs/kol-button-wc_2.cjs.entry.js.map +1 -1
- package/dist/cjs/kol-button.cjs.entry.js +1 -1
- package/dist/cjs/kol-icon.cjs.entry.js.map +1 -1
- package/dist/cjs/kol-input-checkbox.cjs.entry.js +1 -1
- package/dist/cjs/kol-input-color.cjs.entry.js +1 -1
- package/dist/cjs/kol-input-date.cjs.entry.js +1 -1
- package/dist/cjs/kol-input-email.cjs.entry.js +1 -1
- package/dist/cjs/kol-input-file.cjs.entry.js +1 -1
- package/dist/cjs/kol-input-number.cjs.entry.js +1 -1
- package/dist/cjs/kol-input-password.cjs.entry.js +1 -1
- package/dist/cjs/kol-input-radio.cjs.entry.js +1 -1
- package/dist/cjs/kol-input-range.cjs.entry.js +1 -1
- package/dist/cjs/kol-input-text.cjs.entry.js +1 -1
- package/dist/cjs/kol-link-button.cjs.entry.js +1 -1
- package/dist/cjs/kol-link-wc.cjs.entry.js +1 -1
- package/dist/cjs/kol-link.cjs.entry.js +1 -1
- package/dist/cjs/kol-pagination.cjs.entry.js +1 -1
- package/dist/cjs/kol-select.cjs.entry.js +1 -1
- package/dist/cjs/kol-textarea.cjs.entry.js +1 -1
- package/dist/cjs/kol-tooltip.cjs.entry.js +1 -1
- package/dist/cjs/kol-tooltip.cjs.entry.js.map +1 -1
- package/dist/cjs/{label-88419619.js → label-370414db.js} +1 -1
- package/dist/cjs/{label-88419619.js.map → label-370414db.js.map} +1 -1
- package/dist/cjs/reuse-28825ead.js +4 -0
- package/dist/cjs/reuse-28825ead.js.map +1 -0
- package/dist/cjs/{tab-index-c69625a6.js → tab-index-954dd1d8.js} +1 -1
- package/dist/cjs/{tab-index-c69625a6.js.map → tab-index-954dd1d8.js.map} +1 -1
- package/dist/cjs/validator-953ea58f.js +4 -0
- package/dist/cjs/validator-953ea58f.js.map +1 -0
- package/dist/components/component.js +1 -1
- package/dist/components/component.js.map +1 -1
- package/dist/components/component2.js.map +1 -1
- package/dist/components/component3.js +1 -1
- package/dist/components/component3.js.map +1 -1
- package/dist/esm/{controller-8e33192f.js → controller-1362fa2f.js} +1 -1
- package/dist/esm/{controller-8e33192f.js.map → controller-1362fa2f.js.map} +1 -1
- package/dist/esm/{controller-46b28944.js → controller-c34d5da2.js} +1 -1
- package/dist/esm/{controller-46b28944.js.map → controller-c34d5da2.js.map} +1 -1
- package/dist/esm/{controller-9bcf44e5.js → controller-ce5dfb44.js} +1 -1
- package/dist/esm/{controller-9bcf44e5.js.map → controller-ce5dfb44.js.map} +1 -1
- package/dist/esm/{controller-1753b7f0.js → controller-f0f7cbc7.js} +1 -1
- package/dist/esm/{controller-1753b7f0.js.map → controller-f0f7cbc7.js.map} +1 -1
- package/dist/esm/kol-button-link.entry.js +1 -1
- package/dist/esm/kol-button-wc_2.entry.js +1 -1
- package/dist/esm/kol-button-wc_2.entry.js.map +1 -1
- package/dist/esm/kol-button.entry.js +1 -1
- package/dist/esm/kol-icon.entry.js.map +1 -1
- package/dist/esm/kol-input-checkbox.entry.js +1 -1
- package/dist/esm/kol-input-color.entry.js +1 -1
- package/dist/esm/kol-input-date.entry.js +1 -1
- package/dist/esm/kol-input-email.entry.js +1 -1
- package/dist/esm/kol-input-file.entry.js +1 -1
- package/dist/esm/kol-input-number.entry.js +1 -1
- package/dist/esm/kol-input-password.entry.js +1 -1
- package/dist/esm/kol-input-radio.entry.js +1 -1
- package/dist/esm/kol-input-range.entry.js +1 -1
- package/dist/esm/kol-input-text.entry.js +1 -1
- package/dist/esm/kol-link-button.entry.js +1 -1
- package/dist/esm/kol-link-wc.entry.js +1 -1
- package/dist/esm/kol-link.entry.js +1 -1
- package/dist/esm/kol-pagination.entry.js +1 -1
- package/dist/esm/kol-select.entry.js +1 -1
- package/dist/esm/kol-textarea.entry.js +1 -1
- package/dist/esm/kol-tooltip.entry.js +1 -1
- package/dist/esm/kol-tooltip.entry.js.map +1 -1
- package/dist/esm/{label-6c8f8ebb.js → label-a6e1b813.js} +1 -1
- package/dist/esm/{label-6c8f8ebb.js.map → label-a6e1b813.js.map} +1 -1
- package/dist/esm/reuse-2f7da8fc.js +4 -0
- package/dist/esm/reuse-2f7da8fc.js.map +1 -0
- package/dist/esm/{tab-index-4314d33e.js → tab-index-2f165a2f.js} +1 -1
- package/dist/esm/{tab-index-4314d33e.js.map → tab-index-2f165a2f.js.map} +1 -1
- package/dist/esm/validator-2e4f8df6.js +4 -0
- package/dist/esm/validator-2e4f8df6.js.map +1 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/LICENSE.txt → LICENSE.txt} +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/all.css +2597 -5174
- package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/all.min.css +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/brands.css +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/brands.min.css +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/fontawesome.css +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/fontawesome.min.css +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/regular.css +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/regular.min.css +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/solid.css +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/solid.min.css +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/svg-with-js.css +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/svg-with-js.min.css +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/v4-font-face.css +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/v4-font-face.min.css +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/v4-shims.css +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/v4-shims.min.css +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/v5-font-face.css +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/css → css}/v5-font-face.min.css +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/webfonts → webfonts}/fa-brands-400.ttf +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/webfonts → webfonts}/fa-brands-400.woff2 +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/webfonts → webfonts}/fa-regular-400.ttf +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/webfonts → webfonts}/fa-regular-400.woff2 +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/webfonts → webfonts}/fa-solid-900.ttf +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/webfonts → webfonts}/fa-solid-900.woff2 +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/webfonts → webfonts}/fa-v4compatibility.ttf +0 -0
- package/dist/kolibri/assets/fontawesome-free/{v6/webfonts → webfonts}/fa-v4compatibility.woff2 +0 -0
- package/dist/kolibri/assets/kreon/Kreon-VariableFont_wght.ttf +0 -0
- package/dist/kolibri/assets/kreon/OFL.txt +93 -0
- package/dist/kolibri/assets/kreon/README.txt +67 -0
- package/dist/kolibri/assets/kreon/static/Kreon-Bold.ttf +0 -0
- package/dist/kolibri/assets/kreon/static/Kreon-Light.ttf +0 -0
- package/dist/kolibri/assets/kreon/static/Kreon-Medium.ttf +0 -0
- package/dist/kolibri/assets/kreon/static/Kreon-Regular.ttf +0 -0
- package/dist/kolibri/assets/kreon/static/Kreon-SemiBold.ttf +0 -0
- package/dist/kolibri/assets/kreon/style.css +41 -0
- package/dist/kolibri/{controller-8e33192f.js → controller-1362fa2f.js} +1 -1
- package/dist/kolibri/{controller-8e33192f.js.map → controller-1362fa2f.js.map} +0 -0
- package/dist/kolibri/{controller-46b28944.js → controller-c34d5da2.js} +1 -1
- package/dist/kolibri/{controller-46b28944.js.map → controller-c34d5da2.js.map} +0 -0
- package/dist/kolibri/controller-ce5dfb44.js +4 -0
- package/dist/kolibri/{controller-9bcf44e5.js.map → controller-ce5dfb44.js.map} +1 -1
- package/dist/kolibri/{controller-1753b7f0.js → controller-f0f7cbc7.js} +1 -1
- package/dist/kolibri/{controller-1753b7f0.js.map → controller-f0f7cbc7.js.map} +0 -0
- package/dist/kolibri/kol-button-link.entry.js +1 -1
- package/dist/kolibri/kol-button-wc_2.entry.js +1 -1
- package/dist/kolibri/kol-button-wc_2.entry.js.map +1 -1
- package/dist/kolibri/kol-button.entry.js +1 -1
- package/dist/kolibri/kol-icon.entry.js.map +1 -1
- package/dist/kolibri/kol-input-checkbox.entry.js +1 -1
- package/dist/kolibri/kol-input-color.entry.js +1 -1
- package/dist/kolibri/kol-input-date.entry.js +1 -1
- package/dist/kolibri/kol-input-email.entry.js +1 -1
- package/dist/kolibri/kol-input-file.entry.js +1 -1
- package/dist/kolibri/kol-input-number.entry.js +1 -1
- package/dist/kolibri/kol-input-password.entry.js +1 -1
- package/dist/kolibri/kol-input-radio.entry.js +1 -1
- package/dist/kolibri/kol-input-range.entry.js +1 -1
- package/dist/kolibri/kol-input-text.entry.js +1 -1
- package/dist/kolibri/kol-link-button.entry.js +1 -1
- package/dist/kolibri/kol-link-wc.entry.js +1 -1
- package/dist/kolibri/kol-link-wc.entry.js.map +1 -1
- package/dist/kolibri/kol-link.entry.js +1 -1
- package/dist/kolibri/kol-pagination.entry.js +1 -1
- package/dist/kolibri/kol-select.entry.js +1 -1
- package/dist/kolibri/kol-textarea.entry.js +1 -1
- package/dist/kolibri/kol-tooltip.entry.js +1 -1
- package/dist/kolibri/kol-tooltip.entry.js.map +1 -1
- package/dist/kolibri/{label-6c8f8ebb.js → label-a6e1b813.js} +1 -1
- package/dist/kolibri/{label-6c8f8ebb.js.map → label-a6e1b813.js.map} +0 -0
- package/dist/kolibri/reuse-2f7da8fc.js +4 -0
- package/dist/kolibri/reuse-2f7da8fc.js.map +1 -0
- package/dist/kolibri/{tab-index-4314d33e.js → tab-index-2f165a2f.js} +1 -1
- package/dist/kolibri/{tab-index-4314d33e.js.map → tab-index-2f165a2f.js.map} +0 -0
- package/dist/kolibri/{validator-8ee8737c.js → validator-2e4f8df6.js} +1 -1
- package/dist/kolibri/validator-2e4f8df6.js.map +1 -0
- package/dist/types/components/tooltip/component.d.ts +12 -5
- package/dist/types/components.d.ts +2 -2
- package/doc/tooltip.md +1 -1
- package/jest-test-results.json +1 -1
- package/package.json +1 -1
- package/dist/cjs/reuse-d95dc094.js +0 -4
- package/dist/cjs/reuse-d95dc094.js.map +0 -1
- package/dist/cjs/validator-6f53d4a2.js +0 -4
- package/dist/cjs/validator-6f53d4a2.js.map +0 -1
- package/dist/esm/reuse-f9be4952.js +0 -4
- package/dist/esm/reuse-f9be4952.js.map +0 -1
- package/dist/esm/validator-8ee8737c.js +0 -4
- package/dist/esm/validator-8ee8737c.js.map +0 -1
- package/dist/kolibri/assets/fontawesome-free/v5/LICENSE.txt +0 -34
- package/dist/kolibri/assets/fontawesome-free/v5/css/all.css +0 -4616
- package/dist/kolibri/assets/fontawesome-free/v5/css/all.min.css +0 -5
- package/dist/kolibri/assets/fontawesome-free/v5/css/brands.css +0 -15
- package/dist/kolibri/assets/fontawesome-free/v5/css/brands.min.css +0 -5
- package/dist/kolibri/assets/fontawesome-free/v5/css/fontawesome.css +0 -4582
- package/dist/kolibri/assets/fontawesome-free/v5/css/fontawesome.min.css +0 -5
- package/dist/kolibri/assets/fontawesome-free/v5/css/regular.css +0 -15
- package/dist/kolibri/assets/fontawesome-free/v5/css/regular.min.css +0 -5
- package/dist/kolibri/assets/fontawesome-free/v5/css/solid.css +0 -16
- package/dist/kolibri/assets/fontawesome-free/v5/css/solid.min.css +0 -5
- package/dist/kolibri/assets/fontawesome-free/v5/css/svg-with-js.css +0 -371
- package/dist/kolibri/assets/fontawesome-free/v5/css/svg-with-js.min.css +0 -5
- package/dist/kolibri/assets/fontawesome-free/v5/css/v4-shims.css +0 -2172
- package/dist/kolibri/assets/fontawesome-free/v5/css/v4-shims.min.css +0 -5
- package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-brands-400.eot +0 -0
- package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-brands-400.svg +0 -3717
- package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-brands-400.ttf +0 -0
- package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-brands-400.woff +0 -0
- package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-brands-400.woff2 +0 -0
- package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-regular-400.eot +0 -0
- package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-regular-400.svg +0 -801
- package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-regular-400.ttf +0 -0
- package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-regular-400.woff +0 -0
- package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-regular-400.woff2 +0 -0
- package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-solid-900.eot +0 -0
- package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-solid-900.svg +0 -5034
- package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-solid-900.ttf +0 -0
- package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-solid-900.woff +0 -0
- package/dist/kolibri/assets/fontawesome-free/v5/webfonts/fa-solid-900.woff2 +0 -0
- package/dist/kolibri/controller-9bcf44e5.js +0 -4
- package/dist/kolibri/reuse-f9be4952.js +0 -4
- package/dist/kolibri/reuse-f9be4952.js.map +0 -1
- 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":"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"}
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
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":"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"}
|
|
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-
|
|
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};
|
|
File without changes
|
|
@@ -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-
|
|
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};
|
|
File without changes
|
|
@@ -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)=>
|
|
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
|
-
|
|
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
|
|
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"
|
|
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"
|
|
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`
|
|
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
|
|