@public-ui/hydrate 4.0.3 → 4.1.0-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.mjs CHANGED
@@ -144,7 +144,7 @@ function _mergeNamespaces(n, m) {
144
144
 
145
145
  const NAMESPACE = 'kolibri';
146
146
  const BUILD = /* kolibri */ { hydratedSelectorName: "hydrated", slotRelocation: true, state: true, updatable: true};
147
- const Env = /* kolibri */ {"kolibriVersion":"4.0.3"};
147
+ const Env = /* kolibri */ {"kolibriVersion":"4.1.0-rc.0"};
148
148
 
149
149
  function getDefaultExportFromCjs (x) {
150
150
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
@@ -520,7 +520,7 @@ function requireLoglevel () {
520
520
  var loglevelExports = requireLoglevel();
521
521
  var h$1 = /*@__PURE__*/getDefaultExportFromCjs(loglevelExports);
522
522
 
523
- 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.
523
+ 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.
524
524
 
525
525
  import { register } from 'adopted-style-sheets';
526
526
  import { defineCustomElements } from '...';
@@ -530,7 +530,7 @@ const $=()=>{const t=typeof process<"u"&&process.env?process.env:{},e=t.NODE_ENV
530
530
  .then(() => {
531
531
  // run your app or website
532
532
  })
533
- .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});};
533
+ .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});};
534
534
 
535
535
  var KeyEnum;
536
536
  (function (KeyEnum) {
@@ -640,7 +640,7 @@ const setRuntimeMode = (mode) => {
640
640
  throw new Error(`Invalid NODE_ENV value: ${mode}. Expected one of ${MODES.join(', ')}.`);
641
641
  }
642
642
  }
643
- catch (e) {
643
+ catch (_a) {
644
644
  runtimeMode = 'production';
645
645
  }
646
646
  };
@@ -651,7 +651,7 @@ const getInitialMode = () => {
651
651
  return nodeEnv;
652
652
  }
653
653
  }
654
- catch (e) {
654
+ catch (_a) {
655
655
  }
656
656
  return 'production';
657
657
  };
@@ -1670,7 +1670,7 @@ const watchJsonArrayString = (component, propName, itemValidation, value, arrayV
1670
1670
  try {
1671
1671
  value = parseJson(value);
1672
1672
  }
1673
- catch (e) {
1673
+ catch (_a) {
1674
1674
  }
1675
1675
  if (Array.isArray(value)) {
1676
1676
  const invalid = value.find((item) => !itemValidation(item));
@@ -1701,7 +1701,7 @@ const stringifyJson = (value) => {
1701
1701
  try {
1702
1702
  return JSON.stringify(value).replace(/"/g, "'");
1703
1703
  }
1704
- catch (error) {
1704
+ catch (_a) {
1705
1705
  Log.warn(['stringifyJson', value]);
1706
1706
  Log.error(`↑ The JSON could not be converted to a string. A stringifiable JSON is expected.`);
1707
1707
  throw new Error();
@@ -1713,12 +1713,12 @@ const parseJson = (value) => {
1713
1713
  try {
1714
1714
  return JSON.parse(value);
1715
1715
  }
1716
- catch (error) {
1716
+ catch (_a) {
1717
1717
  if (JSON_CHARS.test(value)) {
1718
1718
  try {
1719
1719
  return JSON.parse(value.replace(/'/g, '"'));
1720
1720
  }
1721
- catch (error) {
1721
+ catch (_b) {
1722
1722
  Log.warn(['parseJson', value]);
1723
1723
  Log.error(`↑ The JSON string could not be parsed. Make sure that single quotes in the text are escaped (&#8216;).`);
1724
1724
  }
@@ -1926,9 +1926,9 @@ KoliBriUtils.executionLock = false;
1926
1926
  KoliBriUtils.cache = new Map();
1927
1927
  class KoliBriDevHelper {
1928
1928
  }
1929
- KoliBriDevHelper.getCssStyle = y;
1930
- KoliBriDevHelper.patchTheme = k;
1931
- KoliBriDevHelper.patchThemeTag = Y;
1929
+ KoliBriDevHelper.getCssStyle = d;
1930
+ KoliBriDevHelper.patchTheme = K;
1931
+ KoliBriDevHelper.patchThemeTag = x;
1932
1932
  KoliBriDevHelper.querySelector = koliBriQuerySelector;
1933
1933
  KoliBriDevHelper.querySelectorAll = koliBriQuerySelectorAll;
1934
1934
  KoliBriDevHelper.stringifyJson = stringifyJson;
@@ -2088,9 +2088,9 @@ const validateCollapsible = (component, value) => {
2088
2088
  watchBoolean(component, '_collapsible', value);
2089
2089
  };
2090
2090
 
2091
- const HEX_REGEX = /^#((\d|[a-f]){8}|(\d|[a-f]){6}|(\d|[a-f]){3,4})$/i;
2092
- function isHexString(value) {
2093
- return HEX_REGEX.test(value);
2091
+ const HEX_REGEX$1 = /^#((\d|[a-f]){8}|(\d|[a-f]){6}|(\d|[a-f]){3,4})$/i;
2092
+ function isHexString$1(value) {
2093
+ return HEX_REGEX$1.test(value);
2094
2094
  }
2095
2095
  function isColorObjectString(value) {
2096
2096
  if (value.startsWith('{')) {
@@ -2099,7 +2099,7 @@ function isColorObjectString(value) {
2099
2099
  if (isValidColorPair(parsed))
2100
2100
  return { type: 'ColorPair', value: parsed };
2101
2101
  }
2102
- catch (error) {
2102
+ catch (_a) {
2103
2103
  return { type: null, value: null };
2104
2104
  }
2105
2105
  }
@@ -2108,7 +2108,7 @@ function isColorObjectString(value) {
2108
2108
  function typeOfColor(value) {
2109
2109
  if (value) {
2110
2110
  if (typeof value === 'string') {
2111
- if (isHexString(value))
2111
+ if (isHexString$1(value))
2112
2112
  return { type: 'string', valid: true, value: value };
2113
2113
  else {
2114
2114
  const colorObject = isColorObjectString(value);
@@ -2125,14 +2125,7 @@ function typeOfColor(value) {
2125
2125
  return { type: null, valid: false, value: '' };
2126
2126
  }
2127
2127
  function isValidColorPair(value) {
2128
- return !!(typeof value === 'object' &&
2129
- value &&
2130
- typeof value.backgroundColor === 'string' &&
2131
- (typeof value.foregroundColor === 'string' ||
2132
- (value.foregroundColor &&
2133
- typeof value.foregroundColor.primary === 'string' &&
2134
- typeof value.foregroundColor.secondary === 'string' &&
2135
- typeof value.foregroundColor.neutral === 'string')));
2128
+ return !!(typeof value === 'object' && value && typeof value.backgroundColor === 'string' && typeof value.foregroundColor === 'string');
2136
2129
  }
2137
2130
  function validatorFunction(value) {
2138
2131
  const valueType = typeOfColor(value);
@@ -2148,7 +2141,6 @@ const validateColor = (component, value, options) => {
2148
2141
  watchValidator(component, '_color', validatorFunction, new Set(['rgb in hex', 'ColorPair']), value, options);
2149
2142
  };
2150
2143
  const handleColorChange = (value) => {
2151
- var _a;
2152
2144
  let colorContrast;
2153
2145
  const valueType = typeOfColor(value);
2154
2146
  switch (valueType.type) {
@@ -2160,8 +2152,6 @@ const handleColorChange = (value) => {
2160
2152
  let foreground = '';
2161
2153
  if (typeof asColorPair.foregroundColor === 'string')
2162
2154
  foreground = asColorPair.foregroundColor;
2163
- else if ((_a = asColorPair.foregroundColor) === null || _a === void 0 ? void 0 : _a.primary)
2164
- foreground = asColorPair.foregroundColor.primary;
2165
2155
  if (!foreground || typeof foreground !== 'string')
2166
2156
  foreground = '#fff';
2167
2157
  colorContrast = createContrastColorPair({
@@ -2297,7 +2287,7 @@ const validateIcons = (component, value, options = {}) => {
2297
2287
  try {
2298
2288
  value = parseJson(value);
2299
2289
  }
2300
- catch (e) {
2290
+ catch (_b) {
2301
2291
  }
2302
2292
  watchValidator(component, '_icons', (value) => {
2303
2293
  const valueIsEmptyObject = typeof value === 'object' && value !== null && Object.keys(value).length === 0;
@@ -2433,7 +2423,7 @@ const validateMsg = (component, value) => {
2433
2423
  try {
2434
2424
  value = parseJson(value);
2435
2425
  }
2436
- catch (e) {
2426
+ catch (_a) {
2437
2427
  }
2438
2428
  watchValidator(component, `_msg`, (value) => {
2439
2429
  if (value === undefined) {
@@ -2458,7 +2448,7 @@ function normalizeMsg(msg) {
2458
2448
  try {
2459
2449
  return parseJson(msg);
2460
2450
  }
2461
- catch (e) {
2451
+ catch (_a) {
2462
2452
  return { _description: msg, _type: 'error' };
2463
2453
  }
2464
2454
  }
@@ -2605,7 +2595,7 @@ const validateTableData = (component, value, setStateHooks) => {
2605
2595
  try {
2606
2596
  value = parseJson(value);
2607
2597
  }
2608
- catch (e) {
2598
+ catch (_a) {
2609
2599
  }
2610
2600
  if (Array.isArray(value) && value.every((data) => typeof data === 'object' && data !== null)) {
2611
2601
  setState(component, '_data', value, setStateHooks);
@@ -2623,7 +2613,7 @@ const validateTableDataFoot = (component, value, setStateHooks) => {
2623
2613
  try {
2624
2614
  value = parseJson(value);
2625
2615
  }
2626
- catch (e) {
2616
+ catch (_a) {
2627
2617
  }
2628
2618
  if (Array.isArray(value) && value.every((data) => typeof data === 'object' && data !== null)) {
2629
2619
  setState(component, '_dataFoot', value, setStateHooks);
@@ -2659,7 +2649,7 @@ const validateTableSelection = (component, value) => {
2659
2649
  try {
2660
2650
  return parseJson(value);
2661
2651
  }
2662
- catch (e) {
2652
+ catch (_a) {
2663
2653
  return undefined;
2664
2654
  }
2665
2655
  };
@@ -2681,7 +2671,7 @@ const validateToolbarItems = (component, value) => {
2681
2671
  try {
2682
2672
  value = parseJson(value);
2683
2673
  }
2684
- catch (e) {
2674
+ catch (_a) {
2685
2675
  }
2686
2676
  if (Array.isArray(value) && value.every((items) => typeof items === 'object' && items !== null)) {
2687
2677
  setState(component, '_items', value);
@@ -2771,10 +2761,10 @@ var appGlobalScript = () => {
2771
2761
  setMode((elm) => {
2772
2762
  try {
2773
2763
  if (elm.shadowRoot instanceof ShadowRoot) {
2774
- ne(elm, b(elm));
2764
+ he(elm, w(elm));
2775
2765
  }
2776
2766
  }
2777
- catch (error) {
2767
+ catch (_a) {
2778
2768
  }
2779
2769
  return 'default';
2780
2770
  });
@@ -4248,6 +4238,21 @@ var getElement = (ref) => {
4248
4238
  var _a;
4249
4239
  return (_a = getHostRef(ref)) == null ? void 0 : _a.$hostElement$ ;
4250
4240
  };
4241
+
4242
+ // src/runtime/event-emitter.ts
4243
+ var createEvent = (ref, name, flags) => {
4244
+ const elm = getElement(ref);
4245
+ return {
4246
+ emit: (detail) => {
4247
+ return emitEvent(elm, name, {
4248
+ bubbles: true,
4249
+ composed: true,
4250
+ cancelable: true,
4251
+ detail
4252
+ });
4253
+ }
4254
+ };
4255
+ };
4251
4256
  var emitEvent = (elm, name, opts) => {
4252
4257
  const ev = plt.ce(name, opts);
4253
4258
  elm.dispatchEvent(ev);
@@ -5383,7 +5388,7 @@ var Fragment = (_, children) => children;
5383
5388
  var addHostEventListeners = (elm, hostRef, listeners, attachParentListeners) => {
5384
5389
  if (listeners && win.document) {
5385
5390
  listeners.map(([flags, name, method]) => {
5386
- const target = elm;
5391
+ const target = getHostListenerTarget(win.document, elm, flags) ;
5387
5392
  const handler = hostListenerProxy(hostRef, method);
5388
5393
  const opts = hostListenerOpts(flags);
5389
5394
  plt.ael(target, name, handler, opts);
@@ -5405,6 +5410,12 @@ var hostListenerProxy = (hostRef, methodName) => (ev) => {
5405
5410
  consoleError(e, hostRef.$hostElement$);
5406
5411
  }
5407
5412
  };
5413
+ var getHostListenerTarget = (doc, elm, flags) => {
5414
+ if (flags & 8 /* TargetWindow */) {
5415
+ return win;
5416
+ }
5417
+ return elm;
5418
+ };
5408
5419
  var hostListenerOpts = (flags) => (flags & 2 /* Capture */) !== 0;
5409
5420
 
5410
5421
  // src/runtime/vdom/vdom-annotations.ts
@@ -6037,7 +6048,6 @@ var needsScopedSSR = () => scopedSSR;
6037
6048
  var scopedSSR = false;
6038
6049
 
6039
6050
  let KolAlertWcTag = 'kol-alert-wc';
6040
- let KolAvatarWcTag = 'kol-avatar-wc';
6041
6051
  let KolBadgeTag = 'kol-badge';
6042
6052
  let KolButtonTag = 'kol-button';
6043
6053
  let KolButtonWcTag = 'kol-button-wc';
@@ -6233,7 +6243,7 @@ const initMeta = () => {
6233
6243
  }
6234
6244
  }
6235
6245
  }
6236
- catch (error) {
6246
+ catch (_a) {
6237
6247
  }
6238
6248
  };
6239
6249
  const getKoliBri$1 = () => {
@@ -6757,9 +6767,11 @@ var a = /*@__PURE__*/getDefaultExportFromCjs(easyBemExports);
6757
6767
 
6758
6768
  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}
6759
6769
 
6770
+ const bem$2 = c();
6771
+
6760
6772
  const bem$1 = c();
6761
- const BEM_CLASS_ALERT__CLOSER = bem$1('kol-alert', 'closer');
6762
- const BEM_CLASS_ALERT__CONTENT = bem$1('kol-alert', 'content');
6773
+ bem$1('kol-alert', 'closer');
6774
+ bem$1('kol-alert', 'content');
6763
6775
  const BEM_CLASS_ALERT__ICON = bem$1('kol-alert', 'icon');
6764
6776
 
6765
6777
  const translateError = translate('kol-error');
@@ -6785,7 +6797,9 @@ const AlertIcon = ({ type, label }) => {
6785
6797
  }
6786
6798
  };
6787
6799
 
6788
- const translateCloseAlert = translate('kol-close-alert');
6800
+ const alertBem = bem$2.forBlock('kol-alert');
6801
+ const BEM_CLASS_ALERT__CLOSER = alertBem('closer');
6802
+ const BEM_CLASS_ALERT__CONTENT = alertBem('content');
6789
6803
  const vibrateOnError = () => {
6790
6804
  if (typeof navigator === 'undefined' || typeof navigator.vibrate !== 'function') {
6791
6805
  return;
@@ -6806,18 +6820,19 @@ const vibrateOnError = () => {
6806
6820
  };
6807
6821
  const KolAlertFc = (props, children) => {
6808
6822
  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"]);
6823
+ const translateCloseAlert = translate('kol-close-alert');
6809
6824
  if (alert) {
6810
6825
  vibrateOnError();
6811
6826
  setTimeout(() => {
6812
6827
  onAlertTimeout === null || onAlertTimeout === void 0 ? void 0 : onAlertTimeout();
6813
6828
  }, 10000);
6814
6829
  }
6815
- const BEM_CLASS_ROOT = bem$1('kol-alert', {
6830
+ const BEM_CLASS_ROOT = alertBem({
6816
6831
  hasCloser: !!hasCloser,
6817
6832
  [`type-${type}`]: true,
6818
6833
  [`variant-${variant}`]: true,
6819
6834
  });
6820
- const BEM_CLASS__HEADING = bem$1('kol-alert', 'heading', {
6835
+ const BEM_CLASS__HEADING = alertBem('heading', {
6821
6836
  [`h${level}`]: true,
6822
6837
  });
6823
6838
  const rootProps = Object.assign({ class: clsx(classNames, BEM_CLASS_ROOT) }, other);
@@ -6928,109 +6943,215 @@ class KolAlertWc {
6928
6943
  }; }
6929
6944
  }
6930
6945
 
6931
- 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}";
6946
+ const BEM_BLOCK_AVATAR = 'kol-avatar';
6947
+ const BEM_CLASS_AVATAR__IMAGE = bem$2(BEM_BLOCK_AVATAR, 'image');
6948
+ const BEM_CLASS_AVATAR__INITIALS = bem$2(BEM_BLOCK_AVATAR, 'initials');
6949
+ const AvatarFC = (props) => {
6950
+ const { color, initials, label, src } = props;
6951
+ return (hAsync("div", { "aria-label": translate('kol-avatar-alt', { placeholders: { name: label } }), class: "kol-avatar", role: "img", style: {
6952
+ backgroundColor: color.backgroundColor,
6953
+ color: color.foregroundColor,
6954
+ } }, 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))));
6955
+ };
6932
6956
 
6933
- class KolAvatar {
6934
- constructor(hostRef) {
6935
- registerInstance(this, hostRef);
6936
- this._color = '#d3d3d3';
6957
+ function createPropDefinition(normalize, validate) {
6958
+ return {
6959
+ normalize,
6960
+ validate,
6961
+ };
6962
+ }
6963
+ function withValidPropValue(propDef, value, callback) {
6964
+ try {
6965
+ const normalized = propDef.normalize(value);
6966
+ if (propDef.validate(normalized)) {
6967
+ callback(normalized);
6968
+ }
6937
6969
  }
6938
- render() {
6939
- return hAsync(KolAvatarWcTag, { key: 'b50d593f2fcc07fb3a1c8a92786df6ddcbc917cf', _color: this._color, _src: this._src, _label: this._label });
6970
+ catch (e) {
6971
+ Log.debug(e);
6940
6972
  }
6941
- static get style() { return {
6942
- default: defaultStyleCss$K
6943
- }; }
6944
- static get cmpMeta() { return {
6945
- "$flags$": 297,
6946
- "$tagName$": "kol-avatar",
6947
- "$members$": {
6948
- "_color": [1],
6949
- "_src": [1],
6950
- "_label": [1]
6951
- },
6952
- "$listeners$": undefined,
6953
- "$lazyBundleId$": "-",
6954
- "$attrsToReflect$": []
6955
- }; }
6956
6973
  }
6957
6974
 
6975
+ const HEX_REGEX = /^#((\d|[a-f]){8}|(\d|[a-f]){6}|(\d|[a-f]){3,4})$/i;
6976
+ function isHexString(value) {
6977
+ return HEX_REGEX.test(value);
6978
+ }
6979
+ function normalizer(value) {
6980
+ if (typeof value === 'string' && isHexString(value)) {
6981
+ const colors = createContrastColorPair(value);
6982
+ return {
6983
+ backgroundColor: colors.background,
6984
+ foregroundColor: colors.foreground,
6985
+ };
6986
+ }
6987
+ else if (typeof value === 'object' && value) {
6988
+ const colorPair = value;
6989
+ if (typeof colorPair.backgroundColor === 'string' &&
6990
+ typeof colorPair.foregroundColor === 'string' &&
6991
+ isHexString(colorPair.backgroundColor) &&
6992
+ isHexString(colorPair.foregroundColor)) {
6993
+ const colors = createContrastColorPair({
6994
+ background: colorPair.backgroundColor,
6995
+ foreground: colorPair.foregroundColor,
6996
+ });
6997
+ return {
6998
+ backgroundColor: colors.background,
6999
+ foregroundColor: colors.foreground,
7000
+ };
7001
+ }
7002
+ }
7003
+ throw new Error(`Invalid color ${value}`);
7004
+ }
7005
+ function validator(value) {
7006
+ return isHexString(value.foregroundColor) && isHexString(value.backgroundColor);
7007
+ }
7008
+ const colorProp = createPropDefinition(normalizer, validator);
7009
+
7010
+ function normalizeString(value) {
7011
+ if (typeof value === 'string') {
7012
+ return value;
7013
+ }
7014
+ if (typeof value === 'number' || typeof value === 'boolean' || typeof value === 'bigint') {
7015
+ return String(value);
7016
+ }
7017
+ throw new Error(`Invalid string: ${value}`);
7018
+ }
7019
+ function normalizeInteger(value) {
7020
+ if (typeof value === 'number') {
7021
+ return Number.isInteger(value) ? value : Math.round(value);
7022
+ }
7023
+ if (typeof value === 'string') {
7024
+ const parsed = parseInt(value, 10);
7025
+ if (!isNaN(parsed)) {
7026
+ return parsed;
7027
+ }
7028
+ }
7029
+ throw new Error(`Invalid integer: ${value}`);
7030
+ }
7031
+
7032
+ const countProp = createPropDefinition(normalizeInteger, (v) => v >= 0);
7033
+
6958
7034
  const formatNameAsInitial = (name) => {
6959
7035
  if (name.length === 0) {
6960
7036
  return '';
6961
7037
  }
6962
7038
  return name[0].toUpperCase();
6963
7039
  };
6964
- const formatLabelAsInitials = (label) => {
6965
- const names = label.split(/\s+/);
7040
+ const normalizeInitials = (value) => {
7041
+ if (typeof value !== 'string') {
7042
+ throw new Error(`Invalid initials value: ${JSON.stringify(value)}`);
7043
+ }
7044
+ const names = value.trim().split(/\s+/);
6966
7045
  const first = names[0];
6967
7046
  const last = names[names.length - 1];
6968
7047
  if (names.length >= 2 && first && last) {
6969
7048
  return `${formatNameAsInitial(first)}${formatNameAsInitial(last)}`;
6970
7049
  }
6971
- return formatNameAsInitial(label);
7050
+ return formatNameAsInitial(value);
6972
7051
  };
7052
+ const initialsProp = createPropDefinition(normalizeInitials, (v) => v.length > 0);
6973
7053
 
6974
- class KolAvatarWc {
6975
- constructor(hostRef) {
6976
- registerInstance(this, hostRef);
6977
- this.bgColorStr = '#d3d3d3';
6978
- this.colorStr = '#000';
6979
- this.handleColorChange = (value) => {
6980
- const colorPair = handleColorChange(value);
6981
- this.bgColorStr = colorPair.backgroundColor;
6982
- this.colorStr = colorPair.foregroundColor;
6983
- };
6984
- this._color = '#d3d3d3';
6985
- this.state = {
6986
- _src: '',
6987
- _label: '',
6988
- _color: {
6989
- backgroundColor: '#d3d3d3',
6990
- foregroundColor: '#000',
6991
- },
6992
- };
7054
+ const labelProp = createPropDefinition(normalizeString, (v) => v.length >= 2 && v.length <= 80);
7055
+
7056
+ const nameProp = createPropDefinition(normalizeString, () => true);
7057
+
7058
+ const srcProp = createPropDefinition(normalizeString, () => true);
7059
+
7060
+ class BaseController {
7061
+ constructor(component, props) {
7062
+ this.component = component;
7063
+ this.props = props;
6993
7064
  }
6994
- render() {
6995
- return (hAsync("div", { key: '04d0b5653648f532391c0b8f611ef3bd7d4e8bbf', "aria-label": translate('kol-avatar-alt', { placeholders: { name: this.state._label } }), class: "kol-avatar", role: "img", style: {
6996
- backgroundColor: this.bgColorStr,
6997
- color: this.colorStr,
6998
- } }, 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())))));
7065
+ setProp(key, value) {
7066
+ this.props[key] = value;
6999
7067
  }
7000
- validateColor(value) {
7001
- validateColor(this, value, {
7002
- defaultValue: '#d3d3d3',
7003
- hooks: {
7004
- beforePatch: this.handleColorChange,
7005
- },
7068
+ getProps() {
7069
+ return this.props;
7070
+ }
7071
+ setState(key, value) {
7072
+ this.component[key] = value;
7073
+ }
7074
+ }
7075
+
7076
+ class AvatarController extends BaseController {
7077
+ constructor(states) {
7078
+ super(states, {
7079
+ color: { backgroundColor: '#d3d3d3', foregroundColor: '#3f3f3f' },
7080
+ label: '',
7081
+ src: '',
7006
7082
  });
7007
7083
  }
7008
- validateSrc(value) {
7009
- validateImageSource(this, value);
7084
+ componentWillLoad(props) {
7085
+ const { color, label, src } = props;
7086
+ this.watchColor(color);
7087
+ this.watchLabel(label);
7088
+ this.watchSrc(src);
7010
7089
  }
7011
- validateLabel(value) {
7012
- validateLabel(this, value, {
7013
- required: true,
7090
+ watchColor(value) {
7091
+ withValidPropValue(colorProp, value, (v) => {
7092
+ this.setProp('color', v);
7093
+ });
7094
+ }
7095
+ watchLabel(value) {
7096
+ withValidPropValue(labelProp, value, (v) => {
7097
+ this.setProp('label', v);
7098
+ });
7099
+ withValidPropValue(initialsProp, value, (v) => {
7100
+ this.setState('initials', v);
7014
7101
  });
7015
7102
  }
7103
+ watchSrc(value) {
7104
+ withValidPropValue(srcProp, value, (v) => {
7105
+ this.setProp('src', v);
7106
+ });
7107
+ }
7108
+ }
7109
+
7110
+ 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}";
7111
+
7112
+ class KolAvatar {
7113
+ constructor(hostRef) {
7114
+ registerInstance(this, hostRef);
7115
+ this.ctrl = new AvatarController(this);
7116
+ this.initials = '';
7117
+ }
7118
+ watchColor(value) {
7119
+ this.ctrl.watchColor(value);
7120
+ }
7121
+ watchLabel(value) {
7122
+ this.ctrl.watchLabel(value);
7123
+ }
7124
+ watchSrc(value) {
7125
+ this.ctrl.watchSrc(value);
7126
+ }
7016
7127
  componentWillLoad() {
7017
- this.validateColor(this._color);
7018
- this.validateSrc(this._src);
7019
- this.validateLabel(this._label);
7128
+ this.ctrl.componentWillLoad({
7129
+ color: this._color,
7130
+ label: this._label,
7131
+ src: this._src,
7132
+ });
7133
+ }
7134
+ render() {
7135
+ const { color, label, src } = this.ctrl.getProps();
7136
+ const { initials } = this;
7137
+ return (hAsync(Host, { key: '356e548cb9a73c0fd50b71c01fc8862d08240a96' }, hAsync(AvatarFC, { key: 'c69025eb44ed63b2fd4e5f1e8cd2bace9aa055ac', color: color, label: label, src: src, initials: initials })));
7020
7138
  }
7021
7139
  static get watchers() { return {
7022
- "_color": ["validateColor"],
7023
- "_src": ["validateSrc"],
7024
- "_label": ["validateLabel"]
7140
+ "_color": ["watchColor"],
7141
+ "_label": ["watchLabel"],
7142
+ "_src": ["watchSrc"]
7143
+ }; }
7144
+ static get style() { return {
7145
+ default: defaultStyleCss$K
7025
7146
  }; }
7026
7147
  static get cmpMeta() { return {
7027
- "$flags$": 256,
7028
- "$tagName$": "kol-avatar-wc",
7148
+ "$flags$": 297,
7149
+ "$tagName$": "kol-avatar",
7029
7150
  "$members$": {
7030
7151
  "_color": [1],
7031
- "_src": [1],
7032
7152
  "_label": [1],
7033
- "state": [32]
7153
+ "_src": [1],
7154
+ "initials": [32]
7034
7155
  },
7035
7156
  "$listeners$": undefined,
7036
7157
  "$lazyBundleId$": "-",
@@ -15241,7 +15362,14 @@ function linkify (state, silent) {
15241
15362
  if (url.length <= proto.length) return false
15242
15363
 
15243
15364
  // disallow '*' at the end of the link (conflicts with emphasis)
15244
- url = url.replace(/\*+$/, '');
15365
+ // do manual backsearch to avoid perf issues with regex /\*+$/ on "****...****a".
15366
+ let urlEnd = url.length;
15367
+ while (urlEnd > 0 && url.charCodeAt(urlEnd - 1) === 0x2A/* * */) {
15368
+ urlEnd--;
15369
+ }
15370
+ if (urlEnd !== url.length) {
15371
+ url = url.slice(0, urlEnd);
15372
+ }
15245
15373
 
15246
15374
  const fullUrl = state.md.normalizeLink(url);
15247
15375
  if (!state.md.validateLink(fullUrl)) return false
@@ -18638,7 +18766,7 @@ class KolBadge {
18638
18766
  try {
18639
18767
  value = parseJson(value);
18640
18768
  }
18641
- catch (e) {
18769
+ catch (_a) {
18642
18770
  }
18643
18771
  setState(this, '_smartButton', value);
18644
18772
  });
@@ -18892,7 +19020,7 @@ const searchFormElement = (el) => {
18892
19020
  el = null;
18893
19021
  }
18894
19022
  }
18895
- catch (error) {
19023
+ catch (_a) {
18896
19024
  }
18897
19025
  if (getExperimentalMode()) {
18898
19026
  Log.debug(el);
@@ -19052,7 +19180,7 @@ class AssociatedInputController {
19052
19180
  throw new Error(`Invalid value type: ${typeof value}`);
19053
19181
  }
19054
19182
  }
19055
- catch (e) {
19183
+ catch (_a) {
19056
19184
  element === null || element === void 0 ? void 0 : element.removeAttribute(qualifiedName);
19057
19185
  }
19058
19186
  }
@@ -19135,8 +19263,13 @@ class AssociatedInputController {
19135
19263
 
19136
19264
  class KolButtonWc {
19137
19265
  async focus() {
19138
- var _a;
19139
- return Promise.resolve((_a = this.buttonRef) === null || _a === void 0 ? void 0 : _a.focus());
19266
+ return new Promise((resolve) => {
19267
+ requestAnimationFrame(() => {
19268
+ var _a;
19269
+ (_a = this.buttonRef) === null || _a === void 0 ? void 0 : _a.focus();
19270
+ resolve();
19271
+ });
19272
+ });
19140
19273
  }
19141
19274
  render() {
19142
19275
  var _a;
@@ -19145,14 +19278,14 @@ class KolButtonWc {
19145
19278
  const badgeText = this.state._accessKey || this.state._shortKey;
19146
19279
  const isDisabled = this.state._disabled === true;
19147
19280
  const hideLabel = this.state._hideLabel === true;
19148
- 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', {
19281
+ 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', {
19149
19282
  'kol-button--disabled': isDisabled,
19150
19283
  [`kol-button--${this.state._variant}`]: this.state._variant !== 'custom',
19151
19284
  'kol-button--inline': this.state._inline === true,
19152
19285
  'kol-button--standalone': this.state._inline === false,
19153
19286
  'kol-button--hide-label': hideLabel,
19154
19287
  [this.state._customClass]: this.state._variant === 'custom' && typeof this.state._customClass === 'string' && this.state._customClass.length > 0,
19155
- }), 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 : '' }))));
19288
+ }), 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 : '' }))));
19156
19289
  }
19157
19290
  constructor(hostRef) {
19158
19291
  registerInstance(this, hostRef);
@@ -19418,7 +19551,7 @@ class KolCardWc {
19418
19551
  this.validateOnValue = (value) => typeof value === 'object' && value !== null && typeof value.onClose === 'function';
19419
19552
  }
19420
19553
  render() {
19421
- 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: {
19554
+ 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: {
19422
19555
  left: {
19423
19556
  icon: 'kolicon-cross',
19424
19557
  },
@@ -19471,6 +19604,74 @@ class KolCardWc {
19471
19604
  }; }
19472
19605
  }
19473
19606
 
19607
+ const clickButtonBem = bem$2.forBlock('kol-click-button');
19608
+ const BEM_CLASS_CLICK_BUTTON = clickButtonBem();
19609
+ const BEM_CLASS_CLICK_BUTTON__LABEL = clickButtonBem('label');
19610
+ 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)));
19611
+
19612
+ class ClickButtonController extends BaseController {
19613
+ constructor(states = {}) {
19614
+ super(states, {
19615
+ label: '',
19616
+ });
19617
+ this.handleClick = () => {
19618
+ console.log(this, this.buttonRef, 'button clicked');
19619
+ };
19620
+ this.setButtonRef = (element) => {
19621
+ this.buttonRef = element;
19622
+ };
19623
+ }
19624
+ componentWillLoad(props) {
19625
+ const { label } = props;
19626
+ this.watchLabel(label);
19627
+ }
19628
+ watchLabel(value) {
19629
+ withValidPropValue(labelProp, value, (v) => {
19630
+ this.setProp('label', v);
19631
+ });
19632
+ }
19633
+ focus() {
19634
+ var _a;
19635
+ (_a = this.buttonRef) === null || _a === void 0 ? void 0 : _a.focus();
19636
+ }
19637
+ }
19638
+
19639
+ class KolClickButton {
19640
+ constructor(hostRef) {
19641
+ registerInstance(this, hostRef);
19642
+ this.ctrl = new ClickButtonController();
19643
+ }
19644
+ watchLabel(value) {
19645
+ this.ctrl.watchLabel(value);
19646
+ }
19647
+ async focus() {
19648
+ return Promise.resolve(this.ctrl.focus());
19649
+ }
19650
+ componentWillLoad() {
19651
+ this.ctrl.componentWillLoad({
19652
+ label: this._label,
19653
+ });
19654
+ }
19655
+ render() {
19656
+ const { label } = this.ctrl.getProps();
19657
+ return (hAsync(Host, { key: 'ad1573dd9fb97876e8663c51e9a8251358a7b642' }, hAsync(ClickButtonFC, { key: '3710ca78ad2789f72e41c0628db0aa5942f273d6', label: label, refButton: this.ctrl.setButtonRef, handleClick: this.ctrl.handleClick })));
19658
+ }
19659
+ static get watchers() { return {
19660
+ "_label": ["watchLabel"]
19661
+ }; }
19662
+ static get cmpMeta() { return {
19663
+ "$flags$": 265,
19664
+ "$tagName$": "kol-click-button",
19665
+ "$members$": {
19666
+ "_label": [1],
19667
+ "focus": [64]
19668
+ },
19669
+ "$listeners$": undefined,
19670
+ "$lazyBundleId$": "-",
19671
+ "$attrsToReflect$": []
19672
+ }; }
19673
+ }
19674
+
19474
19675
  const getRenderStates = (state) => {
19475
19676
  const msg = state._msg;
19476
19677
  const description = typeof msg === 'string' ? msg : msg === null || msg === void 0 ? void 0 : msg._description;
@@ -19784,7 +19985,7 @@ class InputController extends ControlledInputController {
19784
19985
  try {
19785
19986
  value = parseJson(value);
19786
19987
  }
19787
- catch (e) {
19988
+ catch (_a) {
19788
19989
  }
19789
19990
  setState(this.component, '_smartButton', value);
19790
19991
  });
@@ -19952,8 +20153,13 @@ class KolCombobox {
19952
20153
  return this.state._value;
19953
20154
  }
19954
20155
  async focus() {
19955
- var _a;
19956
- return Promise.resolve((_a = this.refInput) === null || _a === void 0 ? void 0 : _a.focus());
20156
+ return new Promise((resolve) => {
20157
+ requestAnimationFrame(() => {
20158
+ var _a;
20159
+ (_a = this.refInput) === null || _a === void 0 ? void 0 : _a.focus();
20160
+ resolve();
20161
+ });
20162
+ });
19957
20163
  }
19958
20164
  selectOption(option) {
19959
20165
  var _a;
@@ -20067,15 +20273,13 @@ class KolCombobox {
20067
20273
  }
20068
20274
  render() {
20069
20275
  const isDisabled = this.state._disabled === true;
20070
- 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', {
20071
- 'kol-combobox__delete--disabled': isDisabled,
20072
- }), _on: {
20276
+ 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: {
20073
20277
  onClick: () => {
20074
20278
  this.clearSelection();
20075
20279
  },
20076
- } })), hAsync(KolIconTag, { key: '5162eb09c62d31099e4159cdae84b5b0f47dfab6', _icons: "kolicon-chevron-down", _label: "", class: clsx('kol-custom-suggestions-toggle', {
20280
+ } })), hAsync(KolIconTag, { key: '936e782f5dfa6cd19abacde645c36a49cdeea47e', _icons: "kolicon-chevron-down", _label: "", class: clsx('kol-custom-suggestions-toggle', {
20077
20281
  'kol-custom-suggestions-toggle--disabled': isDisabled,
20078
- }), 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) &&
20282
+ }), 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) &&
20079
20283
  this._filteredSuggestions.length > 0 &&
20080
20284
  this._filteredSuggestions.map((option, index) => (hAsync(CustomSuggestionsOptionFc, { disabled: false, index: index, option: option, searchTerm: this.state._value, ref: (el) => {
20081
20285
  if (el)
@@ -20990,7 +21194,7 @@ const bem = c();
20990
21194
  const BEM_CLASS_ICON = bem('kol-icon');
20991
21195
  const BEM_CLASS_ICON__ICON = bem('kol-icon', 'icon');
20992
21196
 
20993
- 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}";
21197
+ const defaultStyleCss$y = "/* forward the rem function */\n@font-face {\n font-family: \"kolicons\";\n src: url(\"kolicons.eot?t=1772024234377\"); /* IE9*/\n src: url(\"kolicons.eot?t=1772024234377#iefix\") format(\"embedded-opentype\"), url(\"kolicons.woff2?t=1772024234377\") format(\"woff2\"), url(\"kolicons.woff?t=1772024234377\") format(\"woff\"), url(\"kolicons.ttf?t=1772024234377\") format(\"truetype\"), url(\"kolicons.svg?t=1772024234377#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}";
20994
21198
 
20995
21199
  class KolIcon {
20996
21200
  render() {
@@ -21367,8 +21571,13 @@ class KolInputCheckbox {
21367
21571
  return this.getModelValue();
21368
21572
  }
21369
21573
  async focus() {
21370
- var _a;
21371
- return Promise.resolve((_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus());
21574
+ return new Promise((resolve) => {
21575
+ requestAnimationFrame(() => {
21576
+ var _a;
21577
+ (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus();
21578
+ resolve();
21579
+ });
21580
+ });
21372
21581
  }
21373
21582
  getFormFieldProps() {
21374
21583
  return {
@@ -21417,7 +21626,7 @@ class KolInputCheckbox {
21417
21626
  return this.state._icons.unchecked;
21418
21627
  }
21419
21628
  render() {
21420
- 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())))));
21629
+ 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())))));
21421
21630
  }
21422
21631
  constructor(hostRef) {
21423
21632
  registerInstance(this, hostRef);
@@ -21625,8 +21834,13 @@ class KolInputColor {
21625
21834
  return (_a = this.refInputText) === null || _a === void 0 ? void 0 : _a.value;
21626
21835
  }
21627
21836
  async focus() {
21628
- var _a;
21629
- return Promise.resolve((_a = this.refInputText) === null || _a === void 0 ? void 0 : _a.focus());
21837
+ return new Promise((resolve) => {
21838
+ requestAnimationFrame(() => {
21839
+ var _a;
21840
+ (_a = this.refInputText) === null || _a === void 0 ? void 0 : _a.focus();
21841
+ resolve();
21842
+ });
21843
+ });
21630
21844
  }
21631
21845
  get hasSuggestions() {
21632
21846
  return Array.isArray(this.state._suggestions) && this.state._suggestions.length > 0;
@@ -21649,7 +21863,7 @@ class KolInputColor {
21649
21863
  return Object.assign(Object.assign({ state: Object.assign(Object.assign({}, this.state), { _suggestions: [] }) }, this.controller.onFacade), { onBlur: this.onBlur, onFocus: this.onFocus });
21650
21864
  }
21651
21865
  render() {
21652
- 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()))))));
21866
+ 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()))))));
21653
21867
  }
21654
21868
  constructor(hostRef) {
21655
21869
  registerInstance(this, hostRef);
@@ -21978,8 +22192,13 @@ class KolInputDate {
21978
22192
  return this.inputRef && this.remapValue((_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.value);
21979
22193
  }
21980
22194
  async focus() {
21981
- var _a;
21982
- return Promise.resolve((_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus());
22195
+ return new Promise((resolve) => {
22196
+ requestAnimationFrame(() => {
22197
+ var _a;
22198
+ (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus();
22199
+ resolve();
22200
+ });
22201
+ });
21983
22202
  }
21984
22203
  async reset() {
21985
22204
  this.state = Object.assign(Object.assign({}, this.state), { _value: null });
@@ -22019,7 +22238,7 @@ class KolInputDate {
22019
22238
  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 });
22020
22239
  }
22021
22240
  render() {
22022
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: '0796ce3b22bda0f3416cb29d0a3170cca7c10fd1' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '6702162055e1337792e61069d1eceff3e41ecfcd', state: this.state }, hAsync(InputStateWrapper, Object.assign({ key: 'f7e3fc1329d316eea6f07450236c2b06f5cbd5e0' }, this.getInputProps())))));
22241
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: 'e30da09025106eec1e068d7c312c17dff2ebfba8' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: 'fe3663fd1ae701bbc67c326eb89bde418d59da64', state: this.state }, hAsync(InputStateWrapper, Object.assign({ key: '9710cfe488dc01075270dd81b3882464157d178d' }, this.getInputProps())))));
22023
22242
  }
22024
22243
  constructor(hostRef) {
22025
22244
  registerInstance(this, hostRef);
@@ -22366,8 +22585,13 @@ class KolInputEmail {
22366
22585
  return (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.value;
22367
22586
  }
22368
22587
  async focus() {
22369
- var _a;
22370
- return Promise.resolve((_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus());
22588
+ return new Promise((resolve) => {
22589
+ requestAnimationFrame(() => {
22590
+ var _a;
22591
+ (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus();
22592
+ resolve();
22593
+ });
22594
+ });
22371
22595
  }
22372
22596
  getFormFieldProps() {
22373
22597
  return {
@@ -22391,7 +22615,7 @@ class KolInputEmail {
22391
22615
  } });
22392
22616
  }
22393
22617
  render() {
22394
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: 'a74d93b511883ac584088468690f5fedbd031608' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '34041ab24cb5e2e3b095e468df4bd8978909803e', state: this.state }, hAsync(InputStateWrapper, Object.assign({ key: 'f34730d39d2fe689e1f9d52576bd5954c538a461' }, this.getInputProps())))));
22618
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: 'cab521e66e888b933138110984dac2a30c0fa893' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: 'a659607042aaef2572b3c52fbebaea22085c2095', state: this.state }, hAsync(InputStateWrapper, Object.assign({ key: '197066107205fe6e91cba9252e937580a4857a3d' }, this.getInputProps())))));
22395
22619
  }
22396
22620
  constructor(hostRef) {
22397
22621
  registerInstance(this, hostRef);
@@ -22619,8 +22843,13 @@ class KolInputFile {
22619
22843
  return (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.files;
22620
22844
  }
22621
22845
  async focus() {
22622
- var _a;
22623
- return Promise.resolve((_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus());
22846
+ return new Promise((resolve) => {
22847
+ requestAnimationFrame(() => {
22848
+ var _a;
22849
+ (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus();
22850
+ resolve();
22851
+ });
22852
+ });
22624
22853
  }
22625
22854
  async reset() {
22626
22855
  this.controller.setFormAssociatedValue('');
@@ -22648,7 +22877,7 @@ class KolInputFile {
22648
22877
  } });
22649
22878
  }
22650
22879
  render() {
22651
- 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 }))));
22880
+ 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 }))));
22652
22881
  }
22653
22882
  constructor(hostRef) {
22654
22883
  registerInstance(this, hostRef);
@@ -22893,8 +23122,13 @@ class KolInputNumber {
22893
23122
  return this.remapValue(this.state._value);
22894
23123
  }
22895
23124
  async focus() {
22896
- var _a;
22897
- return Promise.resolve((_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus());
23125
+ return new Promise((resolve) => {
23126
+ requestAnimationFrame(() => {
23127
+ var _a;
23128
+ (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus();
23129
+ resolve();
23130
+ });
23131
+ });
22898
23132
  }
22899
23133
  setInitialValueType(value) {
22900
23134
  if (this.controller.isNumberString(value)) {
@@ -22962,7 +23196,7 @@ class KolInputNumber {
22962
23196
  }, disabled: this._disabled || this._readOnly }, hAsync(KolIconFc, { icons: "kolicon-minus", label: "" })));
22963
23197
  }
22964
23198
  render() {
22965
- 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())))));
23199
+ 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())))));
22966
23200
  }
22967
23201
  constructor(hostRef) {
22968
23202
  registerInstance(this, hostRef);
@@ -23169,8 +23403,13 @@ class KolInputPassword {
23169
23403
  return (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.value;
23170
23404
  }
23171
23405
  async focus() {
23172
- var _a;
23173
- return Promise.resolve((_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus());
23406
+ return new Promise((resolve) => {
23407
+ requestAnimationFrame(() => {
23408
+ var _a;
23409
+ (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus();
23410
+ resolve();
23411
+ });
23412
+ });
23174
23413
  }
23175
23414
  getFormFieldProps() {
23176
23415
  return {
@@ -23204,7 +23443,7 @@ class KolInputPassword {
23204
23443
  }, icon: `${this._passwordVisible ? 'kolicon-eye-closed' : 'kolicon-eye'}`, disabled: this._disabled }));
23205
23444
  }
23206
23445
  render() {
23207
- 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())))));
23446
+ 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())))));
23208
23447
  }
23209
23448
  constructor(hostRef) {
23210
23449
  registerInstance(this, hostRef);
@@ -23449,8 +23688,13 @@ class KolInputRadio {
23449
23688
  return this._value;
23450
23689
  }
23451
23690
  async focus() {
23452
- var _a;
23453
- return Promise.resolve((_a = this.getFocusableInput()) === null || _a === void 0 ? void 0 : _a.focus());
23691
+ return new Promise((resolve) => {
23692
+ requestAnimationFrame(() => {
23693
+ var _a;
23694
+ (_a = this.getFocusableInput()) === null || _a === void 0 ? void 0 : _a.focus();
23695
+ resolve();
23696
+ });
23697
+ });
23454
23698
  }
23455
23699
  getFocusableInput() {
23456
23700
  const options = this.state._options;
@@ -23487,7 +23731,7 @@ class KolInputRadio {
23487
23731
  };
23488
23732
  }
23489
23733
  render() {
23490
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: 'abaeb85e7c44c82c0c638cd8dae368454e9565e2' }, this.getFormFieldProps()), this.state._options.map((option, index) => this.renderOption(option, index))));
23734
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: 'f089864837e627816b92febb97f4442ffe064296' }, this.getFormFieldProps()), this.state._options.map((option, index) => this.renderOption(option, index))));
23491
23735
  }
23492
23736
  calculateDisabled(option) {
23493
23737
  return Boolean(this.state._disabled) || Boolean(option.disabled);
@@ -23727,8 +23971,13 @@ const defaultStyleCss$o = "@charset \"UTF-8\";\n/*\n* This file defines the laye
23727
23971
 
23728
23972
  class KolInputRange {
23729
23973
  async focus() {
23730
- var _a;
23731
- return Promise.resolve((_a = this.refInputNumber) === null || _a === void 0 ? void 0 : _a.focus());
23974
+ return new Promise((resolve) => {
23975
+ requestAnimationFrame(() => {
23976
+ var _a;
23977
+ (_a = this.refInputNumber) === null || _a === void 0 ? void 0 : _a.focus();
23978
+ resolve();
23979
+ });
23980
+ });
23732
23981
  }
23733
23982
  getSanitizedFloatValue(value) {
23734
23983
  const floatValue = parseFloat(value);
@@ -23797,7 +24046,7 @@ class KolInputRange {
23797
24046
  const inputsWrapperStyle = {
23798
24047
  '--kolibri-input-range--input-number--width': `calc(${String(this.state._max).length}ch + 2em)`,
23799
24048
  };
23800
- 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 }))));
24049
+ 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 }))));
23801
24050
  }
23802
24051
  constructor(hostRef) {
23803
24052
  registerInstance(this, hostRef);
@@ -23994,8 +24243,13 @@ class KolInputText {
23994
24243
  return (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.value;
23995
24244
  }
23996
24245
  async focus() {
23997
- var _a;
23998
- return Promise.resolve((_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus());
24246
+ return new Promise((resolve) => {
24247
+ requestAnimationFrame(() => {
24248
+ var _a;
24249
+ (_a = this.inputRef) === null || _a === void 0 ? void 0 : _a.focus();
24250
+ resolve();
24251
+ });
24252
+ });
23999
24253
  }
24000
24254
  async selectionStart() {
24001
24255
  var _a;
@@ -24038,7 +24292,7 @@ class KolInputText {
24038
24292
  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 });
24039
24293
  }
24040
24294
  render() {
24041
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: '83e4d9964aa560e3fbbaba462572fee6fa2eae87' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: 'b3a68ff02445b1dc07c08ff4ef14e366ee6785a9', state: this.state }, hAsync(InputStateWrapper, Object.assign({ key: 'd1f60fdb8c4b47a9ead3415cbbf38fee000e27f3' }, this.getInputProps())))));
24295
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: '5b2f79fc63b889b52f0369be822edeadae218934' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '246837c2083d17b5773efd67081b47ce6f852be2', state: this.state }, hAsync(InputStateWrapper, Object.assign({ key: '938ed60af361b9227a191433c28f1befe0fd36e8' }, this.getInputProps())))));
24042
24296
  }
24043
24297
  constructor(hostRef) {
24044
24298
  registerInstance(this, hostRef);
@@ -24502,15 +24756,20 @@ class KolLinkWc {
24502
24756
  };
24503
24757
  }
24504
24758
  async focus() {
24505
- var _a;
24506
- return Promise.resolve((_a = this.anchorRef) === null || _a === void 0 ? void 0 : _a.focus());
24759
+ return await new Promise((resolve) => {
24760
+ const ref = this.anchorRef;
24761
+ requestAnimationFrame(() => {
24762
+ ref === null || ref === void 0 ? void 0 : ref.focus();
24763
+ resolve();
24764
+ });
24765
+ });
24507
24766
  }
24508
24767
  render() {
24509
24768
  var _a;
24510
24769
  const { isExternal, tagAttrs } = this.getRenderValues();
24511
24770
  const hasExpertSlot = showExpertSlot(this.state._label);
24512
24771
  const ariaDescription = (_a = this.state._ariaDescription) === null || _a === void 0 ? void 0 : _a.trim();
24513
- 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'
24772
+ 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'
24514
24773
  ? `${this.state._label}${isExternal ? ` (${this.translateOpenLinkInTab})` : ''}`
24515
24774
  : undefined, "aria-keyshortcuts": this.state._shortKey, class: clsx('kol-link', {
24516
24775
  'kol-link--disabled': this.state._disabled === true,
@@ -24520,7 +24779,7 @@ class KolLinkWc {
24520
24779
  'kol-link--inline': this.state._inline === true,
24521
24780
  'kol-link--standalone': this.state._inline === false,
24522
24781
  [this.state._customClass]: this.state._variant === 'custom' && typeof this.state._customClass === 'string' && this.state._customClass.length > 0,
24523
- }) }, 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 }))));
24782
+ }) }, 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 }))));
24524
24783
  }
24525
24784
  validateAccessKey(value) {
24526
24785
  validateAccessKey(this, value);
@@ -24926,7 +25185,7 @@ class KolNav {
24926
25185
  }; }
24927
25186
  }
24928
25187
 
24929
- 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}";
25188
+ 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}";
24930
25189
 
24931
25190
  class KolPagination {
24932
25191
  constructor(hostRef) {
@@ -25160,7 +25419,7 @@ class KolPaginationWc {
25160
25419
  return null;
25161
25420
  }
25162
25421
  });
25163
- return (hAsync(Host, { class: "kol-pagination" }, hAsync("span", { role: "status", "aria-live": "polite" }, translate('kol-table-visible-range', {
25422
+ return (hAsync(Host, { class: "kol-pagination" }, hAsync("span", { role: "status", "aria-live": "polite", class: "kol-pagination__entries" }, translate('kol-table-visible-range', {
25164
25423
  placeholders: {
25165
25424
  start: this.getPageStart(),
25166
25425
  end: this.getPageEnd(),
@@ -25173,7 +25432,7 @@ class KolPaginationWc {
25173
25432
  getUnselectedPageButton(page) {
25174
25433
  const pageText = NUMBER_FORMATTER.format(page);
25175
25434
  const ariaDescription = `${this.translatePage} ${pageText}`;
25176
- return (hAsync("li", { key: nonce() }, hAsync(KolButtonWcTag, { class: "kol-pagination__button", _ariaDescription: ariaDescription, _customClass: this.state._customClass, _label: pageText, _on: {
25435
+ return (hAsync("li", { key: nonce() }, hAsync(KolButtonWcTag, { class: "kol-pagination__button kol-pagination__button--numbers", _ariaDescription: ariaDescription, _customClass: this.state._customClass, _label: pageText, _on: {
25177
25436
  onClick: (event) => {
25178
25437
  this.onClick(event, page);
25179
25438
  },
@@ -25214,7 +25473,7 @@ class KolPaginationWc {
25214
25473
  try {
25215
25474
  nextValue = parseJson(nextValue);
25216
25475
  }
25217
- catch (e) {
25476
+ catch (_a) {
25218
25477
  nextState.delete('_hasButtons');
25219
25478
  }
25220
25479
  }
@@ -27152,7 +27411,7 @@ class KolPopover {
27152
27411
  try {
27153
27412
  this.popoverElement.showPopover();
27154
27413
  }
27155
- catch (e) {
27414
+ catch (_a) {
27156
27415
  }
27157
27416
  }
27158
27417
  }
@@ -27161,7 +27420,7 @@ class KolPopover {
27161
27420
  try {
27162
27421
  this.popoverElement.hidePopover();
27163
27422
  }
27164
- catch (e) {
27423
+ catch (_b) {
27165
27424
  }
27166
27425
  }
27167
27426
  }
@@ -27350,11 +27609,11 @@ class KolPopoverButton {
27350
27609
  (_c = this.cleanupAutoPositioning) === null || _c === void 0 ? void 0 : _c.call(this);
27351
27610
  }
27352
27611
  render() {
27353
- return (hAsync("div", { key: '20a956409478664ea60fe7d2ea494f6b8ccd5759', class: clsx('kol-popover-button', {
27612
+ return (hAsync("div", { key: '0e7d5b884be9b05c7c94c2e5e7be8c35b0def1d7', class: clsx('kol-popover-button', {
27354
27613
  'kol-popover-button--open': this.popoverOpen,
27355
27614
  'kol-popover-button--inline': this.state._inline === true,
27356
27615
  'kol-popover-button--standalone': this.state._inline === false,
27357
- }) }, 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' }))));
27616
+ }) }, 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' }))));
27358
27617
  }
27359
27618
  validateInline(value) {
27360
27619
  validateInline(this, value, {
@@ -27837,8 +28096,13 @@ class KolSelectWc {
27837
28096
  }
27838
28097
  }
27839
28098
  async focus() {
27840
- var _a;
27841
- return Promise.resolve((_a = this.selectRef) === null || _a === void 0 ? void 0 : _a.focus());
28099
+ return new Promise((resolve) => {
28100
+ requestAnimationFrame(() => {
28101
+ var _a;
28102
+ (_a = this.selectRef) === null || _a === void 0 ? void 0 : _a.focus();
28103
+ resolve();
28104
+ });
28105
+ });
27842
28106
  }
27843
28107
  getFormFieldProps() {
27844
28108
  return {
@@ -27861,11 +28125,11 @@ class KolSelectWc {
27861
28125
  } });
27862
28126
  }
27863
28127
  render() {
27864
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: '783ae8765a903cd7b733dd3b2f616b5a84ce7378' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '9bf4d862876bbf18b40921bd715e025ff1323c3f', state: this.state }, hAsync("form", { key: '06750f56e586430344314031d3a8b25f8669c7ba', onSubmit: (event) => {
28128
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: '44490eb252cf8e389146f5c8bcaa323a9f42c5cc' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '663ac31f77dfa763ef2a1603fd0597211d37edc7', state: this.state }, hAsync("form", { key: 'c16646ed59f3e5788a89f1d92efd1e2707744649', onSubmit: (event) => {
27865
28129
  event.preventDefault();
27866
28130
  propagateSubmitEventToForm({
27867
28131
  form: this.host});
27868
- } }, hAsync("input", { key: '761992a87c4638c2a4b7282154cac30c66492331', type: "submit", hidden: true }), hAsync(SelectStateWrapper, Object.assign({ key: '36cbcbbcaef6b39a0a36c42bba3270ad873a244d' }, this.getSelectProps()))))));
28132
+ } }, hAsync("input", { key: 'fe84cdd692d243ac1c017fc8e9cd10cd32a0b2bb', type: "submit", hidden: true }), hAsync(SelectStateWrapper, Object.assign({ key: '27465e961d32dc09fe1a6978140693350f813dc0' }, this.getSelectProps()))))));
27869
28133
  }
27870
28134
  constructor(hostRef) {
27871
28135
  registerInstance(this, hostRef);
@@ -28097,8 +28361,13 @@ class KolSingleSelect {
28097
28361
  return this._value;
28098
28362
  }
28099
28363
  async focus() {
28100
- var _a;
28101
- return Promise.resolve((_a = this.refInput) === null || _a === void 0 ? void 0 : _a.focus());
28364
+ return new Promise((resolve) => {
28365
+ requestAnimationFrame(() => {
28366
+ var _a;
28367
+ (_a = this.refInput) === null || _a === void 0 ? void 0 : _a.focus();
28368
+ resolve();
28369
+ });
28370
+ });
28102
28371
  }
28103
28372
  onBlur(event) {
28104
28373
  var _a, _b, _c;
@@ -28270,17 +28539,15 @@ class KolSingleSelect {
28270
28539
  render() {
28271
28540
  var _a;
28272
28541
  const isDisabled = this.state._disabled === true;
28273
- 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', {
28274
- 'kol-single-select__delete--disabled': isDisabled,
28275
- }), _on: {
28542
+ 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: {
28276
28543
  onClick: () => {
28277
28544
  var _a;
28278
28545
  this.clearSelection();
28279
28546
  (_a = this.refInput) === null || _a === void 0 ? void 0 : _a.focus();
28280
28547
  },
28281
- } })), hAsync(KolIconTag, { key: '25991f7a780b9e3a987606a8bed5c052f156fcdd', _icons: "kolicon-chevron-down", _label: "", class: clsx('kol-custom-suggestions-toggle', {
28548
+ } })), hAsync(KolIconTag, { key: '22a363bfd1c0d198b9b7f918b7b4c95255da18c6', _icons: "kolicon-chevron-down", _label: "", class: clsx('kol-custom-suggestions-toggle', {
28282
28549
  'kol-custom-suggestions-toggle--disabled': isDisabled,
28283
- }), 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) => {
28550
+ }), 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) => {
28284
28551
  if (el)
28285
28552
  this.refOptions[index] = el;
28286
28553
  }, selected: this._value === option.value, disabled: option.disabled ? true : false, onClick: (event) => {
@@ -28623,6 +28890,175 @@ class KolSingleSelect {
28623
28890
  }; }
28624
28891
  }
28625
28892
 
28893
+ const skeletonBem = bem$2.forBlock('kol-skeleton');
28894
+ const BEM_CLASS_SKELETON__ACTIONS = skeletonBem('actions');
28895
+ const BEM_CLASS_SKELETON__CONTAINER = skeletonBem('container');
28896
+ const BEM_CLASS_SKELETON__COUNTER = skeletonBem('counter');
28897
+ const BEM_CLASS_SKELETON__NAME = skeletonBem('name');
28898
+ const SkeletonFC = (props) => {
28899
+ const { count, label, name, show, handleClick, refButton } = props;
28900
+ const hasName = !!(show && (name === null || name === void 0 ? void 0 : name.trim()));
28901
+ const BEM_CLASS_ROOT = skeletonBem({
28902
+ 'has-name': hasName,
28903
+ 'is-hidden': !show,
28904
+ });
28905
+ 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 }))));
28906
+ };
28907
+
28908
+ class SkeletonController extends BaseController {
28909
+ constructor(states) {
28910
+ super(states, {
28911
+ count: 0,
28912
+ name: '',
28913
+ });
28914
+ this.onKeydown = (event) => {
28915
+ if (event.key === 'Escape') {
28916
+ console.log('Show should be toggled');
28917
+ void this.toggle();
28918
+ }
28919
+ };
28920
+ this.handleClick = () => {
28921
+ Log.debug('Button clicked, count should be increased');
28922
+ const { count } = this.getProps();
28923
+ const nextCount = count + 1;
28924
+ this.setProp('count', nextCount);
28925
+ this.setState('count', nextCount);
28926
+ };
28927
+ this.setButtonRef = (element) => {
28928
+ this.clickButtonCtrl.setButtonRef(element);
28929
+ };
28930
+ this.clickButtonCtrl = new ClickButtonController({});
28931
+ this.startLoadedEventInterval();
28932
+ }
28933
+ componentWillLoad(props) {
28934
+ const { count, name } = props;
28935
+ this.watchCount(count);
28936
+ this.watchName(name);
28937
+ this.watchLabel(this.component.label);
28938
+ this.clickButtonCtrl.componentWillLoad({
28939
+ label: this.component.label,
28940
+ });
28941
+ }
28942
+ watchCount(value) {
28943
+ withValidPropValue(countProp, value, (v) => {
28944
+ this.setProp('count', v);
28945
+ this.setState('count', v);
28946
+ });
28947
+ }
28948
+ watchName(value) {
28949
+ withValidPropValue(nameProp, value, (v) => {
28950
+ this.setProp('name', v);
28951
+ });
28952
+ }
28953
+ watchLabel(value) {
28954
+ withValidPropValue(labelProp, value, (v) => {
28955
+ this.setState('label', v);
28956
+ this.clickButtonCtrl.watchLabel(v);
28957
+ });
28958
+ }
28959
+ toggle() {
28960
+ this.setState('show', !this.component.show);
28961
+ }
28962
+ focus() {
28963
+ return this.clickButtonCtrl.focus();
28964
+ }
28965
+ startLoadedEventInterval() {
28966
+ this.intervalId = setInterval(() => {
28967
+ const { count } = this.getProps();
28968
+ this.emitLoaded(count);
28969
+ }, 2000);
28970
+ }
28971
+ emitLoaded(count) {
28972
+ if (this.onLoadedCallback) {
28973
+ this.onLoadedCallback(count);
28974
+ }
28975
+ }
28976
+ setOnLoadedCallback(callback) {
28977
+ this.onLoadedCallback = callback;
28978
+ }
28979
+ destroy() {
28980
+ if (this.intervalId) {
28981
+ clearInterval(this.intervalId);
28982
+ this.intervalId = undefined;
28983
+ }
28984
+ }
28985
+ }
28986
+
28987
+ class KolSkeleton {
28988
+ constructor(hostRef) {
28989
+ registerInstance(this, hostRef);
28990
+ this.loaded = createEvent(this, "loaded");
28991
+ this.rendered = createEvent(this, "rendered");
28992
+ this.ctrl = new SkeletonController(this);
28993
+ this.label = 'Label';
28994
+ this.show = true;
28995
+ this.count = 0;
28996
+ }
28997
+ async focus() {
28998
+ return Promise.resolve(this.ctrl.focus());
28999
+ }
29000
+ async toggle() {
29001
+ return Promise.resolve(this.ctrl.toggle());
29002
+ }
29003
+ watchCount(value) {
29004
+ this.ctrl.watchCount(value);
29005
+ }
29006
+ watchName(value) {
29007
+ this.ctrl.watchName(value);
29008
+ }
29009
+ handleKeyDown(event) {
29010
+ if (event.key === 'Enter' || event.key === ' ') {
29011
+ Log.debug('button pressed');
29012
+ this.ctrl.handleClick();
29013
+ }
29014
+ }
29015
+ onKeydown(event) {
29016
+ this.ctrl.onKeydown(event);
29017
+ }
29018
+ componentWillLoad() {
29019
+ this.ctrl.componentWillLoad({
29020
+ count: this._count,
29021
+ name: this._name,
29022
+ });
29023
+ this.ctrl.setOnLoadedCallback((count) => {
29024
+ this.loaded.emit(count);
29025
+ });
29026
+ }
29027
+ componentDidLoad() {
29028
+ requestAnimationFrame(() => {
29029
+ this.rendered.emit();
29030
+ });
29031
+ }
29032
+ disconnectedCallback() {
29033
+ this.ctrl.destroy();
29034
+ }
29035
+ render() {
29036
+ const { count, name } = this.ctrl.getProps();
29037
+ const { label, show } = this;
29038
+ 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) })));
29039
+ }
29040
+ static get watchers() { return {
29041
+ "_count": ["watchCount"],
29042
+ "_name": ["watchName"]
29043
+ }; }
29044
+ static get cmpMeta() { return {
29045
+ "$flags$": 265,
29046
+ "$tagName$": "kol-skeleton",
29047
+ "$members$": {
29048
+ "_count": [8],
29049
+ "_name": [1],
29050
+ "label": [32],
29051
+ "show": [32],
29052
+ "count": [32],
29053
+ "focus": [64],
29054
+ "toggle": [64]
29055
+ },
29056
+ "$listeners$": [[0, "keydown", "handleKeyDown"], [8, "keydown", "onKeydown"]],
29057
+ "$lazyBundleId$": "-",
29058
+ "$attrsToReflect$": []
29059
+ }; }
29060
+ }
29061
+
28626
29062
  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}";
28627
29063
 
28628
29064
  class KolSkipNav {
@@ -28941,7 +29377,7 @@ class KolTableSettings {
28941
29377
  }
28942
29378
  render() {
28943
29379
  const columns = this.getPrimaryRow();
28944
- 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" }))))));
29380
+ 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" }))))));
28945
29381
  }
28946
29382
  get host() { return getElement(this); }
28947
29383
  static get watchers() { return {
@@ -29000,7 +29436,7 @@ var KeyboardKey;
29000
29436
  KeyboardKey["Space"] = " ";
29001
29437
  })(KeyboardKey || (KeyboardKey = {}));
29002
29438
 
29003
- 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}";
29439
+ 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}";
29004
29440
 
29005
29441
  const PAGINATION_OPTIONS = [10, 20, 50, 100];
29006
29442
  const paginationValidator = (value) => value === true || value === '' || (typeof value === 'object' && value !== null);
@@ -29146,7 +29582,7 @@ class KolTableStateful {
29146
29582
  try {
29147
29583
  value = parseJson(value);
29148
29584
  }
29149
- catch (e) {
29585
+ catch (_a) {
29150
29586
  }
29151
29587
  watchValidator(this, '_headers', (value) => typeof value === 'object' && value !== null, new Set(['KoliBriTableHeaders']), value, {
29152
29588
  hooks: {
@@ -29209,7 +29645,7 @@ class KolTableStateful {
29209
29645
  try {
29210
29646
  value = parseJson(value);
29211
29647
  }
29212
- catch (e) {
29648
+ catch (_a) {
29213
29649
  }
29214
29650
  this.showPagination = paginationValidator(value);
29215
29651
  watchValidator(this, '_pagination', paginationValidator, new Set(['boolean', 'KoliBriTablePagination']), value, {
@@ -29330,7 +29766,7 @@ class KolTableStateful {
29330
29766
  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 : [],
29331
29767
  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 : [],
29332
29768
  };
29333
- 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: {
29769
+ 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: {
29334
29770
  onSort: (_, payload) => {
29335
29771
  this.handleSort(payload);
29336
29772
  },
@@ -29385,7 +29821,7 @@ let KolTableStateless$1 = class KolTableStateless {
29385
29821
  registerInstance(this, hostRef);
29386
29822
  }
29387
29823
  render() {
29388
- 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 }));
29824
+ 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 }));
29389
29825
  }
29390
29826
  static get style() { return {
29391
29827
  default: defaultStyleCss$7
@@ -30020,12 +30456,12 @@ class KolTableStateless {
30020
30456
  const dataField = this.createDataField(this.state._data, this.state._headerCells);
30021
30457
  this.checkboxRefs = [];
30022
30458
  const horizontalHeaders = this.state._headerCells.horizontal;
30023
- 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: {
30459
+ 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: {
30024
30460
  minWidth: this.getTableMinWidth(),
30025
- } }, 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" }, [
30461
+ } }, 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" }, [
30026
30462
  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))))),
30027
30463
  this.renderSpacer('head', horizontalHeaders),
30028
- ])), hAsync("tbody", { key: '482757151e3bdc7f026a2e924c0c9e1d6ea6714a', class: "kol-table__body" }, dataField.map((row, rowIndex) => this.renderTableRow(row, rowIndex, true))), this.renderFoot()))));
30464
+ ])), hAsync("tbody", { key: '59d6cee5b36e8addebb2fd765cb6aa3f8408cfc2', class: "kol-table__body" }, dataField.map((row, rowIndex) => this.renderTableRow(row, rowIndex, true))), this.renderFoot()))));
30029
30465
  }
30030
30466
  get host() { return getElement(this); }
30031
30467
  static get watchers() { return {
@@ -30464,8 +30900,13 @@ class KolTextarea {
30464
30900
  return (_a = this.textareaRef) === null || _a === void 0 ? void 0 : _a.value;
30465
30901
  }
30466
30902
  async focus() {
30467
- var _a;
30468
- return Promise.resolve((_a = this.textareaRef) === null || _a === void 0 ? void 0 : _a.focus());
30903
+ return new Promise((resolve) => {
30904
+ requestAnimationFrame(() => {
30905
+ var _a;
30906
+ (_a = this.textareaRef) === null || _a === void 0 ? void 0 : _a.focus();
30907
+ resolve();
30908
+ });
30909
+ });
30469
30910
  }
30470
30911
  getFormFieldProps() {
30471
30912
  return {
@@ -30491,7 +30932,7 @@ class KolTextarea {
30491
30932
  } });
30492
30933
  }
30493
30934
  render() {
30494
- return (hAsync(FormFieldStateWrapper, Object.assign({ key: '40cbd686b73f49706d5e6a56f21ca564cd945056' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: 'd8a3af9b6772dd62e16f30c3f818d45ccdd50d96', state: this.state }, hAsync(TextAreaStateWrapper, Object.assign({ key: '58e4c06295ec23090d1bc2201ba8c906e317ed0b' }, this.getTextAreaProps())))));
30935
+ return (hAsync(FormFieldStateWrapper, Object.assign({ key: 'e1a50de8e844b4b8de8363f40f0398e1464a65a8' }, this.getFormFieldProps()), hAsync(InputContainerStateWrapperFc, { key: '6e6d22422052a45e54cb35054b02853c7ab5d055', state: this.state }, hAsync(TextAreaStateWrapper, Object.assign({ key: 'eadd23eef77edf6963b601582b936d190f455706' }, this.getTextAreaProps())))));
30495
30936
  }
30496
30937
  constructor(hostRef) {
30497
30938
  registerInstance(this, hostRef);
@@ -31573,7 +32014,6 @@ registerComponents([
31573
32014
  KolAlert,
31574
32015
  KolAlertWc,
31575
32016
  KolAvatar,
31576
- KolAvatarWc,
31577
32017
  KolBadge,
31578
32018
  KolBreadcrumb,
31579
32019
  KolButton,
@@ -31581,6 +32021,7 @@ registerComponents([
31581
32021
  KolButtonWc,
31582
32022
  KolCard,
31583
32023
  KolCardWc,
32024
+ KolClickButton,
31584
32025
  KolCombobox,
31585
32026
  KolDetails,
31586
32027
  KolDialog,
@@ -31616,6 +32057,7 @@ registerComponents([
31616
32057
  KolSelect,
31617
32058
  KolSelectWc,
31618
32059
  KolSingleSelect,
32060
+ KolSkeleton,
31619
32061
  KolSkipNav,
31620
32062
  KolSpin,
31621
32063
  KolSplitButton,
@@ -31655,7 +32097,7 @@ function prototypeKoliBri(name, cb) {
31655
32097
  },
31656
32098
  });
31657
32099
  }
31658
- catch (e) {
32100
+ catch (_a) {
31659
32101
  Log.debug(`KoliBri property ${name} is already bind.`);
31660
32102
  }
31661
32103
  }