@ui5/webcomponents-base 2.26.0-rc.0 → 2.26.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 (49) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/.tsbuildinfobuild +1 -1
  3. package/dist/animations/animate.d.ts +1 -1
  4. package/dist/animations/animate.js +4 -1
  5. package/dist/animations/animate.js.map +1 -1
  6. package/dist/animations/scroll.js +1 -1
  7. package/dist/animations/scroll.js.map +1 -1
  8. package/dist/animations/slideDown.js +1 -1
  9. package/dist/animations/slideDown.js.map +1 -1
  10. package/dist/animations/slideUp.js +1 -1
  11. package/dist/animations/slideUp.js.map +1 -1
  12. package/dist/config/AnimationMode.js +6 -0
  13. package/dist/config/AnimationMode.js.map +1 -1
  14. package/dist/css/CommonStyles.css +6 -0
  15. package/dist/custom-elements-internal.json +19 -19
  16. package/dist/custom-elements.json +19 -19
  17. package/dist/generated/VersionInfo.js +3 -3
  18. package/dist/generated/VersionInfo.js.map +1 -1
  19. package/dist/generated/css/CommonStyles.css.d.ts +2 -0
  20. package/dist/generated/css/CommonStyles.css.js +2 -0
  21. package/dist/generated/css/CommonStyles.css.js.map +1 -0
  22. package/dist/prod/animations/animate.js +1 -1
  23. package/dist/prod/animations/animate.js.map +3 -3
  24. package/dist/prod/animations/scroll.js +1 -1
  25. package/dist/prod/animations/scroll.js.map +2 -2
  26. package/dist/prod/animations/slideDown.js +1 -1
  27. package/dist/prod/animations/slideDown.js.map +2 -2
  28. package/dist/prod/animations/slideUp.js +1 -1
  29. package/dist/prod/animations/slideUp.js.map +2 -2
  30. package/dist/prod/config/AnimationMode.js +1 -1
  31. package/dist/prod/config/AnimationMode.js.map +3 -3
  32. package/dist/prod/generated/VersionInfo.js +1 -1
  33. package/dist/prod/generated/VersionInfo.js.map +2 -2
  34. package/dist/prod/generated/css/CommonStyles.css.js +2 -0
  35. package/dist/prod/generated/css/CommonStyles.css.js.map +7 -0
  36. package/dist/prod/sap/base/security/sanitizeHTML.js +3 -3
  37. package/dist/prod/theming/componentStyles.js +3 -2
  38. package/dist/prod/theming/componentStyles.js.map +3 -3
  39. package/dist/prod/util/InvisibleMessage.js +1 -1
  40. package/dist/prod/util/InvisibleMessage.js.map +3 -3
  41. package/dist/sap/base/security/sanitizeHTML.js +3 -3
  42. package/dist/theming/componentStyles.js +3 -0
  43. package/dist/theming/componentStyles.js.map +1 -1
  44. package/dist/util/InvisibleMessage.d.ts +21 -0
  45. package/dist/util/InvisibleMessage.js +63 -11
  46. package/dist/util/InvisibleMessage.js.map +1 -1
  47. package/package.json +4 -4
  48. package/src/css/CommonStyles.css +6 -0
  49. package/dist/vscode.html-custom-data.json +0 -22
@@ -1,2 +1,2 @@
1
- "use strict";import{getAnimationMode as i}from"../InitialConfiguration.js";import t from"../types/AnimationMode.js";import{attachConfigurationReset as e}from"./ConfigurationReset.js";let n;e(()=>{n=void 0});const d=()=>(n===void 0&&(n=i()),n),m=o=>{Object.values(t).includes(o)&&(n=o)};export{d as getAnimationMode,m as setAnimationMode};
1
+ "use strict";import{getAnimationMode as t}from"../InitialConfiguration.js";import e from"../types/AnimationMode.js";import{attachConfigurationReset as a}from"./ConfigurationReset.js";import{createOrUpdateStyle as d}from"../ManagedStyles.js";let o;const n=i=>{d(`:root { --_ui5-animation-mode: ${i}; }`,"data-ui5-animation-mode")};a(()=>{o=void 0});const m=()=>(o===void 0&&(o=t(),n(o)),o),r=i=>{Object.values(e).includes(i)&&(o=i,n(o))};export{m as getAnimationMode,r as setAnimationMode};
2
2
  //# sourceMappingURL=AnimationMode.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/config/AnimationMode.ts"],
4
- "sourcesContent": ["import { getAnimationMode as getConfiguredAnimationMode } from \"../InitialConfiguration.js\";\nimport AnimationMode from \"../types/AnimationMode.js\";\nimport { attachConfigurationReset } from \"./ConfigurationReset.js\";\n\nlet curAnimationMode: `${AnimationMode}` | undefined;\n\nattachConfigurationReset(() => {\n\tcurAnimationMode = undefined;\n});\n\n/**\n * Returns the animation mode - \"full\", \"basic\", \"minimal\" or \"none\".\n * @public\n * @returns { AnimationMode }\n */\nconst getAnimationMode = (): `${AnimationMode}` => {\n\tif (curAnimationMode === undefined) {\n\t\tcurAnimationMode = getConfiguredAnimationMode();\n\t}\n\n\treturn curAnimationMode;\n};\n\n/**\n * Sets the animation mode - \"full\", \"basic\", \"minimal\" or \"none\".\n * @public\n * @param { AnimationMode } animationMode\n */\nconst setAnimationMode = (animationMode: `${AnimationMode}`) => {\n\tconst options: string[] = Object.values(AnimationMode);\n\tif (options.includes(animationMode)) {\n\t\tcurAnimationMode = animationMode;\n\t}\n};\n\nexport {\n\tgetAnimationMode,\n\tsetAnimationMode,\n};\n"],
5
- "mappings": "aAAA,OAAS,oBAAoBA,MAAkC,6BAC/D,OAAOC,MAAmB,4BAC1B,OAAS,4BAAAC,MAAgC,0BAEzC,IAAIC,EAEJD,EAAyB,IAAM,CAC9BC,EAAmB,MACpB,CAAC,EAOD,MAAMC,EAAmB,KACpBD,IAAqB,SACxBA,EAAmBH,EAA2B,GAGxCG,GAQFE,EAAoBC,GAAsC,CACrC,OAAO,OAAOL,CAAa,EACzC,SAASK,CAAa,IACjCH,EAAmBG,EAErB,EAEA,OACCF,KAAA,iBACAC,KAAA",
6
- "names": ["getConfiguredAnimationMode", "AnimationMode", "attachConfigurationReset", "curAnimationMode", "getAnimationMode", "setAnimationMode", "animationMode"]
4
+ "sourcesContent": ["import { getAnimationMode as getConfiguredAnimationMode } from \"../InitialConfiguration.js\";\nimport AnimationMode from \"../types/AnimationMode.js\";\nimport { attachConfigurationReset } from \"./ConfigurationReset.js\";\nimport { createOrUpdateStyle } from \"../ManagedStyles.js\";\n\nlet curAnimationMode: `${AnimationMode}` | undefined;\n\nconst applyAnimationMode = (animationMode: `${AnimationMode}`) => {\n\tcreateOrUpdateStyle(`:root { --_ui5-animation-mode: ${animationMode}; }`, \"data-ui5-animation-mode\");\n};\n\nattachConfigurationReset(() => {\n\tcurAnimationMode = undefined;\n});\n\n/**\n * Returns the animation mode - \"full\", \"basic\", \"minimal\" or \"none\".\n * @public\n * @returns { AnimationMode }\n */\nconst getAnimationMode = (): `${AnimationMode}` => {\n\tif (curAnimationMode === undefined) {\n\t\tcurAnimationMode = getConfiguredAnimationMode();\n\t\tapplyAnimationMode(curAnimationMode);\n\t}\n\n\treturn curAnimationMode;\n};\n\n/**\n * Sets the animation mode - \"full\", \"basic\", \"minimal\" or \"none\".\n * @public\n * @param { AnimationMode } animationMode\n */\nconst setAnimationMode = (animationMode: `${AnimationMode}`) => {\n\tconst options: string[] = Object.values(AnimationMode);\n\tif (options.includes(animationMode)) {\n\t\tcurAnimationMode = animationMode;\n\t\tapplyAnimationMode(curAnimationMode);\n\t}\n};\n\nexport {\n\tgetAnimationMode,\n\tsetAnimationMode,\n};\n"],
5
+ "mappings": "aAAA,OAAS,oBAAoBA,MAAkC,6BAC/D,OAAOC,MAAmB,4BAC1B,OAAS,4BAAAC,MAAgC,0BACzC,OAAS,uBAAAC,MAA2B,sBAEpC,IAAIC,EAEJ,MAAMC,EAAsBC,GAAsC,CACjEH,EAAoB,kCAAkCG,CAAa,MAAO,yBAAyB,CACpG,EAEAJ,EAAyB,IAAM,CAC9BE,EAAmB,MACpB,CAAC,EAOD,MAAMG,EAAmB,KACpBH,IAAqB,SACxBA,EAAmBJ,EAA2B,EAC9CK,EAAmBD,CAAgB,GAG7BA,GAQFI,EAAoBF,GAAsC,CACrC,OAAO,OAAOL,CAAa,EACzC,SAASK,CAAa,IACjCF,EAAmBE,EACnBD,EAAmBD,CAAgB,EAErC,EAEA,OACCG,KAAA,iBACAC,KAAA",
6
+ "names": ["getConfiguredAnimationMode", "AnimationMode", "attachConfigurationReset", "createOrUpdateStyle", "curAnimationMode", "applyAnimationMode", "animationMode", "getAnimationMode", "setAnimationMode"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";const e={version:"2.26.0-rc.0",major:2,minor:26,patch:0,suffix:"-rc.0",isNext:!1,buildTime:1786722938};export default e;
1
+ "use strict";const e={version:"2.26.0",major:2,minor:26,patch:0,suffix:"",isNext:!1,buildTime:1787742407};export default e;
2
2
  //# sourceMappingURL=VersionInfo.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/generated/VersionInfo.ts"],
4
- "sourcesContent": ["const VersionInfo = {\n\tversion: \"2.26.0-rc.0\",\n\tmajor: 2,\n\tminor: 26,\n\tpatch: 0,\n\tsuffix: \"-rc.0\",\n\tisNext: false,\n\tbuildTime: 1786722938,\n};\nexport default VersionInfo;"],
5
- "mappings": "aAAA,MAAMA,EAAc,CACnB,QAAS,cACT,MAAO,EACP,MAAO,GACP,MAAO,EACP,OAAQ,QACR,OAAQ,GACR,UAAW,UACZ,EACA,eAAeA",
4
+ "sourcesContent": ["const VersionInfo = {\n\tversion: \"2.26.0\",\n\tmajor: 2,\n\tminor: 26,\n\tpatch: 0,\n\tsuffix: \"\",\n\tisNext: false,\n\tbuildTime: 1787742407,\n};\nexport default VersionInfo;"],
5
+ "mappings": "aAAA,MAAMA,EAAc,CACnB,QAAS,SACT,MAAO,EACP,MAAO,GACP,MAAO,EACP,OAAQ,GACR,OAAQ,GACR,UAAW,UACZ,EACA,eAAeA",
6
6
  "names": ["VersionInfo"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ "use strict";export default"@container style(--_ui5-animation-mode:none){*{transition-duration:0s!important;animation-duration:0s!important}}";
2
+ //# sourceMappingURL=CommonStyles.css.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/generated/css/CommonStyles.css.ts"],
4
+ "sourcesContent": ["export default `@container style(--_ui5-animation-mode:none){*{transition-duration:0s!important;animation-duration:0s!important}}`;"],
5
+ "mappings": "aAAA,cAAe",
6
+ "names": []
7
+ }
@@ -22,7 +22,7 @@ import "../../ui/thirdparty/caja-html-sanitizer.js";
22
22
  * @private
23
23
  */
24
24
  var fnSanitizeHTML = function (sHTML, mOptions) {
25
- assert(window.html && window.html.sanitize, "Sanitizer should have been loaded");
25
+ assert(globalThis.html && globalThis.html.sanitize, "Sanitizer should have been loaded");
26
26
  mOptions = mOptions || {
27
27
  uriRewriter: function (sUrl) {
28
28
  // by default, we use the URLListValidator to check the URLs
@@ -32,7 +32,7 @@ var fnSanitizeHTML = function (sHTML, mOptions) {
32
32
  }
33
33
  }
34
34
  };
35
- var oTagPolicy = mOptions.tagPolicy || window.html.makeTagPolicy(mOptions.uriRewriter, mOptions.tokenPolicy);
36
- return window.html.sanitizeWithPolicy(sHTML, oTagPolicy);
35
+ var oTagPolicy = mOptions.tagPolicy || globalThis.html.makeTagPolicy(mOptions.uriRewriter, mOptions.tokenPolicy);
36
+ return globalThis.html.sanitizeWithPolicy(sHTML, oTagPolicy);
37
37
  };
38
38
  export default fnSanitizeHTML;
@@ -1,3 +1,4 @@
1
- "use strict";const t=new Map;let e;const n=()=>(e||(e=new CSSStyleSheet),e),r=(o,s)=>{t.set(o,s);const S=Array.from(t.values()).join(`
2
- `);n().replaceSync(S)};export{n as getComponentStyles,r as updateComponentStyles};
1
+ "use strict";import S from"../generated/css/CommonStyles.css.js";const e=new Map;e.set("ui5-common-component-styles",S);let t;const n=()=>(t||(t=new CSSStyleSheet,t.replaceSync(Array.from(e.values()).join(`
2
+ `))),t),c=(o,s)=>{e.set(o,s);const r=Array.from(e.values()).join(`
3
+ `);n().replaceSync(r)};export{n as getComponentStyles,c as updateComponentStyles};
3
4
  //# sourceMappingURL=componentStyles.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/theming/componentStyles.ts"],
4
- "sourcesContent": ["const packageMap = new Map<string, string>();\nlet componentsStyleSheet: CSSStyleSheet;\n\nconst getComponentStyles = () => {\n\tif (!componentsStyleSheet) {\n\t\tcomponentsStyleSheet = new CSSStyleSheet();\n\t}\n\n\treturn componentsStyleSheet;\n};\n\nconst updateComponentStyles = (packageName: string, content: string) => {\n\tpackageMap.set(packageName, content);\n\n\tconst combinedStyles = Array.from(packageMap.values()).join(\"\\n\");\n\tgetComponentStyles().replaceSync(combinedStyles);\n};\n\nexport {\n\tgetComponentStyles,\n\tupdateComponentStyles,\n};\n"],
5
- "mappings": "aAAA,MAAMA,EAAa,IAAI,IACvB,IAAIC,EAEJ,MAAMC,EAAqB,KACrBD,IACJA,EAAuB,IAAI,eAGrBA,GAGFE,EAAwB,CAACC,EAAqBC,IAAoB,CACvEL,EAAW,IAAII,EAAaC,CAAO,EAEnC,MAAMC,EAAiB,MAAM,KAAKN,EAAW,OAAO,CAAC,EAAE,KAAK;AAAA,CAAI,EAChEE,EAAmB,EAAE,YAAYI,CAAc,CAChD,EAEA,OACCJ,KAAA,mBACAC,KAAA",
6
- "names": ["packageMap", "componentsStyleSheet", "getComponentStyles", "updateComponentStyles", "packageName", "content", "combinedStyles"]
4
+ "sourcesContent": ["import CommonStylesCss from \"../generated/css/CommonStyles.css.js\";\n\nconst packageMap = new Map<string, string>();\n\npackageMap.set(\"ui5-common-component-styles\", CommonStylesCss);\n\nlet componentsStyleSheet: CSSStyleSheet;\n\nconst getComponentStyles = () => {\n\tif (!componentsStyleSheet) {\n\t\tcomponentsStyleSheet = new CSSStyleSheet();\n\t\tcomponentsStyleSheet.replaceSync(Array.from(packageMap.values()).join(\"\\n\"));\n\t}\n\n\treturn componentsStyleSheet;\n};\n\nconst updateComponentStyles = (packageName: string, content: string) => {\n\tpackageMap.set(packageName, content);\n\n\tconst combinedStyles = Array.from(packageMap.values()).join(\"\\n\");\n\tgetComponentStyles().replaceSync(combinedStyles);\n};\n\nexport {\n\tgetComponentStyles,\n\tupdateComponentStyles,\n};\n"],
5
+ "mappings": "aAAA,OAAOA,MAAqB,uCAE5B,MAAMC,EAAa,IAAI,IAEvBA,EAAW,IAAI,8BAA+BD,CAAe,EAE7D,IAAIE,EAEJ,MAAMC,EAAqB,KACrBD,IACJA,EAAuB,IAAI,cAC3BA,EAAqB,YAAY,MAAM,KAAKD,EAAW,OAAO,CAAC,EAAE,KAAK;AAAA,CAAI,CAAC,GAGrEC,GAGFE,EAAwB,CAACC,EAAqBC,IAAoB,CACvEL,EAAW,IAAII,EAAaC,CAAO,EAEnC,MAAMC,EAAiB,MAAM,KAAKN,EAAW,OAAO,CAAC,EAAE,KAAK;AAAA,CAAI,EAChEE,EAAmB,EAAE,YAAYI,CAAc,CAChD,EAEA,OACCJ,KAAA,mBACAC,KAAA",
6
+ "names": ["CommonStylesCss", "packageMap", "componentsStyleSheet", "getComponentStyles", "updateComponentStyles", "packageName", "content", "combinedStyles"]
7
7
  }
@@ -1,2 +1,2 @@
1
- "use strict";import a from"../types/InvisibleMessageMode.js";import o from"./getSingletonElementInstance.js";import{attachBoot as r}from"../Boot.js";let t,n;const l=e=>{e.style.position="absolute",e.style.clip="rect(1px,1px,1px,1px)",e.style.userSelect="none",e.style.left="-1000px",e.style.top="-1000px",e.style.pointerEvents="none"};r(()=>{t&&n||(t=document.createElement("span"),n=document.createElement("span"),t.classList.add("ui5-invisiblemessage-polite"),n.classList.add("ui5-invisiblemessage-assertive"),t.setAttribute("aria-live","polite"),n.setAttribute("aria-live","assertive"),t.setAttribute("role","alert"),n.setAttribute("role","alert"),l(t),l(n),o("ui5-announcement-area").appendChild(t),o("ui5-announcement-area").appendChild(n))});const p=(e,s)=>{const i=s===a.Assertive?n:t;i.textContent="",i.textContent=e,s!==a.Assertive&&s!==a.Polite&&console.warn('You have entered an invalid mode. Valid values are: "Polite" and "Assertive". The framework will automatically set the mode to "Polite".'),setTimeout(()=>{i.textContent===e&&(i.textContent="")},3e3)};export default p;
1
+ "use strict";import r from"../types/InvisibleMessageMode.js";import c from"./getSingletonElementInstance.js";import{attachBoot as m}from"../Boot.js";let o;const s=[],l=e=>{e.style.position="absolute",e.style.clip="rect(1px,1px,1px,1px)",e.style.userSelect="none",e.style.left="-1000px",e.style.top="-1000px",e.style.pointerEvents="none"},p=()=>{const e=document.createElement("span"),t=document.createElement("span");return e.classList.add("ui5-invisiblemessage-polite"),t.classList.add("ui5-invisiblemessage-assertive"),e.setAttribute("aria-live","polite"),t.setAttribute("aria-live","assertive"),e.setAttribute("role","alert"),t.setAttribute("role","alert"),l(e),l(t),{polite:e,assertive:t}};m(()=>{if(o)return;o=p();const e=c("ui5-announcement-area");e.appendChild(o.polite),e.appendChild(o.assertive)});const u=e=>{if(s.some(n=>n.container===e))return;const t=p();e.appendChild(t.polite),e.appendChild(t.assertive),s.push({container:e,spans:t})},d=e=>{const t=s.findIndex(i=>i.container===e);if(t===-1)return;const[n]=s.splice(t,1);n.spans.polite.remove(),n.spans.assertive.remove()},v=(e,t)=>{let n=o;for(let a=s.length-1;a>=0;a--)if(s[a].container.isConnected){n=s[a].spans;break}const i=t===r.Assertive?n.assertive:n.polite;i.textContent="",i.textContent=e,t!==r.Assertive&&t!==r.Polite&&console.warn('You have entered an invalid mode. Valid values are: "Polite" and "Assertive". The framework will automatically set the mode to "Polite".'),setTimeout(()=>{i.textContent===e&&(i.textContent="")},3e3)};export default v;export{u as registerInvisibleMessageRegion,d as deregisterInvisibleMessageRegion};
2
2
  //# sourceMappingURL=InvisibleMessage.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/util/InvisibleMessage.ts"],
4
- "sourcesContent": ["import InvisibleMessageMode from \"../types/InvisibleMessageMode.js\";\nimport getSingletonElementInstance from \"./getSingletonElementInstance.js\";\nimport { attachBoot } from \"../Boot.js\";\n\nlet politeSpan: HTMLElement;\nlet assertiveSpan: HTMLElement;\n\nconst setOutOfViewportStyles = (el: HTMLElement) => {\n\tel.style.position = \"absolute\";\n\tel.style.clip = \"rect(1px,1px,1px,1px)\";\n\tel.style.userSelect = \"none\";\n\tel.style.left = \"-1000px\";\n\tel.style.top = \"-1000px\";\n\tel.style.pointerEvents = \"none\";\n};\n\nattachBoot(() => {\n\tif (politeSpan && assertiveSpan) {\n\t\treturn;\n\t}\n\n\tpoliteSpan = document.createElement(\"span\");\n\tassertiveSpan = document.createElement(\"span\");\n\n\tpoliteSpan.classList.add(\"ui5-invisiblemessage-polite\");\n\tassertiveSpan.classList.add(\"ui5-invisiblemessage-assertive\");\n\n\tpoliteSpan.setAttribute(\"aria-live\", \"polite\");\n\tassertiveSpan.setAttribute(\"aria-live\", \"assertive\");\n\n\tpoliteSpan.setAttribute(\"role\", \"alert\");\n\tassertiveSpan.setAttribute(\"role\", \"alert\");\n\n\tsetOutOfViewportStyles(politeSpan);\n\tsetOutOfViewportStyles(assertiveSpan);\n\n\tgetSingletonElementInstance(\"ui5-announcement-area\").appendChild(politeSpan);\n\tgetSingletonElementInstance(\"ui5-announcement-area\").appendChild(assertiveSpan);\n});\n\n/**\n * Inserts the string into the respective span, depending on the mode provided.\n *\n * @param { string } message String to be announced by the screen reader.\n * @param { InvisibleMessageMode } mode The mode to be inserted in the aria-live attribute.\n * @public\n */\nconst announce = (message: string, mode: InvisibleMessageMode) => {\n\t// If no type is presented, fallback to polite announcement.\n\tconst span = mode === InvisibleMessageMode.Assertive ? assertiveSpan : politeSpan;\n\n\t// Set textContent to empty string in order to trigger screen reader's announcement.\n\tspan.textContent = \"\";\n\tspan.textContent = message;\n\n\tif (mode !== InvisibleMessageMode.Assertive && mode !== InvisibleMessageMode.Polite) {\n\t\tconsole.warn(`You have entered an invalid mode. Valid values are: \"Polite\" and \"Assertive\". The framework will automatically set the mode to \"Polite\".`); // eslint-disable-line\n\t}\n\n\t// clear the span in order to avoid reading it out while in JAWS reading node\n\tsetTimeout(() => {\n\t\t// ensure that we clear the text node only if no announce is made in the meantime\n\t\tif (span.textContent === message) {\n\t\t\tspan.textContent = \"\";\n\t\t}\n\t}, 3000);\n};\n\nexport default announce;\n"],
5
- "mappings": "aAAA,OAAOA,MAA0B,mCACjC,OAAOC,MAAiC,mCACxC,OAAS,cAAAC,MAAkB,aAE3B,IAAIC,EACAC,EAEJ,MAAMC,EAA0BC,GAAoB,CACnDA,EAAG,MAAM,SAAW,WACpBA,EAAG,MAAM,KAAO,wBAChBA,EAAG,MAAM,WAAa,OACtBA,EAAG,MAAM,KAAO,UAChBA,EAAG,MAAM,IAAM,UACfA,EAAG,MAAM,cAAgB,MAC1B,EAEAJ,EAAW,IAAM,CACZC,GAAcC,IAIlBD,EAAa,SAAS,cAAc,MAAM,EAC1CC,EAAgB,SAAS,cAAc,MAAM,EAE7CD,EAAW,UAAU,IAAI,6BAA6B,EACtDC,EAAc,UAAU,IAAI,gCAAgC,EAE5DD,EAAW,aAAa,YAAa,QAAQ,EAC7CC,EAAc,aAAa,YAAa,WAAW,EAEnDD,EAAW,aAAa,OAAQ,OAAO,EACvCC,EAAc,aAAa,OAAQ,OAAO,EAE1CC,EAAuBF,CAAU,EACjCE,EAAuBD,CAAa,EAEpCH,EAA4B,uBAAuB,EAAE,YAAYE,CAAU,EAC3EF,EAA4B,uBAAuB,EAAE,YAAYG,CAAa,EAC/E,CAAC,EASD,MAAMG,EAAW,CAACC,EAAiBC,IAA+B,CAEjE,MAAMC,EAAOD,IAAST,EAAqB,UAAYI,EAAgBD,EAGvEO,EAAK,YAAc,GACnBA,EAAK,YAAcF,EAEfC,IAAST,EAAqB,WAAaS,IAAST,EAAqB,QAC5E,QAAQ,KAAK,0IAA0I,EAIxJ,WAAW,IAAM,CAEZU,EAAK,cAAgBF,IACxBE,EAAK,YAAc,GAErB,EAAG,GAAI,CACR,EAEA,eAAeH",
6
- "names": ["InvisibleMessageMode", "getSingletonElementInstance", "attachBoot", "politeSpan", "assertiveSpan", "setOutOfViewportStyles", "el", "announce", "message", "mode", "span"]
4
+ "sourcesContent": ["import InvisibleMessageMode from \"../types/InvisibleMessageMode.js\";\nimport getSingletonElementInstance from \"./getSingletonElementInstance.js\";\nimport { attachBoot } from \"../Boot.js\";\n\ntype AnnouncementSpans = {\n\tpolite: HTMLElement;\n\tassertive: HTMLElement;\n};\n\nlet defaultSpans: AnnouncementSpans;\n\nconst regions: Array<{ container: HTMLElement, spans: AnnouncementSpans }> = [];\n\nconst setOutOfViewportStyles = (el: HTMLElement) => {\n\tel.style.position = \"absolute\";\n\tel.style.clip = \"rect(1px,1px,1px,1px)\";\n\tel.style.userSelect = \"none\";\n\tel.style.left = \"-1000px\";\n\tel.style.top = \"-1000px\";\n\tel.style.pointerEvents = \"none\";\n};\n\n/**\n * Creates a pair of off-viewport aria-live spans (polite and assertive) to be used for screen reader announcements.\n */\nconst createAnnouncementSpans = (): AnnouncementSpans => {\n\tconst politeSpan = document.createElement(\"span\");\n\tconst assertiveSpan = document.createElement(\"span\");\n\n\tpoliteSpan.classList.add(\"ui5-invisiblemessage-polite\");\n\tassertiveSpan.classList.add(\"ui5-invisiblemessage-assertive\");\n\n\tpoliteSpan.setAttribute(\"aria-live\", \"polite\");\n\tassertiveSpan.setAttribute(\"aria-live\", \"assertive\");\n\n\tpoliteSpan.setAttribute(\"role\", \"alert\");\n\tassertiveSpan.setAttribute(\"role\", \"alert\");\n\n\tsetOutOfViewportStyles(politeSpan);\n\tsetOutOfViewportStyles(assertiveSpan);\n\n\treturn { polite: politeSpan, assertive: assertiveSpan };\n};\n\nattachBoot(() => {\n\tif (defaultSpans) {\n\t\treturn;\n\t}\n\n\tdefaultSpans = createAnnouncementSpans();\n\n\tconst announcementArea = getSingletonElementInstance(\"ui5-announcement-area\");\n\tannouncementArea.appendChild(defaultSpans.polite);\n\tannouncementArea.appendChild(defaultSpans.assertive);\n});\n\n/**\n * Registers an element as an aria-live region container. A pair of hidden aria-live spans (polite and assertive)\n * is created inside the provided container, and subsequent announcements are routed there while it stays registered.\n *\n * This is used to render the aria-live region inside a dialog/popover, so that announcements made while a modal\n * popup is open (and the screen reader's accessibility tree is scoped to the popup's subtree) are still read out.\n *\n * @param { HTMLElement } container The element that will host the aria-live spans.\n * @public\n */\nconst registerInvisibleMessageRegion = (container: HTMLElement) => {\n\tif (regions.some(region => region.container === container)) {\n\t\treturn;\n\t}\n\n\tconst spans = createAnnouncementSpans();\n\tcontainer.appendChild(spans.polite);\n\tcontainer.appendChild(spans.assertive);\n\n\tregions.push({ container, spans });\n};\n\n/**\n * Deregisters a previously registered aria-live region container, removing its aria-live spans.\n * After deregistration, announcements are routed to the next registered region, or to the default\n * body-level region if none remain.\n *\n * @param { HTMLElement } container The element that was previously registered via `registerInvisibleMessageRegion`.\n * @public\n */\nconst deregisterInvisibleMessageRegion = (container: HTMLElement) => {\n\tconst index = regions.findIndex(region => region.container === container);\n\tif (index === -1) {\n\t\treturn;\n\t}\n\n\tconst [region] = regions.splice(index, 1);\n\tregion.spans.polite.remove();\n\tregion.spans.assertive.remove();\n};\n\n/**\n * Inserts the string into the respective span, depending on the mode provided.\n *\n * @param { string } message String to be announced by the screen reader.\n * @param { InvisibleMessageMode } mode The mode to be inserted in the aria-live attribute.\n * @public\n */\nconst announce = (message: string, mode: InvisibleMessageMode) => {\n\tlet target = defaultSpans;\n\tfor (let i = regions.length - 1; i >= 0; i--) {\n\t\tif (regions[i].container.isConnected) {\n\t\t\ttarget = regions[i].spans;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// If no type is presented, fallback to polite announcement.\n\tconst span = mode === InvisibleMessageMode.Assertive ? target.assertive : target.polite;\n\n\t// Set textContent to empty string in order to trigger screen reader's announcement.\n\tspan.textContent = \"\";\n\tspan.textContent = message;\n\n\tif (mode !== InvisibleMessageMode.Assertive && mode !== InvisibleMessageMode.Polite) {\n\t\tconsole.warn(`You have entered an invalid mode. Valid values are: \"Polite\" and \"Assertive\". The framework will automatically set the mode to \"Polite\".`); // eslint-disable-line\n\t}\n\n\t// clear the span in order to avoid reading it out while in JAWS reading node\n\tsetTimeout(() => {\n\t\t// ensure that we clear the text node only if no announce is made in the meantime\n\t\tif (span.textContent === message) {\n\t\t\tspan.textContent = \"\";\n\t\t}\n\t}, 3000);\n};\n\nexport default announce;\nexport {\n\tregisterInvisibleMessageRegion,\n\tderegisterInvisibleMessageRegion,\n};\n"],
5
+ "mappings": "aAAA,OAAOA,MAA0B,mCACjC,OAAOC,MAAiC,mCACxC,OAAS,cAAAC,MAAkB,aAO3B,IAAIC,EAEJ,MAAMC,EAAuE,CAAC,EAExEC,EAA0BC,GAAoB,CACnDA,EAAG,MAAM,SAAW,WACpBA,EAAG,MAAM,KAAO,wBAChBA,EAAG,MAAM,WAAa,OACtBA,EAAG,MAAM,KAAO,UAChBA,EAAG,MAAM,IAAM,UACfA,EAAG,MAAM,cAAgB,MAC1B,EAKMC,EAA0B,IAAyB,CACxD,MAAMC,EAAa,SAAS,cAAc,MAAM,EAC1CC,EAAgB,SAAS,cAAc,MAAM,EAEnD,OAAAD,EAAW,UAAU,IAAI,6BAA6B,EACtDC,EAAc,UAAU,IAAI,gCAAgC,EAE5DD,EAAW,aAAa,YAAa,QAAQ,EAC7CC,EAAc,aAAa,YAAa,WAAW,EAEnDD,EAAW,aAAa,OAAQ,OAAO,EACvCC,EAAc,aAAa,OAAQ,OAAO,EAE1CJ,EAAuBG,CAAU,EACjCH,EAAuBI,CAAa,EAE7B,CAAE,OAAQD,EAAY,UAAWC,CAAc,CACvD,EAEAP,EAAW,IAAM,CAChB,GAAIC,EACH,OAGDA,EAAeI,EAAwB,EAEvC,MAAMG,EAAmBT,EAA4B,uBAAuB,EAC5ES,EAAiB,YAAYP,EAAa,MAAM,EAChDO,EAAiB,YAAYP,EAAa,SAAS,CACpD,CAAC,EAYD,MAAMQ,EAAkCC,GAA2B,CAClE,GAAIR,EAAQ,KAAKS,GAAUA,EAAO,YAAcD,CAAS,EACxD,OAGD,MAAME,EAAQP,EAAwB,EACtCK,EAAU,YAAYE,EAAM,MAAM,EAClCF,EAAU,YAAYE,EAAM,SAAS,EAErCV,EAAQ,KAAK,CAAE,UAAAQ,EAAW,MAAAE,CAAM,CAAC,CAClC,EAUMC,EAAoCH,GAA2B,CACpE,MAAMI,EAAQZ,EAAQ,UAAUS,GAAUA,EAAO,YAAcD,CAAS,EACxE,GAAII,IAAU,GACb,OAGD,KAAM,CAACH,CAAM,EAAIT,EAAQ,OAAOY,EAAO,CAAC,EACxCH,EAAO,MAAM,OAAO,OAAO,EAC3BA,EAAO,MAAM,UAAU,OAAO,CAC/B,EASMI,EAAW,CAACC,EAAiBC,IAA+B,CACjE,IAAIC,EAASjB,EACb,QAASkB,EAAIjB,EAAQ,OAAS,EAAGiB,GAAK,EAAGA,IACxC,GAAIjB,EAAQiB,CAAC,EAAE,UAAU,YAAa,CACrCD,EAAShB,EAAQiB,CAAC,EAAE,MACpB,KACD,CAID,MAAMC,EAAOH,IAASnB,EAAqB,UAAYoB,EAAO,UAAYA,EAAO,OAGjFE,EAAK,YAAc,GACnBA,EAAK,YAAcJ,EAEfC,IAASnB,EAAqB,WAAamB,IAASnB,EAAqB,QAC5E,QAAQ,KAAK,0IAA0I,EAIxJ,WAAW,IAAM,CAEZsB,EAAK,cAAgBJ,IACxBI,EAAK,YAAc,GAErB,EAAG,GAAI,CACR,EAEA,eAAeL,EACf,OACCN,KAAA,+BACAI,KAAA",
6
+ "names": ["InvisibleMessageMode", "getSingletonElementInstance", "attachBoot", "defaultSpans", "regions", "setOutOfViewportStyles", "el", "createAnnouncementSpans", "politeSpan", "assertiveSpan", "announcementArea", "registerInvisibleMessageRegion", "container", "region", "spans", "deregisterInvisibleMessageRegion", "index", "announce", "message", "mode", "target", "i", "span"]
7
7
  }
@@ -22,7 +22,7 @@ import "../../ui/thirdparty/caja-html-sanitizer.js";
22
22
  * @private
23
23
  */
24
24
  var fnSanitizeHTML = function (sHTML, mOptions) {
25
- assert(window.html && window.html.sanitize, "Sanitizer should have been loaded");
25
+ assert(globalThis.html && globalThis.html.sanitize, "Sanitizer should have been loaded");
26
26
  mOptions = mOptions || {
27
27
  uriRewriter: function (sUrl) {
28
28
  // by default, we use the URLListValidator to check the URLs
@@ -32,7 +32,7 @@ var fnSanitizeHTML = function (sHTML, mOptions) {
32
32
  }
33
33
  }
34
34
  };
35
- var oTagPolicy = mOptions.tagPolicy || window.html.makeTagPolicy(mOptions.uriRewriter, mOptions.tokenPolicy);
36
- return window.html.sanitizeWithPolicy(sHTML, oTagPolicy);
35
+ var oTagPolicy = mOptions.tagPolicy || globalThis.html.makeTagPolicy(mOptions.uriRewriter, mOptions.tokenPolicy);
36
+ return globalThis.html.sanitizeWithPolicy(sHTML, oTagPolicy);
37
37
  };
38
38
  export default fnSanitizeHTML;
@@ -1,8 +1,11 @@
1
+ import CommonStylesCss from "../generated/css/CommonStyles.css.js";
1
2
  const packageMap = new Map();
3
+ packageMap.set("ui5-common-component-styles", CommonStylesCss);
2
4
  let componentsStyleSheet;
3
5
  const getComponentStyles = () => {
4
6
  if (!componentsStyleSheet) {
5
7
  componentsStyleSheet = new CSSStyleSheet();
8
+ componentsStyleSheet.replaceSync(Array.from(packageMap.values()).join("\n"));
6
9
  }
7
10
  return componentsStyleSheet;
8
11
  };
@@ -1 +1 @@
1
- {"version":3,"file":"componentStyles.js","sourceRoot":"","sources":["../../src/theming/componentStyles.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;AAC7C,IAAI,oBAAmC,CAAC;AAExC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IAC/B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC3B,oBAAoB,GAAG,IAAI,aAAa,EAAE,CAAC;IAC5C,CAAC;IAED,OAAO,oBAAoB,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,WAAmB,EAAE,OAAe,EAAE,EAAE;IACtE,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAErC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,kBAAkB,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,OAAO,EACN,kBAAkB,EAClB,qBAAqB,GACrB,CAAC","sourcesContent":["const packageMap = new Map<string, string>();\nlet componentsStyleSheet: CSSStyleSheet;\n\nconst getComponentStyles = () => {\n\tif (!componentsStyleSheet) {\n\t\tcomponentsStyleSheet = new CSSStyleSheet();\n\t}\n\n\treturn componentsStyleSheet;\n};\n\nconst updateComponentStyles = (packageName: string, content: string) => {\n\tpackageMap.set(packageName, content);\n\n\tconst combinedStyles = Array.from(packageMap.values()).join(\"\\n\");\n\tgetComponentStyles().replaceSync(combinedStyles);\n};\n\nexport {\n\tgetComponentStyles,\n\tupdateComponentStyles,\n};\n"]}
1
+ {"version":3,"file":"componentStyles.js","sourceRoot":"","sources":["../../src/theming/componentStyles.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,MAAM,sCAAsC,CAAC;AAEnE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE7C,UAAU,CAAC,GAAG,CAAC,6BAA6B,EAAE,eAAe,CAAC,CAAC;AAE/D,IAAI,oBAAmC,CAAC;AAExC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IAC/B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC3B,oBAAoB,GAAG,IAAI,aAAa,EAAE,CAAC;QAC3C,oBAAoB,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,oBAAoB,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,WAAmB,EAAE,OAAe,EAAE,EAAE;IACtE,UAAU,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAErC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,kBAAkB,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;AAClD,CAAC,CAAC;AAEF,OAAO,EACN,kBAAkB,EAClB,qBAAqB,GACrB,CAAC","sourcesContent":["import CommonStylesCss from \"../generated/css/CommonStyles.css.js\";\n\nconst packageMap = new Map<string, string>();\n\npackageMap.set(\"ui5-common-component-styles\", CommonStylesCss);\n\nlet componentsStyleSheet: CSSStyleSheet;\n\nconst getComponentStyles = () => {\n\tif (!componentsStyleSheet) {\n\t\tcomponentsStyleSheet = new CSSStyleSheet();\n\t\tcomponentsStyleSheet.replaceSync(Array.from(packageMap.values()).join(\"\\n\"));\n\t}\n\n\treturn componentsStyleSheet;\n};\n\nconst updateComponentStyles = (packageName: string, content: string) => {\n\tpackageMap.set(packageName, content);\n\n\tconst combinedStyles = Array.from(packageMap.values()).join(\"\\n\");\n\tgetComponentStyles().replaceSync(combinedStyles);\n};\n\nexport {\n\tgetComponentStyles,\n\tupdateComponentStyles,\n};\n"]}
@@ -1,4 +1,24 @@
1
1
  import InvisibleMessageMode from "../types/InvisibleMessageMode.js";
2
+ /**
3
+ * Registers an element as an aria-live region container. A pair of hidden aria-live spans (polite and assertive)
4
+ * is created inside the provided container, and subsequent announcements are routed there while it stays registered.
5
+ *
6
+ * This is used to render the aria-live region inside a dialog/popover, so that announcements made while a modal
7
+ * popup is open (and the screen reader's accessibility tree is scoped to the popup's subtree) are still read out.
8
+ *
9
+ * @param { HTMLElement } container The element that will host the aria-live spans.
10
+ * @public
11
+ */
12
+ declare const registerInvisibleMessageRegion: (container: HTMLElement) => void;
13
+ /**
14
+ * Deregisters a previously registered aria-live region container, removing its aria-live spans.
15
+ * After deregistration, announcements are routed to the next registered region, or to the default
16
+ * body-level region if none remain.
17
+ *
18
+ * @param { HTMLElement } container The element that was previously registered via `registerInvisibleMessageRegion`.
19
+ * @public
20
+ */
21
+ declare const deregisterInvisibleMessageRegion: (container: HTMLElement) => void;
2
22
  /**
3
23
  * Inserts the string into the respective span, depending on the mode provided.
4
24
  *
@@ -8,3 +28,4 @@ import InvisibleMessageMode from "../types/InvisibleMessageMode.js";
8
28
  */
9
29
  declare const announce: (message: string, mode: InvisibleMessageMode) => void;
10
30
  export default announce;
31
+ export { registerInvisibleMessageRegion, deregisterInvisibleMessageRegion, };
@@ -1,8 +1,8 @@
1
1
  import InvisibleMessageMode from "../types/InvisibleMessageMode.js";
2
2
  import getSingletonElementInstance from "./getSingletonElementInstance.js";
3
3
  import { attachBoot } from "../Boot.js";
4
- let politeSpan;
5
- let assertiveSpan;
4
+ let defaultSpans;
5
+ const regions = [];
6
6
  const setOutOfViewportStyles = (el) => {
7
7
  el.style.position = "absolute";
8
8
  el.style.clip = "rect(1px,1px,1px,1px)";
@@ -11,12 +11,12 @@ const setOutOfViewportStyles = (el) => {
11
11
  el.style.top = "-1000px";
12
12
  el.style.pointerEvents = "none";
13
13
  };
14
- attachBoot(() => {
15
- if (politeSpan && assertiveSpan) {
16
- return;
17
- }
18
- politeSpan = document.createElement("span");
19
- assertiveSpan = document.createElement("span");
14
+ /**
15
+ * Creates a pair of off-viewport aria-live spans (polite and assertive) to be used for screen reader announcements.
16
+ */
17
+ const createAnnouncementSpans = () => {
18
+ const politeSpan = document.createElement("span");
19
+ const assertiveSpan = document.createElement("span");
20
20
  politeSpan.classList.add("ui5-invisiblemessage-polite");
21
21
  assertiveSpan.classList.add("ui5-invisiblemessage-assertive");
22
22
  politeSpan.setAttribute("aria-live", "polite");
@@ -25,9 +25,53 @@ attachBoot(() => {
25
25
  assertiveSpan.setAttribute("role", "alert");
26
26
  setOutOfViewportStyles(politeSpan);
27
27
  setOutOfViewportStyles(assertiveSpan);
28
- getSingletonElementInstance("ui5-announcement-area").appendChild(politeSpan);
29
- getSingletonElementInstance("ui5-announcement-area").appendChild(assertiveSpan);
28
+ return { polite: politeSpan, assertive: assertiveSpan };
29
+ };
30
+ attachBoot(() => {
31
+ if (defaultSpans) {
32
+ return;
33
+ }
34
+ defaultSpans = createAnnouncementSpans();
35
+ const announcementArea = getSingletonElementInstance("ui5-announcement-area");
36
+ announcementArea.appendChild(defaultSpans.polite);
37
+ announcementArea.appendChild(defaultSpans.assertive);
30
38
  });
39
+ /**
40
+ * Registers an element as an aria-live region container. A pair of hidden aria-live spans (polite and assertive)
41
+ * is created inside the provided container, and subsequent announcements are routed there while it stays registered.
42
+ *
43
+ * This is used to render the aria-live region inside a dialog/popover, so that announcements made while a modal
44
+ * popup is open (and the screen reader's accessibility tree is scoped to the popup's subtree) are still read out.
45
+ *
46
+ * @param { HTMLElement } container The element that will host the aria-live spans.
47
+ * @public
48
+ */
49
+ const registerInvisibleMessageRegion = (container) => {
50
+ if (regions.some(region => region.container === container)) {
51
+ return;
52
+ }
53
+ const spans = createAnnouncementSpans();
54
+ container.appendChild(spans.polite);
55
+ container.appendChild(spans.assertive);
56
+ regions.push({ container, spans });
57
+ };
58
+ /**
59
+ * Deregisters a previously registered aria-live region container, removing its aria-live spans.
60
+ * After deregistration, announcements are routed to the next registered region, or to the default
61
+ * body-level region if none remain.
62
+ *
63
+ * @param { HTMLElement } container The element that was previously registered via `registerInvisibleMessageRegion`.
64
+ * @public
65
+ */
66
+ const deregisterInvisibleMessageRegion = (container) => {
67
+ const index = regions.findIndex(region => region.container === container);
68
+ if (index === -1) {
69
+ return;
70
+ }
71
+ const [region] = regions.splice(index, 1);
72
+ region.spans.polite.remove();
73
+ region.spans.assertive.remove();
74
+ };
31
75
  /**
32
76
  * Inserts the string into the respective span, depending on the mode provided.
33
77
  *
@@ -36,8 +80,15 @@ attachBoot(() => {
36
80
  * @public
37
81
  */
38
82
  const announce = (message, mode) => {
83
+ let target = defaultSpans;
84
+ for (let i = regions.length - 1; i >= 0; i--) {
85
+ if (regions[i].container.isConnected) {
86
+ target = regions[i].spans;
87
+ break;
88
+ }
89
+ }
39
90
  // If no type is presented, fallback to polite announcement.
40
- const span = mode === InvisibleMessageMode.Assertive ? assertiveSpan : politeSpan;
91
+ const span = mode === InvisibleMessageMode.Assertive ? target.assertive : target.polite;
41
92
  // Set textContent to empty string in order to trigger screen reader's announcement.
42
93
  span.textContent = "";
43
94
  span.textContent = message;
@@ -53,4 +104,5 @@ const announce = (message, mode) => {
53
104
  }, 3000);
54
105
  };
55
106
  export default announce;
107
+ export { registerInvisibleMessageRegion, deregisterInvisibleMessageRegion, };
56
108
  //# sourceMappingURL=InvisibleMessage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InvisibleMessage.js","sourceRoot":"","sources":["../../src/util/InvisibleMessage.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,kCAAkC,CAAC;AACpE,OAAO,2BAA2B,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,IAAI,UAAuB,CAAC;AAC5B,IAAI,aAA0B,CAAC;AAE/B,MAAM,sBAAsB,GAAG,CAAC,EAAe,EAAE,EAAE;IAClD,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;IAC/B,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACxC,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;IAC7B,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;IAC1B,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;IACzB,EAAE,CAAC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC;AACjC,CAAC,CAAC;AAEF,UAAU,CAAC,GAAG,EAAE;IACf,IAAI,UAAU,IAAI,aAAa,EAAE,CAAC;QACjC,OAAO;IACR,CAAC;IAED,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAE/C,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IACxD,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAE9D,UAAU,CAAC,YAAY,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC/C,aAAa,CAAC,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAErD,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE5C,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACnC,sBAAsB,CAAC,aAAa,CAAC,CAAC;IAEtC,2BAA2B,CAAC,uBAAuB,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC7E,2BAA2B,CAAC,uBAAuB,CAAC,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;AACjF,CAAC,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,QAAQ,GAAG,CAAC,OAAe,EAAE,IAA0B,EAAE,EAAE;IAChE,4DAA4D;IAC5D,MAAM,IAAI,GAAG,IAAI,KAAK,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC;IAElF,oFAAoF;IACpF,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IACtB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;IAE3B,IAAI,IAAI,KAAK,oBAAoB,CAAC,SAAS,IAAI,IAAI,KAAK,oBAAoB,CAAC,MAAM,EAAE,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,0IAA0I,CAAC,CAAC,CAAC,sBAAsB;IACjL,CAAC;IAED,6EAA6E;IAC7E,UAAU,CAAC,GAAG,EAAE;QACf,iFAAiF;QACjF,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACvB,CAAC;IACF,CAAC,EAAE,IAAI,CAAC,CAAC;AACV,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["import InvisibleMessageMode from \"../types/InvisibleMessageMode.js\";\nimport getSingletonElementInstance from \"./getSingletonElementInstance.js\";\nimport { attachBoot } from \"../Boot.js\";\n\nlet politeSpan: HTMLElement;\nlet assertiveSpan: HTMLElement;\n\nconst setOutOfViewportStyles = (el: HTMLElement) => {\n\tel.style.position = \"absolute\";\n\tel.style.clip = \"rect(1px,1px,1px,1px)\";\n\tel.style.userSelect = \"none\";\n\tel.style.left = \"-1000px\";\n\tel.style.top = \"-1000px\";\n\tel.style.pointerEvents = \"none\";\n};\n\nattachBoot(() => {\n\tif (politeSpan && assertiveSpan) {\n\t\treturn;\n\t}\n\n\tpoliteSpan = document.createElement(\"span\");\n\tassertiveSpan = document.createElement(\"span\");\n\n\tpoliteSpan.classList.add(\"ui5-invisiblemessage-polite\");\n\tassertiveSpan.classList.add(\"ui5-invisiblemessage-assertive\");\n\n\tpoliteSpan.setAttribute(\"aria-live\", \"polite\");\n\tassertiveSpan.setAttribute(\"aria-live\", \"assertive\");\n\n\tpoliteSpan.setAttribute(\"role\", \"alert\");\n\tassertiveSpan.setAttribute(\"role\", \"alert\");\n\n\tsetOutOfViewportStyles(politeSpan);\n\tsetOutOfViewportStyles(assertiveSpan);\n\n\tgetSingletonElementInstance(\"ui5-announcement-area\").appendChild(politeSpan);\n\tgetSingletonElementInstance(\"ui5-announcement-area\").appendChild(assertiveSpan);\n});\n\n/**\n * Inserts the string into the respective span, depending on the mode provided.\n *\n * @param { string } message String to be announced by the screen reader.\n * @param { InvisibleMessageMode } mode The mode to be inserted in the aria-live attribute.\n * @public\n */\nconst announce = (message: string, mode: InvisibleMessageMode) => {\n\t// If no type is presented, fallback to polite announcement.\n\tconst span = mode === InvisibleMessageMode.Assertive ? assertiveSpan : politeSpan;\n\n\t// Set textContent to empty string in order to trigger screen reader's announcement.\n\tspan.textContent = \"\";\n\tspan.textContent = message;\n\n\tif (mode !== InvisibleMessageMode.Assertive && mode !== InvisibleMessageMode.Polite) {\n\t\tconsole.warn(`You have entered an invalid mode. Valid values are: \"Polite\" and \"Assertive\". The framework will automatically set the mode to \"Polite\".`); // eslint-disable-line\n\t}\n\n\t// clear the span in order to avoid reading it out while in JAWS reading node\n\tsetTimeout(() => {\n\t\t// ensure that we clear the text node only if no announce is made in the meantime\n\t\tif (span.textContent === message) {\n\t\t\tspan.textContent = \"\";\n\t\t}\n\t}, 3000);\n};\n\nexport default announce;\n"]}
1
+ {"version":3,"file":"InvisibleMessage.js","sourceRoot":"","sources":["../../src/util/InvisibleMessage.ts"],"names":[],"mappings":"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","sourcesContent":["import InvisibleMessageMode from \"../types/InvisibleMessageMode.js\";\nimport getSingletonElementInstance from \"./getSingletonElementInstance.js\";\nimport { attachBoot } from \"../Boot.js\";\n\ntype AnnouncementSpans = {\n\tpolite: HTMLElement;\n\tassertive: HTMLElement;\n};\n\nlet defaultSpans: AnnouncementSpans;\n\nconst regions: Array<{ container: HTMLElement, spans: AnnouncementSpans }> = [];\n\nconst setOutOfViewportStyles = (el: HTMLElement) => {\n\tel.style.position = \"absolute\";\n\tel.style.clip = \"rect(1px,1px,1px,1px)\";\n\tel.style.userSelect = \"none\";\n\tel.style.left = \"-1000px\";\n\tel.style.top = \"-1000px\";\n\tel.style.pointerEvents = \"none\";\n};\n\n/**\n * Creates a pair of off-viewport aria-live spans (polite and assertive) to be used for screen reader announcements.\n */\nconst createAnnouncementSpans = (): AnnouncementSpans => {\n\tconst politeSpan = document.createElement(\"span\");\n\tconst assertiveSpan = document.createElement(\"span\");\n\n\tpoliteSpan.classList.add(\"ui5-invisiblemessage-polite\");\n\tassertiveSpan.classList.add(\"ui5-invisiblemessage-assertive\");\n\n\tpoliteSpan.setAttribute(\"aria-live\", \"polite\");\n\tassertiveSpan.setAttribute(\"aria-live\", \"assertive\");\n\n\tpoliteSpan.setAttribute(\"role\", \"alert\");\n\tassertiveSpan.setAttribute(\"role\", \"alert\");\n\n\tsetOutOfViewportStyles(politeSpan);\n\tsetOutOfViewportStyles(assertiveSpan);\n\n\treturn { polite: politeSpan, assertive: assertiveSpan };\n};\n\nattachBoot(() => {\n\tif (defaultSpans) {\n\t\treturn;\n\t}\n\n\tdefaultSpans = createAnnouncementSpans();\n\n\tconst announcementArea = getSingletonElementInstance(\"ui5-announcement-area\");\n\tannouncementArea.appendChild(defaultSpans.polite);\n\tannouncementArea.appendChild(defaultSpans.assertive);\n});\n\n/**\n * Registers an element as an aria-live region container. A pair of hidden aria-live spans (polite and assertive)\n * is created inside the provided container, and subsequent announcements are routed there while it stays registered.\n *\n * This is used to render the aria-live region inside a dialog/popover, so that announcements made while a modal\n * popup is open (and the screen reader's accessibility tree is scoped to the popup's subtree) are still read out.\n *\n * @param { HTMLElement } container The element that will host the aria-live spans.\n * @public\n */\nconst registerInvisibleMessageRegion = (container: HTMLElement) => {\n\tif (regions.some(region => region.container === container)) {\n\t\treturn;\n\t}\n\n\tconst spans = createAnnouncementSpans();\n\tcontainer.appendChild(spans.polite);\n\tcontainer.appendChild(spans.assertive);\n\n\tregions.push({ container, spans });\n};\n\n/**\n * Deregisters a previously registered aria-live region container, removing its aria-live spans.\n * After deregistration, announcements are routed to the next registered region, or to the default\n * body-level region if none remain.\n *\n * @param { HTMLElement } container The element that was previously registered via `registerInvisibleMessageRegion`.\n * @public\n */\nconst deregisterInvisibleMessageRegion = (container: HTMLElement) => {\n\tconst index = regions.findIndex(region => region.container === container);\n\tif (index === -1) {\n\t\treturn;\n\t}\n\n\tconst [region] = regions.splice(index, 1);\n\tregion.spans.polite.remove();\n\tregion.spans.assertive.remove();\n};\n\n/**\n * Inserts the string into the respective span, depending on the mode provided.\n *\n * @param { string } message String to be announced by the screen reader.\n * @param { InvisibleMessageMode } mode The mode to be inserted in the aria-live attribute.\n * @public\n */\nconst announce = (message: string, mode: InvisibleMessageMode) => {\n\tlet target = defaultSpans;\n\tfor (let i = regions.length - 1; i >= 0; i--) {\n\t\tif (regions[i].container.isConnected) {\n\t\t\ttarget = regions[i].spans;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// If no type is presented, fallback to polite announcement.\n\tconst span = mode === InvisibleMessageMode.Assertive ? target.assertive : target.polite;\n\n\t// Set textContent to empty string in order to trigger screen reader's announcement.\n\tspan.textContent = \"\";\n\tspan.textContent = message;\n\n\tif (mode !== InvisibleMessageMode.Assertive && mode !== InvisibleMessageMode.Polite) {\n\t\tconsole.warn(`You have entered an invalid mode. Valid values are: \"Polite\" and \"Assertive\". The framework will automatically set the mode to \"Polite\".`); // eslint-disable-line\n\t}\n\n\t// clear the span in order to avoid reading it out while in JAWS reading node\n\tsetTimeout(() => {\n\t\t// ensure that we clear the text node only if no announce is made in the meantime\n\t\tif (span.textContent === message) {\n\t\t\tspan.textContent = \"\";\n\t\t}\n\t}, 3000);\n};\n\nexport default announce;\nexport {\n\tregisterInvisibleMessageRegion,\n\tderegisterInvisibleMessageRegion,\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ui5/webcomponents-base",
3
- "version": "2.26.0-rc.0",
3
+ "version": "2.26.0",
4
4
  "description": "UI5 Web Components: webcomponents.base",
5
5
  "author": "SAP SE (https://www.sap.com)",
6
6
  "license": "Apache-2.0",
@@ -63,10 +63,10 @@
63
63
  },
64
64
  "devDependencies": {
65
65
  "@custom-elements-manifest/analyzer": "^0.10.10",
66
- "@openui5/sap.ui.core": "1.146.0",
66
+ "@openui5/sap.ui.core": "1.151.0",
67
67
  "@sap-theming/theming-base-content": "11.36.4",
68
68
  "@ui5/cypress-internal": "0.1.0",
69
- "@ui5/webcomponents-tools": "2.26.0-rc.0",
69
+ "@ui5/webcomponents-tools": "2.26.0",
70
70
  "clean-css": "^5.2.2",
71
71
  "cypress": "15.18.1",
72
72
  "mocha": "^11.7.2",
@@ -85,5 +85,5 @@
85
85
  }
86
86
  },
87
87
  "customElements": "dist/custom-elements.json",
88
- "gitHead": "112dac3cd0186b3f736f22a467259d8365481fe4"
88
+ "gitHead": "d022f8f0c8b508a5e59cc89d26a19adf316ea3f6"
89
89
  }
@@ -0,0 +1,6 @@
1
+ @container style(--_ui5-animation-mode: none) {
2
+ * {
3
+ transition-duration: 0s !important;
4
+ animation-duration: 0s !important;
5
+ }
6
+ }
@@ -1,22 +0,0 @@
1
- {
2
- "version": 1.1,
3
- "tags": [
4
- {
5
- "name": "ui5element",
6
- "description": "Base class for all UI5 Web Components\n\n\n---\n\n\n\n\n### **Methods:**\n - **attachComponentStateFinalized(callback: _() => void_): _void_** - Attach a callback that will be executed whenever the component's state is finalized\n- **attachInvalidate(callback: _(param: InvalidationInfo) => void_): _void_** - Attach a callback that will be executed whenever the component is invalidated\n- **define(): _typeof UI5Element_** - Registers a UI5 Web Component in the browser window object\n- **detachComponentStateFinalized(callback: _() => void_): _void_** - Detach the callback that is executed whenever the component's state is finalized\n- **detachInvalidate(callback: _(param: InvalidationInfo) => void_): _void_** - Detach the callback that is executed whenever the component is invalidated\n- **fireDecoratorEvent(data: _this[\"eventDetails\"][N] | undefined_, name: _N_): _boolean_** - Fires a custom event, configured via the \"event\" decorator.\n- **focus(focusOptions: _FocusOptions_): _Promise<void>_** - Set the focus to the element, returned by \"getFocusDomRef()\" (marked by \"data-sap-focus-ref\")\n- **getDomRef(): _HTMLElement | undefined_** - Returns the DOM Element inside the Shadow Root that corresponds to the opening tag in the UI5 Web Component's template\n*Note:* For logical (abstract) elements (items, options, etc...), returns the part of the parent's DOM that represents this option\nUse this method instead of \"this.shadowRoot\" to read the Shadow DOM, if ever necessary\n- **getFocusDomRef(): _HTMLElement | undefined_** - Returns the DOM Element marked with \"data-sap-focus-ref\" inside the template.\nThis is the element that will receive the focus by default.\n- **getFocusDomRefAsync(): _Promise<HTMLElement | undefined>_** - Waits for dom ref and then returns the DOM Element marked with \"data-sap-focus-ref\" inside the template.\nThis is the element that will receive the focus by default.\n- **getMetadata(): _UI5ElementMetadata_** - Returns an instance of UI5ElementMetadata.js representing this UI5 Web Component's full metadata (its and its parents')\nNote: not to be confused with the \"get metadata()\" method, which returns an object for this class's metadata only\n- **getSlottedNodes(): _Array<T>_** - Returns the actual children, associated with a slot.\nUseful when there are transitive slots in nested component scenarios and you don't want to get a list of the slots, but rather of their content.\n- **getUniqueDependencies(): _Array<typeof UI5Element>_** - Returns a list of the unique dependencies for this UI5 Web Component\n- **onAfterRendering(): _void_** - Called every time after the component renders.\n- **onBeforeRendering(): _void_** - Called every time before the component renders.\n- **onEnterDOM(): _void_** - Called on connectedCallback - added to the DOM.\n- **onExitDOM(): _void_** - Called on disconnectedCallback - removed from the DOM.\n- **onInvalidation(changeInfo: _ChangeInfo_): _void_** - A callback that is executed each time an already rendered component is invalidated (scheduled for re-rendering)",
7
- "attributes": [
8
- {
9
- "name": "effective-dir",
10
- "description": "Determines whether the component should be rendered in RTL mode or not.\nReturns: \"rtl\", \"ltr\" or undefined",
11
- "values": [{ "name": "any" }]
12
- },
13
- {
14
- "name": "is-ui5-element",
15
- "description": "Used to duck-type UI5 elements without using instanceof",
16
- "values": [{ "name": "any" }]
17
- }
18
- ],
19
- "references": []
20
- }
21
- ]
22
- }