@public-ui/hydrate 3.0.0 → 3.0.1-3b313a0f2df6c512e868df86f443d016defc56fa.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/index.js +136 -86
  2. package/dist/index.mjs +136 -86
  3. package/package.json +3 -3
package/dist/index.mjs CHANGED
@@ -2663,7 +2663,7 @@ const I=(t,e)=>s=>s(t,e),P$1=(t,e)=>s=>s(t,e,{append:!1}),$=()=>{const t=typeof
2663
2663
  .then(() => {
2664
2664
  // run your app or website
2665
2665
  })
2666
- .catch(console.warn);`));let o=n$1.A11yUi.THEMES.get(t);if(o||(o=new Map,n$1.A11yUi.THEMES.set(t,o)),a.append&&o.has(e)){const r=o.get(e);o.set(e,g(`${r}${s}`));}else o.set(e,g(s));},k=(t,e,s,a)=>T(t,e,s,a),T=(t,e,s,a)=>(E(t),typeof e=="object"&&e!==null&&Object.getOwnPropertyNames(e).forEach(o=>{const r=e[o],i=o.toLowerCase(),c=typeof a?.transformTagName=="function"&&!["GLOBAL","PROPERTIES"].includes(o)?a.transformTagName(i):o;typeof r=="string"&&r.length>0&&u$1(t,c.toUpperCase(),r,s);}),t);const w=new Set,W=/--[^;]+/g,q=/:/,J=typeof MutationObserver<"u";let v=()=>{};const X=(t,e)=>{let s=e.match(W);if(Array.isArray(s)){s=s.filter(o=>q.test(o));const a=document.createElement("style");a.innerHTML=`.${t} {${s.join(";")}}`,document.querySelector("head")?.appendChild(a);}w.add(t);},y=(t,e)=>{const s=n$1.A11yUi.THEMES.get(t);return s instanceof Map&&s.has(e)?s.get(e):""},Z$1=t=>{for(const e of Array.from(t.childNodes))if(e instanceof HTMLStyleElement&&e.tagName==="STYLE"&&e.dataset.themingFallback===void 0)t.removeChild(e);else break},ee=(t,e)=>{try{if(n$1.A11yUi.Theme?.mode==="ssr")throw new Error("SSR");const s=[];e.forEach(a=>{const o=new CSSStyleSheet;o.replaceSync(a),s.push(o);}),t.adoptedStyleSheets=s;}catch{[...e].reverse().forEach((a,o)=>{if(typeof a!="string"||a.length===0)return;const r=document.createElement("style");switch(r.dataset.themingFallback="",o){case 4:r.dataset.themingBaseA11y="";break;case 3:r.dataset.themingBaseGlobal="";break;case 2:r.dataset.themingBaseComponent="";break;case 1:r.dataset.themingCustomGlobal="";break;case 0:r.dataset.themingCustomComponent="";break;default:r.dataset.themingUnknown="";break}r.innerHTML=a,t.insertBefore(r,t.firstChild);});}},te=(t,e,s)=>{if(s!==!1){const a=[...Array.from(t.childNodes).filter(r=>r instanceof HTMLStyleElement&&r.tagName==="STYLE")];let o;try{o=[...Array.from(t.adoptedStyleSheets)];}catch{o=[];}s?.mode==="before"?(a.reverse().forEach(r=>e.unshift(r.innerHTML)),o.reverse().forEach(r=>e.unshift(Array.from(r.cssRules).map(i=>i.cssText).join("")))):s?.mode==="after"&&(a.forEach(r=>e.push(r.innerHTML)),o.forEach(r=>e.push(Array.from(r.cssRules).map(i=>i.cssText).join(""))));}},se=(t,e,s)=>{const a=e.name||"default";let o;try{if(t.shadowRoot===null)throw new Error("ShadowRoot is null");o=t.shadowRoot;}catch{o=t;}if(n$1.A11yUi.CSS_STYLE_CACHE.get(a)?.has(t.tagName))N(t,o,n$1.A11yUi.CSS_STYLE_CACHE.get(a)?.get(t.tagName),s);else {const r=y(a,"PROPERTIES"),i=y(a,"GLOBAL"),c=y(a,t.tagName);w.has(a)===!1&&X(a,i);const m=[r,i,c];te(o,m,e.encroachCss),e.cache===!0&&(n$1.A11yUi.CSS_STYLE_CACHE.has(a)===!1&&n$1.A11yUi.CSS_STYLE_CACHE.set(a,new Map),n$1.A11yUi.CSS_STYLE_CACHE.get(a)?.set(t.tagName,m)),N(t,o,m,s);}},N=(t,e,s,a)=>{const o=performance.now();if(Z$1(e),ee(e,s),H(t),a(),n$1.A11yUi.PERFORMANCE_MEASURES.has(t.tagName)){const r=n$1.A11yUi.PERFORMANCE_MEASURES.get(t.tagName);r.count+=1,r.totalTime+=performance.now()-o;}else n$1.A11yUi.PERFORMANCE_MEASURES.set(t.tagName,{count:1,totalTime:performance.now()-o});},L=t=>{const e=n$1.A11yUi.STYLING_TASK_QUEUE.get(t);if(e){const{resetCss:s,themeDetails:a}=e;se(t,a,s),H(t);}};const oe={attributes:!0,attributeFilter:[],childList:!1,subtree:!1},R=J?new MutationObserver((t,e)=>{for(const s of t){const a=s.target;a.classList.contains("hydrated")&&(L(a),e.observe(a,oe));}}):null;R&&(v=()=>{});n$1.A11yUi.IS_TEST_ENVIRONMENT&&(console.log("Test-Runner detected, disabling theme visibility delay."));const H=t=>{n$1.A11yUi.STYLING_TASK_QUEUE.delete(t),v();};class ie{Prefix;Key;Tag;createTheme=(e,s)=>P$1(e,s);createTranslation=(e,s)=>I(e,s);constructor(e,s,a){this.Prefix=e,this.Key=Object.getOwnPropertyNames(s),this.Tag=Object.getOwnPropertyNames(a);}}
2666
+ .catch(console.warn);`));let o=n$1.A11yUi.THEMES.get(t);if(o||(o=new Map,n$1.A11yUi.THEMES.set(t,o)),a.append&&o.has(e)){const r=o.get(e);o.set(e,g(`${r}${s}`));}else o.set(e,g(s));},k=(t,e,s,a)=>p(t,e,s,a),p=(t,e,s,a)=>(E(t),typeof e=="object"&&e!==null&&Object.getOwnPropertyNames(e).forEach(o=>{const r=e[o],i=o.toLowerCase(),c=typeof a?.transformTagName=="function"&&!["GLOBAL","PROPERTIES"].includes(o)?a.transformTagName(i):o;typeof r=="string"&&r.length>0&&u$1(t,c.toUpperCase(),r,s);}),t);const w=new Set,W=/--[^;]+/g,q=/:/,J=typeof MutationObserver<"u";let N=()=>{};const X=(t,e)=>{let s=e.match(W);if(Array.isArray(s)){s=s.filter(o=>q.test(o));const a=document.createElement("style");a.innerHTML=`.${t} {${s.join(";")}}`,document.querySelector("head")?.appendChild(a);}w.add(t);},y=(t,e)=>{const s=n$1.A11yUi.THEMES.get(t);return s instanceof Map&&s.has(e)?s.get(e):""},Z$1=t=>{for(const e of Array.from(t.childNodes))if(e instanceof HTMLStyleElement&&e.tagName==="STYLE"&&e.dataset.themingFallback===void 0)t.removeChild(e);else break},ee=(t,e)=>{try{if(n$1.A11yUi.Theme?.mode==="ssr")throw new Error("SSR");const s=[];e.forEach(a=>{const o=new CSSStyleSheet;o.replaceSync(a),s.push(o);}),t.adoptedStyleSheets=s;}catch{[...e].reverse().forEach((a,o)=>{if(typeof a!="string"||a.length===0)return;const r=document.createElement("style");switch(r.dataset.themingFallback="",o){case 4:r.dataset.themingBaseA11y="";break;case 3:r.dataset.themingBaseGlobal="";break;case 2:r.dataset.themingBaseComponent="";break;case 1:r.dataset.themingCustomGlobal="";break;case 0:r.dataset.themingCustomComponent="";break;default:r.dataset.themingUnknown="";break}r.innerHTML=a,t.insertBefore(r,t.firstChild);});}},te=(t,e,s)=>{if(s!==!1){const a=[...Array.from(t.childNodes).filter(r=>r instanceof HTMLStyleElement&&r.tagName==="STYLE")];let o;try{o=[...Array.from(t.adoptedStyleSheets)];}catch{o=[];}s?.mode==="before"?(a.reverse().forEach(r=>e.unshift(r.innerHTML)),o.reverse().forEach(r=>e.unshift(Array.from(r.cssRules).map(i=>i.cssText).join("")))):s?.mode==="after"&&(a.forEach(r=>e.push(r.innerHTML)),o.forEach(r=>e.push(Array.from(r.cssRules).map(i=>i.cssText).join(""))));}},se=(t,e,s)=>{const a=e.name||"default";let o;try{if(t.shadowRoot===null)throw new Error("ShadowRoot is null");o=t.shadowRoot;}catch{o=t;}if(n$1.A11yUi.CSS_STYLE_CACHE.get(a)?.has(t.tagName))v(t,o,n$1.A11yUi.CSS_STYLE_CACHE.get(a)?.get(t.tagName),s);else {const r=y(a,"PROPERTIES"),i=y(a,"GLOBAL"),c=y(a,t.tagName);w.has(a)===!1&&X(a,i);const m=[r,i,c];te(o,m,e.encroachCss),e.cache===!0&&(n$1.A11yUi.CSS_STYLE_CACHE.has(a)===!1&&n$1.A11yUi.CSS_STYLE_CACHE.set(a,new Map),n$1.A11yUi.CSS_STYLE_CACHE.get(a)?.set(t.tagName,m)),v(t,o,m,s);}},v=(t,e,s,a)=>{const o=performance.now();if(Z$1(e),ee(e,s),H(t),a(),n$1.A11yUi.PERFORMANCE_MEASURES.has(t.tagName)){const r=n$1.A11yUi.PERFORMANCE_MEASURES.get(t.tagName);r.count+=1,r.totalTime+=performance.now()-o;}else n$1.A11yUi.PERFORMANCE_MEASURES.set(t.tagName,{count:1,totalTime:performance.now()-o});},L=t=>{const e=n$1.A11yUi.STYLING_TASK_QUEUE.get(t);if(e){const{resetCss:s,themeDetails:a}=e;se(t,a,s),H(t);}};const oe={attributes:!0,attributeFilter:[],childList:!1,subtree:!1},R=J?new MutationObserver((t,e)=>{for(const s of t){const a=s.target;a.classList.contains("hydrated")&&(L(a),e.observe(a,oe));}}):null;R&&(N=()=>{});const H=t=>{n$1.A11yUi.STYLING_TASK_QUEUE.delete(t),N();};class ie{Prefix;Key;Tag;createTheme=(e,s)=>P$1(e,s);createTranslation=(e,s)=>I(e,s);constructor(e,s,a){this.Prefix=e,this.Key=Object.getOwnPropertyNames(s),this.Tag=Object.getOwnPropertyNames(a);}}
2667
2667
 
2668
2668
  var KeyEnum;
2669
2669
  (function (KeyEnum) {
@@ -4038,7 +4038,7 @@ const handleColorChange = (value) => {
4038
4038
  break;
4039
4039
  }
4040
4040
  case null:
4041
- Log.warn(`_color was empty or invalid (${JSON.stringify(value)})`, { forceLog: true });
4041
+ Log.warn(`_color was empty or invalid (${JSON.stringify(value)})`);
4042
4042
  colorContrast = createContrastColorPair({
4043
4043
  background: '#000',
4044
4044
  foreground: '#000',
@@ -4099,11 +4099,6 @@ const validateHasIconsWhenExpanded = (component, value) => {
4099
4099
  watchBoolean(component, '_hasIconsWhenExpanded', value);
4100
4100
  };
4101
4101
 
4102
- const headingVariantPropTypeOptions = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'strong'];
4103
- const validateHeadingVariant = (component, value) => {
4104
- watchValidator(component, `_variant`, (value) => typeof value === 'string' && headingVariantPropTypeOptions.includes(value), new Set([`KoliBriHeadingVariant {${headingVariantPropTypeOptions.join(', ')}`]), value);
4105
- };
4106
-
4107
4102
  const validateHideLabel = (component, value, options = {}) => {
4108
4103
  watchBoolean(component, '_hideLabel', value, options);
4109
4104
  };
@@ -4485,8 +4480,6 @@ const inputTextTypeOptions = ['text', 'search', 'url', 'tel'];
4485
4480
 
4486
4481
  const inputTypeOnOffOptions = ['on', 'off'];
4487
4482
 
4488
- const orientationOptions = ['horizontal', 'vertical'];
4489
-
4490
4483
  var KoliBriProgressVariantEnum;
4491
4484
  (function (KoliBriProgressVariantEnum) {
4492
4485
  KoliBriProgressVariantEnum["bar"] = "bar";
@@ -4620,10 +4613,9 @@ function getSubHeadlineTag(level) {
4620
4613
  return level === 1 ? 'span' : getHeadlineTag(level);
4621
4614
  }
4622
4615
  const KolHeadlineFc = (_a, children) => {
4623
- var { class: classNames, level = MIN_HEADING_LEVEL, variant } = _a, other = __rest(_a, ["class", "level", "variant"]);
4616
+ var { class: classNames, level = MIN_HEADING_LEVEL } = _a, other = __rest(_a, ["class", "level"]);
4624
4617
  const HeadlineTag = getHeadlineTag(level);
4625
- const finalVariant = variant || HeadlineTag;
4626
- return (hAsync(HeadlineTag, Object.assign({ class: clsx('kol-headline', `kol-headline--${finalVariant}`, classNames) }, other), children));
4618
+ return (hAsync(HeadlineTag, Object.assign({ class: clsx('kol-headline', `kol-headline--${HeadlineTag}`, classNames) }, other), children));
4627
4619
  };
4628
4620
  const KolSecondaryHeadlineFc = (_a, children) => {
4629
4621
  var { class: classNames, level = MIN_HEADING_LEVEL } = _a, other = __rest(_a, ["class", "level"]);
@@ -16120,7 +16112,7 @@ class KolBadge {
16120
16112
  const UNIQUE_LABELS = new Set();
16121
16113
  function addNavLabel(ariaLabel) {
16122
16114
  if (UNIQUE_LABELS.has(ariaLabel)) {
16123
- Log.error(`There already is a nav element with the label "${ariaLabel}"`, { forceLog: true });
16115
+ Log.warn(`There already is a nav element with the label "${ariaLabel}"`);
16124
16116
  }
16125
16117
  else {
16126
16118
  UNIQUE_LABELS.add(ariaLabel);
@@ -16928,8 +16920,6 @@ function getFormFieldProps(state) {
16928
16920
  hideLabel: state._hideLabel,
16929
16921
  hideMsg: state._hideMsg,
16930
16922
  touched: state._touched,
16931
- accessKey: state._accessKey,
16932
- shortKey: state._shortKey,
16933
16923
  };
16934
16924
  if ('_required' in state) {
16935
16925
  props.required = state._required;
@@ -16937,6 +16927,12 @@ function getFormFieldProps(state) {
16937
16927
  if ('_readOnly' in state) {
16938
16928
  props.readOnly = state._readOnly;
16939
16929
  }
16930
+ if ('_accessKey' in state) {
16931
+ props.accessKey = state._accessKey;
16932
+ }
16933
+ if ('_shortKey' in state) {
16934
+ props.shortKey = state._shortKey;
16935
+ }
16940
16936
  if ('_hasCounter' in state && '_currentLength' in state) {
16941
16937
  props.counter = state._hasCounter ? { currentLength: state._currentLength } : undefined;
16942
16938
  if (props.counter && '_maxLength' in state) {
@@ -17228,11 +17224,12 @@ function getInputProps(state, customSuggestions) {
17228
17224
  id: state._id,
17229
17225
  hideLabel: state._hideLabel,
17230
17226
  label: state._label,
17231
- accessKey: state._accessKey,
17232
17227
  disabled: state._disabled,
17233
17228
  name: state._name,
17234
17229
  ariaDescribedBy: ariaDescribedBy,
17235
17230
  };
17231
+ if ('_accessKey' in state)
17232
+ props.accessKey = state._accessKey;
17236
17233
  if ('_type' in state)
17237
17234
  props.type = state._type;
17238
17235
  if ('_value' in state)
@@ -18157,7 +18154,6 @@ class KolHeading {
18157
18154
  this._label = undefined;
18158
18155
  this._level = 0;
18159
18156
  this._secondaryHeadline = undefined;
18160
- this._variant = undefined;
18161
18157
  this.state = {
18162
18158
  _label: '',
18163
18159
  _level: 0,
@@ -18172,24 +18168,19 @@ class KolHeading {
18172
18168
  validateSecondaryHeadline(value) {
18173
18169
  watchString(this, '_secondaryHeadline', value);
18174
18170
  }
18175
- validateVariant(value) {
18176
- validateHeadingVariant(this, value);
18177
- }
18178
18171
  componentWillLoad() {
18179
18172
  this.validateLabel(this._label);
18180
18173
  this.validateLevel(this._level);
18181
18174
  this.validateSecondaryHeadline(this._secondaryHeadline);
18182
- this.validateVariant(this._variant);
18183
18175
  }
18184
18176
  render() {
18185
- const { _secondaryHeadline, _label, _level, _variant } = this.state;
18186
- return (hAsync(KolHeadingFc, { key: 'd1dd0a780ae7d78f46ef8e084617a1bb656d5af0', secondaryHeadline: _secondaryHeadline, level: _level, variant: _variant }, _label, hAsync("slot", { key: 'd00d1f029000cbda86b3b64ab461a06e449837ba', name: "expert", slot: "expert" })));
18177
+ const { _secondaryHeadline, _label, _level } = this.state;
18178
+ return (hAsync(KolHeadingFc, { key: '4acb20dadb12cf9f57642b5a3f686e48a69b7c3c', secondaryHeadline: _secondaryHeadline, level: _level }, _label, hAsync("slot", { key: '1b27358b50f7dc744d5a9d06321d63218c524e22', name: "expert", slot: "expert" })));
18187
18179
  }
18188
18180
  static get watchers() { return {
18189
18181
  "_label": ["validateLabel"],
18190
18182
  "_level": ["validateLevel"],
18191
- "_secondaryHeadline": ["validateSecondaryHeadline"],
18192
- "_variant": ["validateVariant"]
18183
+ "_secondaryHeadline": ["validateSecondaryHeadline"]
18193
18184
  }; }
18194
18185
  static get style() { return {
18195
18186
  default: KolHeadingDefaultStyle0
@@ -18201,7 +18192,6 @@ class KolHeading {
18201
18192
  "_label": [1],
18202
18193
  "_level": [2],
18203
18194
  "_secondaryHeadline": [1, "_secondary-headline"],
18204
- "_variant": [1],
18205
18195
  "state": [32]
18206
18196
  },
18207
18197
  "$listeners$": undefined,
@@ -18339,6 +18329,13 @@ class KolImage {
18339
18329
  }; }
18340
18330
  }
18341
18331
 
18332
+ const orientationPropTypeOptions = ['horizontal', 'vertical'];
18333
+ const validateOrientation = (component, value, defaultValue = 'horizontal') => {
18334
+ watchValidator(component, `_orientation`, (value) => typeof value === 'string' && orientationPropTypeOptions.includes(value), new Set([`KoliBriOrientation {${orientationPropTypeOptions.join(', ')}`]), value, {
18335
+ defaultValue,
18336
+ });
18337
+ };
18338
+
18342
18339
  const fillKeyOptionMap = (keyOptionMap, options, preKey = '') => {
18343
18340
  options.forEach((option, index) => {
18344
18341
  const key = `${preKey}-${index}`;
@@ -18385,9 +18382,7 @@ class InputRadioController extends InputCheckboxRadioController {
18385
18382
  this.component = component;
18386
18383
  }
18387
18384
  validateOrientation(value) {
18388
- watchValidator(this.component, '_orientation', (value) => typeof value === 'string' && orientationOptions.includes(value), new Set([`Orientation {${orientationOptions.join(', ')}`]), value, {
18389
- defaultValue: 'vertical',
18390
- });
18385
+ validateOrientation(this.component, value, 'vertical');
18391
18386
  }
18392
18387
  validateOptions(value) {
18393
18388
  validateOptions(this.component, value, {
@@ -18503,8 +18498,6 @@ const KolFieldControlFc = (props, children) => {
18503
18498
 
18504
18499
  function getFieldControlProps(state) {
18505
18500
  const props = {
18506
- accessKey: state._accessKey,
18507
- shortKey: state._shortKey,
18508
18501
  id: state._id,
18509
18502
  disabled: state._disabled,
18510
18503
  msg: convertMsgToInternMsg(state._msg),
@@ -18522,6 +18515,12 @@ function getFieldControlProps(state) {
18522
18515
  if ('_labelAlign' in state) {
18523
18516
  props.labelAlign = state._labelAlign;
18524
18517
  }
18518
+ if ('_accessKey' in state) {
18519
+ props.accessKey = state._accessKey;
18520
+ }
18521
+ if ('_shortKey' in state) {
18522
+ props.shortKey = state._shortKey;
18523
+ }
18525
18524
  return props;
18526
18525
  }
18527
18526
  const FieldControlStateWrapper = (_a, children) => {
@@ -18533,7 +18532,7 @@ const IconWrapperFc = (_a) => {
18533
18532
  var { class: classNames } = _a, other = __rest(_a, ["class"]);
18534
18533
  return hAsync(KolIconFc, Object.assign({ class: clsx('kol-checkbox__icon', classNames) }, other));
18535
18534
  };
18536
- const InputWrapperFc = (_a) => {
18535
+ const InputWrapperFc$1 = (_a) => {
18537
18536
  var { class: classNames } = _a, other = __rest(_a, ["class"]);
18538
18537
  return hAsync(InputFc, Object.assign({ class: clsx('kol-checkbox__input', classNames) }, other, { type: "checkbox" }));
18539
18538
  };
@@ -18552,7 +18551,7 @@ const CheckboxFc = (_a) => {
18552
18551
  };
18553
18552
  return (hAsync("label", Object.assign({ class: clsx('kol-checkbox', cssVariants, classNames) }, other),
18554
18553
  hAsync(IconWrapperFc, { label: "", icons: icon }),
18555
- hAsync(InputWrapperFc, Object.assign({}, inputProps))));
18554
+ hAsync(InputWrapperFc$1, Object.assign({}, inputProps))));
18556
18555
  };
18557
18556
 
18558
18557
  function getCheckboxProps(state, inputProps = {}) {
@@ -20719,7 +20718,50 @@ class KolInputPassword {
20719
20718
  }; }
20720
20719
  }
20721
20720
 
20722
- const defaultStyleCss$p = "/*\n * This file contains all rules for accessibility.\n */\n@layer kol-global {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44rem / var(--kolibri-root-font-size, 16));\n /*\n * No element should be used without a background and font color whose contrast ratio has\n * not been checked. By initially setting the background color to white and the font color\n * to black, the contrast ratio is ensured and explicit adjustment is forced.\n */\n background-color: white;\n color: black;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /*\n * All interactive elements should have a minimum size of rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n [role=button],\n button:not([role=link]) {\n min-height: var(--a11y-min-size);\n min-width: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n }\n}\n/**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n.visually-hidden {\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n height: calc(1rem / var(--kolibri-root-font-size, 16));\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: calc(1rem / var(--kolibri-root-font-size, 16));\n}\n\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n border: none;\n margin: 0;\n padding: 0;\n width: 100%;\n /* 100% needed for custom width from outside */\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n .badge-text-hint {\n background-color: lightgray;\n color: black;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n .kol-span {\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n display: grid;\n place-items: center;\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n }\n .kol-span__container {\n display: flex;\n place-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n .kol-span .kol-span__label--hide-label .kol-span__label {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled],\n [disabled]:focus {\n cursor: not-allowed;\n opacity: 0.5;\n outline: none;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@layer kol-component {\n :host {\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip {\n display: contents;\n }\n .kol-tooltip__floating {\n animation-duration: 0.25s;\n animation-iteration-count: 1;\n animation-name: fadeInOpacity;\n animation-timing-function: ease-in;\n box-sizing: border-box;\n display: none;\n position: fixed;\n visibility: hidden;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n max-width: 90vw;\n max-height: 90vh;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width);\n }\n .kol-tooltip__arrow {\n background-color: #fff;\n color: #000;\n height: calc(10rem / var(--kolibri-root-font-size, 16));\n position: absolute;\n transform: rotate(45deg);\n width: calc(10rem / var(--kolibri-root-font-size, 16));\n z-index: 999;\n }\n .kol-tooltip__content {\n background-color: #fff;\n color: #000;\n position: relative;\n z-index: 1000;\n }\n @keyframes fadeInOpacity {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n .kol-alert {\n display: grid;\n }\n .kol-alert__container {\n place-items: center;\n display: flex;\n }\n .kol-alert__container-content {\n flex-grow: 1;\n }\n .kol-alert__closer {\n /* Visible with forced colors */\n outline: transparent solid calc(1rem / var(--kolibri-root-font-size, 16));\n }\n}\n@layer kol-component {\n .kol-field-control {\n min-height: var(--a11y-min-size);\n display: grid;\n grid-template-columns: auto 1fr;\n grid-template-areas: \"input label\";\n grid-template-rows: auto;\n align-items: center;\n justify-content: left;\n }\n .kol-field-control:has(.kol-field-control__hint) {\n grid-template-columns: auto 1fr;\n grid-template-areas: \"input label\" \"hint hint\";\n grid-template-rows: auto auto;\n }\n .kol-field-control--label-align-left:not(.kol-field-control--hide-label) {\n grid-template-columns: 1fr auto;\n grid-template-areas: \"label input\";\n grid-template-rows: auto;\n }\n .kol-field-control--label-align-left:not(.kol-field-control--hide-label):has(.kol-field-control__hint) {\n grid-template-columns: 1fr auto;\n grid-template-areas: \"label input\" \"hint hint\";\n grid-template-rows: auto auto;\n }\n .kol-field-control__input {\n grid-area: input;\n display: flex;\n min-height: var(--a11y-min-size);\n align-items: center;\n }\n .kol-field-control__label {\n align-items: center;\n cursor: pointer;\n display: flex;\n flex-grow: 1;\n grid-area: label;\n min-height: var(--a11y-min-size);\n }\n .kol-field-control__label--visually-hidden {\n height: 0;\n margin: 0;\n padding: 0;\n visibility: hidden;\n }\n .kol-field-control__label-text::after {\n content: \"\";\n }\n .kol-field-control__tooltip .span-label::after {\n content: \"\";\n }\n .kol-field-control__hint {\n grid-area: hint;\n }\n .kol-field-control--disabled .kol-field-control__label {\n cursor: not-allowed;\n opacity: 0.5;\n }\n .kol-field-control--required .kol-field-control__label-text::after {\n content: \"*\";\n }\n .kol-field-control--required .kol-field-control__tooltip .span-label::after {\n content: \"*\";\n }\n}\n@layer kol-component {\n .kol-form-field {\n display: grid;\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n .kol-form-field:not(.kol-form-field--disabled) .kol-form-field__label {\n cursor: pointer;\n }\n .kol-form-field--disabled .kol-form-field__label {\n opacity: 0.5;\n }\n .kol-form-field--required .kol-form-field__label-text::after {\n content: \"*\";\n }\n .kol-form-field--disabled .kol-form-field__hint {\n opacity: 0.5;\n }\n .kol-form-field--required .kol-form-field__tooltip .span-label::after {\n content: \"*\";\n }\n}\n@layer kol-component {\n .kol-input-container {\n align-items: center;\n background-color: white;\n display: grid;\n grid-template-columns: 1fr;\n min-height: var(--a11y-min-size);\n min-width: var(--a11y-min-size);\n width: 100%;\n }\n .kol-input-container:has(> .kol-input-container__adornment--start) {\n grid-template-columns: auto 1fr;\n }\n .kol-input-container:has(> .kol-input-container__adornment--end) {\n grid-template-columns: 1fr auto;\n }\n .kol-input-container:has(> .kol-input-container__adornment--start):has(> .kol-input-container__adornment--end) {\n grid-template-columns: auto 1fr auto;\n }\n .kol-input-container__container {\n position: relative;\n }\n .kol-input-container__adornment {\n display: flex;\n align-items: center;\n }\n .kol-input-container__adornment .kol-icon {\n display: grid;\n height: var(--a11y-min-size);\n place-items: center;\n }\n}\n@layer kol-component {\n .kol-form-field {\n --border-width: 2px;\n --input-size: 1.5em;\n }\n .kol-form-field__label {\n display: contents;\n }\n .kol-form-field__input {\n display: flex;\n flex-direction: column;\n }\n .kol-form-field__input--orientation-horizontal {\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n }\n .kol-form-field--disabled {\n opacity: unset;\n }\n .kol-input-radio {\n appearance: none;\n border-width: var(--border-width);\n border-style: solid;\n border-radius: 100%;\n cursor: pointer;\n display: flex;\n height: var(--input-size);\n margin: 0;\n min-height: var(--input-size);\n min-width: var(--input-size);\n padding: 0;\n width: var(--input-size);\n }\n .kol-input-radio:before {\n border-radius: 100%;\n content: \"\";\n margin: auto;\n height: calc(var(--input-size) / 2);\n width: calc(var(--input-size) / 2);\n }\n .kol-input-radio:checked:before {\n background-color: #000;\n }\n @media (forced-colors: active) {\n .kol-input-radio:checked:before {\n /* Give it a visible background in forced colors mode */\n background-color: selectedItem !important;\n }\n }\n .kol-input-radio:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}";
20721
+ const InputWrapperFc = (_a) => {
20722
+ var { class: classNames } = _a, other = __rest(_a, ["class"]);
20723
+ return hAsync(InputFc, Object.assign({ class: clsx('kol-input-radio__input', classNames) }, other, { type: "radio" }));
20724
+ };
20725
+ const RadioFc = (_a) => {
20726
+ var _b;
20727
+ var { class: classNames, inputProps } = _a, other = __rest(_a, ["class", "inputProps"]);
20728
+ const showMsg = checkHasMsg(inputProps === null || inputProps === void 0 ? void 0 : inputProps.msg, inputProps === null || inputProps === void 0 ? void 0 : inputProps.touched);
20729
+ const cssVariants = {
20730
+ ['kol-input-radio--checked']: inputProps === null || inputProps === void 0 ? void 0 : inputProps.checked,
20731
+ ['kol-input-radio--disabled']: Boolean(inputProps === null || inputProps === void 0 ? void 0 : inputProps.disabled),
20732
+ ['kol-input-radio--required']: Boolean(inputProps === null || inputProps === void 0 ? void 0 : inputProps.required),
20733
+ ['kol-input-radio--touched']: Boolean(inputProps === null || inputProps === void 0 ? void 0 : inputProps.touched),
20734
+ [`kol-input-radio--${((_b = inputProps === null || inputProps === void 0 ? void 0 : inputProps.msg) === null || _b === void 0 ? void 0 : _b.type) || 'error'}`]: Boolean(showMsg),
20735
+ };
20736
+ return (hAsync("label", Object.assign({ class: clsx('kol-input-radio', cssVariants, classNames) }, other),
20737
+ hAsync(InputWrapperFc, Object.assign({}, inputProps))));
20738
+ };
20739
+
20740
+ function getRadioProps(state, inputProps = {}) {
20741
+ const { ariaDescribedBy } = getRenderStates(state);
20742
+ const props = {
20743
+ id: state._id,
20744
+ hideLabel: state._hideLabel,
20745
+ label: state._label,
20746
+ value: state._value,
20747
+ disabled: state._disabled,
20748
+ name: state._name,
20749
+ ariaDescribedBy,
20750
+ };
20751
+ if ('_required' in state)
20752
+ props.required = state._required;
20753
+ if ('_touched' in state)
20754
+ props.touched = state._touched;
20755
+ if ('_msg' in state)
20756
+ props.msg = convertMsgToInternMsg(state._msg);
20757
+ return Object.assign(Object.assign({}, props), inputProps);
20758
+ }
20759
+ const RadioStateWrapper = (_a) => {
20760
+ var { state, inputProps } = _a, other = __rest(_a, ["state", "inputProps"]);
20761
+ return hAsync(RadioFc, Object.assign({ inputProps: getRadioProps(state, inputProps) }, other));
20762
+ };
20763
+
20764
+ const defaultStyleCss$p = "/*\n * This file contains all rules for accessibility.\n */\n@layer kol-global {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44rem / var(--kolibri-root-font-size, 16));\n /*\n * No element should be used without a background and font color whose contrast ratio has\n * not been checked. By initially setting the background color to white and the font color\n * to black, the contrast ratio is ensured and explicit adjustment is forced.\n */\n background-color: white;\n color: black;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /*\n * All interactive elements should have a minimum size of rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n [role=button],\n button:not([role=link]) {\n min-height: var(--a11y-min-size);\n min-width: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n }\n}\n/**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n.visually-hidden {\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n height: calc(1rem / var(--kolibri-root-font-size, 16));\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: calc(1rem / var(--kolibri-root-font-size, 16));\n}\n\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n border: none;\n margin: 0;\n padding: 0;\n width: 100%;\n /* 100% needed for custom width from outside */\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n .badge-text-hint {\n background-color: lightgray;\n color: black;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n .kol-span {\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n display: grid;\n place-items: center;\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n }\n .kol-span__container {\n display: flex;\n place-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n .kol-span .kol-span__label--hide-label .kol-span__label {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled],\n [disabled]:focus {\n cursor: not-allowed;\n opacity: 0.5;\n outline: none;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@layer kol-component {\n :host {\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip {\n display: contents;\n }\n .kol-tooltip__floating {\n animation-duration: 0.25s;\n animation-iteration-count: 1;\n animation-name: fadeInOpacity;\n animation-timing-function: ease-in;\n box-sizing: border-box;\n display: none;\n position: fixed;\n visibility: hidden;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n max-width: 90vw;\n max-height: 90vh;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width);\n }\n .kol-tooltip__arrow {\n background-color: #fff;\n color: #000;\n height: calc(10rem / var(--kolibri-root-font-size, 16));\n position: absolute;\n transform: rotate(45deg);\n width: calc(10rem / var(--kolibri-root-font-size, 16));\n z-index: 999;\n }\n .kol-tooltip__content {\n background-color: #fff;\n color: #000;\n position: relative;\n z-index: 1000;\n }\n @keyframes fadeInOpacity {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n .kol-alert {\n display: grid;\n }\n .kol-alert__container {\n place-items: center;\n display: flex;\n }\n .kol-alert__container-content {\n flex-grow: 1;\n }\n .kol-alert__closer {\n /* Visible with forced colors */\n outline: transparent solid calc(1rem / var(--kolibri-root-font-size, 16));\n }\n}\n@layer kol-component {\n .kol-field-control {\n min-height: var(--a11y-min-size);\n display: grid;\n grid-template-columns: auto 1fr;\n grid-template-areas: \"input label\";\n grid-template-rows: auto;\n align-items: center;\n justify-content: left;\n }\n .kol-field-control:has(.kol-field-control__hint) {\n grid-template-columns: auto 1fr;\n grid-template-areas: \"input label\" \"hint hint\";\n grid-template-rows: auto auto;\n }\n .kol-field-control--label-align-left:not(.kol-field-control--hide-label) {\n grid-template-columns: 1fr auto;\n grid-template-areas: \"label input\";\n grid-template-rows: auto;\n }\n .kol-field-control--label-align-left:not(.kol-field-control--hide-label):has(.kol-field-control__hint) {\n grid-template-columns: 1fr auto;\n grid-template-areas: \"label input\" \"hint hint\";\n grid-template-rows: auto auto;\n }\n .kol-field-control__input {\n grid-area: input;\n display: flex;\n min-height: var(--a11y-min-size);\n align-items: center;\n }\n .kol-field-control__label {\n align-items: center;\n cursor: pointer;\n display: flex;\n flex-grow: 1;\n grid-area: label;\n min-height: var(--a11y-min-size);\n }\n .kol-field-control__label--visually-hidden {\n height: 0;\n margin: 0;\n padding: 0;\n visibility: hidden;\n }\n .kol-field-control__label-text::after {\n content: \"\";\n }\n .kol-field-control__tooltip .span-label::after {\n content: \"\";\n }\n .kol-field-control__hint {\n grid-area: hint;\n }\n .kol-field-control--disabled .kol-field-control__label {\n cursor: not-allowed;\n opacity: 0.5;\n }\n .kol-field-control--required .kol-field-control__label-text::after {\n content: \"*\";\n }\n .kol-field-control--required .kol-field-control__tooltip .span-label::after {\n content: \"*\";\n }\n}\n@layer kol-component {\n .kol-form-field {\n display: grid;\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n .kol-form-field:not(.kol-form-field--disabled) .kol-form-field__label {\n cursor: pointer;\n }\n .kol-form-field--disabled .kol-form-field__label {\n opacity: 0.5;\n }\n .kol-form-field--required .kol-form-field__label-text::after {\n content: \"*\";\n }\n .kol-form-field--disabled .kol-form-field__hint {\n opacity: 0.5;\n }\n .kol-form-field--required .kol-form-field__tooltip .span-label::after {\n content: \"*\";\n }\n}\n@layer kol-component {\n .kol-input-container {\n align-items: center;\n background-color: white;\n display: grid;\n grid-template-columns: 1fr;\n min-height: var(--a11y-min-size);\n min-width: var(--a11y-min-size);\n width: 100%;\n }\n .kol-input-container:has(> .kol-input-container__adornment--start) {\n grid-template-columns: auto 1fr;\n }\n .kol-input-container:has(> .kol-input-container__adornment--end) {\n grid-template-columns: 1fr auto;\n }\n .kol-input-container:has(> .kol-input-container__adornment--start):has(> .kol-input-container__adornment--end) {\n grid-template-columns: auto 1fr auto;\n }\n .kol-input-container__container {\n position: relative;\n }\n .kol-input-container__adornment {\n display: flex;\n align-items: center;\n }\n .kol-input-container__adornment .kol-icon {\n display: grid;\n height: var(--a11y-min-size);\n place-items: center;\n }\n}\n@layer kol-component {\n .kol-form-field {\n --border-width: 2px;\n --input-size: 1.5em;\n }\n .kol-form-field__label {\n display: contents;\n }\n .kol-form-field__input {\n display: flex;\n flex-direction: column;\n }\n .kol-form-field__input--orientation-horizontal {\n flex-direction: row;\n flex-wrap: wrap;\n align-items: flex-start;\n }\n .kol-form-field--disabled {\n opacity: unset;\n }\n .kol-input-radio {\n display: flex;\n position: relative;\n cursor: pointer;\n justify-content: center;\n align-items: center;\n width: var(--a11y-min-size);\n height: var(--a11y-min-size);\n }\n .kol-input-radio__input {\n appearance: none;\n border-width: var(--border-width);\n border-style: solid;\n border-radius: 100%;\n cursor: pointer;\n display: flex;\n height: var(--input-size);\n margin: 0;\n min-height: var(--input-size);\n min-width: var(--input-size);\n padding: 0;\n width: var(--input-size);\n }\n .kol-input-radio__input:before {\n border-radius: 100%;\n content: \"\";\n margin: auto;\n height: calc(var(--input-size) / 2);\n width: calc(var(--input-size) / 2);\n }\n .kol-input-radio__input:checked:before {\n background-color: #000;\n }\n @media (forced-colors: active) {\n .kol-input-radio__input:checked:before {\n /* Give it a visible background in forced colors mode */\n background-color: selectedItem !important;\n }\n }\n .kol-input-radio__input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n .kol-input-radio--disabled {\n cursor: not-allowed;\n }\n}";
20723
20765
  var KolInputRadioDefaultStyle0 = defaultStyleCss$p;
20724
20766
 
20725
20767
  class KolInputRadio {
@@ -20748,7 +20790,7 @@ class KolInputRadio {
20748
20790
  };
20749
20791
  }
20750
20792
  render() {
20751
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: '9ee49be5ca3f551182b68ede4b97ec19086f2a2e' }, this.getFormFieldProps()), this.state._options.map((option, index) => this.renderOption(option, index))));
20793
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: '1dc48b26e8e760c4fa2c5db8ec8d93e6e83e5adc' }, this.getFormFieldProps()), this.state._options.map((option, index) => this.renderOption(option, index))));
20752
20794
  }
20753
20795
  getOptionProps(option, id) {
20754
20796
  const obj = {
@@ -20767,24 +20809,21 @@ class KolInputRadio {
20767
20809
  return obj;
20768
20810
  }
20769
20811
  getInputProps(option, id, index, selected) {
20770
- const obj = Object.assign(Object.assign({ state: this.state, id: id, ref: this.state._value === option.value ? this.catchRef : undefined, class: clsx('kol-input-radio', {
20771
- ['kol-input-radio--disabled']: Boolean(this.state._disabled || option.disabled),
20772
- }), 'aria-label': this.state._hideLabel && typeof option.label === 'string' ? option.label : undefined, type: 'radio', name: this.state._name || this.state._id, value: `-${index}`, checked: selected }, this.controller.onFacade), { onChange: this.onChange, onClick: undefined, onInput: this.onInput, onKeyDown: this.onKeyDown.bind(this), onFocus: (event) => {
20773
- this.controller.onFacade.onFocus(event);
20774
- this.inputHasFocus = true;
20775
- }, onBlur: (event) => {
20776
- this.controller.onFacade.onBlur(event);
20777
- this.inputHasFocus = false;
20778
- } });
20779
- if (option.disabled) {
20780
- obj.disabled = true;
20781
- }
20782
- return obj;
20812
+ return {
20813
+ state: this.state,
20814
+ inputProps: Object.assign(Object.assign({ id: id, ref: this.state._value === option.value ? this.catchRef : undefined, 'aria-label': this.state._hideLabel && typeof option.label === 'string' ? option.label : undefined, type: 'radio', name: this.state._name || this.state._id, value: `-${index}`, checked: selected, disabled: option.disabled }, this.controller.onFacade), { onChange: this.onChange, onClick: undefined, onInput: this.onInput, onKeyDown: this.onKeyDown.bind(this), onFocus: (event) => {
20815
+ this.controller.onFacade.onFocus(event);
20816
+ this.inputHasFocus = true;
20817
+ }, onBlur: (event) => {
20818
+ this.controller.onFacade.onBlur(event);
20819
+ this.inputHasFocus = false;
20820
+ } }),
20821
+ };
20783
20822
  }
20784
20823
  renderOption(option, index) {
20785
20824
  const customId = `${this.state._id}-${index}`;
20786
20825
  const selected = this.state._value === option.value;
20787
- return (hAsync(FieldControlStateWrapper, Object.assign({ key: customId }, this.getOptionProps(option, customId)), hAsync(InputStateWrapper, Object.assign({}, this.getInputProps(option, customId, index, selected)))));
20826
+ return (hAsync(FieldControlStateWrapper, Object.assign({ key: customId }, this.getOptionProps(option, customId)), hAsync(RadioStateWrapper, Object.assign({}, this.getInputProps(option, customId, index, selected)))));
20788
20827
  }
20789
20828
  constructor(hostRef) {
20790
20829
  registerInstance(this, hostRef);
@@ -20816,7 +20855,6 @@ class KolInputRadio {
20816
20855
  });
20817
20856
  }
20818
20857
  };
20819
- this._accessKey = undefined;
20820
20858
  this._disabled = false;
20821
20859
  this._hideMsg = false;
20822
20860
  this._hideLabel = false;
@@ -20829,7 +20867,6 @@ class KolInputRadio {
20829
20867
  this._options = undefined;
20830
20868
  this._orientation = 'vertical';
20831
20869
  this._required = false;
20832
- this._shortKey = undefined;
20833
20870
  this._syncValueBySelector = undefined;
20834
20871
  this._tooltipAlign = 'top';
20835
20872
  this._touched = false;
@@ -20847,9 +20884,6 @@ class KolInputRadio {
20847
20884
  showAsAlert() {
20848
20885
  return Boolean(this.state._touched) && !this.inputHasFocus;
20849
20886
  }
20850
- validateAccessKey(value) {
20851
- this.controller.validateAccessKey(value);
20852
- }
20853
20887
  validateTooltipAlign(value) {
20854
20888
  this.controller.validateTooltipAlign(value);
20855
20889
  }
@@ -20889,9 +20923,6 @@ class KolInputRadio {
20889
20923
  validateRequired(value) {
20890
20924
  this.controller.validateRequired(value);
20891
20925
  }
20892
- validateShortKey(value) {
20893
- this.controller.validateShortKey(value);
20894
- }
20895
20926
  validateSyncValueBySelector(value) {
20896
20927
  this.controller.validateSyncValueBySelector(value);
20897
20928
  }
@@ -20908,7 +20939,6 @@ class KolInputRadio {
20908
20939
  static get delegatesFocus() { return true; }
20909
20940
  get host() { return getElement(this); }
20910
20941
  static get watchers() { return {
20911
- "_accessKey": ["validateAccessKey"],
20912
20942
  "_tooltipAlign": ["validateTooltipAlign"],
20913
20943
  "_disabled": ["validateDisabled"],
20914
20944
  "_hideLabel": ["validateHideLabel"],
@@ -20922,7 +20952,6 @@ class KolInputRadio {
20922
20952
  "_options": ["validateOptions"],
20923
20953
  "_orientation": ["validateOrientation"],
20924
20954
  "_required": ["validateRequired"],
20925
- "_shortKey": ["validateShortKey"],
20926
20955
  "_syncValueBySelector": ["validateSyncValueBySelector"],
20927
20956
  "_touched": ["validateTouched"],
20928
20957
  "_value": ["validateValue"]
@@ -20934,7 +20963,6 @@ class KolInputRadio {
20934
20963
  "$flags$": 57,
20935
20964
  "$tagName$": "kol-input-radio",
20936
20965
  "$members$": {
20937
- "_accessKey": [1, "_access-key"],
20938
20966
  "_disabled": [4],
20939
20967
  "_hideMsg": [1540, "_hide-msg"],
20940
20968
  "_hideLabel": [4, "_hide-label"],
@@ -20947,7 +20975,6 @@ class KolInputRadio {
20947
20975
  "_options": [1],
20948
20976
  "_orientation": [1],
20949
20977
  "_required": [4],
20950
- "_shortKey": [1, "_short-key"],
20951
20978
  "_syncValueBySelector": [1, "_sync-value-by-selector"],
20952
20979
  "_tooltipAlign": [1, "_tooltip-align"],
20953
20980
  "_touched": [1540],
@@ -21990,7 +22017,7 @@ const validateModalVariant = (component, value) => {
21990
22017
  watchValidator(component, '_variant', (value) => typeof value === 'string' && ModalVariantPropTypeOptions.includes(value), new Set(ModalVariantPropTypeOptions), value);
21991
22018
  };
21992
22019
 
21993
- const defaultStyleCss$j = "/*\n * This file contains all rules for accessibility.\n */\n@layer kol-global {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44rem / var(--kolibri-root-font-size, 16));\n /*\n * No element should be used without a background and font color whose contrast ratio has\n * not been checked. By initially setting the background color to white and the font color\n * to black, the contrast ratio is ensured and explicit adjustment is forced.\n */\n background-color: white;\n color: black;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /*\n * All interactive elements should have a minimum size of rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n [role=button],\n button:not([role=link]) {\n min-height: var(--a11y-min-size);\n min-width: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n }\n}\n/**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n.visually-hidden {\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n height: calc(1rem / var(--kolibri-root-font-size, 16));\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: calc(1rem / var(--kolibri-root-font-size, 16));\n}\n\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n border: none;\n margin: 0;\n padding: 0;\n width: 100%;\n /* 100% needed for custom width from outside */\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n .badge-text-hint {\n background-color: lightgray;\n color: black;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n .kol-span {\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n display: grid;\n place-items: center;\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n }\n .kol-span__container {\n display: flex;\n place-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n .kol-span .kol-span__label--hide-label .kol-span__label {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled],\n [disabled]:focus {\n cursor: not-allowed;\n opacity: 0.5;\n outline: none;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n}\n@layer kol-component {\n :host {\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip {\n display: contents;\n }\n .kol-tooltip__floating {\n animation-duration: 0.25s;\n animation-iteration-count: 1;\n animation-name: fadeInOpacity;\n animation-timing-function: ease-in;\n box-sizing: border-box;\n display: none;\n position: fixed;\n visibility: hidden;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n max-width: 90vw;\n max-height: 90vh;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width);\n }\n .kol-tooltip__arrow {\n background-color: #fff;\n color: #000;\n height: calc(10rem / var(--kolibri-root-font-size, 16));\n position: absolute;\n transform: rotate(45deg);\n width: calc(10rem / var(--kolibri-root-font-size, 16));\n z-index: 999;\n }\n .kol-tooltip__content {\n background-color: #fff;\n color: #000;\n position: relative;\n z-index: 1000;\n }\n @keyframes fadeInOpacity {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n .kol-modal {\n border: 0;\n padding: 0;\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n position: relative;\n }\n .kol-modal::backdrop {\n background-color: rgba(0, 0, 0, 0.33);\n }\n .kol-modal__close-button {\n position: absolute;\n top: calc(1rem / var(--kolibri-root-font-size, 16));\n right: calc(1rem / var(--kolibri-root-font-size, 16));\n z-index: 1;\n }\n}";
22020
+ const defaultStyleCss$j = "/*\n * This file contains all rules for accessibility.\n */\n@layer kol-global {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44rem / var(--kolibri-root-font-size, 16));\n /*\n * No element should be used without a background and font color whose contrast ratio has\n * not been checked. By initially setting the background color to white and the font color\n * to black, the contrast ratio is ensured and explicit adjustment is forced.\n */\n background-color: white;\n color: black;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /*\n * All interactive elements should have a minimum size of rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n [role=button],\n button:not([role=link]) {\n min-height: var(--a11y-min-size);\n min-width: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n }\n}\n/**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n.visually-hidden {\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n height: calc(1rem / var(--kolibri-root-font-size, 16));\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: calc(1rem / var(--kolibri-root-font-size, 16));\n}\n\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n border: none;\n margin: 0;\n padding: 0;\n width: 100%;\n /* 100% needed for custom width from outside */\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n .badge-text-hint {\n background-color: lightgray;\n color: black;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n .kol-span {\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n display: grid;\n place-items: center;\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n }\n .kol-span__container {\n display: flex;\n place-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n .kol-span .kol-span__label--hide-label .kol-span__label {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled],\n [disabled]:focus {\n cursor: not-allowed;\n opacity: 0.5;\n outline: none;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n}\n@layer kol-component {\n :host {\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip {\n display: contents;\n }\n .kol-tooltip__floating {\n animation-duration: 0.25s;\n animation-iteration-count: 1;\n animation-name: fadeInOpacity;\n animation-timing-function: ease-in;\n box-sizing: border-box;\n display: none;\n position: fixed;\n visibility: hidden;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n max-width: 90vw;\n max-height: 90vh;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width);\n }\n .kol-tooltip__arrow {\n background-color: #fff;\n color: #000;\n height: calc(10rem / var(--kolibri-root-font-size, 16));\n position: absolute;\n transform: rotate(45deg);\n width: calc(10rem / var(--kolibri-root-font-size, 16));\n z-index: 999;\n }\n .kol-tooltip__content {\n background-color: #fff;\n color: #000;\n position: relative;\n z-index: 1000;\n }\n @keyframes fadeInOpacity {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n .kol-modal {\n border: 0;\n padding: 0;\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n position: relative;\n min-height: var(--a11y-min-size);\n }\n .kol-modal::backdrop {\n background-color: rgba(0, 0, 0, 0.33);\n }\n .kol-modal__close-button {\n position: absolute;\n top: calc(1rem / var(--kolibri-root-font-size, 16));\n right: calc(1rem / var(--kolibri-root-font-size, 16));\n z-index: 1;\n }\n}";
21994
22021
  var KolModalDefaultStyle0 = defaultStyleCss$j;
21995
22022
 
21996
22023
  class KolModal {
@@ -22210,9 +22237,9 @@ class KolNav {
22210
22237
  const collapsible = this.state._collapsible === true;
22211
22238
  const hideLabel = this.state._hideLabel === true;
22212
22239
  const orientation = this.state._orientation;
22213
- return (hAsync("div", { key: '93757665047c23f9ed1339e16911376068df4443', class: clsx('kol-nav', `kol-nav--${orientation}`, {
22240
+ return (hAsync("div", { key: '2d1746fba7131f7af370b41afdd1d3598d3db006', class: clsx('kol-nav', `kol-nav--${orientation}`, {
22214
22241
  'kol-nav--is-compact': this.state._hideLabel,
22215
- }) }, hAsync("nav", { key: '8d97dbdf8327d63448873a83585944dad8f38bf4', class: "kol-nav__navigation", "aria-label": this.state._label, id: "nav" }, hAsync(this.linkList, { key: 'c4ad4bb554917c2705af4db9d2b1b55e194732cb', collapsible: collapsible, hideLabel: hideLabel, deep: 0, links: this.state._links, orientation: orientation })), hasCompactButton && (hAsync("div", { key: 'de8a895e442929203ea710d8754fc686e9fb3e85', class: "kol-nav__compact" }, hAsync(KolButtonWcTag, { key: '9b315aeea88bae247b48932a06c88309731fb9ad', class: "kol-nav__toggle-button", _ariaControls: "nav", _ariaExpanded: !hideLabel, _icons: hideLabel ? 'codicon codicon-chevron-right' : 'codicon codicon-chevron-left', _hideLabel: true, _label: translate(hideLabel ? 'kol-nav-maximize' : 'kol-nav-minimize'), _on: {
22242
+ }) }, hAsync("nav", { key: '490c288e18fa57b21012469a30554b56a76dc518', class: "kol-nav__navigation", "aria-label": this.state._label, id: "nav" }, hAsync(this.linkList, { key: '6ebd5a66f36699c2b55e7ed29380df9c33e7850a', collapsible: collapsible, hideLabel: hideLabel, deep: 0, links: this.state._links, orientation: orientation })), hasCompactButton && (hAsync("div", { key: 'c6fb7c2353d6fd00568a2923f1ce09cf50107f1a', class: "kol-nav__compact" }, hAsync(KolButtonWcTag, { key: 'dec6b58fb116bd3f2c788038e31fc73241708897', class: "kol-nav__toggle-button", _ariaControls: "nav", _ariaExpanded: !hideLabel, _icons: hideLabel ? 'codicon codicon-chevron-right' : 'codicon codicon-chevron-left', _hideLabel: true, _label: translate(hideLabel ? 'kol-nav-maximize' : 'kol-nav-minimize'), _on: {
22216
22243
  onClick: () => {
22217
22244
  this.state = Object.assign(Object.assign({}, this.state), { _hideLabel: this.state._hideLabel === false });
22218
22245
  },
@@ -22483,7 +22510,7 @@ class KolPagination {
22483
22510
  return null;
22484
22511
  }
22485
22512
  });
22486
- return (hAsync(Host, { class: "kol-pagination" }, hAsync("nav", { "aria-label": this.state._label }, hAsync("ul", { class: "kol-pagination__navigation-list" }, this.state._hasButtons.first && (hAsync("li", null, hAsync(KolButtonWcTag, { class: "kol-pagination__button kol-pagination__button--first", exportparts: "icon", _customClass: this.state._customClass, _disabled: this.state._page <= 1, _icons: leftDoubleArrowIcon, _hideLabel: true, _label: translate('kol-page-first'), _on: this.onGoToFirst, _tooltipAlign: this.state._tooltipAlign }))), this.state._hasButtons.previous && (hAsync("li", null, hAsync(KolButtonWcTag, { class: "kol-pagination__button kol-pagination__button--previous", exportparts: "icon", _customClass: this.state._customClass, _disabled: this.state._page <= 1, _icons: leftSingleArrow, _hideLabel: true, _label: translate('kol-page-back'), _on: this.onGoBackward, _tooltipAlign: this.state._tooltipAlign }))), pageButtons, this.state._hasButtons.next && (hAsync("li", null, hAsync(KolButtonWcTag, { class: "kol-pagination__button kol-pagination__button--next", exportparts: "icon", _customClass: this.state._customClass, _disabled: count <= this.state._page, _icons: rightSingleArrowIcon, _hideLabel: true, _label: translate('kol-page-next'), _on: this.onGoForward, _tooltipAlign: this.state._tooltipAlign }))), this.state._hasButtons.last && (hAsync("li", null, hAsync(KolButtonWcTag, { class: "kol-pagination__button kol-pagination__button--last", exportparts: "icon", _customClass: this.state._customClass, _disabled: count <= this.state._page, _icons: rightDoubleArrowIcon, _hideLabel: true, _label: translate('kol-page-last'), _on: this.onGoToEnd, _tooltipAlign: this.state._tooltipAlign }))))), ((_a = this.state._pageSizeOptions) === null || _a === void 0 ? void 0 : _a.length) > 0 && (hAsync(KolSelectTag, { _hideLabel: true, _id: `pagination-size-${this.nonce}`, _label: translate('kol-entries-per-site'), _options: this.state._pageSizeOptions, _on: {
22513
+ return (hAsync(Host, { class: "kol-pagination" }, hAsync("nav", { class: "kol-pagination__navigation", "aria-label": this.state._label }, hAsync("ul", { class: "kol-pagination__navigation-list" }, this.state._hasButtons.first && (hAsync("li", null, hAsync(KolButtonWcTag, { class: "kol-pagination__button kol-pagination__button--first", exportparts: "icon", _customClass: this.state._customClass, _disabled: this.state._page <= 1, _icons: leftDoubleArrowIcon, _hideLabel: true, _label: translate('kol-page-first'), _on: this.onGoToFirst, _tooltipAlign: this.state._tooltipAlign }))), this.state._hasButtons.previous && (hAsync("li", null, hAsync(KolButtonWcTag, { class: "kol-pagination__button kol-pagination__button--previous", exportparts: "icon", _customClass: this.state._customClass, _disabled: this.state._page <= 1, _icons: leftSingleArrow, _hideLabel: true, _label: translate('kol-page-back'), _on: this.onGoBackward, _tooltipAlign: this.state._tooltipAlign }))), pageButtons, this.state._hasButtons.next && (hAsync("li", null, hAsync(KolButtonWcTag, { class: "kol-pagination__button kol-pagination__button--next", exportparts: "icon", _customClass: this.state._customClass, _disabled: count <= this.state._page, _icons: rightSingleArrowIcon, _hideLabel: true, _label: translate('kol-page-next'), _on: this.onGoForward, _tooltipAlign: this.state._tooltipAlign }))), this.state._hasButtons.last && (hAsync("li", null, hAsync(KolButtonWcTag, { class: "kol-pagination__button kol-pagination__button--last", exportparts: "icon", _customClass: this.state._customClass, _disabled: count <= this.state._page, _icons: rightDoubleArrowIcon, _hideLabel: true, _label: translate('kol-page-last'), _on: this.onGoToEnd, _tooltipAlign: this.state._tooltipAlign }))))), ((_a = this.state._pageSizeOptions) === null || _a === void 0 ? void 0 : _a.length) > 0 && (hAsync(KolSelectTag, { class: "kol-pagination__page-size-select", _hideLabel: true, _id: `pagination-size-${this.nonce}`, _label: translate('kol-entries-per-site'), _options: this.state._pageSizeOptions, _on: {
22487
22514
  onChange: this.onChangePageSize,
22488
22515
  }, _value: [this.state._pageSize] }))));
22489
22516
  }
@@ -23256,16 +23283,22 @@ const flip$1 = function (options) {
23256
23283
  const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
23257
23284
  const nextPlacement = placements[nextIndex];
23258
23285
  if (nextPlacement) {
23259
- // Try next placement and re-run the lifecycle.
23260
- return {
23261
- data: {
23262
- index: nextIndex,
23263
- overflows: overflowsData
23264
- },
23265
- reset: {
23266
- placement: nextPlacement
23267
- }
23268
- };
23286
+ const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;
23287
+ if (!ignoreCrossAxisOverflow ||
23288
+ // We leave the current main axis only if every placement on that axis
23289
+ // overflows the main axis.
23290
+ overflowsData.every(d => d.overflows[0] > 0 && getSideAxis(d.placement) === initialSideAxis)) {
23291
+ // Try next placement and re-run the lifecycle.
23292
+ return {
23293
+ data: {
23294
+ index: nextIndex,
23295
+ overflows: overflowsData
23296
+ },
23297
+ reset: {
23298
+ placement: nextPlacement
23299
+ }
23300
+ };
23301
+ }
23269
23302
  }
23270
23303
 
23271
23304
  // First, find the candidates that fit on the mainAxis side of overflow,
@@ -24347,6 +24380,12 @@ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
24347
24380
  scrollTop: 0
24348
24381
  };
24349
24382
  const offsets = createCoords(0);
24383
+
24384
+ // If the <body> scrollbar appears on the left (e.g. RTL systems). Use
24385
+ // Firefox with layout.scrollbar.side = 3 in about:config to test this.
24386
+ function setLeftRTLScrollbarOffset() {
24387
+ offsets.x = getWindowScrollBarX(documentElement);
24388
+ }
24350
24389
  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
24351
24390
  if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
24352
24391
  scroll = getNodeScroll(offsetParent);
@@ -24356,11 +24395,12 @@ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
24356
24395
  offsets.x = offsetRect.x + offsetParent.clientLeft;
24357
24396
  offsets.y = offsetRect.y + offsetParent.clientTop;
24358
24397
  } else if (documentElement) {
24359
- // If the <body> scrollbar appears on the left (e.g. RTL systems). Use
24360
- // Firefox with layout.scrollbar.side = 3 in about:config to test this.
24361
- offsets.x = getWindowScrollBarX(documentElement);
24398
+ setLeftRTLScrollbarOffset();
24362
24399
  }
24363
24400
  }
24401
+ if (isFixed && !isOffsetParentAnElement && documentElement) {
24402
+ setLeftRTLScrollbarOffset();
24403
+ }
24364
24404
  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
24365
24405
  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;
24366
24406
  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;
@@ -24537,7 +24577,7 @@ function observeMove(element, onMove) {
24537
24577
  // Handle <iframe>s
24538
24578
  root: root.ownerDocument
24539
24579
  });
24540
- } catch (e) {
24580
+ } catch (_e) {
24541
24581
  io = new IntersectionObserver(handleObserve, options);
24542
24582
  }
24543
24583
  io.observe(element);
@@ -28255,7 +28295,7 @@ class KolToastContainer {
28255
28295
  }; }
28256
28296
  }
28257
28297
 
28258
- const defaultStyleCss$3 = "@charset \"UTF-8\";\n/*\n * This file contains all rules for accessibility.\n */\n@layer kol-global {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44rem / var(--kolibri-root-font-size, 16));\n /*\n * No element should be used without a background and font color whose contrast ratio has\n * not been checked. By initially setting the background color to white and the font color\n * to black, the contrast ratio is ensured and explicit adjustment is forced.\n */\n background-color: white;\n color: black;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /*\n * All interactive elements should have a minimum size of rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n [role=button],\n button:not([role=link]) {\n min-height: var(--a11y-min-size);\n min-width: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n }\n}\n/**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n.visually-hidden {\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n height: calc(1rem / var(--kolibri-root-font-size, 16));\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: calc(1rem / var(--kolibri-root-font-size, 16));\n}\n\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n border: none;\n margin: 0;\n padding: 0;\n width: 100%;\n /* 100% needed for custom width from outside */\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n .badge-text-hint {\n background-color: lightgray;\n color: black;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n .kol-span {\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n display: grid;\n place-items: center;\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n }\n .kol-span__container {\n display: flex;\n place-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n .kol-span .kol-span__label--hide-label .kol-span__label {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled],\n [disabled]:focus {\n cursor: not-allowed;\n opacity: 0.5;\n outline: none;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n}\n@layer kol-component {\n :host {\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip {\n display: contents;\n }\n .kol-tooltip__floating {\n animation-duration: 0.25s;\n animation-iteration-count: 1;\n animation-name: fadeInOpacity;\n animation-timing-function: ease-in;\n box-sizing: border-box;\n display: none;\n position: fixed;\n visibility: hidden;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n max-width: 90vw;\n max-height: 90vh;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width);\n }\n .kol-tooltip__arrow {\n background-color: #fff;\n color: #000;\n height: calc(10rem / var(--kolibri-root-font-size, 16));\n position: absolute;\n transform: rotate(45deg);\n width: calc(10rem / var(--kolibri-root-font-size, 16));\n z-index: 999;\n }\n .kol-tooltip__content {\n background-color: #fff;\n color: #000;\n position: relative;\n z-index: 1000;\n }\n @keyframes fadeInOpacity {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n :host {\n display: inline-block;\n }\n .kol-link {\n font-style: calc(16rem / var(--kolibri-root-font-size, 16));\n display: inline-flex;\n place-items: center;\n text-align: center;\n text-decoration-line: none;\n }\n .kol-link::before {\n /* Render zero-width character as first element to set the baseline correctly. */\n content: \"​\";\n }\n .kol-link__text {\n margin: auto;\n width: 100%;\n }\n}\n@layer kol-component {\n .kol-toolbar {\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n display: flex;\n align-items: center;\n gap: calc(16rem / var(--kolibri-root-font-size, 16));\n flex-wrap: wrap;\n }\n .kol-toolbar:focus-within {\n outline: 1px solid;\n outline-offset: 2px;\n }\n}";
28298
+ const defaultStyleCss$3 = "@charset \"UTF-8\";\n/*\n * This file contains all rules for accessibility.\n */\n@layer kol-global {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44rem / var(--kolibri-root-font-size, 16));\n /*\n * No element should be used without a background and font color whose contrast ratio has\n * not been checked. By initially setting the background color to white and the font color\n * to black, the contrast ratio is ensured and explicit adjustment is forced.\n */\n background-color: white;\n color: black;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n }\n * {\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n hyphens: auto;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n }\n /*\n * All interactive elements should have a minimum size of rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n [role=button],\n button:not([role=link]) {\n min-height: var(--a11y-min-size);\n min-width: var(--a11y-min-size);\n }\n /*\n * Some interactive elements should not inherit the font-family and font-size.\n */\n a,\n button,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n input,\n option,\n select,\n textarea {\n /*\n * All elements should inherit the font family from his parent element.\n */\n font-family: inherit;\n /*\n * All elements should inherit the font size from his parent element.\n */\n font-size: inherit;\n }\n}\n/**\n * Sometimes we need the semantic element for accessibility reasons,\n * but we don't want to show it.\n *\n * - https://www.a11yproject.com/posts/how-to-hide-content/\n */\n.visually-hidden {\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n height: calc(1rem / var(--kolibri-root-font-size, 16));\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: calc(1rem / var(--kolibri-root-font-size, 16));\n}\n\n@layer kol-global {\n /*\n * Dieses CSS stellt sicher, dass der Standard-Style\n * von A und Button resettet werden.\n */\n :is(a, button) {\n background-color: transparent;\n border: none;\n margin: 0;\n padding: 0;\n width: 100%;\n /* 100% needed for custom width from outside */\n }\n /*\n * Ensure elements with hidden attribute to be actually not visible\n * @see https://meowni.ca/hidden.is.a.lie.html\n */\n [hidden] {\n display: none !important;\n }\n .badge-text-hint {\n background-color: lightgray;\n color: black;\n }\n}\n@layer kol-global {\n :host {\n /*\n * The max-width is needed to prevent the table from overflowing the\n * parent node, if the table is wider than the parent node.\n */\n max-width: 100%;\n }\n * {\n /*\n * We prefer to box-sizing: border-box for all elements.\n */\n box-sizing: border-box;\n }\n .kol-span {\n /* KolSpan is a layout component with icons in all directions and a label text in the middle. */\n display: grid;\n place-items: center;\n /* The sub span in KolSpan is the horizontal span with icon left and right and the label text in the middle. */\n }\n .kol-span__container {\n display: flex;\n place-items: center;\n }\n a,\n button {\n cursor: pointer;\n }\n .kol-span .kol-span__label--hide-label .kol-span__label {\n display: none;\n }\n /* Reset browser agent style. */\n button:disabled {\n color: unset;\n }\n .disabled label,\n .disabled:focus-within label,\n [aria-disabled=true],\n [aria-disabled=true]:focus,\n [disabled],\n [disabled]:focus {\n cursor: not-allowed;\n opacity: 0.5;\n outline: none;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n}\n@layer kol-component {\n :host {\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip {\n display: contents;\n }\n .kol-tooltip__floating {\n animation-duration: 0.25s;\n animation-iteration-count: 1;\n animation-name: fadeInOpacity;\n animation-timing-function: ease-in;\n box-sizing: border-box;\n display: none;\n position: fixed;\n visibility: hidden;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n max-width: 90vw;\n max-height: 90vh;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width);\n }\n .kol-tooltip__arrow {\n background-color: #fff;\n color: #000;\n height: calc(10rem / var(--kolibri-root-font-size, 16));\n position: absolute;\n transform: rotate(45deg);\n width: calc(10rem / var(--kolibri-root-font-size, 16));\n z-index: 999;\n }\n .kol-tooltip__content {\n background-color: #fff;\n color: #000;\n position: relative;\n z-index: 1000;\n }\n @keyframes fadeInOpacity {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n :host {\n display: inline-block;\n }\n .kol-link {\n font-style: calc(16rem / var(--kolibri-root-font-size, 16));\n display: inline-flex;\n place-items: center;\n text-align: center;\n text-decoration-line: none;\n }\n .kol-link::before {\n /* Render zero-width character as first element to set the baseline correctly. */\n content: \"​\";\n }\n .kol-link__text {\n margin: auto;\n width: 100%;\n }\n}\n@layer kol-component {\n .kol-toolbar {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n font-size: calc(16rem / var(--kolibri-root-font-size, 16));\n }\n .kol-toolbar--orientation-vertical {\n align-items: stretch;\n flex-direction: column;\n }\n .kol-toolbar:focus-within {\n outline: 1px solid;\n outline-offset: 2px;\n }\n}";
28259
28299
  var KolToolbarDefaultStyle0 = defaultStyleCss$3;
28260
28300
 
28261
28301
  class KolToolbar {
@@ -28281,9 +28321,10 @@ class KolToolbar {
28281
28321
  this.currentIndex = 0;
28282
28322
  this._label = undefined;
28283
28323
  this._items = undefined;
28324
+ this._orientation = undefined;
28284
28325
  }
28285
28326
  render() {
28286
- return (hAsync("div", { key: 'ce72055bee29ba24ec133dc88eff54d8e25c817d', class: "kol-toolbar", role: "toolbar", "aria-label": this.state._label }, this.state._items.map(this.renderItem)));
28327
+ return (hAsync("div", { key: '30938e1827e44beda26c1cc9ac80df905f674f91', class: `kol-toolbar kol-toolbar--orientation-${this.state._orientation}`, role: "toolbar", "aria-label": this.state._label }, this.state._items.map(this.renderItem)));
28287
28328
  }
28288
28329
  validateLabel(value) {
28289
28330
  validateLabel(this, value);
@@ -28291,6 +28332,9 @@ class KolToolbar {
28291
28332
  validateItems(value) {
28292
28333
  validateToolbarItems(this, value);
28293
28334
  }
28335
+ validateOrientation(value) {
28336
+ validateOrientation(this, value);
28337
+ }
28294
28338
  getCurrentToolbarItem(index) {
28295
28339
  return typeof index === 'number' ? this.indexToElement.get(index) : undefined;
28296
28340
  }
@@ -28300,18 +28344,21 @@ class KolToolbar {
28300
28344
  }
28301
28345
  handleKeyDown(event) {
28302
28346
  var _a, _b;
28303
- const isArrowKey = event.code === 'ArrowRight' || event.code === 'ArrowLeft';
28347
+ const pressedKey = event.code;
28348
+ const isArrowKey = [KeyboardKey.ArrowUp, KeyboardKey.ArrowDown, KeyboardKey.ArrowRight, KeyboardKey.ArrowLeft].includes(pressedKey);
28304
28349
  if (!isArrowKey)
28305
28350
  return;
28306
28351
  event.preventDefault();
28307
28352
  const lastItemIndex = ((_a = this._items) === null || _a === void 0 ? void 0 : _a.length) - 1;
28308
28353
  const currentIndex = this.currentIndex;
28309
28354
  let nextIndex = 0;
28310
- switch (event.code) {
28311
- case 'ArrowLeft':
28355
+ switch (pressedKey) {
28356
+ case KeyboardKey.ArrowUp:
28357
+ case KeyboardKey.ArrowLeft:
28312
28358
  nextIndex = currentIndex !== nextIndex ? currentIndex - 1 : lastItemIndex;
28313
28359
  break;
28314
- case 'ArrowRight':
28360
+ case KeyboardKey.ArrowDown:
28361
+ case KeyboardKey.ArrowRight:
28315
28362
  if (lastItemIndex !== currentIndex)
28316
28363
  nextIndex = currentIndex + 1;
28317
28364
  break;
@@ -28328,12 +28375,14 @@ class KolToolbar {
28328
28375
  componentWillLoad() {
28329
28376
  this.validateLabel(this._label);
28330
28377
  this.validateItems(this._items);
28378
+ this.validateOrientation(this._orientation);
28331
28379
  this.setFirstEnabledItemIndex();
28332
28380
  }
28333
28381
  get host() { return getElement(this); }
28334
28382
  static get watchers() { return {
28335
28383
  "_label": ["validateLabel"],
28336
- "_items": ["validateItems"]
28384
+ "_items": ["validateItems"],
28385
+ "_orientation": ["validateOrientation"]
28337
28386
  }; }
28338
28387
  static get style() { return {
28339
28388
  default: KolToolbarDefaultStyle0
@@ -28344,6 +28393,7 @@ class KolToolbar {
28344
28393
  "$members$": {
28345
28394
  "_label": [1],
28346
28395
  "_items": [16],
28396
+ "_orientation": [1],
28347
28397
  "state": [32],
28348
28398
  "currentIndex": [32]
28349
28399
  },