@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.js CHANGED
@@ -2667,7 +2667,7 @@ const I=(t,e)=>s=>s(t,e),P$1=(t,e)=>s=>s(t,e,{append:!1}),$=()=>{const t=typeof
2667
2667
  .then(() => {
2668
2668
  // run your app or website
2669
2669
  })
2670
- .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);}}
2670
+ .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);}}
2671
2671
 
2672
2672
  var KeyEnum;
2673
2673
  (function (KeyEnum) {
@@ -4042,7 +4042,7 @@ const handleColorChange = (value) => {
4042
4042
  break;
4043
4043
  }
4044
4044
  case null:
4045
- Log.warn(`_color was empty or invalid (${JSON.stringify(value)})`, { forceLog: true });
4045
+ Log.warn(`_color was empty or invalid (${JSON.stringify(value)})`);
4046
4046
  colorContrast = createContrastColorPair({
4047
4047
  background: '#000',
4048
4048
  foreground: '#000',
@@ -4103,11 +4103,6 @@ const validateHasIconsWhenExpanded = (component, value) => {
4103
4103
  watchBoolean(component, '_hasIconsWhenExpanded', value);
4104
4104
  };
4105
4105
 
4106
- const headingVariantPropTypeOptions = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'strong'];
4107
- const validateHeadingVariant = (component, value) => {
4108
- watchValidator(component, `_variant`, (value) => typeof value === 'string' && headingVariantPropTypeOptions.includes(value), new Set([`KoliBriHeadingVariant {${headingVariantPropTypeOptions.join(', ')}`]), value);
4109
- };
4110
-
4111
4106
  const validateHideLabel = (component, value, options = {}) => {
4112
4107
  watchBoolean(component, '_hideLabel', value, options);
4113
4108
  };
@@ -4489,8 +4484,6 @@ const inputTextTypeOptions = ['text', 'search', 'url', 'tel'];
4489
4484
 
4490
4485
  const inputTypeOnOffOptions = ['on', 'off'];
4491
4486
 
4492
- const orientationOptions = ['horizontal', 'vertical'];
4493
-
4494
4487
  var KoliBriProgressVariantEnum;
4495
4488
  (function (KoliBriProgressVariantEnum) {
4496
4489
  KoliBriProgressVariantEnum["bar"] = "bar";
@@ -4624,10 +4617,9 @@ function getSubHeadlineTag(level) {
4624
4617
  return level === 1 ? 'span' : getHeadlineTag(level);
4625
4618
  }
4626
4619
  const KolHeadlineFc = (_a, children) => {
4627
- var { class: classNames, level = MIN_HEADING_LEVEL, variant } = _a, other = __rest(_a, ["class", "level", "variant"]);
4620
+ var { class: classNames, level = MIN_HEADING_LEVEL } = _a, other = __rest(_a, ["class", "level"]);
4628
4621
  const HeadlineTag = getHeadlineTag(level);
4629
- const finalVariant = variant || HeadlineTag;
4630
- return (hAsync(HeadlineTag, Object.assign({ class: clsx('kol-headline', `kol-headline--${finalVariant}`, classNames) }, other), children));
4622
+ return (hAsync(HeadlineTag, Object.assign({ class: clsx('kol-headline', `kol-headline--${HeadlineTag}`, classNames) }, other), children));
4631
4623
  };
4632
4624
  const KolSecondaryHeadlineFc = (_a, children) => {
4633
4625
  var { class: classNames, level = MIN_HEADING_LEVEL } = _a, other = __rest(_a, ["class", "level"]);
@@ -16124,7 +16116,7 @@ class KolBadge {
16124
16116
  const UNIQUE_LABELS = new Set();
16125
16117
  function addNavLabel(ariaLabel) {
16126
16118
  if (UNIQUE_LABELS.has(ariaLabel)) {
16127
- Log.error(`There already is a nav element with the label "${ariaLabel}"`, { forceLog: true });
16119
+ Log.warn(`There already is a nav element with the label "${ariaLabel}"`);
16128
16120
  }
16129
16121
  else {
16130
16122
  UNIQUE_LABELS.add(ariaLabel);
@@ -16932,8 +16924,6 @@ function getFormFieldProps(state) {
16932
16924
  hideLabel: state._hideLabel,
16933
16925
  hideMsg: state._hideMsg,
16934
16926
  touched: state._touched,
16935
- accessKey: state._accessKey,
16936
- shortKey: state._shortKey,
16937
16927
  };
16938
16928
  if ('_required' in state) {
16939
16929
  props.required = state._required;
@@ -16941,6 +16931,12 @@ function getFormFieldProps(state) {
16941
16931
  if ('_readOnly' in state) {
16942
16932
  props.readOnly = state._readOnly;
16943
16933
  }
16934
+ if ('_accessKey' in state) {
16935
+ props.accessKey = state._accessKey;
16936
+ }
16937
+ if ('_shortKey' in state) {
16938
+ props.shortKey = state._shortKey;
16939
+ }
16944
16940
  if ('_hasCounter' in state && '_currentLength' in state) {
16945
16941
  props.counter = state._hasCounter ? { currentLength: state._currentLength } : undefined;
16946
16942
  if (props.counter && '_maxLength' in state) {
@@ -17232,11 +17228,12 @@ function getInputProps(state, customSuggestions) {
17232
17228
  id: state._id,
17233
17229
  hideLabel: state._hideLabel,
17234
17230
  label: state._label,
17235
- accessKey: state._accessKey,
17236
17231
  disabled: state._disabled,
17237
17232
  name: state._name,
17238
17233
  ariaDescribedBy: ariaDescribedBy,
17239
17234
  };
17235
+ if ('_accessKey' in state)
17236
+ props.accessKey = state._accessKey;
17240
17237
  if ('_type' in state)
17241
17238
  props.type = state._type;
17242
17239
  if ('_value' in state)
@@ -18161,7 +18158,6 @@ class KolHeading {
18161
18158
  this._label = undefined;
18162
18159
  this._level = 0;
18163
18160
  this._secondaryHeadline = undefined;
18164
- this._variant = undefined;
18165
18161
  this.state = {
18166
18162
  _label: '',
18167
18163
  _level: 0,
@@ -18176,24 +18172,19 @@ class KolHeading {
18176
18172
  validateSecondaryHeadline(value) {
18177
18173
  watchString(this, '_secondaryHeadline', value);
18178
18174
  }
18179
- validateVariant(value) {
18180
- validateHeadingVariant(this, value);
18181
- }
18182
18175
  componentWillLoad() {
18183
18176
  this.validateLabel(this._label);
18184
18177
  this.validateLevel(this._level);
18185
18178
  this.validateSecondaryHeadline(this._secondaryHeadline);
18186
- this.validateVariant(this._variant);
18187
18179
  }
18188
18180
  render() {
18189
- const { _secondaryHeadline, _label, _level, _variant } = this.state;
18190
- return (hAsync(KolHeadingFc, { key: 'd1dd0a780ae7d78f46ef8e084617a1bb656d5af0', secondaryHeadline: _secondaryHeadline, level: _level, variant: _variant }, _label, hAsync("slot", { key: 'd00d1f029000cbda86b3b64ab461a06e449837ba', name: "expert", slot: "expert" })));
18181
+ const { _secondaryHeadline, _label, _level } = this.state;
18182
+ return (hAsync(KolHeadingFc, { key: '4acb20dadb12cf9f57642b5a3f686e48a69b7c3c', secondaryHeadline: _secondaryHeadline, level: _level }, _label, hAsync("slot", { key: '1b27358b50f7dc744d5a9d06321d63218c524e22', name: "expert", slot: "expert" })));
18191
18183
  }
18192
18184
  static get watchers() { return {
18193
18185
  "_label": ["validateLabel"],
18194
18186
  "_level": ["validateLevel"],
18195
- "_secondaryHeadline": ["validateSecondaryHeadline"],
18196
- "_variant": ["validateVariant"]
18187
+ "_secondaryHeadline": ["validateSecondaryHeadline"]
18197
18188
  }; }
18198
18189
  static get style() { return {
18199
18190
  default: KolHeadingDefaultStyle0
@@ -18205,7 +18196,6 @@ class KolHeading {
18205
18196
  "_label": [1],
18206
18197
  "_level": [2],
18207
18198
  "_secondaryHeadline": [1, "_secondary-headline"],
18208
- "_variant": [1],
18209
18199
  "state": [32]
18210
18200
  },
18211
18201
  "$listeners$": undefined,
@@ -18343,6 +18333,13 @@ class KolImage {
18343
18333
  }; }
18344
18334
  }
18345
18335
 
18336
+ const orientationPropTypeOptions = ['horizontal', 'vertical'];
18337
+ const validateOrientation = (component, value, defaultValue = 'horizontal') => {
18338
+ watchValidator(component, `_orientation`, (value) => typeof value === 'string' && orientationPropTypeOptions.includes(value), new Set([`KoliBriOrientation {${orientationPropTypeOptions.join(', ')}`]), value, {
18339
+ defaultValue,
18340
+ });
18341
+ };
18342
+
18346
18343
  const fillKeyOptionMap = (keyOptionMap, options, preKey = '') => {
18347
18344
  options.forEach((option, index) => {
18348
18345
  const key = `${preKey}-${index}`;
@@ -18389,9 +18386,7 @@ class InputRadioController extends InputCheckboxRadioController {
18389
18386
  this.component = component;
18390
18387
  }
18391
18388
  validateOrientation(value) {
18392
- watchValidator(this.component, '_orientation', (value) => typeof value === 'string' && orientationOptions.includes(value), new Set([`Orientation {${orientationOptions.join(', ')}`]), value, {
18393
- defaultValue: 'vertical',
18394
- });
18389
+ validateOrientation(this.component, value, 'vertical');
18395
18390
  }
18396
18391
  validateOptions(value) {
18397
18392
  validateOptions(this.component, value, {
@@ -18507,8 +18502,6 @@ const KolFieldControlFc = (props, children) => {
18507
18502
 
18508
18503
  function getFieldControlProps(state) {
18509
18504
  const props = {
18510
- accessKey: state._accessKey,
18511
- shortKey: state._shortKey,
18512
18505
  id: state._id,
18513
18506
  disabled: state._disabled,
18514
18507
  msg: convertMsgToInternMsg(state._msg),
@@ -18526,6 +18519,12 @@ function getFieldControlProps(state) {
18526
18519
  if ('_labelAlign' in state) {
18527
18520
  props.labelAlign = state._labelAlign;
18528
18521
  }
18522
+ if ('_accessKey' in state) {
18523
+ props.accessKey = state._accessKey;
18524
+ }
18525
+ if ('_shortKey' in state) {
18526
+ props.shortKey = state._shortKey;
18527
+ }
18529
18528
  return props;
18530
18529
  }
18531
18530
  const FieldControlStateWrapper = (_a, children) => {
@@ -18537,7 +18536,7 @@ const IconWrapperFc = (_a) => {
18537
18536
  var { class: classNames } = _a, other = __rest(_a, ["class"]);
18538
18537
  return hAsync(KolIconFc, Object.assign({ class: clsx('kol-checkbox__icon', classNames) }, other));
18539
18538
  };
18540
- const InputWrapperFc = (_a) => {
18539
+ const InputWrapperFc$1 = (_a) => {
18541
18540
  var { class: classNames } = _a, other = __rest(_a, ["class"]);
18542
18541
  return hAsync(InputFc, Object.assign({ class: clsx('kol-checkbox__input', classNames) }, other, { type: "checkbox" }));
18543
18542
  };
@@ -18556,7 +18555,7 @@ const CheckboxFc = (_a) => {
18556
18555
  };
18557
18556
  return (hAsync("label", Object.assign({ class: clsx('kol-checkbox', cssVariants, classNames) }, other),
18558
18557
  hAsync(IconWrapperFc, { label: "", icons: icon }),
18559
- hAsync(InputWrapperFc, Object.assign({}, inputProps))));
18558
+ hAsync(InputWrapperFc$1, Object.assign({}, inputProps))));
18560
18559
  };
18561
18560
 
18562
18561
  function getCheckboxProps(state, inputProps = {}) {
@@ -20723,7 +20722,50 @@ class KolInputPassword {
20723
20722
  }; }
20724
20723
  }
20725
20724
 
20726
- 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}";
20725
+ const InputWrapperFc = (_a) => {
20726
+ var { class: classNames } = _a, other = __rest(_a, ["class"]);
20727
+ return hAsync(InputFc, Object.assign({ class: clsx('kol-input-radio__input', classNames) }, other, { type: "radio" }));
20728
+ };
20729
+ const RadioFc = (_a) => {
20730
+ var _b;
20731
+ var { class: classNames, inputProps } = _a, other = __rest(_a, ["class", "inputProps"]);
20732
+ const showMsg = checkHasMsg(inputProps === null || inputProps === void 0 ? void 0 : inputProps.msg, inputProps === null || inputProps === void 0 ? void 0 : inputProps.touched);
20733
+ const cssVariants = {
20734
+ ['kol-input-radio--checked']: inputProps === null || inputProps === void 0 ? void 0 : inputProps.checked,
20735
+ ['kol-input-radio--disabled']: Boolean(inputProps === null || inputProps === void 0 ? void 0 : inputProps.disabled),
20736
+ ['kol-input-radio--required']: Boolean(inputProps === null || inputProps === void 0 ? void 0 : inputProps.required),
20737
+ ['kol-input-radio--touched']: Boolean(inputProps === null || inputProps === void 0 ? void 0 : inputProps.touched),
20738
+ [`kol-input-radio--${((_b = inputProps === null || inputProps === void 0 ? void 0 : inputProps.msg) === null || _b === void 0 ? void 0 : _b.type) || 'error'}`]: Boolean(showMsg),
20739
+ };
20740
+ return (hAsync("label", Object.assign({ class: clsx('kol-input-radio', cssVariants, classNames) }, other),
20741
+ hAsync(InputWrapperFc, Object.assign({}, inputProps))));
20742
+ };
20743
+
20744
+ function getRadioProps(state, inputProps = {}) {
20745
+ const { ariaDescribedBy } = getRenderStates(state);
20746
+ const props = {
20747
+ id: state._id,
20748
+ hideLabel: state._hideLabel,
20749
+ label: state._label,
20750
+ value: state._value,
20751
+ disabled: state._disabled,
20752
+ name: state._name,
20753
+ ariaDescribedBy,
20754
+ };
20755
+ if ('_required' in state)
20756
+ props.required = state._required;
20757
+ if ('_touched' in state)
20758
+ props.touched = state._touched;
20759
+ if ('_msg' in state)
20760
+ props.msg = convertMsgToInternMsg(state._msg);
20761
+ return Object.assign(Object.assign({}, props), inputProps);
20762
+ }
20763
+ const RadioStateWrapper = (_a) => {
20764
+ var { state, inputProps } = _a, other = __rest(_a, ["state", "inputProps"]);
20765
+ return hAsync(RadioFc, Object.assign({ inputProps: getRadioProps(state, inputProps) }, other));
20766
+ };
20767
+
20768
+ 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}";
20727
20769
  var KolInputRadioDefaultStyle0 = defaultStyleCss$p;
20728
20770
 
20729
20771
  class KolInputRadio {
@@ -20752,7 +20794,7 @@ class KolInputRadio {
20752
20794
  };
20753
20795
  }
20754
20796
  render() {
20755
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: '9ee49be5ca3f551182b68ede4b97ec19086f2a2e' }, this.getFormFieldProps()), this.state._options.map((option, index) => this.renderOption(option, index))));
20797
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: '1dc48b26e8e760c4fa2c5db8ec8d93e6e83e5adc' }, this.getFormFieldProps()), this.state._options.map((option, index) => this.renderOption(option, index))));
20756
20798
  }
20757
20799
  getOptionProps(option, id) {
20758
20800
  const obj = {
@@ -20771,24 +20813,21 @@ class KolInputRadio {
20771
20813
  return obj;
20772
20814
  }
20773
20815
  getInputProps(option, id, index, selected) {
20774
- 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', {
20775
- ['kol-input-radio--disabled']: Boolean(this.state._disabled || option.disabled),
20776
- }), '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) => {
20777
- this.controller.onFacade.onFocus(event);
20778
- this.inputHasFocus = true;
20779
- }, onBlur: (event) => {
20780
- this.controller.onFacade.onBlur(event);
20781
- this.inputHasFocus = false;
20782
- } });
20783
- if (option.disabled) {
20784
- obj.disabled = true;
20785
- }
20786
- return obj;
20816
+ return {
20817
+ state: this.state,
20818
+ 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) => {
20819
+ this.controller.onFacade.onFocus(event);
20820
+ this.inputHasFocus = true;
20821
+ }, onBlur: (event) => {
20822
+ this.controller.onFacade.onBlur(event);
20823
+ this.inputHasFocus = false;
20824
+ } }),
20825
+ };
20787
20826
  }
20788
20827
  renderOption(option, index) {
20789
20828
  const customId = `${this.state._id}-${index}`;
20790
20829
  const selected = this.state._value === option.value;
20791
- return (hAsync(FieldControlStateWrapper, Object.assign({ key: customId }, this.getOptionProps(option, customId)), hAsync(InputStateWrapper, Object.assign({}, this.getInputProps(option, customId, index, selected)))));
20830
+ return (hAsync(FieldControlStateWrapper, Object.assign({ key: customId }, this.getOptionProps(option, customId)), hAsync(RadioStateWrapper, Object.assign({}, this.getInputProps(option, customId, index, selected)))));
20792
20831
  }
20793
20832
  constructor(hostRef) {
20794
20833
  registerInstance(this, hostRef);
@@ -20820,7 +20859,6 @@ class KolInputRadio {
20820
20859
  });
20821
20860
  }
20822
20861
  };
20823
- this._accessKey = undefined;
20824
20862
  this._disabled = false;
20825
20863
  this._hideMsg = false;
20826
20864
  this._hideLabel = false;
@@ -20833,7 +20871,6 @@ class KolInputRadio {
20833
20871
  this._options = undefined;
20834
20872
  this._orientation = 'vertical';
20835
20873
  this._required = false;
20836
- this._shortKey = undefined;
20837
20874
  this._syncValueBySelector = undefined;
20838
20875
  this._tooltipAlign = 'top';
20839
20876
  this._touched = false;
@@ -20851,9 +20888,6 @@ class KolInputRadio {
20851
20888
  showAsAlert() {
20852
20889
  return Boolean(this.state._touched) && !this.inputHasFocus;
20853
20890
  }
20854
- validateAccessKey(value) {
20855
- this.controller.validateAccessKey(value);
20856
- }
20857
20891
  validateTooltipAlign(value) {
20858
20892
  this.controller.validateTooltipAlign(value);
20859
20893
  }
@@ -20893,9 +20927,6 @@ class KolInputRadio {
20893
20927
  validateRequired(value) {
20894
20928
  this.controller.validateRequired(value);
20895
20929
  }
20896
- validateShortKey(value) {
20897
- this.controller.validateShortKey(value);
20898
- }
20899
20930
  validateSyncValueBySelector(value) {
20900
20931
  this.controller.validateSyncValueBySelector(value);
20901
20932
  }
@@ -20912,7 +20943,6 @@ class KolInputRadio {
20912
20943
  static get delegatesFocus() { return true; }
20913
20944
  get host() { return getElement(this); }
20914
20945
  static get watchers() { return {
20915
- "_accessKey": ["validateAccessKey"],
20916
20946
  "_tooltipAlign": ["validateTooltipAlign"],
20917
20947
  "_disabled": ["validateDisabled"],
20918
20948
  "_hideLabel": ["validateHideLabel"],
@@ -20926,7 +20956,6 @@ class KolInputRadio {
20926
20956
  "_options": ["validateOptions"],
20927
20957
  "_orientation": ["validateOrientation"],
20928
20958
  "_required": ["validateRequired"],
20929
- "_shortKey": ["validateShortKey"],
20930
20959
  "_syncValueBySelector": ["validateSyncValueBySelector"],
20931
20960
  "_touched": ["validateTouched"],
20932
20961
  "_value": ["validateValue"]
@@ -20938,7 +20967,6 @@ class KolInputRadio {
20938
20967
  "$flags$": 57,
20939
20968
  "$tagName$": "kol-input-radio",
20940
20969
  "$members$": {
20941
- "_accessKey": [1, "_access-key"],
20942
20970
  "_disabled": [4],
20943
20971
  "_hideMsg": [1540, "_hide-msg"],
20944
20972
  "_hideLabel": [4, "_hide-label"],
@@ -20951,7 +20979,6 @@ class KolInputRadio {
20951
20979
  "_options": [1],
20952
20980
  "_orientation": [1],
20953
20981
  "_required": [4],
20954
- "_shortKey": [1, "_short-key"],
20955
20982
  "_syncValueBySelector": [1, "_sync-value-by-selector"],
20956
20983
  "_tooltipAlign": [1, "_tooltip-align"],
20957
20984
  "_touched": [1540],
@@ -21994,7 +22021,7 @@ const validateModalVariant = (component, value) => {
21994
22021
  watchValidator(component, '_variant', (value) => typeof value === 'string' && ModalVariantPropTypeOptions.includes(value), new Set(ModalVariantPropTypeOptions), value);
21995
22022
  };
21996
22023
 
21997
- 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}";
22024
+ 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}";
21998
22025
  var KolModalDefaultStyle0 = defaultStyleCss$j;
21999
22026
 
22000
22027
  class KolModal {
@@ -22214,9 +22241,9 @@ class KolNav {
22214
22241
  const collapsible = this.state._collapsible === true;
22215
22242
  const hideLabel = this.state._hideLabel === true;
22216
22243
  const orientation = this.state._orientation;
22217
- return (hAsync("div", { key: '93757665047c23f9ed1339e16911376068df4443', class: clsx('kol-nav', `kol-nav--${orientation}`, {
22244
+ return (hAsync("div", { key: '2d1746fba7131f7af370b41afdd1d3598d3db006', class: clsx('kol-nav', `kol-nav--${orientation}`, {
22218
22245
  'kol-nav--is-compact': this.state._hideLabel,
22219
- }) }, 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: {
22246
+ }) }, 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: {
22220
22247
  onClick: () => {
22221
22248
  this.state = Object.assign(Object.assign({}, this.state), { _hideLabel: this.state._hideLabel === false });
22222
22249
  },
@@ -22487,7 +22514,7 @@ class KolPagination {
22487
22514
  return null;
22488
22515
  }
22489
22516
  });
22490
- 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: {
22517
+ 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: {
22491
22518
  onChange: this.onChangePageSize,
22492
22519
  }, _value: [this.state._pageSize] }))));
22493
22520
  }
@@ -23260,16 +23287,22 @@ const flip$1 = function (options) {
23260
23287
  const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
23261
23288
  const nextPlacement = placements[nextIndex];
23262
23289
  if (nextPlacement) {
23263
- // Try next placement and re-run the lifecycle.
23264
- return {
23265
- data: {
23266
- index: nextIndex,
23267
- overflows: overflowsData
23268
- },
23269
- reset: {
23270
- placement: nextPlacement
23271
- }
23272
- };
23290
+ const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;
23291
+ if (!ignoreCrossAxisOverflow ||
23292
+ // We leave the current main axis only if every placement on that axis
23293
+ // overflows the main axis.
23294
+ overflowsData.every(d => d.overflows[0] > 0 && getSideAxis(d.placement) === initialSideAxis)) {
23295
+ // Try next placement and re-run the lifecycle.
23296
+ return {
23297
+ data: {
23298
+ index: nextIndex,
23299
+ overflows: overflowsData
23300
+ },
23301
+ reset: {
23302
+ placement: nextPlacement
23303
+ }
23304
+ };
23305
+ }
23273
23306
  }
23274
23307
 
23275
23308
  // First, find the candidates that fit on the mainAxis side of overflow,
@@ -24351,6 +24384,12 @@ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
24351
24384
  scrollTop: 0
24352
24385
  };
24353
24386
  const offsets = createCoords(0);
24387
+
24388
+ // If the <body> scrollbar appears on the left (e.g. RTL systems). Use
24389
+ // Firefox with layout.scrollbar.side = 3 in about:config to test this.
24390
+ function setLeftRTLScrollbarOffset() {
24391
+ offsets.x = getWindowScrollBarX(documentElement);
24392
+ }
24354
24393
  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
24355
24394
  if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {
24356
24395
  scroll = getNodeScroll(offsetParent);
@@ -24360,11 +24399,12 @@ function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
24360
24399
  offsets.x = offsetRect.x + offsetParent.clientLeft;
24361
24400
  offsets.y = offsetRect.y + offsetParent.clientTop;
24362
24401
  } else if (documentElement) {
24363
- // If the <body> scrollbar appears on the left (e.g. RTL systems). Use
24364
- // Firefox with layout.scrollbar.side = 3 in about:config to test this.
24365
- offsets.x = getWindowScrollBarX(documentElement);
24402
+ setLeftRTLScrollbarOffset();
24366
24403
  }
24367
24404
  }
24405
+ if (isFixed && !isOffsetParentAnElement && documentElement) {
24406
+ setLeftRTLScrollbarOffset();
24407
+ }
24368
24408
  const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
24369
24409
  const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;
24370
24410
  const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;
@@ -24541,7 +24581,7 @@ function observeMove(element, onMove) {
24541
24581
  // Handle <iframe>s
24542
24582
  root: root.ownerDocument
24543
24583
  });
24544
- } catch (e) {
24584
+ } catch (_e) {
24545
24585
  io = new IntersectionObserver(handleObserve, options);
24546
24586
  }
24547
24587
  io.observe(element);
@@ -28259,7 +28299,7 @@ class KolToastContainer {
28259
28299
  }; }
28260
28300
  }
28261
28301
 
28262
- 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}";
28302
+ 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}";
28263
28303
  var KolToolbarDefaultStyle0 = defaultStyleCss$3;
28264
28304
 
28265
28305
  class KolToolbar {
@@ -28285,9 +28325,10 @@ class KolToolbar {
28285
28325
  this.currentIndex = 0;
28286
28326
  this._label = undefined;
28287
28327
  this._items = undefined;
28328
+ this._orientation = undefined;
28288
28329
  }
28289
28330
  render() {
28290
- return (hAsync("div", { key: 'ce72055bee29ba24ec133dc88eff54d8e25c817d', class: "kol-toolbar", role: "toolbar", "aria-label": this.state._label }, this.state._items.map(this.renderItem)));
28331
+ 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)));
28291
28332
  }
28292
28333
  validateLabel(value) {
28293
28334
  validateLabel(this, value);
@@ -28295,6 +28336,9 @@ class KolToolbar {
28295
28336
  validateItems(value) {
28296
28337
  validateToolbarItems(this, value);
28297
28338
  }
28339
+ validateOrientation(value) {
28340
+ validateOrientation(this, value);
28341
+ }
28298
28342
  getCurrentToolbarItem(index) {
28299
28343
  return typeof index === 'number' ? this.indexToElement.get(index) : undefined;
28300
28344
  }
@@ -28304,18 +28348,21 @@ class KolToolbar {
28304
28348
  }
28305
28349
  handleKeyDown(event) {
28306
28350
  var _a, _b;
28307
- const isArrowKey = event.code === 'ArrowRight' || event.code === 'ArrowLeft';
28351
+ const pressedKey = event.code;
28352
+ const isArrowKey = [KeyboardKey.ArrowUp, KeyboardKey.ArrowDown, KeyboardKey.ArrowRight, KeyboardKey.ArrowLeft].includes(pressedKey);
28308
28353
  if (!isArrowKey)
28309
28354
  return;
28310
28355
  event.preventDefault();
28311
28356
  const lastItemIndex = ((_a = this._items) === null || _a === void 0 ? void 0 : _a.length) - 1;
28312
28357
  const currentIndex = this.currentIndex;
28313
28358
  let nextIndex = 0;
28314
- switch (event.code) {
28315
- case 'ArrowLeft':
28359
+ switch (pressedKey) {
28360
+ case KeyboardKey.ArrowUp:
28361
+ case KeyboardKey.ArrowLeft:
28316
28362
  nextIndex = currentIndex !== nextIndex ? currentIndex - 1 : lastItemIndex;
28317
28363
  break;
28318
- case 'ArrowRight':
28364
+ case KeyboardKey.ArrowDown:
28365
+ case KeyboardKey.ArrowRight:
28319
28366
  if (lastItemIndex !== currentIndex)
28320
28367
  nextIndex = currentIndex + 1;
28321
28368
  break;
@@ -28332,12 +28379,14 @@ class KolToolbar {
28332
28379
  componentWillLoad() {
28333
28380
  this.validateLabel(this._label);
28334
28381
  this.validateItems(this._items);
28382
+ this.validateOrientation(this._orientation);
28335
28383
  this.setFirstEnabledItemIndex();
28336
28384
  }
28337
28385
  get host() { return getElement(this); }
28338
28386
  static get watchers() { return {
28339
28387
  "_label": ["validateLabel"],
28340
- "_items": ["validateItems"]
28388
+ "_items": ["validateItems"],
28389
+ "_orientation": ["validateOrientation"]
28341
28390
  }; }
28342
28391
  static get style() { return {
28343
28392
  default: KolToolbarDefaultStyle0
@@ -28348,6 +28397,7 @@ class KolToolbar {
28348
28397
  "$members$": {
28349
28398
  "_label": [1],
28350
28399
  "_items": [16],
28400
+ "_orientation": [1],
28351
28401
  "state": [32],
28352
28402
  "currentIndex": [32]
28353
28403
  },