@public-ui/hydrate 4.0.3 → 4.0.4-rc.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 +642 -200
  2. package/dist/index.mjs +642 -200
  3. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -146,7 +146,7 @@ function _mergeNamespaces(n, m) {
146
146
 
147
147
  const NAMESPACE = 'kolibri';
148
148
  const BUILD = /* kolibri */ { hydratedSelectorName: "hydrated", slotRelocation: true, state: true, updatable: true};
149
- const Env = /* kolibri */ {"kolibriVersion":"4.0.3"};
149
+ const Env = /* kolibri */ {"kolibriVersion":"4.0.4-rc.0"};
150
150
 
151
151
  function getDefaultExportFromCjs (x) {
152
152
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
@@ -522,7 +522,7 @@ function requireLoglevel () {
522
522
  var loglevelExports = requireLoglevel();
523
523
  var h$1 = /*@__PURE__*/getDefaultExportFromCjs(loglevelExports);
524
524
 
525
- const $=()=>{const t=typeof process<"u"&&process.env?process.env:{},e=t.NODE_ENV==="test",s="VITEST"in t,a="JEST_WORKER_ID"in t,o="PLAYWRIGHT_TEST_BASE_URL"in t,r=t.CI==="true",i=t.TEST==="true"||t.IS_TEST==="true",c=typeof navigator<"u"&&navigator.webdriver===true,m=typeof navigator<"u"&&/playwright|puppeteer|webdriver|selenium|testcafe/i.test(navigator.userAgent);return e||s||a||o||r||i||c||m},n$1={A11yUi:{CSS_STYLE_CACHE:new Map,IS_TEST_ENVIRONMENT:$(),PERFORMANCE_MEASURES:new Map,STYLING_TASK_QUEUE:new Map,THEMES:new Map}};let f$1=false;const j=/^[a-z][a-z0-9]{1,}(-[a-z0-9]+)?$/,F=t=>typeof t=="string"&&j.test(t),E=t=>{if(!F(t))throw new Error(`[Theming] The theme identifier "${typeof t=="string"?t:""}" (Type: ${typeof t}) is not valid. Please use only follow this pattern: /^[a-z][a-z0-9]{1,}(-[a-z0-9]+)?$/`)},g=t=>t.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\s*([{},;])\s*/g,"$1").replace(/:\s+/g,":").replace(/\s+/g," ").replace(/;\}/g,"}").trim(),Y=(t,e,s,a)=>u$1(t,e,s,a),u$1=(t,e,s,a)=>{a=a??{},a.append=a.append??false,E(t),!f$1&&(f$1=true,h$1.warn(`[Theming] The theme process is locked. This means that the theme "${t}" should not be patched.
525
+ const Y=()=>{const t=typeof process<"u"&&process.env?process.env:{},e=t.NODE_ENV==="test",s="VITEST"in t,o="JEST_WORKER_ID"in t,a="PLAYWRIGHT_TEST_BASE_URL"in t,r=t.CI==="true",i=t.TEST==="true"||t.IS_TEST==="true",c=typeof navigator<"u"&&navigator.webdriver===true,y=typeof navigator<"u"&&/playwright|puppeteer|webdriver|selenium|testcafe/i.test(navigator.userAgent);return e||s||o||a||r||i||c||y},n$1={A11yUi:{CSS_STYLE_CACHE:new Map,IS_TEST_ENVIRONMENT:Y(),PERFORMANCE_MEASURES:new Map,STYLING_TASK_QUEUE:new Map,THEMES:new Map}};let f$1=false;const k=/^[a-z][a-z0-9]{1,}(-[a-z0-9]+)?$/,G=t=>typeof t=="string"&&k.test(t),S=t=>{if(!G(t))throw new Error(`[Theming] The theme identifier "${typeof t=="string"?t:""}" (Type: ${typeof t}) is not valid. Please use only follow this pattern: /^[a-z][a-z0-9]{1,}(-[a-z0-9]+)?$/`)},A=t=>t.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\s*([{},;])\s*/g,"$1").replace(/:\s+/g,":").replace(/\s+/g," ").replace(/;\}/g,"}").trim(),x=(t,e,s,o)=>T(t,e,s,o),T=(t,e,s,o)=>{o=o??{},o.append=o.append??false,S(t),!f$1&&(f$1=true,h$1.warn(`[Theming] The theme process is locked. This means that the theme "${t}" should not be patched.
526
526
 
527
527
  import { register } from 'adopted-style-sheets';
528
528
  import { defineCustomElements } from '...';
@@ -532,7 +532,7 @@ const $=()=>{const t=typeof process<"u"&&process.env?process.env:{},e=t.NODE_ENV
532
532
  .then(() => {
533
533
  // run your app or website
534
534
  })
535
- .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),S=t=>{if(t instanceof HTMLElement){if(typeof t.dataset.theme=="string")return t;{let e=t.parentNode;for(;e instanceof ShadowRoot;)e=e.host;return S(e)}}else return null},A=(t={})=>t.themeEncroachCss==="false"||t.themeReset==="true"?false:{mode:t.themeEncroachCssMode==="after"||t.themeEncroachCssMode==="before"?t.themeEncroachCssMode:"before"},C=()=>typeof n$1.A11yUi.Theme=="object"&&n$1.A11yUi.Theme!==null&&typeof n$1.A11yUi.Theme.cache=="boolean"&&typeof n$1.A11yUi.Theme.encroachCss=="object"&&n$1.A11yUi.Theme.encroachCss!==null&&typeof n$1.A11yUi.Theme.encroachCss.mode=="string"&&typeof n$1.A11yUi.Theme.name=="string",b=t=>{if(C())return n$1.A11yUi.Theme;{const e={cache:true,encroachCss:A(),loglevel:"silent",mode:"csr",name:null},s=S(t);return s instanceof HTMLElement&&(e.cache=s.dataset.themeCache!=="false",e.encroachCss=A(s.dataset),e.loglevel=s.dataset.themeLoglevel==="debug"?s.dataset.themeLoglevel:"silent",e.mode=s.dataset.themeMode==="ssr"?s.dataset.themeMode:"csr",e.name=s.dataset.theme||null),e}};const w=new Set,W=/--[^;]+/g,q=/:/,J=typeof MutationObserver<"u";let M=25,N=()=>{M=Math.min(25+Math.log2(n$1.A11yUi.STYLING_TASK_QUEUE.size+1)*20,250);};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=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!==false){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)===false&&X(a,i);const m=[r,i,c];te(o,m,e.encroachCss),e.cache===true&&(n$1.A11yUi.CSS_STYLE_CACHE.has(a)===false&&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(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);}};let T=t=>{const e=setTimeout(()=>{clearTimeout(e),t.classList.contains("hydrated")?L(t):T(t);},M);};const ae={attributes:true,attributeFilter:["class"],childList:false,subtree:false},oe={attributes:true,attributeFilter:[],childList:false,subtree:false},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&&(T=t=>R.observe(t,ae),N=()=>{});let _=t=>{const e=getComputedStyle(t).getPropertyValue("--theme-visibility-delay").trim();if(e.endsWith("ms"))return parseFloat(e);if(e.endsWith("s"))return parseFloat(e)*1e3;{const s=parseFloat(e);return isNaN(s)?0:s}};n$1.A11yUi.IS_TEST_ENVIRONMENT&&(_=()=>0);const O=(t,e)=>{t.style.setProperty("visibility",e),t.dataset.themed="";},re=(t,e)=>{const s=t.style.visibility||null;n$1.A11yUi.STYLING_TASK_QUEUE.set(t,{resetCss:()=>{const a=_(t);a>0?setTimeout(()=>{O(t,s);},a):O(t,s);},themeDetails:e}),t.style.setProperty("visibility","hidden","important"),T(t);},H=t=>{n$1.A11yUi.STYLING_TASK_QUEUE.delete(t),N();},ne=(t,e)=>{re(t,{...n$1.A11yUi.Theme,...e});};
535
+ .catch(console.warn);`));let a=n$1.A11yUi.THEMES.get(t);if(a||(a=new Map,n$1.A11yUi.THEMES.set(t,a)),o.append&&a.has(e)){const r=a.get(e);a.set(e,A(`${r}${s}`));}else a.set(e,A(s));},K=(t,e,s,o)=>g(t,e,s,o),g=(t,e,s,o)=>(S(t),typeof e=="object"&&e!==null&&Object.getOwnPropertyNames(e).forEach(a=>{const r=e[a],i=a.toLowerCase(),c=typeof o?.transformTagName=="function"&&!["GLOBAL","PROPERTIES"].includes(a)?o.transformTagName(i):a;typeof r=="string"&&r.length>0&&T(t,c.toUpperCase(),r,s);}),t),b=t=>{if(t instanceof HTMLElement){if(typeof t.dataset.theme=="string")return t;{let e=t.parentNode;for(;e instanceof ShadowRoot;)e=e.host;return b(e)}}else return null},C=(t={})=>t.themeEncroachCss==="false"||t.themeReset==="true"?false:{mode:t.themeEncroachCssMode==="after"||t.themeEncroachCssMode==="before"?t.themeEncroachCssMode:"before"},U=()=>typeof n$1.A11yUi.Theme=="object"&&n$1.A11yUi.Theme!==null&&typeof n$1.A11yUi.Theme.cache=="boolean"&&typeof n$1.A11yUi.Theme.encroachCss=="object"&&n$1.A11yUi.Theme.encroachCss!==null&&typeof n$1.A11yUi.Theme.encroachCss.mode=="string"&&typeof n$1.A11yUi.Theme.name=="string",w=t=>{if(U())return n$1.A11yUi.Theme;{const e={cache:true,encroachCss:C(),loglevel:"silent",mode:"csr",name:null},s=b(t);return s instanceof HTMLElement&&(e.cache=s.dataset.themeCache!=="false",e.encroachCss=C(s.dataset),e.loglevel=s.dataset.themeLoglevel==="debug"?s.dataset.themeLoglevel:"silent",e.mode=s.dataset.themeMode==="ssr"?s.dataset.themeMode:"csr",e.name=s.dataset.theme||null),e}};const v=new Set,N=new Map,X=/--[^;]+/g,Z=/:/,ee=typeof MutationObserver<"u";let L=25,R=()=>{L=Math.min(25+Math.log2(n$1.A11yUi.STYLING_TASK_QUEUE.size+1)*20,250);};const te=(t,e)=>{let s=e.match(X);if(Array.isArray(s)){s=s.filter(a=>Z.test(a));const o=document.createElement("style");o.innerHTML=`.${t} {${s.join(";")}}`,document.querySelector("head")?.appendChild(o);}v.add(t);},d=(t,e)=>{const s=n$1.A11yUi.THEMES.get(t);if(s instanceof Map){const o=s.get(e);if(o!==void 0)return o}return ""},se=t=>{const e=t.firstChild;if(!(!(e instanceof HTMLStyleElement)||e.dataset.themingFallback!==void 0))for(const s of Array.from(t.childNodes))if(s instanceof HTMLStyleElement&&s.tagName==="STYLE"&&s.dataset.themingFallback===void 0)t.removeChild(s);else break},oe=(t,e)=>{try{if(n$1.A11yUi.Theme?.mode==="ssr")throw new Error("SSR");const s=e.filter(o=>typeof o=="string"&&o.length>0).map(o=>{let a=N.get(o);return a||(a=new CSSStyleSheet,a.replaceSync(o),N.set(o,a)),a});t.adoptedStyleSheets=s;}catch{for(let o=e.length-1;o>=0;o--){const a=e[o];if(typeof a!="string"||a.length===0)continue;const r=e.length-1-o,i=document.createElement("style");switch(i.dataset.themingFallback="",r){case 4:i.dataset.themingBaseA11y="";break;case 3:i.dataset.themingBaseGlobal="";break;case 2:i.dataset.themingBaseComponent="";break;case 1:i.dataset.themingCustomGlobal="";break;case 0:i.dataset.themingCustomComponent="";break;default:i.dataset.themingUnknown="";break}i.innerHTML=a,t.insertBefore(i,t.firstChild);}}},ae=(t,e,s)=>{if(s===false||s?.mode!=="before"&&s?.mode!=="after")return;const o=Array.from(t.childNodes).filter(r=>r instanceof HTMLStyleElement&&r.tagName==="STYLE");let a;try{a=Array.from(t.adoptedStyleSheets);}catch{a=[];}if(!(o.length===0&&a.length===0))if(s.mode==="before"){const r=[...a.map(i=>Array.from(i.cssRules).map(c=>c.cssText).join("")),...o.map(i=>i.innerHTML)];e.unshift(...r);}else o.forEach(r=>e.push(r.innerHTML)),a.forEach(r=>e.push(Array.from(r.cssRules).map(i=>i.cssText).join("")));},ne=(t,e,s)=>{const o=e.name||"default";let a;try{if(t.shadowRoot===null)throw new Error("ShadowRoot is null");a=t.shadowRoot;}catch{a=t;}const r=n$1.A11yUi.CSS_STYLE_CACHE.get(o)?.get(t.tagName);if(r)_(t,a,r,s);else {const i=d(o,"PROPERTIES"),c=d(o,"GLOBAL"),y=d(o,t.tagName);v.has(o)===false&&te(o,c);const u=[i,c,y];if(ae(a,u,e.encroachCss),e.cache===true){let m=n$1.A11yUi.CSS_STYLE_CACHE.get(o);m||(m=new Map,n$1.A11yUi.CSS_STYLE_CACHE.set(o,m)),m.set(t.tagName,u);}_(t,a,u,s);}},_=(t,e,s,o)=>{const a=n$1.A11yUi.Theme?.loglevel==="debug",r=a?performance.now():0;if(se(e),oe(e,s),me(t),requestAnimationFrame(o),a){const i=performance.now()-r,c=n$1.A11yUi.PERFORMANCE_MEASURES.get(t.tagName);c?(c.count+=1,c.totalTime+=i):n$1.A11yUi.PERFORMANCE_MEASURES.set(t.tagName,{count:1,totalTime:i});}},O=t=>{const e=n$1.A11yUi.STYLING_TASK_QUEUE.get(t);if(e){const{resetCss:s,themeDetails:o}=e;ne(t,o,s);}},re=100;let E=(t,e=0)=>{if(e>=re)return;const s=setTimeout(()=>{clearTimeout(s),t.classList.contains("hydrated")?O(t):E(t,e+1);},L);};const ie={attributes:true,attributeFilter:["class"],childList:false,subtree:false},ce={attributes:true,attributeFilter:[],childList:false,subtree:false},I=ee?new MutationObserver((t,e)=>{const s=[];for(const o of t){const a=o.target;a.classList.contains("hydrated")&&n$1.A11yUi.STYLING_TASK_QUEUE.has(a)&&(O(a),s.push(a));}for(const o of s)e.observe(o,ce);}):null;I&&(E=t=>I.observe(t,ie),R=()=>{});const H=new Map;let P=(t,e)=>{if(e){const a=H.get(e);if(a!==void 0)return a}const s=getComputedStyle(t).getPropertyValue("--theme-visibility-delay").trim();let o;if(s.endsWith("ms"))o=parseFloat(s);else if(s.endsWith("s"))o=parseFloat(s)*1e3;else {const a=parseFloat(s);o=isNaN(a)?0:a;}return e&&H.set(e,o),o};n$1.A11yUi.IS_TEST_ENVIRONMENT&&(P=()=>0);const $=(t,e)=>{t.style.setProperty("visibility",e),t.dataset.themed="";},le=(t,e)=>{const s=t.style.visibility||null,o=e.name||"default";n$1.A11yUi.STYLING_TASK_QUEUE.set(t,{resetCss:()=>{const a=P(t,o);a>0?setTimeout(()=>{$(t,s);},a):$(t,s);},themeDetails:e}),t.style.setProperty("visibility","hidden","important"),E(t);},me=t=>{n$1.A11yUi.STYLING_TASK_QUEUE.delete(t),R();},he=(t,e)=>{le(t,{...n$1.A11yUi.Theme,...e});};
536
536
 
537
537
  var KeyEnum;
538
538
  (function (KeyEnum) {
@@ -642,7 +642,7 @@ const setRuntimeMode = (mode) => {
642
642
  throw new Error(`Invalid NODE_ENV value: ${mode}. Expected one of ${MODES.join(', ')}.`);
643
643
  }
644
644
  }
645
- catch (e) {
645
+ catch (_a) {
646
646
  runtimeMode = 'production';
647
647
  }
648
648
  };
@@ -653,7 +653,7 @@ const getInitialMode = () => {
653
653
  return nodeEnv;
654
654
  }
655
655
  }
656
- catch (e) {
656
+ catch (_a) {
657
657
  }
658
658
  return 'production';
659
659
  };
@@ -1672,7 +1672,7 @@ const watchJsonArrayString = (component, propName, itemValidation, value, arrayV
1672
1672
  try {
1673
1673
  value = parseJson(value);
1674
1674
  }
1675
- catch (e) {
1675
+ catch (_a) {
1676
1676
  }
1677
1677
  if (Array.isArray(value)) {
1678
1678
  const invalid = value.find((item) => !itemValidation(item));
@@ -1703,7 +1703,7 @@ const stringifyJson = (value) => {
1703
1703
  try {
1704
1704
  return JSON.stringify(value).replace(/"/g, "'");
1705
1705
  }
1706
- catch (error) {
1706
+ catch (_a) {
1707
1707
  Log.warn(['stringifyJson', value]);
1708
1708
  Log.error(`↑ The JSON could not be converted to a string. A stringifiable JSON is expected.`);
1709
1709
  throw new Error();
@@ -1715,12 +1715,12 @@ const parseJson = (value) => {
1715
1715
  try {
1716
1716
  return JSON.parse(value);
1717
1717
  }
1718
- catch (error) {
1718
+ catch (_a) {
1719
1719
  if (JSON_CHARS.test(value)) {
1720
1720
  try {
1721
1721
  return JSON.parse(value.replace(/'/g, '"'));
1722
1722
  }
1723
- catch (error) {
1723
+ catch (_b) {
1724
1724
  Log.warn(['parseJson', value]);
1725
1725
  Log.error(`↑ The JSON string could not be parsed. Make sure that single quotes in the text are escaped (&#8216;).`);
1726
1726
  }
@@ -1928,9 +1928,9 @@ KoliBriUtils.executionLock = false;
1928
1928
  KoliBriUtils.cache = new Map();
1929
1929
  class KoliBriDevHelper {
1930
1930
  }
1931
- KoliBriDevHelper.getCssStyle = y;
1932
- KoliBriDevHelper.patchTheme = k;
1933
- KoliBriDevHelper.patchThemeTag = Y;
1931
+ KoliBriDevHelper.getCssStyle = d;
1932
+ KoliBriDevHelper.patchTheme = K;
1933
+ KoliBriDevHelper.patchThemeTag = x;
1934
1934
  KoliBriDevHelper.querySelector = koliBriQuerySelector;
1935
1935
  KoliBriDevHelper.querySelectorAll = koliBriQuerySelectorAll;
1936
1936
  KoliBriDevHelper.stringifyJson = stringifyJson;
@@ -2090,9 +2090,9 @@ const validateCollapsible = (component, value) => {
2090
2090
  watchBoolean(component, '_collapsible', value);
2091
2091
  };
2092
2092
 
2093
- const HEX_REGEX = /^#((\d|[a-f]){8}|(\d|[a-f]){6}|(\d|[a-f]){3,4})$/i;
2094
- function isHexString(value) {
2095
- return HEX_REGEX.test(value);
2093
+ const HEX_REGEX$1 = /^#((\d|[a-f]){8}|(\d|[a-f]){6}|(\d|[a-f]){3,4})$/i;
2094
+ function isHexString$1(value) {
2095
+ return HEX_REGEX$1.test(value);
2096
2096
  }
2097
2097
  function isColorObjectString(value) {
2098
2098
  if (value.startsWith('{')) {
@@ -2101,7 +2101,7 @@ function isColorObjectString(value) {
2101
2101
  if (isValidColorPair(parsed))
2102
2102
  return { type: 'ColorPair', value: parsed };
2103
2103
  }
2104
- catch (error) {
2104
+ catch (_a) {
2105
2105
  return { type: null, value: null };
2106
2106
  }
2107
2107
  }
@@ -2110,7 +2110,7 @@ function isColorObjectString(value) {
2110
2110
  function typeOfColor(value) {
2111
2111
  if (value) {
2112
2112
  if (typeof value === 'string') {
2113
- if (isHexString(value))
2113
+ if (isHexString$1(value))
2114
2114
  return { type: 'string', valid: true, value: value };
2115
2115
  else {
2116
2116
  const colorObject = isColorObjectString(value);
@@ -2127,14 +2127,7 @@ function typeOfColor(value) {
2127
2127
  return { type: null, valid: false, value: '' };
2128
2128
  }
2129
2129
  function isValidColorPair(value) {
2130
- return !!(typeof value === 'object' &&
2131
- value &&
2132
- typeof value.backgroundColor === 'string' &&
2133
- (typeof value.foregroundColor === 'string' ||
2134
- (value.foregroundColor &&
2135
- typeof value.foregroundColor.primary === 'string' &&
2136
- typeof value.foregroundColor.secondary === 'string' &&
2137
- typeof value.foregroundColor.neutral === 'string')));
2130
+ return !!(typeof value === 'object' && value && typeof value.backgroundColor === 'string' && typeof value.foregroundColor === 'string');
2138
2131
  }
2139
2132
  function validatorFunction(value) {
2140
2133
  const valueType = typeOfColor(value);
@@ -2150,7 +2143,6 @@ const validateColor = (component, value, options) => {
2150
2143
  watchValidator(component, '_color', validatorFunction, new Set(['rgb in hex', 'ColorPair']), value, options);
2151
2144
  };
2152
2145
  const handleColorChange = (value) => {
2153
- var _a;
2154
2146
  let colorContrast;
2155
2147
  const valueType = typeOfColor(value);
2156
2148
  switch (valueType.type) {
@@ -2162,8 +2154,6 @@ const handleColorChange = (value) => {
2162
2154
  let foreground = '';
2163
2155
  if (typeof asColorPair.foregroundColor === 'string')
2164
2156
  foreground = asColorPair.foregroundColor;
2165
- else if ((_a = asColorPair.foregroundColor) === null || _a === void 0 ? void 0 : _a.primary)
2166
- foreground = asColorPair.foregroundColor.primary;
2167
2157
  if (!foreground || typeof foreground !== 'string')
2168
2158
  foreground = '#fff';
2169
2159
  colorContrast = createContrastColorPair({
@@ -2299,7 +2289,7 @@ const validateIcons = (component, value, options = {}) => {
2299
2289
  try {
2300
2290
  value = parseJson(value);
2301
2291
  }
2302
- catch (e) {
2292
+ catch (_b) {
2303
2293
  }
2304
2294
  watchValidator(component, '_icons', (value) => {
2305
2295
  const valueIsEmptyObject = typeof value === 'object' && value !== null && Object.keys(value).length === 0;
@@ -2435,7 +2425,7 @@ const validateMsg = (component, value) => {
2435
2425
  try {
2436
2426
  value = parseJson(value);
2437
2427
  }
2438
- catch (e) {
2428
+ catch (_a) {
2439
2429
  }
2440
2430
  watchValidator(component, `_msg`, (value) => {
2441
2431
  if (value === undefined) {
@@ -2460,7 +2450,7 @@ function normalizeMsg(msg) {
2460
2450
  try {
2461
2451
  return parseJson(msg);
2462
2452
  }
2463
- catch (e) {
2453
+ catch (_a) {
2464
2454
  return { _description: msg, _type: 'error' };
2465
2455
  }
2466
2456
  }
@@ -2607,7 +2597,7 @@ const validateTableData = (component, value, setStateHooks) => {
2607
2597
  try {
2608
2598
  value = parseJson(value);
2609
2599
  }
2610
- catch (e) {
2600
+ catch (_a) {
2611
2601
  }
2612
2602
  if (Array.isArray(value) && value.every((data) => typeof data === 'object' && data !== null)) {
2613
2603
  setState(component, '_data', value, setStateHooks);
@@ -2625,7 +2615,7 @@ const validateTableDataFoot = (component, value, setStateHooks) => {
2625
2615
  try {
2626
2616
  value = parseJson(value);
2627
2617
  }
2628
- catch (e) {
2618
+ catch (_a) {
2629
2619
  }
2630
2620
  if (Array.isArray(value) && value.every((data) => typeof data === 'object' && data !== null)) {
2631
2621
  setState(component, '_dataFoot', value, setStateHooks);
@@ -2661,7 +2651,7 @@ const validateTableSelection = (component, value) => {
2661
2651
  try {
2662
2652
  return parseJson(value);
2663
2653
  }
2664
- catch (e) {
2654
+ catch (_a) {
2665
2655
  return undefined;
2666
2656
  }
2667
2657
  };
@@ -2683,7 +2673,7 @@ const validateToolbarItems = (component, value) => {
2683
2673
  try {
2684
2674
  value = parseJson(value);
2685
2675
  }
2686
- catch (e) {
2676
+ catch (_a) {
2687
2677
  }
2688
2678
  if (Array.isArray(value) && value.every((items) => typeof items === 'object' && items !== null)) {
2689
2679
  setState(component, '_items', value);
@@ -2773,10 +2763,10 @@ var appGlobalScript = () => {
2773
2763
  setMode((elm) => {
2774
2764
  try {
2775
2765
  if (elm.shadowRoot instanceof ShadowRoot) {
2776
- ne(elm, b(elm));
2766
+ he(elm, w(elm));
2777
2767
  }
2778
2768
  }
2779
- catch (error) {
2769
+ catch (_a) {
2780
2770
  }
2781
2771
  return 'default';
2782
2772
  });
@@ -4250,6 +4240,21 @@ var getElement = (ref) => {
4250
4240
  var _a;
4251
4241
  return (_a = getHostRef(ref)) == null ? void 0 : _a.$hostElement$ ;
4252
4242
  };
4243
+
4244
+ // src/runtime/event-emitter.ts
4245
+ var createEvent = (ref, name, flags) => {
4246
+ const elm = getElement(ref);
4247
+ return {
4248
+ emit: (detail) => {
4249
+ return emitEvent(elm, name, {
4250
+ bubbles: true,
4251
+ composed: true,
4252
+ cancelable: true,
4253
+ detail
4254
+ });
4255
+ }
4256
+ };
4257
+ };
4253
4258
  var emitEvent = (elm, name, opts) => {
4254
4259
  const ev = plt.ce(name, opts);
4255
4260
  elm.dispatchEvent(ev);
@@ -5385,7 +5390,7 @@ var Fragment = (_, children) => children;
5385
5390
  var addHostEventListeners = (elm, hostRef, listeners, attachParentListeners) => {
5386
5391
  if (listeners && win.document) {
5387
5392
  listeners.map(([flags, name, method]) => {
5388
- const target = elm;
5393
+ const target = getHostListenerTarget(win.document, elm, flags) ;
5389
5394
  const handler = hostListenerProxy(hostRef, method);
5390
5395
  const opts = hostListenerOpts(flags);
5391
5396
  plt.ael(target, name, handler, opts);
@@ -5407,6 +5412,12 @@ var hostListenerProxy = (hostRef, methodName) => (ev) => {
5407
5412
  consoleError(e, hostRef.$hostElement$);
5408
5413
  }
5409
5414
  };
5415
+ var getHostListenerTarget = (doc, elm, flags) => {
5416
+ if (flags & 8 /* TargetWindow */) {
5417
+ return win;
5418
+ }
5419
+ return elm;
5420
+ };
5410
5421
  var hostListenerOpts = (flags) => (flags & 2 /* Capture */) !== 0;
5411
5422
 
5412
5423
  // src/runtime/vdom/vdom-annotations.ts
@@ -6039,7 +6050,6 @@ var needsScopedSSR = () => scopedSSR;
6039
6050
  var scopedSSR = false;
6040
6051
 
6041
6052
  let KolAlertWcTag = 'kol-alert-wc';
6042
- let KolAvatarWcTag = 'kol-avatar-wc';
6043
6053
  let KolBadgeTag = 'kol-badge';
6044
6054
  let KolButtonTag = 'kol-button';
6045
6055
  let KolButtonWcTag = 'kol-button-wc';
@@ -6235,7 +6245,7 @@ const initMeta = () => {
6235
6245
  }
6236
6246
  }
6237
6247
  }
6238
- catch (error) {
6248
+ catch (_a) {
6239
6249
  }
6240
6250
  };
6241
6251
  const getKoliBri$1 = () => {
@@ -6759,9 +6769,11 @@ var a = /*@__PURE__*/getDefaultExportFromCjs(easyBemExports);
6759
6769
 
6760
6770
  function c(){const e=new Map,n=(t,o,r)=>{try{return e.get(t)(o,r)}catch{return e.set(t,a(t)).get(t)(o,r)}};return n.forBlock=t=>{const o=(r,s)=>n(t,r,s);return o.forElement=r=>s=>n(t,r,s),o},n}
6761
6771
 
6772
+ const bem$2 = c();
6773
+
6762
6774
  const bem$1 = c();
6763
- const BEM_CLASS_ALERT__CLOSER = bem$1('kol-alert', 'closer');
6764
- const BEM_CLASS_ALERT__CONTENT = bem$1('kol-alert', 'content');
6775
+ bem$1('kol-alert', 'closer');
6776
+ bem$1('kol-alert', 'content');
6765
6777
  const BEM_CLASS_ALERT__ICON = bem$1('kol-alert', 'icon');
6766
6778
 
6767
6779
  const translateError = translate('kol-error');
@@ -6787,7 +6799,9 @@ const AlertIcon = ({ type, label }) => {
6787
6799
  }
6788
6800
  };
6789
6801
 
6790
- const translateCloseAlert = translate('kol-close-alert');
6802
+ const alertBem = bem$2.forBlock('kol-alert');
6803
+ const BEM_CLASS_ALERT__CLOSER = alertBem('closer');
6804
+ const BEM_CLASS_ALERT__CONTENT = alertBem('content');
6791
6805
  const vibrateOnError = () => {
6792
6806
  if (typeof navigator === 'undefined' || typeof navigator.vibrate !== 'function') {
6793
6807
  return;
@@ -6808,18 +6822,19 @@ const vibrateOnError = () => {
6808
6822
  };
6809
6823
  const KolAlertFc = (props, children) => {
6810
6824
  const { class: classNames = {}, alert = false, hasCloser = false, label, level = 0, type = 'default', variant = 'msg', onAlertTimeout, onCloserClick } = props, other = __rest(props, ["class", "alert", "hasCloser", "label", "level", "type", "variant", "onAlertTimeout", "onCloserClick"]);
6825
+ const translateCloseAlert = translate('kol-close-alert');
6811
6826
  if (alert) {
6812
6827
  vibrateOnError();
6813
6828
  setTimeout(() => {
6814
6829
  onAlertTimeout === null || onAlertTimeout === void 0 ? void 0 : onAlertTimeout();
6815
6830
  }, 10000);
6816
6831
  }
6817
- const BEM_CLASS_ROOT = bem$1('kol-alert', {
6832
+ const BEM_CLASS_ROOT = alertBem({
6818
6833
  hasCloser: !!hasCloser,
6819
6834
  [`type-${type}`]: true,
6820
6835
  [`variant-${variant}`]: true,
6821
6836
  });
6822
- const BEM_CLASS__HEADING = bem$1('kol-alert', 'heading', {
6837
+ const BEM_CLASS__HEADING = alertBem('heading', {
6823
6838
  [`h${level}`]: true,
6824
6839
  });
6825
6840
  const rootProps = Object.assign({ class: clsx(classNames, BEM_CLASS_ROOT) }, other);
@@ -6930,109 +6945,215 @@ class KolAlertWc {
6930
6945
  }; }
6931
6946
  }
6932
6947
 
6933
- const defaultStyleCss$K = "/* forward the rem function */\n/*\n* This file defines the layer order for all CSS layers used in KoliBri.\n* The order is important as it determines the cascade priority.\n*\n* Layer order (lowest to highest priority):\n* 1. kol-a11y - Accessibility defaults and requirements\n* 2. kol-global - Global component styles and resets\n* 3. kol-component - Component-specific styles\n* 4. kol-theme-global - Theme-specific global styles\n* 5. kol-theme-component - Theme-specific component styles\n*/\n@layer kol-a11y, kol-global, kol-component, kol-theme-global, kol-theme-component;\n/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44 * 1rem / var(--kolibri-root-font-size, 16));\n /*\n * No element should be used without verifying the contrast ratio of its background and font colors.\n * By initially setting the background color to white and the font color to black,\n * the contrast ratio is ensured and explicit adjustment is forced.\n */\n color: black;\n background-color: white;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n /*\n * Text should be aligned left by default to provide a predictable starting point.\n */\n text-align: left;\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 * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of to-rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: 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 text color from his parent element.\n */\n color: inherit;\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 * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\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 position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\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 width: 100%;\n margin: 0;\n padding: 0;\n border: none;\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 color: black;\n background-color: lightgray;\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 font-size: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\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: flex;\n flex-flow: column;\n align-items: center;\n justify-content: 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 align-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 opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n .hastooltip {\n z-index: 900 !important;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@layer kol-component {\n .kol-avatar,\n .kol-avatar__image,\n .kol-avatar__initials {\n border-radius: 50%;\n }\n .kol-avatar {\n /* Visible with forced colors */\n outline: transparent solid calc(1 * 1rem / var(--kolibri-root-font-size, 16));\n width: calc(100 * 1rem / var(--kolibri-root-font-size, 16));\n height: calc(100 * 1rem / var(--kolibri-root-font-size, 16));\n }\n .kol-avatar__image, .kol-avatar__initials {\n width: 100%;\n height: 100%;\n }\n .kol-avatar__initials {\n background-color: inherit;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: calc(40 * 1rem / var(--kolibri-root-font-size, 16));\n }\n}";
6948
+ const BEM_BLOCK_AVATAR = 'kol-avatar';
6949
+ const BEM_CLASS_AVATAR__IMAGE = bem$2(BEM_BLOCK_AVATAR, 'image');
6950
+ const BEM_CLASS_AVATAR__INITIALS = bem$2(BEM_BLOCK_AVATAR, 'initials');
6951
+ const AvatarFC = (props) => {
6952
+ const { color, initials, label, src } = props;
6953
+ return (hAsync("div", { "aria-label": translate('kol-avatar-alt', { placeholders: { name: label } }), class: "kol-avatar", role: "img", style: {
6954
+ backgroundColor: color.backgroundColor,
6955
+ color: color.foregroundColor,
6956
+ } }, src ? (hAsync("img", { alt: "", "aria-hidden": "true", class: BEM_CLASS_AVATAR__IMAGE, src: src })) : (hAsync("span", { "aria-hidden": "true", class: BEM_CLASS_AVATAR__INITIALS }, initials))));
6957
+ };
6934
6958
 
6935
- class KolAvatar {
6936
- constructor(hostRef) {
6937
- registerInstance(this, hostRef);
6938
- this._color = '#d3d3d3';
6959
+ function createPropDefinition(normalize, validate) {
6960
+ return {
6961
+ normalize,
6962
+ validate,
6963
+ };
6964
+ }
6965
+ function withValidPropValue(propDef, value, callback) {
6966
+ try {
6967
+ const normalized = propDef.normalize(value);
6968
+ if (propDef.validate(normalized)) {
6969
+ callback(normalized);
6970
+ }
6939
6971
  }
6940
- render() {
6941
- return hAsync(KolAvatarWcTag, { key: 'b50d593f2fcc07fb3a1c8a92786df6ddcbc917cf', _color: this._color, _src: this._src, _label: this._label });
6972
+ catch (e) {
6973
+ Log.debug(e);
6942
6974
  }
6943
- static get style() { return {
6944
- default: defaultStyleCss$K
6945
- }; }
6946
- static get cmpMeta() { return {
6947
- "$flags$": 297,
6948
- "$tagName$": "kol-avatar",
6949
- "$members$": {
6950
- "_color": [1],
6951
- "_src": [1],
6952
- "_label": [1]
6953
- },
6954
- "$listeners$": undefined,
6955
- "$lazyBundleId$": "-",
6956
- "$attrsToReflect$": []
6957
- }; }
6958
6975
  }
6959
6976
 
6977
+ const HEX_REGEX = /^#((\d|[a-f]){8}|(\d|[a-f]){6}|(\d|[a-f]){3,4})$/i;
6978
+ function isHexString(value) {
6979
+ return HEX_REGEX.test(value);
6980
+ }
6981
+ function normalizer(value) {
6982
+ if (typeof value === 'string' && isHexString(value)) {
6983
+ const colors = createContrastColorPair(value);
6984
+ return {
6985
+ backgroundColor: colors.background,
6986
+ foregroundColor: colors.foreground,
6987
+ };
6988
+ }
6989
+ else if (typeof value === 'object' && value) {
6990
+ const colorPair = value;
6991
+ if (typeof colorPair.backgroundColor === 'string' &&
6992
+ typeof colorPair.foregroundColor === 'string' &&
6993
+ isHexString(colorPair.backgroundColor) &&
6994
+ isHexString(colorPair.foregroundColor)) {
6995
+ const colors = createContrastColorPair({
6996
+ background: colorPair.backgroundColor,
6997
+ foreground: colorPair.foregroundColor,
6998
+ });
6999
+ return {
7000
+ backgroundColor: colors.background,
7001
+ foregroundColor: colors.foreground,
7002
+ };
7003
+ }
7004
+ }
7005
+ throw new Error(`Invalid color ${value}`);
7006
+ }
7007
+ function validator(value) {
7008
+ return isHexString(value.foregroundColor) && isHexString(value.backgroundColor);
7009
+ }
7010
+ const colorProp = createPropDefinition(normalizer, validator);
7011
+
7012
+ function normalizeString(value) {
7013
+ if (typeof value === 'string') {
7014
+ return value;
7015
+ }
7016
+ if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {
7017
+ return String(value);
7018
+ }
7019
+ throw new Error(`Invalid string: ${value}`);
7020
+ }
7021
+ function normalizeInteger(value) {
7022
+ if (typeof value === 'number') {
7023
+ return Number.isInteger(value) ? value : Math.round(value);
7024
+ }
7025
+ if (typeof value === 'string') {
7026
+ const parsed = parseInt(value, 10);
7027
+ if (!isNaN(parsed)) {
7028
+ return parsed;
7029
+ }
7030
+ }
7031
+ throw new Error(`Invalid integer: ${value}`);
7032
+ }
7033
+
7034
+ const countProp = createPropDefinition(normalizeInteger, (v) => v >= 0);
7035
+
6960
7036
  const formatNameAsInitial = (name) => {
6961
7037
  if (name.length === 0) {
6962
7038
  return '';
6963
7039
  }
6964
7040
  return name[0].toUpperCase();
6965
7041
  };
6966
- const formatLabelAsInitials = (label) => {
6967
- const names = label.split(/\s+/);
7042
+ const normalizeInitials = (value) => {
7043
+ if (typeof value !== 'string') {
7044
+ throw new Error(`Invalid initials value: ${JSON.stringify(value)}`);
7045
+ }
7046
+ const names = value.trim().split(/\s+/);
6968
7047
  const first = names[0];
6969
7048
  const last = names[names.length - 1];
6970
7049
  if (names.length >= 2 && first && last) {
6971
7050
  return `${formatNameAsInitial(first)}${formatNameAsInitial(last)}`;
6972
7051
  }
6973
- return formatNameAsInitial(label);
7052
+ return formatNameAsInitial(value);
6974
7053
  };
7054
+ const initialsProp = createPropDefinition(normalizeInitials, (v) => v.length > 0);
6975
7055
 
6976
- class KolAvatarWc {
6977
- constructor(hostRef) {
6978
- registerInstance(this, hostRef);
6979
- this.bgColorStr = '#d3d3d3';
6980
- this.colorStr = '#000';
6981
- this.handleColorChange = (value) => {
6982
- const colorPair = handleColorChange(value);
6983
- this.bgColorStr = colorPair.backgroundColor;
6984
- this.colorStr = colorPair.foregroundColor;
6985
- };
6986
- this._color = '#d3d3d3';
6987
- this.state = {
6988
- _src: '',
6989
- _label: '',
6990
- _color: {
6991
- backgroundColor: '#d3d3d3',
6992
- foregroundColor: '#000',
6993
- },
6994
- };
7056
+ const labelProp = createPropDefinition(normalizeString, (v) => v.length >= 2 && v.length <= 80);
7057
+
7058
+ const nameProp = createPropDefinition(normalizeString, () => true);
7059
+
7060
+ const srcProp = createPropDefinition(normalizeString, () => true);
7061
+
7062
+ class BaseController {
7063
+ constructor(component, props) {
7064
+ this.component = component;
7065
+ this.props = props;
6995
7066
  }
6996
- render() {
6997
- return (hAsync("div", { key: '04d0b5653648f532391c0b8f611ef3bd7d4e8bbf', "aria-label": translate('kol-avatar-alt', { placeholders: { name: this.state._label } }), class: "kol-avatar", role: "img", style: {
6998
- backgroundColor: this.bgColorStr,
6999
- color: this.colorStr,
7000
- } }, this.state._src ? (hAsync("img", { alt: "", "aria-hidden": "true", class: "kol-avatar__image", src: this.state._src })) : (hAsync("span", { "aria-hidden": "true", class: "kol-avatar__initials" }, formatLabelAsInitials(this.state._label.trim())))));
7067
+ setProp(key, value) {
7068
+ this.props[key] = value;
7001
7069
  }
7002
- validateColor(value) {
7003
- validateColor(this, value, {
7004
- defaultValue: '#d3d3d3',
7005
- hooks: {
7006
- beforePatch: this.handleColorChange,
7007
- },
7070
+ getProps() {
7071
+ return this.props;
7072
+ }
7073
+ setState(key, value) {
7074
+ this.component[key] = value;
7075
+ }
7076
+ }
7077
+
7078
+ class AvatarController extends BaseController {
7079
+ constructor(states) {
7080
+ super(states, {
7081
+ color: { backgroundColor: '#d3d3d3', foregroundColor: '#3f3f3f' },
7082
+ label: '',
7083
+ src: '',
7008
7084
  });
7009
7085
  }
7010
- validateSrc(value) {
7011
- validateImageSource(this, value);
7086
+ componentWillLoad(props) {
7087
+ const { color, label, src } = props;
7088
+ this.watchColor(color);
7089
+ this.watchLabel(label);
7090
+ this.watchSrc(src);
7012
7091
  }
7013
- validateLabel(value) {
7014
- validateLabel(this, value, {
7015
- required: true,
7092
+ watchColor(value) {
7093
+ withValidPropValue(colorProp, value, (v) => {
7094
+ this.setProp('color', v);
7095
+ });
7096
+ }
7097
+ watchLabel(value) {
7098
+ withValidPropValue(labelProp, value, (v) => {
7099
+ this.setProp('label', v);
7100
+ });
7101
+ withValidPropValue(initialsProp, value, (v) => {
7102
+ this.setState('initials', v);
7016
7103
  });
7017
7104
  }
7105
+ watchSrc(value) {
7106
+ withValidPropValue(srcProp, value, (v) => {
7107
+ this.setProp('src', v);
7108
+ });
7109
+ }
7110
+ }
7111
+
7112
+ const defaultStyleCss$K = "/* forward the rem function */\n/*\n* This file defines the layer order for all CSS layers used in KoliBri.\n* The order is important as it determines the cascade priority.\n*\n* Layer order (lowest to highest priority):\n* 1. kol-a11y - Accessibility defaults and requirements\n* 2. kol-global - Global component styles and resets\n* 3. kol-component - Component-specific styles\n* 4. kol-theme-global - Theme-specific global styles\n* 5. kol-theme-component - Theme-specific component styles\n*/\n@layer kol-a11y, kol-global, kol-component, kol-theme-global, kol-theme-component;\n/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44 * 1rem / var(--kolibri-root-font-size, 16));\n /*\n * No element should be used without verifying the contrast ratio of its background and font colors.\n * By initially setting the background color to white and the font color to black,\n * the contrast ratio is ensured and explicit adjustment is forced.\n */\n color: black;\n background-color: white;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n /*\n * Text should be aligned left by default to provide a predictable starting point.\n */\n text-align: left;\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 * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of to-rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: 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 text color from his parent element.\n */\n color: inherit;\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 * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\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 position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\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 width: 100%;\n margin: 0;\n padding: 0;\n border: none;\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 color: black;\n background-color: lightgray;\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 font-size: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\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: flex;\n flex-flow: column;\n align-items: center;\n justify-content: 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 align-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 opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n .hastooltip {\n z-index: 900 !important;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@layer kol-component {\n .kol-avatar,\n .kol-avatar__image,\n .kol-avatar__initials {\n border-radius: 50%;\n }\n .kol-avatar {\n /* Visible with forced colors */\n outline: transparent solid calc(1 * 1rem / var(--kolibri-root-font-size, 16));\n display: flex;\n width: calc(100 * 1rem / var(--kolibri-root-font-size, 16));\n height: calc(100 * 1rem / var(--kolibri-root-font-size, 16));\n }\n .kol-avatar__initials {\n background-color: inherit;\n margin: auto;\n font-size: calc(40 * 1rem / var(--kolibri-root-font-size, 16));\n }\n}";
7113
+
7114
+ class KolAvatar {
7115
+ constructor(hostRef) {
7116
+ registerInstance(this, hostRef);
7117
+ this.ctrl = new AvatarController(this);
7118
+ this.initials = '';
7119
+ }
7120
+ watchColor(value) {
7121
+ this.ctrl.watchColor(value);
7122
+ }
7123
+ watchLabel(value) {
7124
+ this.ctrl.watchLabel(value);
7125
+ }
7126
+ watchSrc(value) {
7127
+ this.ctrl.watchSrc(value);
7128
+ }
7018
7129
  componentWillLoad() {
7019
- this.validateColor(this._color);
7020
- this.validateSrc(this._src);
7021
- this.validateLabel(this._label);
7130
+ this.ctrl.componentWillLoad({
7131
+ color: this._color,
7132
+ label: this._label,
7133
+ src: this._src,
7134
+ });
7135
+ }
7136
+ render() {
7137
+ const { color, label, src } = this.ctrl.getProps();
7138
+ const { initials } = this;
7139
+ return (hAsync(Host, { key: '356e548cb9a73c0fd50b71c01fc8862d08240a96' }, hAsync(AvatarFC, { key: 'c69025eb44ed63b2fd4e5f1e8cd2bace9aa055ac', color: color, label: label, src: src, initials: initials })));
7022
7140
  }
7023
7141
  static get watchers() { return {
7024
- "_color": ["validateColor"],
7025
- "_src": ["validateSrc"],
7026
- "_label": ["validateLabel"]
7142
+ "_color": ["watchColor"],
7143
+ "_label": ["watchLabel"],
7144
+ "_src": ["watchSrc"]
7145
+ }; }
7146
+ static get style() { return {
7147
+ default: defaultStyleCss$K
7027
7148
  }; }
7028
7149
  static get cmpMeta() { return {
7029
- "$flags$": 256,
7030
- "$tagName$": "kol-avatar-wc",
7150
+ "$flags$": 297,
7151
+ "$tagName$": "kol-avatar",
7031
7152
  "$members$": {
7032
7153
  "_color": [1],
7033
- "_src": [1],
7034
7154
  "_label": [1],
7035
- "state": [32]
7155
+ "_src": [1],
7156
+ "initials": [32]
7036
7157
  },
7037
7158
  "$listeners$": undefined,
7038
7159
  "$lazyBundleId$": "-",
@@ -15243,7 +15364,14 @@ function linkify (state, silent) {
15243
15364
  if (url.length <= proto.length) return false
15244
15365
 
15245
15366
  // disallow '*' at the end of the link (conflicts with emphasis)
15246
- url = url.replace(/\*+$/, '');
15367
+ // do manual backsearch to avoid perf issues with regex /\*+$/ on "****...****a".
15368
+ let urlEnd = url.length;
15369
+ while (urlEnd > 0 && url.charCodeAt(urlEnd - 1) === 0x2A/* * */) {
15370
+ urlEnd--;
15371
+ }
15372
+ if (urlEnd !== url.length) {
15373
+ url = url.slice(0, urlEnd);
15374
+ }
15247
15375
 
15248
15376
  const fullUrl = state.md.normalizeLink(url);
15249
15377
  if (!state.md.validateLink(fullUrl)) return false
@@ -18640,7 +18768,7 @@ class KolBadge {
18640
18768
  try {
18641
18769
  value = parseJson(value);
18642
18770
  }
18643
- catch (e) {
18771
+ catch (_a) {
18644
18772
  }
18645
18773
  setState(this, '_smartButton', value);
18646
18774
  });
@@ -18894,7 +19022,7 @@ const searchFormElement = (el) => {
18894
19022
  el = null;
18895
19023
  }
18896
19024
  }
18897
- catch (error) {
19025
+ catch (_a) {
18898
19026
  }
18899
19027
  if (getExperimentalMode()) {
18900
19028
  Log.debug(el);
@@ -19054,7 +19182,7 @@ class AssociatedInputController {
19054
19182
  throw new Error(`Invalid value type: ${typeof value}`);
19055
19183
  }
19056
19184
  }
19057
- catch (e) {
19185
+ catch (_a) {
19058
19186
  element === null || element === void 0 ? void 0 : element.removeAttribute(qualifiedName);
19059
19187
  }
19060
19188
  }
@@ -19137,8 +19265,13 @@ class AssociatedInputController {
19137
19265
 
19138
19266
  class KolButtonWc {
19139
19267
  async focus() {
19140
- var _a;
19141
- return Promise.resolve((_a = this.buttonRef) === null || _a === void 0 ? void 0 : _a.focus());
19268
+ return new Promise((resolve) => {
19269
+ requestAnimationFrame(() => {
19270
+ var _a;
19271
+ (_a = this.buttonRef) === null || _a === void 0 ? void 0 : _a.focus();
19272
+ resolve();
19273
+ });
19274
+ });
19142
19275
  }
19143
19276
  render() {
19144
19277
  var _a;
@@ -19147,14 +19280,14 @@ class KolButtonWc {
19147
19280
  const badgeText = this.state._accessKey || this.state._shortKey;
19148
19281
  const isDisabled = this.state._disabled === true;
19149
19282
  const hideLabel = this.state._hideLabel === true;
19150
- return (hAsync(Host, { key: '9c26b6174fedb3fcc1f1d3cd34e8bb95a78bab7f' }, hAsync("button", { key: 'c28349752715c55e6a340c44bd5cf845b0e28fc7', ref: (ref) => (this.buttonRef = ref), accessKey: this.state._accessKey, "aria-controls": this.state._ariaControls, "aria-description": ariaDescription || undefined, "aria-expanded": mapBoolean2String(this.state._ariaExpanded), "aria-haspopup": this._ariaHasPopup, "aria-keyshortcuts": this.state._shortKey, "aria-label": hideLabel && typeof this.state._label === 'string' ? this.state._label : undefined, "aria-selected": mapStringOrBoolean2String(this.state._ariaSelected), class: clsx('kol-button', {
19283
+ return (hAsync(Host, { key: 'dc1eca07ca0f70563e0429c255badd7a8ea1c54a' }, hAsync("button", { key: '774f57db93456404aeda52dc23e0a99ac57a87c7', ref: (ref) => (this.buttonRef = ref), accessKey: this.state._accessKey, "aria-controls": this.state._ariaControls, "aria-description": ariaDescription || undefined, "aria-expanded": mapBoolean2String(this.state._ariaExpanded), "aria-haspopup": this._ariaHasPopup, "aria-keyshortcuts": this.state._shortKey, "aria-label": hideLabel && typeof this.state._label === 'string' ? this.state._label : undefined, "aria-selected": mapStringOrBoolean2String(this.state._ariaSelected), class: clsx('kol-button', {
19151
19284
  'kol-button--disabled': isDisabled,
19152
19285
  [`kol-button--${this.state._variant}`]: this.state._variant !== 'custom',
19153
19286
  'kol-button--inline': this.state._inline === true,
19154
19287
  'kol-button--standalone': this.state._inline === false,
19155
19288
  'kol-button--hide-label': hideLabel,
19156
19289
  [this.state._customClass]: this.state._variant === 'custom' && typeof this.state._customClass === 'string' && this.state._customClass.length > 0,
19157
- }), disabled: isDisabled, id: this.state._id, name: this.state._name, onClick: this.onClick, onMouseDown: this.onMouseDown, role: this.state._role, tabIndex: this.state._tabIndex, type: this.state._type }, hAsync(KolSpanFc, { key: '451a17c0f75959c08c03da79c47bcdd40c5f78c5', class: "kol-button__text", badgeText: badgeText, icons: this.state._icons, hideLabel: hideLabel, label: hasExpertSlot ? '' : this.state._label }, hAsync("slot", { key: 'f3eeed29378d95c06789f00308321147e222a3e6', name: "expert", slot: "expert" }))), hideLabel && (hAsync(KolTooltipWcTag, { key: '7d799a434d077183dc75ffce496ee155301fc7e4', ref: (ref) => (this.tooltipRef = ref), "aria-hidden": "true", hidden: hasExpertSlot, class: "kol-button__tooltip", _badgeText: badgeText, _align: this.state._tooltipAlign, _label: typeof this.state._label === 'string' ? this.state._label : '' }))));
19290
+ }), disabled: isDisabled, id: this.state._id, name: this.state._name, onClick: this.onClick, onMouseDown: this.onMouseDown, role: this.state._role, tabIndex: this.state._tabIndex, type: this.state._type }, hAsync(KolSpanFc, { key: '207058ad84e5fcb90b17a1aa959224144d6478a6', class: "kol-button__text", badgeText: badgeText, icons: this.state._icons, hideLabel: hideLabel, label: hasExpertSlot ? '' : this.state._label }, hAsync("slot", { key: 'f3378730b77da226579b8a11d87672644f9c8bcc', name: "expert", slot: "expert" }))), hideLabel && (hAsync(KolTooltipWcTag, { key: 'aae9c27630d3c669f531e2ec794f106721db61a0', ref: (ref) => (this.tooltipRef = ref), "aria-hidden": "true", hidden: hasExpertSlot, class: "kol-button__tooltip", _badgeText: badgeText, _align: this.state._tooltipAlign, _label: typeof this.state._label === 'string' ? this.state._label : '' }))));
19158
19291
  }
19159
19292
  constructor(hostRef) {
19160
19293
  registerInstance(this, hostRef);
@@ -19420,7 +19553,7 @@ class KolCardWc {
19420
19553
  this.validateOnValue = (value) => typeof value === 'object' && value !== null && typeof value.onClose === 'function';
19421
19554
  }
19422
19555
  render() {
19423
- return (hAsync(Host, { key: 'de517413c990072e7e7faca2916c0c5243ad9495' }, hAsync("div", { key: '01f98d52d173677f5e314e2dce9425cc19cdaadc', "aria-labelledby": this.nonce, class: "kol-card", role: "group" }, hAsync(KolHeadingFc, { key: 'd2ce693140449135323ff1601af712982aae9325', class: "kol-card__header", id: this.nonce, level: this.state._level }, this.state._label), hAsync("div", { key: '155c2d42406dbb9ba02f6a29ec92f10d93b8c38d', class: "kol-card__content" }, hAsync("slot", { key: 'f3c23f1168273dbfbb515b1d83b7f087d9d019ca' })), this.state._hasCloser && (hAsync(KolButtonWcTag, { key: 'f22067f09cde9099c29c8b26b0af1cb3229e0b3d', class: "kol-card__close-button kol-close-button", "data-testid": "card-close-button", _hideLabel: true, _icons: {
19556
+ return (hAsync(Host, { key: '3e7074ef91d24bc6d398fd57c455b56c51977609' }, hAsync("div", { key: '62f46913ae9a90a468dd3a731dfa3f318ac25f82', "aria-labelledby": this.nonce, class: "kol-card", role: "group" }, hAsync(KolHeadingFc, { key: 'f69df4f5bf69cbbabecd468cda9e81294612d1e7', class: "kol-card__header", id: this.nonce, level: this.state._level }, this.state._label), hAsync("div", { key: '5cd3a7173e8a210029f0d4196136382f997b9418', class: "kol-card__content" }, hAsync("slot", { key: '4adda314f9401771df32d1fd5aa071e5c04a393e' })), this.state._hasCloser && (hAsync(KolButtonWcTag, { key: 'af06b358941c99e6786440cfd224ef5c402192dd', class: "kol-card__close-button kol-close-button", "data-testid": "card-close-button", _hideLabel: true, _icons: {
19424
19557
  left: {
19425
19558
  icon: 'kolicon-cross',
19426
19559
  },
@@ -19473,6 +19606,74 @@ class KolCardWc {
19473
19606
  }; }
19474
19607
  }
19475
19608
 
19609
+ const clickButtonBem = bem$2.forBlock('kol-click-button');
19610
+ const BEM_CLASS_CLICK_BUTTON = clickButtonBem();
19611
+ const BEM_CLASS_CLICK_BUTTON__LABEL = clickButtonBem('label');
19612
+ const ClickButtonFC = ({ label, handleClick, refButton }) => (hAsync("button", { class: BEM_CLASS_CLICK_BUTTON, ref: refButton, onClick: handleClick, onKeyDown: (event) => event.preventDefault() }, hAsync("span", { class: BEM_CLASS_CLICK_BUTTON__LABEL }, label)));
19613
+
19614
+ class ClickButtonController extends BaseController {
19615
+ constructor(states = {}) {
19616
+ super(states, {
19617
+ label: '',
19618
+ });
19619
+ this.handleClick = () => {
19620
+ console.log(this, this.buttonRef, 'button clicked');
19621
+ };
19622
+ this.setButtonRef = (element) => {
19623
+ this.buttonRef = element;
19624
+ };
19625
+ }
19626
+ componentWillLoad(props) {
19627
+ const { label } = props;
19628
+ this.watchLabel(label);
19629
+ }
19630
+ watchLabel(value) {
19631
+ withValidPropValue(labelProp, value, (v) => {
19632
+ this.setProp('label', v);
19633
+ });
19634
+ }
19635
+ focus() {
19636
+ var _a;
19637
+ (_a = this.buttonRef) === null || _a === void 0 ? void 0 : _a.focus();
19638
+ }
19639
+ }
19640
+
19641
+ class KolClickButton {
19642
+ constructor(hostRef) {
19643
+ registerInstance(this, hostRef);
19644
+ this.ctrl = new ClickButtonController();
19645
+ }
19646
+ watchLabel(value) {
19647
+ this.ctrl.watchLabel(value);
19648
+ }
19649
+ async focus() {
19650
+ return Promise.resolve(this.ctrl.focus());
19651
+ }
19652
+ componentWillLoad() {
19653
+ this.ctrl.componentWillLoad({
19654
+ label: this._label,
19655
+ });
19656
+ }
19657
+ render() {
19658
+ const { label } = this.ctrl.getProps();
19659
+ return (hAsync(Host, { key: 'ad1573dd9fb97876e8663c51e9a8251358a7b642' }, hAsync(ClickButtonFC, { key: '3710ca78ad2789f72e41c0628db0aa5942f273d6', label: label, refButton: this.ctrl.setButtonRef, handleClick: this.ctrl.handleClick })));
19660
+ }
19661
+ static get watchers() { return {
19662
+ "_label": ["watchLabel"]
19663
+ }; }
19664
+ static get cmpMeta() { return {
19665
+ "$flags$": 265,
19666
+ "$tagName$": "kol-click-button",
19667
+ "$members$": {
19668
+ "_label": [1],
19669
+ "focus": [64]
19670
+ },
19671
+ "$listeners$": undefined,
19672
+ "$lazyBundleId$": "-",
19673
+ "$attrsToReflect$": []
19674
+ }; }
19675
+ }
19676
+
19476
19677
  const getRenderStates = (state) => {
19477
19678
  const msg = state._msg;
19478
19679
  const description = typeof msg === 'string' ? msg : msg === null || msg === void 0 ? void 0 : msg._description;
@@ -19786,7 +19987,7 @@ class InputController extends ControlledInputController {
19786
19987
  try {
19787
19988
  value = parseJson(value);
19788
19989
  }
19789
- catch (e) {
19990
+ catch (_a) {
19790
19991
  }
19791
19992
  setState(this.component, '_smartButton', value);
19792
19993
  });
@@ -19954,8 +20155,13 @@ class KolCombobox {
19954
20155
  return this.state._value;
19955
20156
  }
19956
20157
  async focus() {
19957
- var _a;
19958
- return Promise.resolve((_a = this.refInput) === null || _a === void 0 ? void 0 : _a.focus());
20158
+ return new Promise((resolve) => {
20159
+ requestAnimationFrame(() => {
20160
+ var _a;
20161
+ (_a = this.refInput) === null || _a === void 0 ? void 0 : _a.focus();
20162
+ resolve();
20163
+ });
20164
+ });
19959
20165
  }
19960
20166
  selectOption(option) {
19961
20167
  var _a;
@@ -20069,15 +20275,13 @@ class KolCombobox {
20069
20275
  }
20070
20276
  render() {
20071
20277
  const isDisabled = this.state._disabled === true;
20072
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: 'c8bb3a42b48cf0fce6270aca0b957783faaad8fb' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '3f205b2f94f3a3e54bf00ebb1b734bbc70b24343', state: this.state }, hAsync("div", { key: 'e2725023fb2affbddc40777e99968a829b64501f', class: "kol-combobox__group" }, hAsync(InputStateWrapper, Object.assign({ key: 'da9beffc01bc96c5dfe51c28540bfc55ad7d0b23' }, this.getInputProps())), this.state._value && this.state._hasClearButton && (hAsync(KolButtonWcTag, { key: '2c143034148a6c58a86e213f1f2e2849b09a90c1', _icons: "kolicon-cross", _label: this.translateDeleteSelection, _hideLabel: true, _variant: "ghost", _disabled: isDisabled, "data-testid": "combobox-delete", class: clsx('kol-combobox__delete', {
20073
- 'kol-combobox__delete--disabled': isDisabled,
20074
- }), _on: {
20278
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: 'c062962774ef7e54e9e03de4356dfe6ca4aed117' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: 'b6a978e5e5096999dec0d258e85513376297fab4', state: this.state }, hAsync("div", { key: '0358e2a7951e151c807d6382f6d050cc3db467cb', class: "kol-combobox__group" }, hAsync(InputStateWrapper, Object.assign({ key: 'c519eb30e7c6eee190dc5ad3c810a7dfc88095c0' }, this.getInputProps())), this.state._value && this.state._hasClearButton && (hAsync(KolButtonWcTag, { key: '71932cc20284d306a6ac59b5db139f270890ccc0', _icons: "kolicon-cross", _label: this.translateDeleteSelection, _hideLabel: true, _variant: "ghost", _disabled: isDisabled, "data-testid": "combobox-delete", class: "kol-combobox__delete", hidden: isDisabled, _on: {
20075
20279
  onClick: () => {
20076
20280
  this.clearSelection();
20077
20281
  },
20078
- } })), hAsync(KolIconTag, { key: '5162eb09c62d31099e4159cdae84b5b0f47dfab6', _icons: "kolicon-chevron-down", _label: "", class: clsx('kol-custom-suggestions-toggle', {
20282
+ } })), hAsync(KolIconTag, { key: '936e782f5dfa6cd19abacde645c36a49cdeea47e', _icons: "kolicon-chevron-down", _label: "", class: clsx('kol-custom-suggestions-toggle', {
20079
20283
  'kol-custom-suggestions-toggle--disabled': isDisabled,
20080
- }), onClick: this.toggleListbox.bind(this) })), hAsync(CustomSuggestionsOptionsGroupFc, { key: '073bc3a3eccb2e5fa42bade96396972ec299b95f', blockSuggestionMouseOver: this.blockSuggestionMouseOver, onKeyDown: this.handleKeyDownDropdown.bind(this), hidden: !this._isOpen || isDisabled }, Array.isArray(this._filteredSuggestions) &&
20284
+ }), onClick: this.toggleListbox.bind(this) })), hAsync(CustomSuggestionsOptionsGroupFc, { key: '967f197ca028038ecf7b70276f9d25d9255e7f6a', blockSuggestionMouseOver: this.blockSuggestionMouseOver, onKeyDown: this.handleKeyDownDropdown.bind(this), hidden: !this._isOpen || isDisabled }, Array.isArray(this._filteredSuggestions) &&
20081
20285
  this._filteredSuggestions.length > 0 &&
20082
20286
  this._filteredSuggestions.map((option, index) => (hAsync(CustomSuggestionsOptionFc, { disabled: false, index: index, option: option, searchTerm: this.state._value, ref: (el) => {
20083
20287
  if (el)
@@ -20992,7 +21196,7 @@ const bem = c();
20992
21196
  const BEM_CLASS_ICON = bem('kol-icon');
20993
21197
  const BEM_CLASS_ICON__ICON = bem('kol-icon', 'icon');
20994
21198
 
20995
- const defaultStyleCss$y = "/* forward the rem function */\n@font-face {\n font-family: \"kolicons\";\n src: url(\"kolicons.eot?t=1770450415065\"); /* IE9*/\n src: url(\"kolicons.eot?t=1770450415065#iefix\") format(\"embedded-opentype\"), url(\"kolicons.woff2?t=1770450415065\") format(\"woff2\"), url(\"kolicons.woff?t=1770450415065\") format(\"woff\"), url(\"kolicons.ttf?t=1770450415065\") format(\"truetype\"), url(\"kolicons.svg?t=1770450415065#kolicons\") format(\"svg\"); /* iOS 4.1- */\n}\n[class^=kolicon-], [class*=\" kolicon-\"] {\n font-family: \"kolicons\";\n font-size: inherit;\n font-style: normal;\n font-weight: 400;\n line-height: 1em;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.kolicon-alert-error::before {\n content: \"\\ea01\";\n}\n\n.kolicon-alert-info::before {\n content: \"\\ea02\";\n}\n\n.kolicon-alert-success::before {\n content: \"\\ea03\";\n}\n\n.kolicon-alert-warning::before {\n content: \"\\ea04\";\n}\n\n.kolicon-check::before {\n content: \"\\ea05\";\n}\n\n.kolicon-chevron-double-left::before {\n content: \"\\ea06\";\n}\n\n.kolicon-chevron-double-right::before {\n content: \"\\ea07\";\n}\n\n.kolicon-chevron-down::before {\n content: \"\\ea08\";\n}\n\n.kolicon-chevron-left::before {\n content: \"\\ea09\";\n}\n\n.kolicon-chevron-right::before {\n content: \"\\ea0a\";\n}\n\n.kolicon-chevron-up::before {\n content: \"\\ea0b\";\n}\n\n.kolicon-cogwheel::before {\n content: \"\\ea0c\";\n}\n\n.kolicon-cross::before {\n content: \"\\ea0d\";\n}\n\n.kolicon-eye-closed::before {\n content: \"\\ea0e\";\n}\n\n.kolicon-eye::before {\n content: \"\\ea0f\";\n}\n\n.kolicon-house::before {\n content: \"\\ea10\";\n}\n\n.kolicon-kolibri::before {\n content: \"\\ea11\";\n}\n\n.kolicon-link-external::before {\n content: \"\\ea12\";\n}\n\n.kolicon-link::before {\n content: \"\\ea13\";\n}\n\n.kolicon-minus::before {\n content: \"\\ea14\";\n}\n\n.kolicon-plus::before {\n content: \"\\ea15\";\n}\n\n.kolicon-settings::before {\n content: \"\\ea16\";\n}\n\n.kolicon-sort-asc::before {\n content: \"\\ea17\";\n}\n\n.kolicon-sort-desc::before {\n content: \"\\ea18\";\n}\n\n.kolicon-sort-neutral::before {\n content: \"\\ea19\";\n}\n\n.kolicon-version::before {\n content: \"\\ea1a\";\n}\n\n@layer kol-component {\n /* :host implicitly inherits font-size, see below */\n :host {\n color: inherit;\n display: contents;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n }\n}";
21199
+ const defaultStyleCss$y = "/* forward the rem function */\n@font-face {\n font-family: \"kolicons\";\n src: url(\"kolicons.eot?t=1772007606600\"); /* IE9*/\n src: url(\"kolicons.eot?t=1772007606600#iefix\") format(\"embedded-opentype\"), url(\"kolicons.woff2?t=1772007606600\") format(\"woff2\"), url(\"kolicons.woff?t=1772007606600\") format(\"woff\"), url(\"kolicons.ttf?t=1772007606600\") format(\"truetype\"), url(\"kolicons.svg?t=1772007606600#kolicons\") format(\"svg\"); /* iOS 4.1- */\n}\n[class^=kolicon-], [class*=\" kolicon-\"] {\n font-family: \"kolicons\";\n font-size: inherit;\n font-style: normal;\n font-weight: 400;\n line-height: 1em;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.kolicon-alert-error::before {\n content: \"\\ea01\";\n}\n\n.kolicon-alert-info::before {\n content: \"\\ea02\";\n}\n\n.kolicon-alert-success::before {\n content: \"\\ea03\";\n}\n\n.kolicon-alert-warning::before {\n content: \"\\ea04\";\n}\n\n.kolicon-check::before {\n content: \"\\ea05\";\n}\n\n.kolicon-chevron-double-left::before {\n content: \"\\ea06\";\n}\n\n.kolicon-chevron-double-right::before {\n content: \"\\ea07\";\n}\n\n.kolicon-chevron-down::before {\n content: \"\\ea08\";\n}\n\n.kolicon-chevron-left::before {\n content: \"\\ea09\";\n}\n\n.kolicon-chevron-right::before {\n content: \"\\ea0a\";\n}\n\n.kolicon-chevron-up::before {\n content: \"\\ea0b\";\n}\n\n.kolicon-cogwheel::before {\n content: \"\\ea0c\";\n}\n\n.kolicon-cross::before {\n content: \"\\ea0d\";\n}\n\n.kolicon-eye-closed::before {\n content: \"\\ea0e\";\n}\n\n.kolicon-eye::before {\n content: \"\\ea0f\";\n}\n\n.kolicon-house::before {\n content: \"\\ea10\";\n}\n\n.kolicon-kolibri::before {\n content: \"\\ea11\";\n}\n\n.kolicon-link-external::before {\n content: \"\\ea12\";\n}\n\n.kolicon-link::before {\n content: \"\\ea13\";\n}\n\n.kolicon-minus::before {\n content: \"\\ea14\";\n}\n\n.kolicon-plus::before {\n content: \"\\ea15\";\n}\n\n.kolicon-settings::before {\n content: \"\\ea16\";\n}\n\n.kolicon-sort-asc::before {\n content: \"\\ea17\";\n}\n\n.kolicon-sort-desc::before {\n content: \"\\ea18\";\n}\n\n.kolicon-sort-neutral::before {\n content: \"\\ea19\";\n}\n\n.kolicon-version::before {\n content: \"\\ea1a\";\n}\n\n@layer kol-component {\n /* :host implicitly inherits font-size, see below */\n :host {\n color: inherit;\n display: contents;\n font-size: inherit;\n font-weight: inherit;\n line-height: inherit;\n }\n}";
20996
21200
 
20997
21201
  class KolIcon {
20998
21202
  render() {
@@ -21369,8 +21573,13 @@ class KolInputCheckbox {
21369
21573
  return this.getModelValue();
21370
21574
  }
21371
21575
  async focus() {
21372
- var _a;
21373
- return Promise.resolve((_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus());
21576
+ return new Promise((resolve) => {
21577
+ requestAnimationFrame(() => {
21578
+ var _a;
21579
+ (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus();
21580
+ resolve();
21581
+ });
21582
+ });
21374
21583
  }
21375
21584
  getFormFieldProps() {
21376
21585
  return {
@@ -21419,7 +21628,7 @@ class KolInputCheckbox {
21419
21628
  return this.state._icons.unchecked;
21420
21629
  }
21421
21630
  render() {
21422
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: '9cb4ea4595cbb7011a66123fc074ab279b14059c' }, this.getFormFieldProps(), { renderNoLabel: true }), hAsync(FieldControlStateWrapper, Object.assign({ key: '140717882ed72ed287a076e4bf19a498ffbf841a' }, this.getFieldControlProps(), { renderNoHint: true }), hAsync(CheckboxStateWrapper, Object.assign({ key: 'ef6729b2d9c01fe6ff427a810ef23e47e1317da4' }, this.getInputProps())))));
21631
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: '2b60714baa0fe44a7b2cdc4b9ba4c15ea06e9e78' }, this.getFormFieldProps(), { renderNoLabel: true }), hAsync(FieldControlStateWrapper, Object.assign({ key: 'd168e6aa1bb279c0cace1cea064123f438fa43c6' }, this.getFieldControlProps(), { renderNoHint: true }), hAsync(CheckboxStateWrapper, Object.assign({ key: 'eade921d7e22e4d342f3c03bdd0fa2e4348f8990' }, this.getInputProps())))));
21423
21632
  }
21424
21633
  constructor(hostRef) {
21425
21634
  registerInstance(this, hostRef);
@@ -21627,8 +21836,13 @@ class KolInputColor {
21627
21836
  return (_a = this.refInputText) === null || _a === void 0 ? void 0 : _a.value;
21628
21837
  }
21629
21838
  async focus() {
21630
- var _a;
21631
- return Promise.resolve((_a = this.refInputText) === null || _a === void 0 ? void 0 : _a.focus());
21839
+ return new Promise((resolve) => {
21840
+ requestAnimationFrame(() => {
21841
+ var _a;
21842
+ (_a = this.refInputText) === null || _a === void 0 ? void 0 : _a.focus();
21843
+ resolve();
21844
+ });
21845
+ });
21632
21846
  }
21633
21847
  get hasSuggestions() {
21634
21848
  return Array.isArray(this.state._suggestions) && this.state._suggestions.length > 0;
@@ -21651,7 +21865,7 @@ class KolInputColor {
21651
21865
  return Object.assign(Object.assign({ state: Object.assign(Object.assign({}, this.state), { _suggestions: [] }) }, this.controller.onFacade), { onBlur: this.onBlur, onFocus: this.onFocus });
21652
21866
  }
21653
21867
  render() {
21654
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: '3243bc02f1c0aea966b3db17645a5100498cb6f8' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: 'c96f156fd9edab34a4eafbea0c88c1ea60a7bffd', state: this.state, class: "kol-input-color__inputs-wrapper" }, hAsync("div", { key: 'daf3ec033d4065bc5645a59b4ba966e06c8358b8', class: "kol-input-color__inputs-wrapper" }, hAsync(InputStateWrapper, Object.assign({ key: 'a53ae6de8dbc7d87779cd64a6e741bdd9a6f885d', class: "kol-input-color__input kol-input-color__input--color" }, this.getInputColorProps())), hAsync(InputStateWrapper, Object.assign({ key: '7db1b342cc845b7a58cbe83dcd77d0aff752a033', class: "kol-input-color__input kol-input-color__input--text" }, this.getInputTextProps()))))));
21868
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: '703b9c89e8825ad094668fa79ff6bdf5f7ea2773' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '86745daac79e2807932c8b4499ee3338dd9abb52', state: this.state, class: "kol-input-color__inputs-wrapper" }, hAsync("div", { key: '0c102ce638e903dec703f1b3dc982fb4a64f1850', class: "kol-input-color__inputs-wrapper" }, hAsync(InputStateWrapper, Object.assign({ key: '8bff8759040df63aef9fa1e93d65581ba22f82ab', class: "kol-input-color__input kol-input-color__input--color" }, this.getInputColorProps())), hAsync(InputStateWrapper, Object.assign({ key: 'def144fa8005025098a567df05832bfc411dcae4', class: "kol-input-color__input kol-input-color__input--text" }, this.getInputTextProps()))))));
21655
21869
  }
21656
21870
  constructor(hostRef) {
21657
21871
  registerInstance(this, hostRef);
@@ -21980,8 +22194,13 @@ class KolInputDate {
21980
22194
  return this.inputRef && this.remapValue((_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.value);
21981
22195
  }
21982
22196
  async focus() {
21983
- var _a;
21984
- return Promise.resolve((_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus());
22197
+ return new Promise((resolve) => {
22198
+ requestAnimationFrame(() => {
22199
+ var _a;
22200
+ (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus();
22201
+ resolve();
22202
+ });
22203
+ });
21985
22204
  }
21986
22205
  async reset() {
21987
22206
  this.state = Object.assign(Object.assign({}, this.state), { _value: null });
@@ -22021,7 +22240,7 @@ class KolInputDate {
22021
22240
  return Object.assign(Object.assign({ ref: this.catchRef, state: this.state }, this.controller.onFacade), { onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown, onChange: this.onChange, onInput: this.onInput });
22022
22241
  }
22023
22242
  render() {
22024
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: '0796ce3b22bda0f3416cb29d0a3170cca7c10fd1' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '6702162055e1337792e61069d1eceff3e41ecfcd', state: this.state }, hAsync(InputStateWrapper, Object.assign({ key: 'f7e3fc1329d316eea6f07450236c2b06f5cbd5e0' }, this.getInputProps())))));
22243
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: 'e30da09025106eec1e068d7c312c17dff2ebfba8' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: 'fe3663fd1ae701bbc67c326eb89bde418d59da64', state: this.state }, hAsync(InputStateWrapper, Object.assign({ key: '9710cfe488dc01075270dd81b3882464157d178d' }, this.getInputProps())))));
22025
22244
  }
22026
22245
  constructor(hostRef) {
22027
22246
  registerInstance(this, hostRef);
@@ -22368,8 +22587,13 @@ class KolInputEmail {
22368
22587
  return (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.value;
22369
22588
  }
22370
22589
  async focus() {
22371
- var _a;
22372
- return Promise.resolve((_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus());
22590
+ return new Promise((resolve) => {
22591
+ requestAnimationFrame(() => {
22592
+ var _a;
22593
+ (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus();
22594
+ resolve();
22595
+ });
22596
+ });
22373
22597
  }
22374
22598
  getFormFieldProps() {
22375
22599
  return {
@@ -22393,7 +22617,7 @@ class KolInputEmail {
22393
22617
  } });
22394
22618
  }
22395
22619
  render() {
22396
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: 'a74d93b511883ac584088468690f5fedbd031608' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '34041ab24cb5e2e3b095e468df4bd8978909803e', state: this.state }, hAsync(InputStateWrapper, Object.assign({ key: 'f34730d39d2fe689e1f9d52576bd5954c538a461' }, this.getInputProps())))));
22620
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: 'cab521e66e888b933138110984dac2a30c0fa893' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: 'a659607042aaef2572b3c52fbebaea22085c2095', state: this.state }, hAsync(InputStateWrapper, Object.assign({ key: '197066107205fe6e91cba9252e937580a4857a3d' }, this.getInputProps())))));
22397
22621
  }
22398
22622
  constructor(hostRef) {
22399
22623
  registerInstance(this, hostRef);
@@ -22621,8 +22845,13 @@ class KolInputFile {
22621
22845
  return (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.files;
22622
22846
  }
22623
22847
  async focus() {
22624
- var _a;
22625
- return Promise.resolve((_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus());
22848
+ return new Promise((resolve) => {
22849
+ requestAnimationFrame(() => {
22850
+ var _a;
22851
+ (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus();
22852
+ resolve();
22853
+ });
22854
+ });
22626
22855
  }
22627
22856
  async reset() {
22628
22857
  this.controller.setFormAssociatedValue('');
@@ -22650,7 +22879,7 @@ class KolInputFile {
22650
22879
  } });
22651
22880
  }
22652
22881
  render() {
22653
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: '63d343b402d7cfc146a811c39872e5fd587c7c64' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '6e01023b3bce319f1a99ba446d17112a711bd190', state: this.state }, hAsync("span", { key: '1e9586a529e89fc73157c89e741330c27d1e5e1f', class: clsx('kol-input-container__filename', { 'kol-input-container__filename--has-file': this.hasFileSelected }) }, this.filename), hAsync(InputStateWrapper, Object.assign({ key: '6c35160f133bbdf31580d2a03201c093d1b2d3cf' }, this.getInputProps())), hAsync(KolButtonWcTag, { key: 'ab5eda8e72de28216d586879b6f6a4bf6480b32e', class: "kol-input-container__button", _label: this.translateDataBrowseText, _variant: "primary", _disabled: this._disabled }))));
22882
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: '56d8b72caa11f9762163eb438df3105ab12488e2' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '91d3b43a0cb7773b9ea971aa6ae4225548dc3c64', state: this.state }, hAsync("span", { key: '9ec16436ae93a69f67591a3950ba6de3628a5c1e', class: clsx('kol-input-container__filename', { 'kol-input-container__filename--has-file': this.hasFileSelected }) }, this.filename), hAsync(InputStateWrapper, Object.assign({ key: '6c4d98db86ce73027d7cb074ad1d9e3e905a9efc' }, this.getInputProps())), hAsync(KolButtonWcTag, { key: '12c3f8d02713c249d485adb473da441323149f52', class: "kol-input-container__button", _label: this.translateDataBrowseText, _variant: "primary", _disabled: this._disabled }))));
22654
22883
  }
22655
22884
  constructor(hostRef) {
22656
22885
  registerInstance(this, hostRef);
@@ -22895,8 +23124,13 @@ class KolInputNumber {
22895
23124
  return this.remapValue(this.state._value);
22896
23125
  }
22897
23126
  async focus() {
22898
- var _a;
22899
- return Promise.resolve((_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus());
23127
+ return new Promise((resolve) => {
23128
+ requestAnimationFrame(() => {
23129
+ var _a;
23130
+ (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus();
23131
+ resolve();
23132
+ });
23133
+ });
22900
23134
  }
22901
23135
  setInitialValueType(value) {
22902
23136
  if (this.controller.isNumberString(value)) {
@@ -22964,7 +23198,7 @@ class KolInputNumber {
22964
23198
  }, disabled: this._disabled || this._readOnly }, hAsync(KolIconFc, { icons: "kolicon-minus", label: "" })));
22965
23199
  }
22966
23200
  render() {
22967
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: '4ebc0414d323e7d17763b5cd53d039458cabc19d' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: 'cba1c0f8a529eb7a38d423abb530fb5f9ffdad85', state: this.state, startAdornment: this.getStepDownButton(), endAdornment: this.getStepUpButton() }, hAsync(InputStateWrapper, Object.assign({ key: 'bc5b9f46f144e5094d891d4b1356b34f30471949' }, this.getInputProps())))));
23201
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: '7f45c137a6623da514ea4ba90ccc5dd08ab821ca' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: 'af5a258626972db0214687665a78ae75e4e50a04', state: this.state, startAdornment: this.getStepDownButton(), endAdornment: this.getStepUpButton() }, hAsync(InputStateWrapper, Object.assign({ key: '70095f30b4cbd6ef9e350e2269ec4be7e3ffc303' }, this.getInputProps())))));
22968
23202
  }
22969
23203
  constructor(hostRef) {
22970
23204
  registerInstance(this, hostRef);
@@ -23171,8 +23405,13 @@ class KolInputPassword {
23171
23405
  return (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.value;
23172
23406
  }
23173
23407
  async focus() {
23174
- var _a;
23175
- return Promise.resolve((_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus());
23408
+ return new Promise((resolve) => {
23409
+ requestAnimationFrame(() => {
23410
+ var _a;
23411
+ (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus();
23412
+ resolve();
23413
+ });
23414
+ });
23176
23415
  }
23177
23416
  getFormFieldProps() {
23178
23417
  return {
@@ -23206,7 +23445,7 @@ class KolInputPassword {
23206
23445
  }, icon: `${this._passwordVisible ? 'kolicon-eye-closed' : 'kolicon-eye'}`, disabled: this._disabled }));
23207
23446
  }
23208
23447
  render() {
23209
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: '57849dd5482b375f12f620e5b0fdc6dcc1856d79' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: 'b24be6351a6e1efdee07100907a4d42a391e33e1', state: this.state, endAdornment: this.getShowPasswordButton() }, hAsync(InputStateWrapper, Object.assign({ key: 'e02adcf7654df72cf2a4ce3972829057b7cc306b' }, this.getInputProps())))));
23448
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: '36d62354291a7bf6358ff68f12b6a9c6a7ade4f8' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: 'f421cdb521eda94cb3be24dec223ffe3fd411f5a', state: this.state, endAdornment: this.getShowPasswordButton() }, hAsync(InputStateWrapper, Object.assign({ key: 'dc06569fc07a474ddf035ec11d449ff9d55b5d70' }, this.getInputProps())))));
23210
23449
  }
23211
23450
  constructor(hostRef) {
23212
23451
  registerInstance(this, hostRef);
@@ -23451,8 +23690,13 @@ class KolInputRadio {
23451
23690
  return this._value;
23452
23691
  }
23453
23692
  async focus() {
23454
- var _a;
23455
- return Promise.resolve((_a = this.getFocusableInput()) === null || _a === void 0 ? void 0 : _a.focus());
23693
+ return new Promise((resolve) => {
23694
+ requestAnimationFrame(() => {
23695
+ var _a;
23696
+ (_a = this.getFocusableInput()) === null || _a === void 0 ? void 0 : _a.focus();
23697
+ resolve();
23698
+ });
23699
+ });
23456
23700
  }
23457
23701
  getFocusableInput() {
23458
23702
  const options = this.state._options;
@@ -23489,7 +23733,7 @@ class KolInputRadio {
23489
23733
  };
23490
23734
  }
23491
23735
  render() {
23492
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: 'abaeb85e7c44c82c0c638cd8dae368454e9565e2' }, this.getFormFieldProps()), this.state._options.map((option, index) => this.renderOption(option, index))));
23736
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: 'f089864837e627816b92febb97f4442ffe064296' }, this.getFormFieldProps()), this.state._options.map((option, index) => this.renderOption(option, index))));
23493
23737
  }
23494
23738
  calculateDisabled(option) {
23495
23739
  return Boolean(this.state._disabled) || Boolean(option.disabled);
@@ -23729,8 +23973,13 @@ const defaultStyleCss$o = "@charset \"UTF-8\";\n/*\n* This file defines the laye
23729
23973
 
23730
23974
  class KolInputRange {
23731
23975
  async focus() {
23732
- var _a;
23733
- return Promise.resolve((_a = this.refInputNumber) === null || _a === void 0 ? void 0 : _a.focus());
23976
+ return new Promise((resolve) => {
23977
+ requestAnimationFrame(() => {
23978
+ var _a;
23979
+ (_a = this.refInputNumber) === null || _a === void 0 ? void 0 : _a.focus();
23980
+ resolve();
23981
+ });
23982
+ });
23734
23983
  }
23735
23984
  getSanitizedFloatValue(value) {
23736
23985
  const floatValue = parseFloat(value);
@@ -23799,7 +24048,7 @@ class KolInputRange {
23799
24048
  const inputsWrapperStyle = {
23800
24049
  '--kolibri-input-range--input-number--width': `calc(${String(this.state._max).length}ch + 2em)`,
23801
24050
  };
23802
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: '59b4f4f600171e6496415ce3dad4400607101f03' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '80aac0e1ac4dab7e88fe7df636c2ee19905d42de', state: this.state }, hAsync("div", { key: '31ff63b9171895a796deff2111fb740a5b6d47f3', class: "kol-input-range__inputs-wrapper", style: inputsWrapperStyle }, hAsync(InputStateWrapper, Object.assign({ key: 'b444084a05e3a905034a2f4da9b3c7ea48277792', class: "kol-input-range__input kol-input-range__input--range" }, this.getInputRangeProps())), hAsync(InputStateWrapper, Object.assign({ key: '80433f1e6d5b97cffed870e604df9fcefdb605f0', class: "kol-input-range__input kol-input-range__input--number" }, this.getInputNumberProps()))), this.hasSuggestions && hAsync(SuggestionsFc, { key: 'eadfc636106eb9aa438b5be71e072547a9054e78', id: this.state._id, suggestions: this.state._suggestions }))));
24051
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: 'fa6009c92bd326a16075cb0a8f328ecde89a1b0d' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '4a0b51e44d330991b71c80944894cefab20ea89e', state: this.state }, hAsync("div", { key: 'e7ddf1ce4c09cad830906a611f63f6f56d8466ec', class: "kol-input-range__inputs-wrapper", style: inputsWrapperStyle }, hAsync(InputStateWrapper, Object.assign({ key: 'a4bf095b5442f42ef75e6339fa0bc9131de97a04', class: "kol-input-range__input kol-input-range__input--range" }, this.getInputRangeProps())), hAsync(InputStateWrapper, Object.assign({ key: '4a0446cce3a73c3487df549abc24064469d68c26', class: "kol-input-range__input kol-input-range__input--number" }, this.getInputNumberProps()))), this.hasSuggestions && hAsync(SuggestionsFc, { key: '465bacc9d4ddae28ba87558ba6d5cdb93b27f732', id: this.state._id, suggestions: this.state._suggestions }))));
23803
24052
  }
23804
24053
  constructor(hostRef) {
23805
24054
  registerInstance(this, hostRef);
@@ -23996,8 +24245,13 @@ class KolInputText {
23996
24245
  return (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.value;
23997
24246
  }
23998
24247
  async focus() {
23999
- var _a;
24000
- return Promise.resolve((_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus());
24248
+ return new Promise((resolve) => {
24249
+ requestAnimationFrame(() => {
24250
+ var _a;
24251
+ (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus();
24252
+ resolve();
24253
+ });
24254
+ });
24001
24255
  }
24002
24256
  async selectionStart() {
24003
24257
  var _a;
@@ -24040,7 +24294,7 @@ class KolInputText {
24040
24294
  return Object.assign(Object.assign({ ref: this.catchRef, state: this.state, ariaDescribedBy }, this.controller.onFacade), { onBlur: this.onBlur, onChange: this.onChange, onFocus: this.onFocus, onInput: this.onInput, onKeyDown: this.onKeyDown });
24041
24295
  }
24042
24296
  render() {
24043
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: '83e4d9964aa560e3fbbaba462572fee6fa2eae87' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: 'b3a68ff02445b1dc07c08ff4ef14e366ee6785a9', state: this.state }, hAsync(InputStateWrapper, Object.assign({ key: 'd1f60fdb8c4b47a9ead3415cbbf38fee000e27f3' }, this.getInputProps())))));
24297
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: '5b2f79fc63b889b52f0369be822edeadae218934' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '246837c2083d17b5773efd67081b47ce6f852be2', state: this.state }, hAsync(InputStateWrapper, Object.assign({ key: '938ed60af361b9227a191433c28f1befe0fd36e8' }, this.getInputProps())))));
24044
24298
  }
24045
24299
  constructor(hostRef) {
24046
24300
  registerInstance(this, hostRef);
@@ -24504,15 +24758,20 @@ class KolLinkWc {
24504
24758
  };
24505
24759
  }
24506
24760
  async focus() {
24507
- var _a;
24508
- return Promise.resolve((_a = this.anchorRef) === null || _a === void 0 ? void 0 : _a.focus());
24761
+ return await new Promise((resolve) => {
24762
+ const ref = this.anchorRef;
24763
+ requestAnimationFrame(() => {
24764
+ ref === null || ref === void 0 ? void 0 : ref.focus();
24765
+ resolve();
24766
+ });
24767
+ });
24509
24768
  }
24510
24769
  render() {
24511
24770
  var _a;
24512
24771
  const { isExternal, tagAttrs } = this.getRenderValues();
24513
24772
  const hasExpertSlot = showExpertSlot(this.state._label);
24514
24773
  const ariaDescription = (_a = this.state._ariaDescription) === null || _a === void 0 ? void 0 : _a.trim();
24515
- return (hAsync(Host, { key: '5bc1c1aed27fafcc28b8f6b1a117a123197c239b' }, hAsync("a", Object.assign({ key: '88edf125ebff91ac26d6a0a4dfd4cc65abcc53ac', ref: this.catchRef }, tagAttrs, { accessKey: this.state._accessKey, "aria-current": this.state._ariaCurrent, "aria-controls": this.state._ariaControls, "aria-description": ariaDescription || undefined, "aria-disabled": this.state._disabled ? 'true' : undefined, "aria-expanded": typeof this.state._ariaExpanded === 'boolean' ? String(this.state._ariaExpanded) : undefined, "aria-owns": this.state._ariaOwns, "aria-label": this.state._hideLabel && typeof this.state._label === 'string'
24774
+ return (hAsync(Host, { key: 'c202c86b81f96025f9ff625b698b8e76630b44f7' }, hAsync("a", Object.assign({ key: '920e43fa27eeac6f56fc9a3a8b80a3a3548a5169', ref: this.catchRef }, tagAttrs, { accessKey: this.state._accessKey, "aria-current": this.state._ariaCurrent, "aria-controls": this.state._ariaControls, "aria-description": ariaDescription || undefined, "aria-disabled": this.state._disabled ? 'true' : undefined, "aria-expanded": typeof this.state._ariaExpanded === 'boolean' ? String(this.state._ariaExpanded) : undefined, "aria-owns": this.state._ariaOwns, "aria-label": this.state._hideLabel && typeof this.state._label === 'string'
24516
24775
  ? `${this.state._label}${isExternal ? ` (${this.translateOpenLinkInTab})` : ''}`
24517
24776
  : undefined, "aria-keyshortcuts": this.state._shortKey, class: clsx('kol-link', {
24518
24777
  'kol-link--disabled': this.state._disabled === true,
@@ -24522,7 +24781,7 @@ class KolLinkWc {
24522
24781
  'kol-link--inline': this.state._inline === true,
24523
24782
  'kol-link--standalone': this.state._inline === false,
24524
24783
  [this.state._customClass]: this.state._variant === 'custom' && typeof this.state._customClass === 'string' && this.state._customClass.length > 0,
24525
- }) }, this.state._on, { onClick: this.onClick, onKeyPress: this.onClick, role: this.state._role, tabIndex: this.state._disabled ? -1 : this.state._tabIndex }), hAsync(KolSpanFc, { key: 'a4605feb901b02c7d759047d6d3de3876f1e5eae', class: "kol-link__text", badgeText: this.state._accessKey || this.state._shortKey, icons: this.state._icons, hideLabel: this.state._hideLabel, label: hasExpertSlot ? '' : this.state._label || this.state._href }, hAsync("slot", { key: '5452f09a70b82be732f45f4b716b8737fb2885af', name: "expert", slot: "expert" })), isExternal && (hAsync(KolIconTag, { key: '5e6d38a786d76b1398263521db26aa2d71bfbeec', class: "kol-link__icon", _label: this.state._hideLabel ? '' : this.translateOpenLinkInTab, _icons: 'kolicon-link-external', "aria-hidden": this.state._hideLabel }))), this.state._hideLabel === true && (hAsync(KolTooltipWcTag, { key: '6294da5cf66e516298cc40a663963bf28f88bec2', "aria-hidden": "true", class: "kol-link__tooltip", ref: (ref) => (this.tooltipRef = ref), hidden: hasExpertSlot, _badgeText: this.state._accessKey || this.state._shortKey, _align: this.state._tooltipAlign, _label: this.state._label || this.state._href }))));
24784
+ }) }, this.state._on, { onClick: this.onClick, onKeyPress: this.onClick, role: this.state._role, tabIndex: this.state._disabled ? -1 : this.state._tabIndex }), hAsync(KolSpanFc, { key: '5594d6d55e05f8c41dca31f9500f0db25806efda', class: "kol-link__text", badgeText: this.state._accessKey || this.state._shortKey, icons: this.state._icons, hideLabel: this.state._hideLabel, label: hasExpertSlot ? '' : this.state._label || this.state._href }, hAsync("slot", { key: '3fb6b66a1390abddadb2c40aa57142a5e6f6e61e', name: "expert", slot: "expert" })), isExternal && (hAsync(KolIconTag, { key: 'f84bdf9e1984fcd1b999e7ead1748f09f8f06a2d', class: "kol-link__icon", _label: this.state._hideLabel ? '' : this.translateOpenLinkInTab, _icons: 'kolicon-link-external', "aria-hidden": this.state._hideLabel }))), this.state._hideLabel === true && (hAsync(KolTooltipWcTag, { key: '619ebd8fe524c58b12b28e28c80aa3df0b195939', "aria-hidden": "true", class: "kol-link__tooltip", ref: (ref) => (this.tooltipRef = ref), hidden: hasExpertSlot, _badgeText: this.state._accessKey || this.state._shortKey, _align: this.state._tooltipAlign, _label: this.state._label || this.state._href }))));
24526
24785
  }
24527
24786
  validateAccessKey(value) {
24528
24787
  validateAccessKey(this, value);
@@ -24928,7 +25187,7 @@ class KolNav {
24928
25187
  }; }
24929
25188
  }
24930
25189
 
24931
- const defaultStyleCss$h = "@charset \"UTF-8\";\n/* forward the rem function */\n/*\n* This file defines the layer order for all CSS layers used in KoliBri.\n* The order is important as it determines the cascade priority.\n*\n* Layer order (lowest to highest priority):\n* 1. kol-a11y - Accessibility defaults and requirements\n* 2. kol-global - Global component styles and resets\n* 3. kol-component - Component-specific styles\n* 4. kol-theme-global - Theme-specific global styles\n* 5. kol-theme-component - Theme-specific component styles\n*/\n@layer kol-a11y, kol-global, kol-component, kol-theme-global, kol-theme-component;\n/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44 * 1rem / var(--kolibri-root-font-size, 16));\n /*\n * No element should be used without verifying the contrast ratio of its background and font colors.\n * By initially setting the background color to white and the font color to black,\n * the contrast ratio is ensured and explicit adjustment is forced.\n */\n color: black;\n background-color: white;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n /*\n * Text should be aligned left by default to provide a predictable starting point.\n */\n text-align: left;\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 * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of to-rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: 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 text color from his parent element.\n */\n color: inherit;\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 * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\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 position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\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 width: 100%;\n margin: 0;\n padding: 0;\n border: none;\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 color: black;\n background-color: lightgray;\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 font-size: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\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: flex;\n flex-flow: column;\n align-items: center;\n justify-content: 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 align-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 opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n .hastooltip {\n z-index: 900 !important;\n }\n}\n@layer kol-component {\n .kol-tooltip {\n display: contents;\n }\n .kol-tooltip__floating {\n opacity: 0;\n display: none;\n position: fixed;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width, max-content);\n min-width: calc(8 * 1rem / var(--kolibri-root-font-size, 16));\n max-width: 90vw;\n max-height: 90vh;\n animation-direction: normal;\n /* Can be used to specify the animation duration from the outside. 250ms by default. */\n animation-duration: var(--kolibri-tooltip-animation-duration, 250ms);\n animation-fill-mode: forwards;\n animation-iteration-count: 1;\n animation-timing-function: ease-in;\n }\n .kol-tooltip__floating.hide {\n animation-name: hideTooltip;\n }\n .kol-tooltip__floating.show {\n animation-name: showTooltip;\n }\n .kol-tooltip__arrow {\n transform: rotate(45deg);\n color: #000;\n background-color: #fff;\n position: absolute;\n z-index: 999;\n width: calc(10 * 1rem / var(--kolibri-root-font-size, 16));\n height: calc(10 * 1rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip__content {\n color: #000;\n background-color: #fff;\n position: relative;\n z-index: 1000;\n }\n @keyframes hideTooltip {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n display: none;\n }\n }\n @keyframes showTooltip {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@layer kol-component {\n .kol-alert :host {\n display: inline-block;\n }\n .kol-alert .kol-button {\n display: flex;\n min-height: var(--a11y-min-size);\n font-style: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n text-decoration-line: none;\n }\n .kol-alert .kol-button::before {\n /* Render zero-width character as first element to set the baseline correctly. */\n content: \"​\";\n }\n .kol-alert .kol-button__text {\n flex: 1 0 100%;\n }\n .kol-alert {\n display: grid;\n }\n .kol-alert__container {\n display: flex;\n place-items: center;\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(1 * 1rem / var(--kolibri-root-font-size, 16));\n }\n .kol-form-field {\n display: grid;\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:not(:has(> [name]))::after,\n .kol-form-field--required .kol-form-field__tooltip .span-label::after {\n content: \"*\"/\"\";\n }\n .kol-form-field--disabled .kol-form-field__hint {\n opacity: 0.5;\n }\n .kol-input-container {\n background-color: transparent;\n display: grid;\n width: 100%;\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n align-items: center;\n grid-template-columns: 1fr;\n }\n .kol-input-container:has(> .kol-input-container__adornment--start:not(:empty)) {\n grid-template-columns: auto 1fr;\n }\n .kol-input-container:has(> .kol-input-container__adornment--end:not(:empty)) {\n grid-template-columns: 1fr auto;\n }\n .kol-input-container:has(> .kol-input-container__adornment--start:not(:empty)):has(> .kol-input-container__adornment--end:not(:empty)) {\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 min-height: var(--a11y-min-size);\n place-items: center;\n }\n .kol-select {\n background-color: transparent;\n width: 100%;\n }\n .kol-select:not(:disabled) {\n cursor: pointer;\n }\n .kol-select:not([multiple], [size]) {\n height: 2.75em;\n }\n .kol-select:focus {\n outline: none;\n }\n .kol-select__option:checked::before {\n content: \"✓ \";\n }\n .kol-select {\n /* needed hack for vertical alignment */\n }\n .kol-select[multiple] option {\n padding: calc((var(--a11y-min-size) - 16 * 1rem / var(--kolibri-root-font-size, 16)) / 2) 0.5em;\n }\n .kol-pagination {\n display: flex;\n gap: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n }\n @media (max-width: 1024px) {\n .kol-pagination {\n flex-direction: column;\n }\n }\n .kol-pagination__navigation-list {\n display: inline-flex;\n margin: 0;\n padding: 0;\n gap: 0.5em;\n flex-wrap: wrap;\n align-items: center;\n list-style: none;\n }\n .kol-pagination__separator:before {\n content: \"•••\";\n }\n .kol-pagination__page-size-select .kol-form-field-select {\n align-items: center;\n grid-template-columns: 1fr max-content;\n }\n}";
25190
+ const defaultStyleCss$h = "@charset \"UTF-8\";\n/* forward the rem function */\n/*\n* This file defines the layer order for all CSS layers used in KoliBri.\n* The order is important as it determines the cascade priority.\n*\n* Layer order (lowest to highest priority):\n* 1. kol-a11y - Accessibility defaults and requirements\n* 2. kol-global - Global component styles and resets\n* 3. kol-component - Component-specific styles\n* 4. kol-theme-global - Theme-specific global styles\n* 5. kol-theme-component - Theme-specific component styles\n*/\n@layer kol-a11y, kol-global, kol-component, kol-theme-global, kol-theme-component;\n/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44 * 1rem / var(--kolibri-root-font-size, 16));\n /*\n * No element should be used without verifying the contrast ratio of its background and font colors.\n * By initially setting the background color to white and the font color to black,\n * the contrast ratio is ensured and explicit adjustment is forced.\n */\n color: black;\n background-color: white;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n /*\n * Text should be aligned left by default to provide a predictable starting point.\n */\n text-align: left;\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 * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of to-rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: 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 text color from his parent element.\n */\n color: inherit;\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 * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\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 position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\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 width: 100%;\n margin: 0;\n padding: 0;\n border: none;\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 color: black;\n background-color: lightgray;\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 font-size: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\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: flex;\n flex-flow: column;\n align-items: center;\n justify-content: 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 align-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 opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n .hastooltip {\n z-index: 900 !important;\n }\n}\n@layer kol-component {\n .kol-tooltip {\n display: contents;\n }\n .kol-tooltip__floating {\n opacity: 0;\n display: none;\n position: fixed;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width, max-content);\n min-width: calc(8 * 1rem / var(--kolibri-root-font-size, 16));\n max-width: 90vw;\n max-height: 90vh;\n animation-direction: normal;\n /* Can be used to specify the animation duration from the outside. 250ms by default. */\n animation-duration: var(--kolibri-tooltip-animation-duration, 250ms);\n animation-fill-mode: forwards;\n animation-iteration-count: 1;\n animation-timing-function: ease-in;\n }\n .kol-tooltip__floating.hide {\n animation-name: hideTooltip;\n }\n .kol-tooltip__floating.show {\n animation-name: showTooltip;\n }\n .kol-tooltip__arrow {\n transform: rotate(45deg);\n color: #000;\n background-color: #fff;\n position: absolute;\n z-index: 999;\n width: calc(10 * 1rem / var(--kolibri-root-font-size, 16));\n height: calc(10 * 1rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip__content {\n color: #000;\n background-color: #fff;\n position: relative;\n z-index: 1000;\n }\n @keyframes hideTooltip {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n display: none;\n }\n }\n @keyframes showTooltip {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@layer kol-component {\n .kol-alert :host {\n display: inline-block;\n }\n .kol-alert .kol-button {\n display: flex;\n min-height: var(--a11y-min-size);\n font-style: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n text-decoration-line: none;\n }\n .kol-alert .kol-button::before {\n /* Render zero-width character as first element to set the baseline correctly. */\n content: \"​\";\n }\n .kol-alert .kol-button__text {\n flex: 1 0 100%;\n }\n .kol-alert {\n display: grid;\n }\n .kol-alert__container {\n display: flex;\n place-items: center;\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(1 * 1rem / var(--kolibri-root-font-size, 16));\n }\n .kol-form-field {\n display: grid;\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:not(:has(> [name]))::after,\n .kol-form-field--required .kol-form-field__tooltip .span-label::after {\n content: \"*\"/\"\";\n }\n .kol-form-field--disabled .kol-form-field__hint {\n opacity: 0.5;\n }\n .kol-input-container {\n background-color: transparent;\n display: grid;\n width: 100%;\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n align-items: center;\n grid-template-columns: 1fr;\n }\n .kol-input-container:has(> .kol-input-container__adornment--start:not(:empty)) {\n grid-template-columns: auto 1fr;\n }\n .kol-input-container:has(> .kol-input-container__adornment--end:not(:empty)) {\n grid-template-columns: 1fr auto;\n }\n .kol-input-container:has(> .kol-input-container__adornment--start:not(:empty)):has(> .kol-input-container__adornment--end:not(:empty)) {\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 min-height: var(--a11y-min-size);\n place-items: center;\n }\n .kol-select {\n background-color: transparent;\n width: 100%;\n }\n .kol-select:not(:disabled) {\n cursor: pointer;\n }\n .kol-select:not([multiple], [size]) {\n height: 2.75em;\n }\n .kol-select:focus {\n outline: none;\n }\n .kol-select__option:checked::before {\n content: \"✓ \";\n }\n .kol-select {\n /* needed hack for vertical alignment */\n }\n .kol-select[multiple] option {\n padding: calc((var(--a11y-min-size) - 16 * 1rem / var(--kolibri-root-font-size, 16)) / 2) 0.5em;\n }\n .kol-pagination {\n display: flex;\n gap: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n container: paging/inline-size;\n }\n .kol-pagination__navigation-list {\n display: inline-flex;\n margin: 0;\n padding: 0;\n gap: 0.5em;\n flex-wrap: wrap;\n align-items: center;\n list-style: none;\n }\n .kol-pagination__separator:before {\n content: \"•••\";\n }\n .kol-pagination__page-size-select .kol-form-field-select {\n align-items: center;\n grid-template-columns: 1fr max-content;\n }\n @container paging (width < 600px) {\n .kol-pagination:has(.kol-pagination__button--first) li:has(.kol-pagination__button--numbers),\n .kol-pagination:has(.kol-pagination__button--first) li:has(.kol-pagination__separator) {\n display: none;\n }\n }\n}";
24932
25191
 
24933
25192
  class KolPagination {
24934
25193
  constructor(hostRef) {
@@ -25162,7 +25421,7 @@ class KolPaginationWc {
25162
25421
  return null;
25163
25422
  }
25164
25423
  });
25165
- return (hAsync(Host, { class: "kol-pagination" }, hAsync("span", { role: "status", "aria-live": "polite" }, translate('kol-table-visible-range', {
25424
+ return (hAsync(Host, { class: "kol-pagination" }, hAsync("span", { role: "status", "aria-live": "polite", class: "kol-pagination__entries" }, translate('kol-table-visible-range', {
25166
25425
  placeholders: {
25167
25426
  start: this.getPageStart(),
25168
25427
  end: this.getPageEnd(),
@@ -25175,7 +25434,7 @@ class KolPaginationWc {
25175
25434
  getUnselectedPageButton(page) {
25176
25435
  const pageText = NUMBER_FORMATTER.format(page);
25177
25436
  const ariaDescription = `${this.translatePage} ${pageText}`;
25178
- return (hAsync("li", { key: nonce() }, hAsync(KolButtonWcTag, { class: "kol-pagination__button", _ariaDescription: ariaDescription, _customClass: this.state._customClass, _label: pageText, _on: {
25437
+ return (hAsync("li", { key: nonce() }, hAsync(KolButtonWcTag, { class: "kol-pagination__button kol-pagination__button--numbers", _ariaDescription: ariaDescription, _customClass: this.state._customClass, _label: pageText, _on: {
25179
25438
  onClick: (event) => {
25180
25439
  this.onClick(event, page);
25181
25440
  },
@@ -25216,7 +25475,7 @@ class KolPaginationWc {
25216
25475
  try {
25217
25476
  nextValue = parseJson(nextValue);
25218
25477
  }
25219
- catch (e) {
25478
+ catch (_a) {
25220
25479
  nextState.delete('_hasButtons');
25221
25480
  }
25222
25481
  }
@@ -27154,7 +27413,7 @@ class KolPopover {
27154
27413
  try {
27155
27414
  this.popoverElement.showPopover();
27156
27415
  }
27157
- catch (e) {
27416
+ catch (_a) {
27158
27417
  }
27159
27418
  }
27160
27419
  }
@@ -27163,7 +27422,7 @@ class KolPopover {
27163
27422
  try {
27164
27423
  this.popoverElement.hidePopover();
27165
27424
  }
27166
- catch (e) {
27425
+ catch (_b) {
27167
27426
  }
27168
27427
  }
27169
27428
  }
@@ -27352,11 +27611,11 @@ class KolPopoverButton {
27352
27611
  (_c = this.cleanupAutoPositioning) === null || _c === void 0 ? void 0 : _c.call(this);
27353
27612
  }
27354
27613
  render() {
27355
- return (hAsync("div", { key: '20a956409478664ea60fe7d2ea494f6b8ccd5759', class: clsx('kol-popover-button', {
27614
+ return (hAsync("div", { key: '0e7d5b884be9b05c7c94c2e5e7be8c35b0def1d7', class: clsx('kol-popover-button', {
27356
27615
  'kol-popover-button--open': this.popoverOpen,
27357
27616
  'kol-popover-button--inline': this.state._inline === true,
27358
27617
  'kol-popover-button--standalone': this.state._inline === false,
27359
- }) }, hAsync(KolButtonWcTag, { key: '9d5b8055b14385030279aa062065bfb3b9d74b5d', _accessKey: this._accessKey, "_aria-controls": "popover", _ariaDescription: this._ariaDescription, _ariaExpanded: this.popoverOpen, _ariaHasPopup: 'dialog', _customClass: this._customClass, _disabled: this._disabled, _hideLabel: this._hideLabel, _icons: this._icons, _id: this._id, _inline: this._inline, _label: this._label, _name: this._name, _on: this.on, _shortKey: this._shortKey, _syncValueBySelector: this._syncValueBySelector, _tabIndex: this._tabIndex, _tooltipAlign: this._tooltipAlign, _type: this._type, _value: this._value, _variant: this._variant, "data-testid": "popover-button", class: "kol-popover-button__button", ref: (element) => (this.refButton = element) }, hAsync("slot", { key: '000363d7f06a71ffe5b3287fb90e44d6d51f7e81', name: "expert", slot: "expert" })), hAsync("div", { key: 'c809a2731b0815d126884d6dffa3732d7731b92c', ref: (element) => (this.refPopover = element), "data-testid": "popover-content", popover: "auto", id: "popover", class: "kol-popover-button__popover" }, hAsync("slot", { key: '7cd06d9b8d84b0703888f54c8492153a84d643b3' }))));
27618
+ }) }, hAsync(KolButtonWcTag, { key: '94ccc86b0c086381c81138687458bc7f24b8daf0', _accessKey: this._accessKey, "_aria-controls": "popover", _ariaDescription: this._ariaDescription, _ariaExpanded: this.popoverOpen, _ariaHasPopup: 'dialog', _customClass: this._customClass, _disabled: this._disabled, _hideLabel: this._hideLabel, _icons: this._icons, _id: this._id, _inline: this._inline, _label: this._label, _name: this._name, _on: this.on, _shortKey: this._shortKey, _syncValueBySelector: this._syncValueBySelector, _tabIndex: this._tabIndex, _tooltipAlign: this._tooltipAlign, _type: this._type, _value: this._value, _variant: this._variant, "data-testid": "popover-button", class: "kol-popover-button__button", ref: (element) => (this.refButton = element) }, hAsync("slot", { key: 'b0fc81b248083132b185e9f675b26a34f536e8da', name: "expert", slot: "expert" })), hAsync("div", { key: '3d97f41b80556b76628c416f655088f5bef5f73b', ref: (element) => (this.refPopover = element), "data-testid": "popover-content", popover: "auto", id: "popover", class: "kol-popover-button__popover" }, hAsync("slot", { key: '10cf6cdaff42f908b1ed103526d4e92f28493535' }))));
27360
27619
  }
27361
27620
  validateInline(value) {
27362
27621
  validateInline(this, value, {
@@ -27839,8 +28098,13 @@ class KolSelectWc {
27839
28098
  }
27840
28099
  }
27841
28100
  async focus() {
27842
- var _a;
27843
- return Promise.resolve((_a = this.selectRef) === null || _a === void 0 ? void 0 : _a.focus());
28101
+ return new Promise((resolve) => {
28102
+ requestAnimationFrame(() => {
28103
+ var _a;
28104
+ (_a = this.selectRef) === null || _a === void 0 ? void 0 : _a.focus();
28105
+ resolve();
28106
+ });
28107
+ });
27844
28108
  }
27845
28109
  getFormFieldProps() {
27846
28110
  return {
@@ -27863,11 +28127,11 @@ class KolSelectWc {
27863
28127
  } });
27864
28128
  }
27865
28129
  render() {
27866
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: '783ae8765a903cd7b733dd3b2f616b5a84ce7378' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '9bf4d862876bbf18b40921bd715e025ff1323c3f', state: this.state }, hAsync("form", { key: '06750f56e586430344314031d3a8b25f8669c7ba', onSubmit: (event) => {
28130
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: '44490eb252cf8e389146f5c8bcaa323a9f42c5cc' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '663ac31f77dfa763ef2a1603fd0597211d37edc7', state: this.state }, hAsync("form", { key: 'c16646ed59f3e5788a89f1d92efd1e2707744649', onSubmit: (event) => {
27867
28131
  event.preventDefault();
27868
28132
  propagateSubmitEventToForm({
27869
28133
  form: this.host});
27870
- } }, hAsync("input", { key: '761992a87c4638c2a4b7282154cac30c66492331', type: "submit", hidden: true }), hAsync(SelectStateWrapper, Object.assign({ key: '36cbcbbcaef6b39a0a36c42bba3270ad873a244d' }, this.getSelectProps()))))));
28134
+ } }, hAsync("input", { key: 'fe84cdd692d243ac1c017fc8e9cd10cd32a0b2bb', type: "submit", hidden: true }), hAsync(SelectStateWrapper, Object.assign({ key: '27465e961d32dc09fe1a6978140693350f813dc0' }, this.getSelectProps()))))));
27871
28135
  }
27872
28136
  constructor(hostRef) {
27873
28137
  registerInstance(this, hostRef);
@@ -28099,8 +28363,13 @@ class KolSingleSelect {
28099
28363
  return this._value;
28100
28364
  }
28101
28365
  async focus() {
28102
- var _a;
28103
- return Promise.resolve((_a = this.refInput) === null || _a === void 0 ? void 0 : _a.focus());
28366
+ return new Promise((resolve) => {
28367
+ requestAnimationFrame(() => {
28368
+ var _a;
28369
+ (_a = this.refInput) === null || _a === void 0 ? void 0 : _a.focus();
28370
+ resolve();
28371
+ });
28372
+ });
28104
28373
  }
28105
28374
  onBlur(event) {
28106
28375
  var _a, _b, _c;
@@ -28272,17 +28541,15 @@ class KolSingleSelect {
28272
28541
  render() {
28273
28542
  var _a;
28274
28543
  const isDisabled = this.state._disabled === true;
28275
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: '010b2e3d283d023a03f02b87c21d4951f6eac70d' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '50cbe61571cc331d748c6a9c5a9f91d0633e2b07', state: this.state }, hAsync("div", { key: 'c769c010215b569c4f33ec886ac822aafba13749', class: "kol-single-select__group" }, hAsync(InputStateWrapper, Object.assign({ key: '4a5a9e6221af7252ff307c3592c6e531223fd2b8' }, this.getInputProps())), this._inputValue && this.state._hasClearButton && (hAsync(KolButtonWcTag, { key: '395e01a4d1ea4355c0db7feeaa10e0421d513e54', _icons: "kolicon-cross", _label: this.translateDeleteSelection, _hideLabel: true, _variant: "ghost", _disabled: isDisabled, "data-testid": "single-select-delete", class: clsx('kol-single-select__delete', {
28276
- 'kol-single-select__delete--disabled': isDisabled,
28277
- }), _on: {
28544
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: '9859c88d4eaca7326f1a0db40b320fa88615c429' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '7b7e93ea4fcc87bf11b1b5f513bf5d8d4bb6d0f7', state: this.state }, hAsync("div", { key: '974ffede1255b0cfb8b4b5ec549c766b5a474531', class: "kol-single-select__group" }, hAsync(InputStateWrapper, Object.assign({ key: '30e30746a003b83931011d0837c1d1bfcbff82dd' }, this.getInputProps())), this._inputValue && this.state._hasClearButton && (hAsync(KolButtonWcTag, { key: '851891399be5cb2289fd8bd650681c2a15212efd', _icons: "kolicon-cross", _label: this.translateDeleteSelection, _hideLabel: true, _variant: "ghost", _disabled: isDisabled, "data-testid": "single-select-delete", class: "kol-single-select__delete", hidden: isDisabled, _on: {
28278
28545
  onClick: () => {
28279
28546
  var _a;
28280
28547
  this.clearSelection();
28281
28548
  (_a = this.refInput) === null || _a === void 0 ? void 0 : _a.focus();
28282
28549
  },
28283
- } })), hAsync(KolIconTag, { key: '25991f7a780b9e3a987606a8bed5c052f156fcdd', _icons: "kolicon-chevron-down", _label: "", class: clsx('kol-custom-suggestions-toggle', {
28550
+ } })), hAsync(KolIconTag, { key: '22a363bfd1c0d198b9b7f918b7b4c95255da18c6', _icons: "kolicon-chevron-down", _label: "", class: clsx('kol-custom-suggestions-toggle', {
28284
28551
  'kol-custom-suggestions-toggle--disabled': isDisabled,
28285
- }), onClick: this.toggleListbox.bind(this) })), hAsync(CustomSuggestionsOptionsGroupFc, { key: 'd3f0d07878c90554c452c1de165c9c441360d5e0', blockSuggestionMouseOver: this.blockSuggestionMouseOver, onKeyDown: this.handleKeyDownDropdown.bind(this), style: { '--visible-options': `${(_a = this._rows) !== null && _a !== void 0 ? _a : 5}` }, hidden: !this._isOpen || isDisabled }, Array.isArray(this._filteredOptions) && this._filteredOptions.length > 0 ? (this._filteredOptions.map((option, index) => (hAsync(CustomSuggestionsOptionFc, { index: index, option: option.label, searchTerm: this._inputValue, ref: (el) => {
28552
+ }), onClick: this.toggleListbox.bind(this) })), hAsync(CustomSuggestionsOptionsGroupFc, { key: '273e98083d2fdb5ee652c796b32d93103676b957', blockSuggestionMouseOver: this.blockSuggestionMouseOver, onKeyDown: this.handleKeyDownDropdown.bind(this), style: { '--visible-options': `${(_a = this._rows) !== null && _a !== void 0 ? _a : 5}` }, hidden: !this._isOpen || isDisabled }, Array.isArray(this._filteredOptions) && this._filteredOptions.length > 0 ? (this._filteredOptions.map((option, index) => (hAsync(CustomSuggestionsOptionFc, { index: index, option: option.label, searchTerm: this._inputValue, ref: (el) => {
28286
28553
  if (el)
28287
28554
  this.refOptions[index] = el;
28288
28555
  }, selected: this._value === option.value, disabled: option.disabled ? true : false, onClick: (event) => {
@@ -28625,6 +28892,175 @@ class KolSingleSelect {
28625
28892
  }; }
28626
28893
  }
28627
28894
 
28895
+ const skeletonBem = bem$2.forBlock('kol-skeleton');
28896
+ const BEM_CLASS_SKELETON__ACTIONS = skeletonBem('actions');
28897
+ const BEM_CLASS_SKELETON__CONTAINER = skeletonBem('container');
28898
+ const BEM_CLASS_SKELETON__COUNTER = skeletonBem('counter');
28899
+ const BEM_CLASS_SKELETON__NAME = skeletonBem('name');
28900
+ const SkeletonFC = (props) => {
28901
+ const { count, label, name, show, handleClick, refButton } = props;
28902
+ const hasName = !!(show && (name === null || name === void 0 ? void 0 : name.trim()));
28903
+ const BEM_CLASS_ROOT = skeletonBem({
28904
+ 'has-name': hasName,
28905
+ 'is-hidden': !show,
28906
+ });
28907
+ return (hAsync("div", { class: BEM_CLASS_ROOT }, hAsync("div", { class: BEM_CLASS_SKELETON__CONTAINER }, hasName && hAsync("span", { class: BEM_CLASS_SKELETON__NAME }, name), hAsync("div", { class: BEM_CLASS_SKELETON__COUNTER }, "Count: ", count)), hAsync("div", { class: BEM_CLASS_SKELETON__ACTIONS }, hAsync(ClickButtonFC, { label: label, handleClick: handleClick, refButton: refButton }))));
28908
+ };
28909
+
28910
+ class SkeletonController extends BaseController {
28911
+ constructor(states) {
28912
+ super(states, {
28913
+ count: 0,
28914
+ name: '',
28915
+ });
28916
+ this.onKeydown = (event) => {
28917
+ if (event.key === 'Escape') {
28918
+ console.log('Show should be toggled');
28919
+ void this.toggle();
28920
+ }
28921
+ };
28922
+ this.handleClick = () => {
28923
+ Log.debug('Button clicked, count should be increased');
28924
+ const { count } = this.getProps();
28925
+ const nextCount = count + 1;
28926
+ this.setProp('count', nextCount);
28927
+ this.setState('count', nextCount);
28928
+ };
28929
+ this.setButtonRef = (element) => {
28930
+ this.clickButtonCtrl.setButtonRef(element);
28931
+ };
28932
+ this.clickButtonCtrl = new ClickButtonController({});
28933
+ this.startLoadedEventInterval();
28934
+ }
28935
+ componentWillLoad(props) {
28936
+ const { count, name } = props;
28937
+ this.watchCount(count);
28938
+ this.watchName(name);
28939
+ this.watchLabel(this.component.label);
28940
+ this.clickButtonCtrl.componentWillLoad({
28941
+ label: this.component.label,
28942
+ });
28943
+ }
28944
+ watchCount(value) {
28945
+ withValidPropValue(countProp, value, (v) => {
28946
+ this.setProp('count', v);
28947
+ this.setState('count', v);
28948
+ });
28949
+ }
28950
+ watchName(value) {
28951
+ withValidPropValue(nameProp, value, (v) => {
28952
+ this.setProp('name', v);
28953
+ });
28954
+ }
28955
+ watchLabel(value) {
28956
+ withValidPropValue(labelProp, value, (v) => {
28957
+ this.setState('label', v);
28958
+ this.clickButtonCtrl.watchLabel(v);
28959
+ });
28960
+ }
28961
+ toggle() {
28962
+ this.setState('show', !this.component.show);
28963
+ }
28964
+ focus() {
28965
+ return this.clickButtonCtrl.focus();
28966
+ }
28967
+ startLoadedEventInterval() {
28968
+ this.intervalId = setInterval(() => {
28969
+ const { count } = this.getProps();
28970
+ this.emitLoaded(count);
28971
+ }, 2000);
28972
+ }
28973
+ emitLoaded(count) {
28974
+ if (this.onLoadedCallback) {
28975
+ this.onLoadedCallback(count);
28976
+ }
28977
+ }
28978
+ setOnLoadedCallback(callback) {
28979
+ this.onLoadedCallback = callback;
28980
+ }
28981
+ destroy() {
28982
+ if (this.intervalId) {
28983
+ clearInterval(this.intervalId);
28984
+ this.intervalId = undefined;
28985
+ }
28986
+ }
28987
+ }
28988
+
28989
+ class KolSkeleton {
28990
+ constructor(hostRef) {
28991
+ registerInstance(this, hostRef);
28992
+ this.loaded = createEvent(this, "loaded");
28993
+ this.rendered = createEvent(this, "rendered");
28994
+ this.ctrl = new SkeletonController(this);
28995
+ this.label = 'Label';
28996
+ this.show = true;
28997
+ this.count = 0;
28998
+ }
28999
+ async focus() {
29000
+ return Promise.resolve(this.ctrl.focus());
29001
+ }
29002
+ async toggle() {
29003
+ return Promise.resolve(this.ctrl.toggle());
29004
+ }
29005
+ watchCount(value) {
29006
+ this.ctrl.watchCount(value);
29007
+ }
29008
+ watchName(value) {
29009
+ this.ctrl.watchName(value);
29010
+ }
29011
+ handleKeyDown(event) {
29012
+ if (event.key === 'Enter' || event.key === ' ') {
29013
+ Log.debug('button pressed');
29014
+ this.ctrl.handleClick();
29015
+ }
29016
+ }
29017
+ onKeydown(event) {
29018
+ this.ctrl.onKeydown(event);
29019
+ }
29020
+ componentWillLoad() {
29021
+ this.ctrl.componentWillLoad({
29022
+ count: this._count,
29023
+ name: this._name,
29024
+ });
29025
+ this.ctrl.setOnLoadedCallback((count) => {
29026
+ this.loaded.emit(count);
29027
+ });
29028
+ }
29029
+ componentDidLoad() {
29030
+ requestAnimationFrame(() => {
29031
+ this.rendered.emit();
29032
+ });
29033
+ }
29034
+ disconnectedCallback() {
29035
+ this.ctrl.destroy();
29036
+ }
29037
+ render() {
29038
+ const { count, name } = this.ctrl.getProps();
29039
+ const { label, show } = this;
29040
+ return (hAsync(Host, { key: '225420664e7c4af6153162c67244b7602a9a2f02' }, hAsync(SkeletonFC, { key: '35c0ce0446877a7e58da64c1c6c2a5fff960c4db', count: count, label: label, name: name, handleClick: () => this.ctrl.handleClick(), onLoaded: this.loaded, onRendered: this.rendered, show: show, refButton: (element) => this.ctrl.setButtonRef(element) })));
29041
+ }
29042
+ static get watchers() { return {
29043
+ "_count": ["watchCount"],
29044
+ "_name": ["watchName"]
29045
+ }; }
29046
+ static get cmpMeta() { return {
29047
+ "$flags$": 265,
29048
+ "$tagName$": "kol-skeleton",
29049
+ "$members$": {
29050
+ "_count": [8],
29051
+ "_name": [1],
29052
+ "label": [32],
29053
+ "show": [32],
29054
+ "count": [32],
29055
+ "focus": [64],
29056
+ "toggle": [64]
29057
+ },
29058
+ "$listeners$": [[0, "keydown", "handleKeyDown"], [8, "keydown", "onKeydown"]],
29059
+ "$lazyBundleId$": "-",
29060
+ "$attrsToReflect$": []
29061
+ }; }
29062
+ }
29063
+
28628
29064
  const defaultStyleCss$b = "/* forward the rem function */\n/*\n* This file defines the layer order for all CSS layers used in KoliBri.\n* The order is important as it determines the cascade priority.\n*\n* Layer order (lowest to highest priority):\n* 1. kol-a11y - Accessibility defaults and requirements\n* 2. kol-global - Global component styles and resets\n* 3. kol-component - Component-specific styles\n* 4. kol-theme-global - Theme-specific global styles\n* 5. kol-theme-component - Theme-specific component styles\n*/\n@layer kol-a11y, kol-global, kol-component, kol-theme-global, kol-theme-component;\n/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44 * 1rem / var(--kolibri-root-font-size, 16));\n /*\n * No element should be used without verifying the contrast ratio of its background and font colors.\n * By initially setting the background color to white and the font color to black,\n * the contrast ratio is ensured and explicit adjustment is forced.\n */\n color: black;\n background-color: white;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n /*\n * Text should be aligned left by default to provide a predictable starting point.\n */\n text-align: left;\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 * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of to-rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: 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 text color from his parent element.\n */\n color: inherit;\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 * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\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 position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\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 width: 100%;\n margin: 0;\n padding: 0;\n border: none;\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 color: black;\n background-color: lightgray;\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 font-size: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\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: flex;\n flex-flow: column;\n align-items: center;\n justify-content: 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 align-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 opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n .hastooltip {\n z-index: 900 !important;\n }\n}\n@layer kol-component {\n .kol-skip-nav__list {\n display: grid;\n place-items: center;\n list-style: none;\n }\n .kol-skip-nav__list-item {\n height: 0;\n }\n .kol-skip-nav .kol-link {\n position: absolute;\n left: calc(-99999 * 1rem / var(--kolibri-root-font-size, 16));\n z-index: 9999999;\n line-height: 1;\n }\n .kol-skip-nav .kol-link:focus {\n background-color: #fff;\n position: unset;\n left: unset;\n }\n}";
28629
29065
 
28630
29066
  class KolSkipNav {
@@ -28943,7 +29379,7 @@ class KolTableSettings {
28943
29379
  }
28944
29380
  render() {
28945
29381
  const columns = this.getPrimaryRow();
28946
- return (hAsync(KolPopoverButtonWcTag, { key: '65b350799d5422b6500b3ae983f9c7f3c925f3b0', ref: (el) => (this.popoverRef = el), class: "kol-table-settings", _icons: "kolicon-settings", _label: this.translateTableSettings, _popoverAlign: "top", _hideLabel: true }, hAsync("div", { key: '450200fa5d74f6ceb99c0ea589e12aefbfcdc23d', class: "kol-table-settings__content" }, hAsync(KolHeadingTag, { key: '8bd0456ba046beb7a819c978d32dd8e64c294be0', _label: this.translateTableSettings, _level: 0 }), this.errorMessage && hAsync(KolAlertWcTag, { key: 'e0d517d57e57c8e889997e18da3fb3badd0bcebe', _type: "error", _label: this.errorMessage, _variant: "msg", class: "kol-table-settings__error-message" }), hAsync("form", { key: '34785b3e839f8fcc59d7930c6d8bc1ca82e8d5a7', onSubmit: this.handleSubmit.bind(this) }, hAsync("div", { key: 'a28b130172a530644430aa4c9f52d6afa913522a', class: "kol-table-settings__columns-container" }, hAsync("div", { key: 'd18e531412556d173f9441c462bd3361f829d205', class: "kol-table-settings__columns" }, columns.map((column, index) => (hAsync("div", { key: column.key, class: "kol-table-settings__column" }, hAsync(KolInputCheckboxTag, { _checked: column.visible !== false, _label: `${column.label}${column.hidable === false ? ` (${this.translateColumnNotHidable})` : ''}`, _value: true, _hideLabel: true, _disabled: column.hidable === false, _on: { onInput: (_, value) => { var _a; return this.handleVisibilityChange((_a = column.key) !== null && _a !== void 0 ? _a : '', value); } } }), hAsync("span", { class: "kol-table-settings__column-label" }, column.label), hAsync(KolInputNumberTag, { _hideLabel: true, _value: parseColumnWidth(column.width), _label: translate('kol-table-settings-column-width', { placeholders: { column: column.label } }), _min: 1, _disabled: column.resizable === false, _on: { onInput: (_, value) => { var _a; return this.handleWidthChange((_a = column.key) !== null && _a !== void 0 ? _a : '', value); } } }), hAsync(KolButtonWcTag, { _icons: "kolicon-chevron-up", _label: translate('kol-table-settings-move-up', { placeholders: { column: column.label } }), _hideLabel: true, _variant: "ghost", _on: { onClick: () => { var _a; return this.moveColumn((_a = column.key) !== null && _a !== void 0 ? _a : '', 'up'); } }, _disabled: column.sortable === false || index === 0, "data-testid": "table-settings-move-up" }), hAsync(KolButtonWcTag, { _icons: "kolicon-chevron-down", _label: translate('kol-table-settings-move-down', { placeholders: { column: column.label } }), _hideLabel: true, _variant: "ghost", _on: { onClick: () => { var _a; return this.moveColumn((_a = column.key) !== null && _a !== void 0 ? _a : '', 'down'); } }, _disabled: column.sortable === false || index === columns.length - 1, "data-testid": "table-settings-move-down" })))))), hAsync("div", { key: '2d6942cc9f36857cd4299a57330131975e7f979f', class: "kol-table-settings__actions" }, hAsync(KolButtonWcTag, { key: 'bec8a8be3020bdc1dc2359899963871539bf4d00', _label: this.translateTableSettingsCancel, _variant: "secondary", _on: { onClick: () => this.handleCancel() }, "data-testid": "table-settings-cancel" }), hAsync(KolButtonWcTag, { key: '9c240d2efeab9b2a6341e5cf817ae84d74c9a667', _label: this.translateTableSettingsApply, _variant: "primary", _type: "submit", "data-testid": "table-settings-apply" }))))));
29382
+ return (hAsync(KolPopoverButtonWcTag, { key: '490b82896c50d36d33fa91b3776c810f2d974e91', ref: (el) => (this.popoverRef = el), class: "kol-table-settings", _icons: "kolicon-settings", _label: this.translateTableSettings, _popoverAlign: "top", _hideLabel: true }, hAsync("div", { key: 'f56590905cb406de94819f8dc05dd5b44192f352', class: "kol-table-settings__content" }, hAsync(KolHeadingTag, { key: 'af706ca70d69c6df0e91b3427ac3b82ae9b13500', _label: this.translateTableSettings, _level: 0 }), this.errorMessage && hAsync(KolAlertWcTag, { key: 'ec1b9cdb7fd18d87b11d8bb699d9b8764f9c74d8', _type: "error", _label: this.errorMessage, _variant: "msg", class: "kol-table-settings__error-message" }), hAsync("form", { key: 'b50a08905d0a39033b2ce95b82a6d456563d114a', onSubmit: this.handleSubmit.bind(this) }, hAsync("div", { key: '1f88fefb1ddf02f2d2b7f5cf31a43f330366d43f', class: "kol-table-settings__columns-container" }, hAsync("div", { key: '8ab029dffd79ce218c2d906585cd21e36ef094a8', class: "kol-table-settings__columns" }, columns.map((column, index) => (hAsync("div", { key: column.key, class: "kol-table-settings__column" }, hAsync(KolInputCheckboxTag, { _checked: column.visible !== false, _label: `${column.label}${column.hidable === false ? ` (${this.translateColumnNotHidable})` : ''}`, _value: true, _hideLabel: true, _disabled: column.hidable === false, _on: { onInput: (_, value) => { var _a; return this.handleVisibilityChange((_a = column.key) !== null && _a !== void 0 ? _a : '', value); } } }), hAsync("span", { class: "kol-table-settings__column-label" }, column.label), hAsync(KolInputNumberTag, { _hideLabel: true, _value: parseColumnWidth(column.width), _label: translate('kol-table-settings-column-width', { placeholders: { column: column.label } }), _min: 1, _disabled: column.resizable === false, _on: { onInput: (_, value) => { var _a; return this.handleWidthChange((_a = column.key) !== null && _a !== void 0 ? _a : '', value); } } }), hAsync(KolButtonWcTag, { _icons: "kolicon-chevron-up", _label: translate('kol-table-settings-move-up', { placeholders: { column: column.label } }), _hideLabel: true, _variant: "ghost", _on: { onClick: () => { var _a; return this.moveColumn((_a = column.key) !== null && _a !== void 0 ? _a : '', 'up'); } }, _disabled: column.sortable === false || index === 0, "data-testid": "table-settings-move-up" }), hAsync(KolButtonWcTag, { _icons: "kolicon-chevron-down", _label: translate('kol-table-settings-move-down', { placeholders: { column: column.label } }), _hideLabel: true, _variant: "ghost", _on: { onClick: () => { var _a; return this.moveColumn((_a = column.key) !== null && _a !== void 0 ? _a : '', 'down'); } }, _disabled: column.sortable === false || index === columns.length - 1, "data-testid": "table-settings-move-down" })))))), hAsync("div", { key: 'ae830d3fe07668cf798515158a98cb669690d9ce', class: "kol-table-settings__actions" }, hAsync(KolButtonWcTag, { key: 'cac77cd375e7e506bec51431989c667210ad78df', _label: this.translateTableSettingsCancel, _variant: "secondary", _on: { onClick: () => this.handleCancel() }, "data-testid": "table-settings-cancel" }), hAsync(KolButtonWcTag, { key: '40204def6561b97cd9d81f76d53c19d7836bd148', _label: this.translateTableSettingsApply, _variant: "primary", _type: "submit", "data-testid": "table-settings-apply" }))))));
28947
29383
  }
28948
29384
  get host() { return getElement(this); }
28949
29385
  static get watchers() { return {
@@ -29002,7 +29438,7 @@ var KeyboardKey;
29002
29438
  KeyboardKey["Space"] = " ";
29003
29439
  })(KeyboardKey || (KeyboardKey = {}));
29004
29440
 
29005
- const defaultStyleCss$8 = "@charset \"UTF-8\";\n/*\n* This file defines the layer order for all CSS layers used in KoliBri.\n* The order is important as it determines the cascade priority.\n*\n* Layer order (lowest to highest priority):\n* 1. kol-a11y - Accessibility defaults and requirements\n* 2. kol-global - Global component styles and resets\n* 3. kol-component - Component-specific styles\n* 4. kol-theme-global - Theme-specific global styles\n* 5. kol-theme-component - Theme-specific component styles\n*/\n@layer kol-a11y, kol-global, kol-component, kol-theme-global, kol-theme-component;\n/* forward the rem function */\n/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44 * 1rem / var(--kolibri-root-font-size, 16));\n /*\n * No element should be used without verifying the contrast ratio of its background and font colors.\n * By initially setting the background color to white and the font color to black,\n * the contrast ratio is ensured and explicit adjustment is forced.\n */\n color: black;\n background-color: white;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n /*\n * Text should be aligned left by default to provide a predictable starting point.\n */\n text-align: left;\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 * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of to-rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: 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 text color from his parent element.\n */\n color: inherit;\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 * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\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 position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\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 width: 100%;\n margin: 0;\n padding: 0;\n border: none;\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 color: black;\n background-color: lightgray;\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 font-size: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\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: flex;\n flex-flow: column;\n align-items: center;\n justify-content: 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 align-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 opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n .hastooltip {\n z-index: 900 !important;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@layer kol-component {\n .kol-tooltip {\n display: contents;\n }\n .kol-tooltip__floating {\n opacity: 0;\n display: none;\n position: fixed;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width, max-content);\n min-width: calc(8 * 1rem / var(--kolibri-root-font-size, 16));\n max-width: 90vw;\n max-height: 90vh;\n animation-direction: normal;\n /* Can be used to specify the animation duration from the outside. 250ms by default. */\n animation-duration: var(--kolibri-tooltip-animation-duration, 250ms);\n animation-fill-mode: forwards;\n animation-iteration-count: 1;\n animation-timing-function: ease-in;\n }\n .kol-tooltip__floating.hide {\n animation-name: hideTooltip;\n }\n .kol-tooltip__floating.show {\n animation-name: showTooltip;\n }\n .kol-tooltip__arrow {\n transform: rotate(45deg);\n color: #000;\n background-color: #fff;\n position: absolute;\n z-index: 999;\n width: calc(10 * 1rem / var(--kolibri-root-font-size, 16));\n height: calc(10 * 1rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip__content {\n color: #000;\n background-color: #fff;\n position: relative;\n z-index: 1000;\n }\n @keyframes hideTooltip {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n display: none;\n }\n }\n @keyframes showTooltip {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n .kol-alert :host {\n display: inline-block;\n }\n .kol-alert .kol-button {\n display: flex;\n min-height: var(--a11y-min-size);\n font-style: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n text-decoration-line: none;\n }\n .kol-alert .kol-button::before {\n /* Render zero-width character as first element to set the baseline correctly. */\n content: \"​\";\n }\n .kol-alert .kol-button__text {\n flex: 1 0 100%;\n }\n .kol-alert {\n display: grid;\n }\n .kol-alert__container {\n display: flex;\n place-items: center;\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(1 * 1rem / var(--kolibri-root-font-size, 16));\n }\n :host {\n display: inline-block;\n }\n .kol-button {\n display: flex;\n min-height: var(--a11y-min-size);\n font-style: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n text-decoration-line: none;\n }\n .kol-button::before {\n /* Render zero-width character as first element to set the baseline correctly. */\n content: \"​\";\n }\n .kol-button__text {\n flex: 1 0 100%;\n }\n .kol-popover-button__button {\n display: inline-block;\n }\n .kol-popover-button__popover {\n margin: 0;\n padding: 0;\n border: 0;\n }\n .kol-popover-button--inline .kol-popover-button__button {\n display: inline;\n }\n .kol-table-settings {\n background: #fff;\n position: absolute;\n top: 0;\n right: 0;\n z-index: 1;\n }\n .kol-table-settings .kol-popover-button__popover {\n background: #fff;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n border-radius: calc(8 * 1rem / var(--kolibri-root-font-size, 16));\n border: 1px solid #d1d5db;\n }\n .kol-table-settings__columns-container {\n max-height: calc(200 * 1rem / var(--kolibri-root-font-size, 16));\n margin-top: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n overflow: auto;\n }\n .kol-table-settings__columns {\n display: grid;\n gap: calc(8 * 1rem / var(--kolibri-root-font-size, 16));\n align-items: center;\n grid-auto-rows: min-content;\n grid-template-columns: min-content minmax(max-content, 1fr) calc(140 * 1rem / var(--kolibri-root-font-size, 16)) auto auto;\n }\n .kol-table-settings__column {\n display: contents;\n }\n .kol-table {\n display: block;\n position: relative;\n max-width: 100%;\n }\n .kol-table:has(.kol-table__focus-element:focus) .kol-table__scroll-container {\n /* @see https://remysharp.com/til/css/focus-ring-default-styles */\n outline: 5px auto Highlight;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: 2px;\n }\n .kol-table__scroll-container {\n overflow-x: auto;\n overflow-y: hidden;\n }\n .kol-table__table {\n table-layout: fixed;\n }\n .kol-table__caption {\n min-height: var(--a11y-min-size);\n padding-right: var(--a11y-min-size);\n text-align: start;\n }\n .kol-table__sort-button .kol-button {\n color: inherit;\n }\n .kol-table__sort {\n display: inline-flex;\n gap: 0.25rem;\n align-items: center;\n }\n .kol-table__sort-order {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n .kol-table__body {\n text-align: left;\n }\n .kol-table__body .kol-button__text {\n justify-items: start;\n }\n .kol-table__cell--align-left {\n text-align: left;\n }\n .kol-table__cell--align-left .kol-button__text {\n align-items: start;\n }\n .kol-table__cell--align-center {\n text-align: center;\n }\n .kol-table__cell--align-center .kol-button__text {\n align-items: center;\n }\n .kol-table__cell--align-right {\n text-align: right;\n }\n .kol-table__cell--align-right .kol-button__text {\n align-items: end;\n }\n .kol-table__cell--selection {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n white-space: nowrap;\n }\n .kol-table__cell--actions {\n white-space: nowrap;\n }\n .kol-table__cell--actions :host {\n display: inline-block;\n }\n .kol-table__cell--actions .kol-button {\n display: flex;\n min-height: var(--a11y-min-size);\n font-style: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n text-decoration-line: none;\n }\n .kol-table__cell--actions .kol-button::before {\n /* Render zero-width character as first element to set the baseline correctly. */\n content: \"​\";\n }\n .kol-table__cell--actions .kol-button__text {\n flex: 1 0 100%;\n }\n .kol-table__cell--actions :host {\n display: inline-block;\n }\n .kol-table__cell--actions .kol-link {\n display: inline-flex;\n max-width: fit-content;\n align-items: baseline;\n place-items: center;\n text-align: left;\n text-decoration-line: none;\n }\n .kol-table__cell--actions .kol-link--standalone {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n align-items: stretch;\n }\n .kol-table__cell--actions .kol-link--standalone .kol-link__text {\n display: inline-flex;\n flex: 1 1 100%;\n place-items: center;\n }\n .kol-table__cell--actions .kol-link .kol-span__label {\n text-decoration-line: underline;\n }\n .kol-table__cell--actions .kol-link:focus:not([aria-disabled], [disabled]) .kol-span__label, .kol-table__cell--actions .kol-link:hover:not([aria-disabled], [disabled]) .kol-span__label {\n text-decoration-thickness: 0.2em;\n }\n .kol-table__cell--actions .kol-link__icon {\n display: inline-flex;\n margin-left: calc(8 * 1rem / var(--kolibri-root-font-size, 16));\n }\n .kol-table__cell-actions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n }\n .kol-table__spacer {\n display: none;\n }\n .kol-table__selection-label {\n display: flex;\n position: relative;\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n align-items: center;\n justify-content: center;\n cursor: pointer;\n }\n .kol-table__selection-label--disabled {\n cursor: not-allowed;\n }\n .kol-table__selection-icon {\n display: block;\n position: absolute;\n inset: auto;\n z-index: 1;\n }\n .kol-table__selection-input {\n border-style: solid;\n margin: 0;\n appearance: none;\n cursor: pointer;\n }\n .kol-table__selection-input:disabled {\n cursor: not-allowed;\n }\n .kol-table__selection-input:before {\n content: \"\";\n }\n .kol-table__selection-input--checkbox {\n background-color: rgb(255, 255, 255);\n display: flex;\n position: relative;\n min-width: calc(var(--a11y-min-size) / 2);\n min-height: calc(var(--a11y-min-size) / 2);\n border-width: 2px;\n align-items: center;\n justify-content: center;\n line-height: 1.5;\n }\n .kol-table__selection-input--radio {\n border-radius: 100%;\n display: flex;\n width: 1.5em;\n min-width: 1.5em;\n height: 1.5em;\n min-height: 1.5em;\n padding: 0;\n border-width: 2px;\n }\n .kol-table__selection-input--radio:before {\n border-radius: 100%;\n width: 0.75em;\n height: 0.75em;\n margin: auto;\n }\n .kol-table__selection-input--radio:checked:before {\n background-color: #000;\n }\n @media (forced-colors: active) {\n .kol-table__selection-input--radio:checked:before {\n /* Give it a visible background in forced colors mode */\n background-color: selectedItem !important;\n }\n }\n .kol-alert :host {\n display: inline-block;\n }\n .kol-alert .kol-button {\n display: flex;\n min-height: var(--a11y-min-size);\n font-style: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n text-decoration-line: none;\n }\n .kol-alert .kol-button::before {\n /* Render zero-width character as first element to set the baseline correctly. */\n content: \"​\";\n }\n .kol-alert .kol-button__text {\n flex: 1 0 100%;\n }\n .kol-alert {\n display: grid;\n }\n .kol-alert__container {\n display: flex;\n place-items: center;\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(1 * 1rem / var(--kolibri-root-font-size, 16));\n }\n .kol-form-field {\n display: grid;\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:not(:has(> [name]))::after,\n .kol-form-field--required .kol-form-field__tooltip .span-label::after {\n content: \"*\"/\"\";\n }\n .kol-form-field--disabled .kol-form-field__hint {\n opacity: 0.5;\n }\n .kol-input-container {\n background-color: transparent;\n display: grid;\n width: 100%;\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n align-items: center;\n grid-template-columns: 1fr;\n }\n .kol-input-container:has(> .kol-input-container__adornment--start:not(:empty)) {\n grid-template-columns: auto 1fr;\n }\n .kol-input-container:has(> .kol-input-container__adornment--end:not(:empty)) {\n grid-template-columns: 1fr auto;\n }\n .kol-input-container:has(> .kol-input-container__adornment--start:not(:empty)):has(> .kol-input-container__adornment--end:not(:empty)) {\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 min-height: var(--a11y-min-size);\n place-items: center;\n }\n .kol-select {\n background-color: transparent;\n width: 100%;\n }\n .kol-select:not(:disabled) {\n cursor: pointer;\n }\n .kol-select:not([multiple], [size]) {\n height: 2.75em;\n }\n .kol-select:focus {\n outline: none;\n }\n .kol-select__option:checked::before {\n content: \"✓ \";\n }\n .kol-select {\n /* needed hack for vertical alignment */\n }\n .kol-select[multiple] option {\n padding: calc((var(--a11y-min-size) - 16 * 1rem / var(--kolibri-root-font-size, 16)) / 2) 0.5em;\n }\n .kol-pagination {\n display: flex;\n gap: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n }\n @media (max-width: 1024px) {\n .kol-pagination {\n flex-direction: column;\n }\n }\n .kol-pagination__navigation-list {\n display: inline-flex;\n margin: 0;\n padding: 0;\n gap: 0.5em;\n flex-wrap: wrap;\n align-items: center;\n list-style: none;\n }\n .kol-pagination__separator:before {\n content: \"•••\";\n }\n .kol-pagination__page-size-select .kol-form-field-select {\n align-items: center;\n grid-template-columns: 1fr max-content;\n }\n .kol-table-stateful__pagination, .kol-table-stateful__pagination-wrapper {\n display: grid;\n place-items: center;\n }\n @media (min-width: 1024px) {\n .kol-table-stateful__pagination, .kol-table-stateful__pagination-wrapper {\n grid-auto-flow: column;\n }\n }\n}";
29441
+ const defaultStyleCss$8 = "@charset \"UTF-8\";\n/*\n* This file defines the layer order for all CSS layers used in KoliBri.\n* The order is important as it determines the cascade priority.\n*\n* Layer order (lowest to highest priority):\n* 1. kol-a11y - Accessibility defaults and requirements\n* 2. kol-global - Global component styles and resets\n* 3. kol-component - Component-specific styles\n* 4. kol-theme-global - Theme-specific global styles\n* 5. kol-theme-component - Theme-specific component styles\n*/\n@layer kol-a11y, kol-global, kol-component, kol-theme-global, kol-theme-component;\n/* forward the rem function */\n/*\n * This file contains all rules for accessibility.\n */\n@layer kol-a11y {\n :host {\n /*\n * Minimum size of interactive elements.\n */\n --a11y-min-size: calc(44 * 1rem / var(--kolibri-root-font-size, 16));\n /*\n * No element should be used without verifying the contrast ratio of its background and font colors.\n * By initially setting the background color to white and the font color to black,\n * the contrast ratio is ensured and explicit adjustment is forced.\n */\n color: black;\n background-color: white;\n /*\n * Verdana is an accessible font that can be used without requiring additional loading time.\n */\n font-family: Verdana;\n /*\n * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\n /*\n * Text should be aligned left by default to provide a predictable starting point.\n */\n text-align: left;\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 * This rule enables the word dividing for all texts. That is important for high zoom levels.\n */\n word-break: break-word;\n }\n /*\n * All interactive elements should have a minimum size of to-rem(44).\n */\n /* input:not([type='checkbox'], [type='radio'], [type='range']), */\n /* option, */\n /* select, */\n /* textarea, */\n button,\n .kol-input .input {\n min-width: var(--a11y-min-size);\n min-height: 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 text color from his parent element.\n */\n color: inherit;\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 * Letter spacing is required for all texts.\n */\n letter-spacing: inherit;\n /*\n * Word spacing is required for all texts.\n */\n word-spacing: inherit;\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 position: fixed;\n top: 0;\n left: 0;\n width: 1px;\n height: 1px;\n overflow: hidden;\n white-space: nowrap;\n clip-path: inset(50%);\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 width: 100%;\n margin: 0;\n padding: 0;\n border: none;\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 color: black;\n background-color: lightgray;\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 font-size: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\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: flex;\n flex-flow: column;\n align-items: center;\n justify-content: 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 align-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 opacity: 0.5;\n outline: none;\n cursor: not-allowed;\n }\n [aria-disabled=true]:focus .kol-span,\n [disabled]:focus .kol-span {\n outline: none !important;\n }\n .hastooltip {\n z-index: 900 !important;\n }\n}\n@layer kol-component {\n :host {\n display: block;\n }\n}\n@layer kol-component {\n .kol-tooltip {\n display: contents;\n }\n .kol-tooltip__floating {\n opacity: 0;\n display: none;\n position: fixed;\n /* Avoid layout interference - see https://floating-ui.com/docs/computePosition */\n top: 0;\n left: 0;\n /* Can be used to specify the tooltip-width from the outside. Unset by default. */\n width: var(--kol-tooltip-width, max-content);\n min-width: calc(8 * 1rem / var(--kolibri-root-font-size, 16));\n max-width: 90vw;\n max-height: 90vh;\n animation-direction: normal;\n /* Can be used to specify the animation duration from the outside. 250ms by default. */\n animation-duration: var(--kolibri-tooltip-animation-duration, 250ms);\n animation-fill-mode: forwards;\n animation-iteration-count: 1;\n animation-timing-function: ease-in;\n }\n .kol-tooltip__floating.hide {\n animation-name: hideTooltip;\n }\n .kol-tooltip__floating.show {\n animation-name: showTooltip;\n }\n .kol-tooltip__arrow {\n transform: rotate(45deg);\n color: #000;\n background-color: #fff;\n position: absolute;\n z-index: 999;\n width: calc(10 * 1rem / var(--kolibri-root-font-size, 16));\n height: calc(10 * 1rem / var(--kolibri-root-font-size, 16));\n }\n .kol-tooltip__content {\n color: #000;\n background-color: #fff;\n position: relative;\n z-index: 1000;\n }\n @keyframes hideTooltip {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n display: none;\n }\n }\n @keyframes showTooltip {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n }\n}\n@layer kol-component {\n .kol-alert :host {\n display: inline-block;\n }\n .kol-alert .kol-button {\n display: flex;\n min-height: var(--a11y-min-size);\n font-style: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n text-decoration-line: none;\n }\n .kol-alert .kol-button::before {\n /* Render zero-width character as first element to set the baseline correctly. */\n content: \"​\";\n }\n .kol-alert .kol-button__text {\n flex: 1 0 100%;\n }\n .kol-alert {\n display: grid;\n }\n .kol-alert__container {\n display: flex;\n place-items: center;\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(1 * 1rem / var(--kolibri-root-font-size, 16));\n }\n :host {\n display: inline-block;\n }\n .kol-button {\n display: flex;\n min-height: var(--a11y-min-size);\n font-style: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n text-decoration-line: none;\n }\n .kol-button::before {\n /* Render zero-width character as first element to set the baseline correctly. */\n content: \"​\";\n }\n .kol-button__text {\n flex: 1 0 100%;\n }\n .kol-popover-button__button {\n display: inline-block;\n }\n .kol-popover-button__popover {\n margin: 0;\n padding: 0;\n border: 0;\n }\n .kol-popover-button--inline .kol-popover-button__button {\n display: inline;\n }\n .kol-table-settings {\n background: #fff;\n position: absolute;\n top: 0;\n right: 0;\n z-index: 1;\n }\n .kol-table-settings .kol-popover-button__popover {\n background: #fff;\n box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n border-radius: calc(8 * 1rem / var(--kolibri-root-font-size, 16));\n border: 1px solid #d1d5db;\n }\n .kol-table-settings__columns-container {\n max-height: calc(200 * 1rem / var(--kolibri-root-font-size, 16));\n margin-top: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n overflow: auto;\n }\n .kol-table-settings__columns {\n display: grid;\n gap: calc(8 * 1rem / var(--kolibri-root-font-size, 16));\n align-items: center;\n grid-auto-rows: min-content;\n grid-template-columns: min-content minmax(max-content, 1fr) calc(140 * 1rem / var(--kolibri-root-font-size, 16)) auto auto;\n }\n .kol-table-settings__column {\n display: contents;\n }\n .kol-table {\n display: block;\n position: relative;\n max-width: 100%;\n }\n .kol-table:has(.kol-table__focus-element:focus) .kol-table__scroll-container {\n /* @see https://remysharp.com/til/css/focus-ring-default-styles */\n outline: 5px auto Highlight;\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: 2px;\n }\n .kol-table__scroll-container {\n overflow-x: auto;\n overflow-y: hidden;\n }\n .kol-table__table {\n table-layout: fixed;\n }\n .kol-table__caption {\n min-height: var(--a11y-min-size);\n padding-right: var(--a11y-min-size);\n text-align: start;\n }\n .kol-table__sort-button .kol-button {\n color: inherit;\n }\n .kol-table__sort {\n display: inline-flex;\n gap: 0.25rem;\n align-items: center;\n }\n .kol-table__sort-order {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n .kol-table__body {\n text-align: left;\n }\n .kol-table__body .kol-button__text {\n justify-items: start;\n }\n .kol-table__cell--align-left {\n text-align: left;\n }\n .kol-table__cell--align-left .kol-button__text {\n align-items: start;\n }\n .kol-table__cell--align-center {\n text-align: center;\n }\n .kol-table__cell--align-center .kol-button__text {\n align-items: center;\n }\n .kol-table__cell--align-right {\n text-align: right;\n }\n .kol-table__cell--align-right .kol-button__text {\n align-items: end;\n }\n .kol-table__cell--selection {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n white-space: nowrap;\n }\n .kol-table__cell--actions {\n white-space: nowrap;\n }\n .kol-table__cell--actions :host {\n display: inline-block;\n }\n .kol-table__cell--actions .kol-button {\n display: flex;\n min-height: var(--a11y-min-size);\n font-style: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n text-decoration-line: none;\n }\n .kol-table__cell--actions .kol-button::before {\n /* Render zero-width character as first element to set the baseline correctly. */\n content: \"​\";\n }\n .kol-table__cell--actions .kol-button__text {\n flex: 1 0 100%;\n }\n .kol-table__cell--actions :host {\n display: inline-block;\n }\n .kol-table__cell--actions .kol-link {\n display: inline-flex;\n max-width: fit-content;\n align-items: baseline;\n place-items: center;\n text-align: left;\n text-decoration-line: none;\n }\n .kol-table__cell--actions .kol-link--standalone {\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n align-items: stretch;\n }\n .kol-table__cell--actions .kol-link--standalone .kol-link__text {\n display: inline-flex;\n flex: 1 1 100%;\n place-items: center;\n }\n .kol-table__cell--actions .kol-link .kol-span__label {\n text-decoration-line: underline;\n }\n .kol-table__cell--actions .kol-link:focus:not([aria-disabled], [disabled]) .kol-span__label, .kol-table__cell--actions .kol-link:hover:not([aria-disabled], [disabled]) .kol-span__label {\n text-decoration-thickness: 0.2em;\n }\n .kol-table__cell--actions .kol-link__icon {\n display: inline-flex;\n margin-left: calc(8 * 1rem / var(--kolibri-root-font-size, 16));\n }\n .kol-table__cell-actions {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n }\n .kol-table__spacer {\n display: none;\n }\n .kol-table__selection-label {\n display: flex;\n position: relative;\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n align-items: center;\n justify-content: center;\n cursor: pointer;\n }\n .kol-table__selection-label--disabled {\n cursor: not-allowed;\n }\n .kol-table__selection-icon {\n display: block;\n position: absolute;\n inset: auto;\n z-index: 1;\n }\n .kol-table__selection-input {\n border-style: solid;\n margin: 0;\n appearance: none;\n cursor: pointer;\n }\n .kol-table__selection-input:disabled {\n cursor: not-allowed;\n }\n .kol-table__selection-input:before {\n content: \"\";\n }\n .kol-table__selection-input--checkbox {\n background-color: rgb(255, 255, 255);\n display: flex;\n position: relative;\n min-width: calc(var(--a11y-min-size) / 2);\n min-height: calc(var(--a11y-min-size) / 2);\n border-width: 2px;\n align-items: center;\n justify-content: center;\n line-height: 1.5;\n }\n .kol-table__selection-input--radio {\n border-radius: 100%;\n display: flex;\n width: 1.5em;\n min-width: 1.5em;\n height: 1.5em;\n min-height: 1.5em;\n padding: 0;\n border-width: 2px;\n }\n .kol-table__selection-input--radio:before {\n border-radius: 100%;\n width: 0.75em;\n height: 0.75em;\n margin: auto;\n }\n .kol-table__selection-input--radio:checked:before {\n background-color: #000;\n }\n @media (forced-colors: active) {\n .kol-table__selection-input--radio:checked:before {\n /* Give it a visible background in forced colors mode */\n background-color: selectedItem !important;\n }\n }\n .kol-alert :host {\n display: inline-block;\n }\n .kol-alert .kol-button {\n display: flex;\n min-height: var(--a11y-min-size);\n font-style: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n text-decoration-line: none;\n }\n .kol-alert .kol-button::before {\n /* Render zero-width character as first element to set the baseline correctly. */\n content: \"​\";\n }\n .kol-alert .kol-button__text {\n flex: 1 0 100%;\n }\n .kol-alert {\n display: grid;\n }\n .kol-alert__container {\n display: flex;\n place-items: center;\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(1 * 1rem / var(--kolibri-root-font-size, 16));\n }\n .kol-form-field {\n display: grid;\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:not(:has(> [name]))::after,\n .kol-form-field--required .kol-form-field__tooltip .span-label::after {\n content: \"*\"/\"\";\n }\n .kol-form-field--disabled .kol-form-field__hint {\n opacity: 0.5;\n }\n .kol-input-container {\n background-color: transparent;\n display: grid;\n width: 100%;\n min-width: var(--a11y-min-size);\n min-height: var(--a11y-min-size);\n align-items: center;\n grid-template-columns: 1fr;\n }\n .kol-input-container:has(> .kol-input-container__adornment--start:not(:empty)) {\n grid-template-columns: auto 1fr;\n }\n .kol-input-container:has(> .kol-input-container__adornment--end:not(:empty)) {\n grid-template-columns: 1fr auto;\n }\n .kol-input-container:has(> .kol-input-container__adornment--start:not(:empty)):has(> .kol-input-container__adornment--end:not(:empty)) {\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 min-height: var(--a11y-min-size);\n place-items: center;\n }\n .kol-select {\n background-color: transparent;\n width: 100%;\n }\n .kol-select:not(:disabled) {\n cursor: pointer;\n }\n .kol-select:not([multiple], [size]) {\n height: 2.75em;\n }\n .kol-select:focus {\n outline: none;\n }\n .kol-select__option:checked::before {\n content: \"✓ \";\n }\n .kol-select {\n /* needed hack for vertical alignment */\n }\n .kol-select[multiple] option {\n padding: calc((var(--a11y-min-size) - 16 * 1rem / var(--kolibri-root-font-size, 16)) / 2) 0.5em;\n }\n .kol-pagination {\n display: flex;\n gap: calc(16 * 1rem / var(--kolibri-root-font-size, 16));\n flex-wrap: wrap;\n align-items: center;\n justify-content: center;\n container: paging/inline-size;\n }\n .kol-pagination__navigation-list {\n display: inline-flex;\n margin: 0;\n padding: 0;\n gap: 0.5em;\n flex-wrap: wrap;\n align-items: center;\n list-style: none;\n }\n .kol-pagination__separator:before {\n content: \"•••\";\n }\n .kol-pagination__page-size-select .kol-form-field-select {\n align-items: center;\n grid-template-columns: 1fr max-content;\n }\n @container paging (width < 600px) {\n .kol-pagination:has(.kol-pagination__button--first) li:has(.kol-pagination__button--numbers),\n .kol-pagination:has(.kol-pagination__button--first) li:has(.kol-pagination__separator) {\n display: none;\n }\n }\n}";
29006
29442
 
29007
29443
  const PAGINATION_OPTIONS = [10, 20, 50, 100];
29008
29444
  const paginationValidator = (value) => value === true || value === '' || (typeof value === 'object' && value !== null);
@@ -29148,7 +29584,7 @@ class KolTableStateful {
29148
29584
  try {
29149
29585
  value = parseJson(value);
29150
29586
  }
29151
- catch (e) {
29587
+ catch (_a) {
29152
29588
  }
29153
29589
  watchValidator(this, '_headers', (value) => typeof value === 'object' && value !== null, new Set(['KoliBriTableHeaders']), value, {
29154
29590
  hooks: {
@@ -29211,7 +29647,7 @@ class KolTableStateful {
29211
29647
  try {
29212
29648
  value = parseJson(value);
29213
29649
  }
29214
- catch (e) {
29650
+ catch (_a) {
29215
29651
  }
29216
29652
  this.showPagination = paginationValidator(value);
29217
29653
  watchValidator(this, '_pagination', paginationValidator, new Set(['boolean', 'KoliBriTablePagination']), value, {
@@ -29332,7 +29768,7 @@ class KolTableStateful {
29332
29768
  horizontal: (_d = (_c = this.state._headers.horizontal) === null || _c === void 0 ? void 0 : _c.map((row) => row.map((cell) => (Object.assign(Object.assign({}, cell), { sortDirection: this.getHeaderCellSortState(cell), sortOrder: this.getHeaderCellSortOrder(cell) }))))) !== null && _d !== void 0 ? _d : [],
29333
29769
  vertical: (_f = (_e = this.state._headers.vertical) === null || _e === void 0 ? void 0 : _e.map((column) => column.map((cell) => (Object.assign(Object.assign({}, cell), { sortDirection: this.getHeaderCellSortState(cell), sortOrder: this.getHeaderCellSortOrder(cell) }))))) !== null && _f !== void 0 ? _f : [],
29334
29770
  };
29335
- return (hAsync(Host, { key: '596ff18dd22ae8a08e83dbaf36db142fe58d971e', class: "kol-table-stateful" }, this.pageEndSlice > 0 && this.showPagination && paginationTop, hAsync(KolTableStatelessWcTag, { key: 'de0e3900a63bb3c03bce10bb7df6c1cfad6e33cf', ref: this.catchRef, _data: displayedData, _headerCells: headerCells, _label: this.state._label, _dataFoot: this.state._dataFoot, _on: {
29771
+ return (hAsync(Host, { key: 'e1709a711cbb5a5c880a08fe116a1f71cba1eb42', class: "kol-table-stateful" }, this.pageEndSlice > 0 && this.showPagination && paginationTop, hAsync(KolTableStatelessWcTag, { key: '8913690e3c5b72ce1a0b405105cfdedd3112d58f', ref: this.catchRef, _data: displayedData, _headerCells: headerCells, _label: this.state._label, _dataFoot: this.state._dataFoot, _on: {
29336
29772
  onSort: (_, payload) => {
29337
29773
  this.handleSort(payload);
29338
29774
  },
@@ -29387,7 +29823,7 @@ let KolTableStateless$1 = class KolTableStateless {
29387
29823
  registerInstance(this, hostRef);
29388
29824
  }
29389
29825
  render() {
29390
- return (hAsync(KolTableStatelessWcTag, { key: '4f2c23853dd8f38baeb961bf35cc5f651cd45605', _data: this._data, _dataFoot: this._dataFoot, _headerCells: this._headerCells, _label: this._label, _on: this._on, _selection: this._selection, _hasSettingsMenu: this._hasSettingsMenu }));
29826
+ return (hAsync(KolTableStatelessWcTag, { key: '804f4c5a9759f8df05272b7c099459411448c59e', _data: this._data, _dataFoot: this._dataFoot, _headerCells: this._headerCells, _label: this._label, _on: this._on, _selection: this._selection, _hasSettingsMenu: this._hasSettingsMenu }));
29391
29827
  }
29392
29828
  static get style() { return {
29393
29829
  default: defaultStyleCss$7
@@ -30022,12 +30458,12 @@ class KolTableStateless {
30022
30458
  const dataField = this.createDataField(this.state._data, this.state._headerCells);
30023
30459
  this.checkboxRefs = [];
30024
30460
  const horizontalHeaders = this.state._headerCells.horizontal;
30025
- return (hAsync("div", { key: 'c0d880b5feeae9b29c7defba7304530deb1f1064', class: "kol-table" }, this.state._hasSettingsMenu && hAsync(KolTableSettingsWcTag, { key: 'b7fc12aeb7724aa55f956836f440dbeb44f98ca9', _horizontalHeaderCells: horizontalHeaders !== null && horizontalHeaders !== void 0 ? horizontalHeaders : [] }), hAsync("div", { key: 'a6ca943792cbc34770516274022f52c5fc06719f', ref: (element) => (this.tableDivElement = element), class: "kol-table__scroll-container", tabindex: this.tableDivElementHasScrollbar ? '-1' : undefined }, hAsync("table", { key: '657af42e176079dd1ab4c030f16cc08d534172a9', class: "kol-table__table", style: {
30461
+ return (hAsync("div", { key: '2426b838c4e5d373231c0b7d8248b33b3190fce4', class: "kol-table" }, this.state._hasSettingsMenu && hAsync(KolTableSettingsWcTag, { key: 'b967b09672a41cbac225115d85bd7df3a26c747a', _horizontalHeaderCells: horizontalHeaders !== null && horizontalHeaders !== void 0 ? horizontalHeaders : [] }), hAsync("div", { key: '80058544c29bec221fa72701cec3534ae298f519', ref: (element) => (this.tableDivElement = element), class: "kol-table__scroll-container", tabindex: this.tableDivElementHasScrollbar ? '-1' : undefined }, hAsync("table", { key: 'dca5672b8ef6e439d60ea4c5206917c2bd8da036', class: "kol-table__table", style: {
30026
30462
  minWidth: this.getTableMinWidth(),
30027
- } }, hAsync("caption", { key: 'd55d0041c7ed04e26ccf55203f0f2a42f1652014', class: "kol-table__focus-element kol-table__caption", id: "caption", tabindex: this.tableDivElementHasScrollbar ? '0' : undefined }, this.state._label), Array.isArray(horizontalHeaders) && (hAsync("thead", { key: '6c50df582996be2145568ea275007a3e87ba815e', class: "kol-table__head" }, [
30463
+ } }, hAsync("caption", { key: 'cc730fb3e4c5951b1d0c04b73901b1e1ba4f0181', class: "kol-table__focus-element kol-table__caption", id: "caption", tabindex: this.tableDivElementHasScrollbar ? '0' : undefined }, this.state._label), Array.isArray(horizontalHeaders) && (hAsync("thead", { key: 'ddab33602df5dcc0d266128a06907b0c5fe81769', class: "kol-table__head" }, [
30028
30464
  horizontalHeaders.map((cols, rowIndex) => (hAsync("tr", { class: "kol-table__head-row", key: `thead-${rowIndex}` }, this.state._selection && this.renderHeadingSelectionCell(), rowIndex === 0 && this.renderHeaderTdCell(), Array.isArray(cols) && cols.map((cell, colIndex) => this.renderHeadingCell(cell, rowIndex, colIndex, false))))),
30029
30465
  this.renderSpacer('head', horizontalHeaders),
30030
- ])), hAsync("tbody", { key: '482757151e3bdc7f026a2e924c0c9e1d6ea6714a', class: "kol-table__body" }, dataField.map((row, rowIndex) => this.renderTableRow(row, rowIndex, true))), this.renderFoot()))));
30466
+ ])), hAsync("tbody", { key: '59d6cee5b36e8addebb2fd765cb6aa3f8408cfc2', class: "kol-table__body" }, dataField.map((row, rowIndex) => this.renderTableRow(row, rowIndex, true))), this.renderFoot()))));
30031
30467
  }
30032
30468
  get host() { return getElement(this); }
30033
30469
  static get watchers() { return {
@@ -30466,8 +30902,13 @@ class KolTextarea {
30466
30902
  return (_a = this.textareaRef) === null || _a === void 0 ? void 0 : _a.value;
30467
30903
  }
30468
30904
  async focus() {
30469
- var _a;
30470
- return Promise.resolve((_a = this.textareaRef) === null || _a === void 0 ? void 0 : _a.focus());
30905
+ return new Promise((resolve) => {
30906
+ requestAnimationFrame(() => {
30907
+ var _a;
30908
+ (_a = this.textareaRef) === null || _a === void 0 ? void 0 : _a.focus();
30909
+ resolve();
30910
+ });
30911
+ });
30471
30912
  }
30472
30913
  getFormFieldProps() {
30473
30914
  return {
@@ -30493,7 +30934,7 @@ class KolTextarea {
30493
30934
  } });
30494
30935
  }
30495
30936
  render() {
30496
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: '40cbd686b73f49706d5e6a56f21ca564cd945056' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: 'd8a3af9b6772dd62e16f30c3f818d45ccdd50d96', state: this.state }, hAsync(TextAreaStateWrapper, Object.assign({ key: '58e4c06295ec23090d1bc2201ba8c906e317ed0b' }, this.getTextAreaProps())))));
30937
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: 'e1a50de8e844b4b8de8363f40f0398e1464a65a8' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '6e6d22422052a45e54cb35054b02853c7ab5d055', state: this.state }, hAsync(TextAreaStateWrapper, Object.assign({ key: 'eadd23eef77edf6963b601582b936d190f455706' }, this.getTextAreaProps())))));
30497
30938
  }
30498
30939
  constructor(hostRef) {
30499
30940
  registerInstance(this, hostRef);
@@ -31575,7 +32016,6 @@ registerComponents([
31575
32016
  KolAlert,
31576
32017
  KolAlertWc,
31577
32018
  KolAvatar,
31578
- KolAvatarWc,
31579
32019
  KolBadge,
31580
32020
  KolBreadcrumb,
31581
32021
  KolButton,
@@ -31583,6 +32023,7 @@ registerComponents([
31583
32023
  KolButtonWc,
31584
32024
  KolCard,
31585
32025
  KolCardWc,
32026
+ KolClickButton,
31586
32027
  KolCombobox,
31587
32028
  KolDetails,
31588
32029
  KolDialog,
@@ -31618,6 +32059,7 @@ registerComponents([
31618
32059
  KolSelect,
31619
32060
  KolSelectWc,
31620
32061
  KolSingleSelect,
32062
+ KolSkeleton,
31621
32063
  KolSkipNav,
31622
32064
  KolSpin,
31623
32065
  KolSplitButton,
@@ -31657,7 +32099,7 @@ function prototypeKoliBri(name, cb) {
31657
32099
  },
31658
32100
  });
31659
32101
  }
31660
- catch (e) {
32102
+ catch (_a) {
31661
32103
  Log.debug(`KoliBri property ${name} is already bind.`);
31662
32104
  }
31663
32105
  }