@sapudex/web-components 2.14.0 → 2.15.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 (103) hide show
  1. package/cypress/specs/Breadcrumbs.cy.tsx +77 -0
  2. package/cypress/specs/FilterMenu.cy.tsx +19 -43
  3. package/cypress/specs/InputGroup.cy.tsx +47 -0
  4. package/cypress/support/component-imports.instrumented.ts +4 -0
  5. package/cypress/support/component-imports.src.ts +4 -0
  6. package/dist/Breadcrumbs.d.ts +2 -0
  7. package/dist/Breadcrumbs.js +8 -7
  8. package/dist/Breadcrumbs.js.map +1 -1
  9. package/dist/BreadcrumbsItem.d.ts +1 -2
  10. package/dist/BreadcrumbsItem.js.map +1 -1
  11. package/dist/BreadcrumbsPopoverTemplate.d.ts +2 -0
  12. package/dist/BreadcrumbsPopoverTemplate.js +8 -0
  13. package/dist/BreadcrumbsPopoverTemplate.js.map +1 -0
  14. package/dist/BreadcrumbsTemplate.d.ts +2 -0
  15. package/dist/BreadcrumbsTemplate.js +10 -0
  16. package/dist/BreadcrumbsTemplate.js.map +1 -0
  17. package/dist/FilterMenu.js +1 -2
  18. package/dist/FilterMenu.js.map +1 -1
  19. package/dist/FilterMenuSelectAll.d.ts +0 -1
  20. package/dist/FilterMenuSelectAll.js +0 -3
  21. package/dist/FilterMenuSelectAll.js.map +1 -1
  22. package/dist/InputGroup.d.ts +0 -1
  23. package/dist/InputGroup.js +3 -6
  24. package/dist/InputGroup.js.map +1 -1
  25. package/dist/InputGroupTemplate.d.ts +2 -0
  26. package/dist/InputGroupTemplate.js +7 -0
  27. package/dist/InputGroupTemplate.js.map +1 -0
  28. package/dist/MastheadMobileMenu.js +1 -1
  29. package/dist/MastheadMobileMenu.js.map +1 -1
  30. package/dist/Search.js +5 -4
  31. package/dist/Search.js.map +1 -1
  32. package/dist/SearchableListBase.d.ts +2 -1
  33. package/dist/SearchableListBase.js +13 -23
  34. package/dist/SearchableListBase.js.map +1 -1
  35. package/dist/SelectBox.js +1 -2
  36. package/dist/SelectBox.js.map +1 -1
  37. package/dist/TruncatedText.d.ts +0 -1
  38. package/dist/TruncatedText.js +5 -6
  39. package/dist/TruncatedText.js.map +1 -1
  40. package/dist/TruncatedTextTemplate.d.ts +2 -0
  41. package/dist/TruncatedTextTemplate.js +9 -0
  42. package/dist/TruncatedTextTemplate.js.map +1 -0
  43. package/dist/assets/{InputSuggestions-AxcsfuTc.js → InputSuggestions-D5z6eIC2.js} +1 -1
  44. package/dist/assets/{ListItemStandardExpandableTextTemplate-CaS49yZt.js → ListItemStandardExpandableTextTemplate-BKeYxhnX.js} +1 -1
  45. package/dist/assets/{bundle.esm-DzkSPQ0p.js → bundle.esm-DXwtYGLH.js} +210 -210
  46. package/dist/css/themes/MediaPlayer.css +1 -1
  47. package/dist/css/themes/RatingIndicator.css +1 -1
  48. package/dist/css/themes/Slider.css +1 -1
  49. package/dist/custom-elements-internal.json +17 -2
  50. package/dist/custom-elements.json +17 -2
  51. package/dist/generated/themes/MediaPlayer.css.d.ts +1 -1
  52. package/dist/generated/themes/MediaPlayer.css.js +1 -1
  53. package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
  54. package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
  55. package/dist/generated/themes/RatingIndicator.css.js +1 -1
  56. package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
  57. package/dist/generated/themes/Slider.css.d.ts +1 -1
  58. package/dist/generated/themes/Slider.css.js +1 -1
  59. package/dist/generated/themes/Slider.css.js.map +1 -1
  60. package/dist/utils/sanitizeString.d.ts +2 -0
  61. package/dist/utils/sanitizeString.js +12 -0
  62. package/dist/utils/sanitizeString.js.map +1 -0
  63. package/dist/web-types.json +2 -2
  64. package/package.json +2 -2
  65. package/src/Breadcrumbs.ts +12 -7
  66. package/src/BreadcrumbsItem.ts +2 -2
  67. package/src/BreadcrumbsPopoverTemplate.tsx +60 -0
  68. package/src/BreadcrumbsTemplate.tsx +53 -0
  69. package/src/FilterMenu.ts +1 -2
  70. package/src/FilterMenuSelectAll.ts +0 -4
  71. package/src/InputGroup.ts +3 -7
  72. package/src/InputGroupTemplate.tsx +31 -0
  73. package/src/MastheadMobileMenu.ts +1 -1
  74. package/src/Search.ts +5 -4
  75. package/src/SearchableListBase.ts +15 -26
  76. package/src/SelectBox.ts +1 -2
  77. package/src/TruncatedText.ts +8 -14
  78. package/src/TruncatedTextTemplate.tsx +21 -0
  79. package/src/generated/themes/MediaPlayer.css.ts +1 -1
  80. package/src/generated/themes/RatingIndicator.css.ts +1 -1
  81. package/src/generated/themes/Slider.css.ts +1 -1
  82. package/src/themes/MediaPlayer.css +133 -186
  83. package/src/utils/sanitizeString.ts +13 -0
  84. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.d.ts +0 -3
  85. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +0 -12
  86. package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js.map +0 -1
  87. package/dist/generated/templates/BreadcrumbsTemplate.lit.d.ts +0 -3
  88. package/dist/generated/templates/BreadcrumbsTemplate.lit.js +0 -14
  89. package/dist/generated/templates/BreadcrumbsTemplate.lit.js.map +0 -1
  90. package/dist/generated/templates/InputGroupTemplate.lit.d.ts +0 -3
  91. package/dist/generated/templates/InputGroupTemplate.lit.js +0 -9
  92. package/dist/generated/templates/InputGroupTemplate.lit.js.map +0 -1
  93. package/dist/generated/templates/TruncatedTextTemplate.lit.d.ts +0 -3
  94. package/dist/generated/templates/TruncatedTextTemplate.lit.js +0 -7
  95. package/dist/generated/templates/TruncatedTextTemplate.lit.js.map +0 -1
  96. package/src/Breadcrumbs.hbs +0 -38
  97. package/src/BreadcrumbsPopover.hbs +0 -48
  98. package/src/InputGroup.hbs +0 -20
  99. package/src/TruncatedText.hbs +0 -11
  100. package/src/generated/templates/BreadcrumbsPopoverTemplate.lit.ts +0 -16
  101. package/src/generated/templates/BreadcrumbsTemplate.lit.ts +0 -18
  102. package/src/generated/templates/InputGroupTemplate.lit.ts +0 -13
  103. package/src/generated/templates/TruncatedTextTemplate.lit.ts +0 -11
@@ -3,6 +3,6 @@ import defaultThemeBase from "@ui5/webcomponents-theming/dist/generated/themes/s
3
3
  import defaultTheme from "./sap_horizon/parameters-bundle.css.js";
4
4
  registerThemePropertiesLoader("@" + "ui5" + "/" + "webcomponents-theming", "sap_horizon", async () => defaultThemeBase);
5
5
  registerThemePropertiesLoader("@" + "s" + "a" + "p" + "u" + "d" + "e" + "x" + "/" + "w" + "e" + "b" + "-" + "c" + "o" + "m" + "p" + "o" + "n" + "e" + "n" + "t" + "s", "sap_horizon", async () => defaultTheme);
6
- export default `:host{--udex-slider-color-track-start-point: var(--sapSlider_Selected_Background, #0070f2);--udex-slider-color-track-active: var(--sapSlider_Selected_Background, #0070f2);--udex-slider-color-handle-focus-range: var(--sapSlider_Selected_BorderColor, #0070f2);--udex-slider-color-handle-active-background: var(--sapSlider_Active_HandleBackground, #ffffff);--udex-slider-color-handle-default-icon: var(--sapContent_Selected_ForegroundColor, #0040b0);--udex-slider-radius-range-size: var(--udexRadiusM, 8px);--udex-slider-handle-width: 2.75rem;--udex-slider-handle-top: -.875rem;--udex-slider-handle-height: var(--udexSpacer32, 2rem);--udex-slider-start-end-point-left: -.875rem;--udex-slider-start-end-point-right: -.875rem;--udex-slider-progress-after-background: var(--sapContent_MeasureIndicatorColor,#5b738b);--udex-slider-handle-icon-size: var(--udexSpacer20, 1.25rem);--udex-slider-tooltip-bottom: 2.5rem;--udex-slider-tooltip-border: 1px solid var(--sapField_BorderColor, #5B738B);--udex-slider-tooltip-border-radius: var(--udexSpacer4, .25rem);--udex-slider-tooltip-font-size: var(--udexTypographyNavigationRegularMFontSize,14px);--udex-slider-tooltip-color: var(--sapContent_MeasureIndicatorColor, #5b738b);--udex-slider-tooltip-height: var(--udexSpacer32, 2rem);--udex-slider-tooltip-min-width: 2.75rem;--udex-slider-tickmark-in-range-bg: var(--sapSlider_Selected_BorderColor,#0070f2);--udex-slider-tickmark-bg: var(--sapContent_MeasureIndicatorColor, #5b738b);--udex-slider-label-color: var(--sapContent_MeasureIndicatorColor, #5b738b);--udex-slider-handle-focus-border: 2px solid var(--sapSlider_Active_HandleBorderColor);--udex-slider-progress-focus-top: -1.18rem;--udex-slider-progress-focus-left:calc(-1.375rem - 5px);--udex-slider-progress-focus-height: 42px;--udex-slider-progress-focus-width:calc(100% + 2.75rem + 10px)}:host{font-family:var(--sapFontFamily);font-weight:var(--udexTypographyFontWeightRegular, 400);font-size:var(--udexTypographyNavigationRegularMFontSize, 14px);line-height:var(--udexTypographyHeadingLineHeight, 1.1);color:var(--sapContent_MeasureIndicatorColor, #5b738b);height:74px}.ui5-slider-progress-container:before{background-color:var(--udex-slider-color-track-start-point)}.ui5-slider-progress{background-color:var(--udex-slider-color-track-active)}.ui5-slider-progress:focus:after{border:2px solid var(--udex-slider-color-handle-focus-range);border-radius:var(--udex-slider-radius-range-size);top:var(--udex-slider-progress-focus-top);height:var(--udex-slider-progress-focus-height);width:var(--udex-slider-progress-focus-width);left:var(--udex-slider-progress-focus-left)}:host([desktop]) .ui5-slider-handle:focus,.ui5-slider-handle:focus-visible{background-color:var(--_ui5-v2-14-0_range_slider_handle_background_focus)}:host .ui5-slider-inner .ui5-slider-labels{top:34px}:host .ui5-slider-inner .ui5-slider-labels li{height:1.375rem;font-family:var(--sapFontFamily);font-size:var(--udexTypographyNavigationRegularMFontSize, 14px)}[slider-icon]{color:var(--udex-slider-color-handle-default-icon)}.ui5-slider-root:focus .ui5-slider-inner .ui5-slider-handle,.ui5-slider-handle:focus{border:var(--udex-slider-handle-focus-border)}.ui5-slider-labels li{color:var(--udex-slider-label-color)}.ui5-slider-tickmarks li{border-inline-start:1px solid var(--udex-slider-tickmark-bg)}.ui5-slider-tickmarks li.ui5-slider-tickmark-in-range{border-inline-start:1px solid var(--udex-slider-tickmark-in-range-bg)}:host(:not([hidden])) .ui5-slider-handle-container .ui5-slider-tooltip{bottom:var(--udex-slider-tooltip-bottom);border:var(--udex-slider-tooltip-border);border-radius:var(--udex-slider-tooltip-border-radius);font-size:var(--udex-slider-tooltip-font-size);color:var(--udex-slider-tooltip-color);height:var(--udex-slider-tooltip-height);min-width:var(--udex-slider-tooltip-min-width)}[slider-icon]{width:var(--udex-slider-handle-icon-size);height:var(--udex-slider-handle-icon-size)}.ui5-slider-progress-container:after{background-color:var(--udex-slider-progress-after-background)}.ui5-slider-progress-container:before{inset-inline-start:var(--udex-slider-start-end-point-left)}.ui5-slider-progress-container:after{inset-inline-end:var(--udex-slider-start-end-point-right)}.ui5-slider-handle-container{margin-inline-start:calc(-1 * var(--udex-slider-handle-width) / 2);top:var(--udex-slider-handle-top)}.ui5-slider-handle{height:var(--udex-slider-handle-height);width:var(--udex-slider-handle-width)}
6
+ export default `:host{--udex-slider-color-track-start-point: var(--sapSlider_Selected_Background, #0070f2);--udex-slider-color-track-active: var(--sapSlider_Selected_Background, #0070f2);--udex-slider-color-handle-focus-range: var(--sapSlider_Selected_BorderColor, #0070f2);--udex-slider-color-handle-active-background: var(--sapSlider_Active_HandleBackground, #ffffff);--udex-slider-color-handle-default-icon: var(--sapContent_Selected_ForegroundColor, #0040b0);--udex-slider-radius-range-size: var(--udexRadiusM, 8px);--udex-slider-handle-width: 2.75rem;--udex-slider-handle-top: -.875rem;--udex-slider-handle-height: var(--udexSpacer32, 2rem);--udex-slider-start-end-point-left: -.875rem;--udex-slider-start-end-point-right: -.875rem;--udex-slider-progress-after-background: var(--sapContent_MeasureIndicatorColor,#5b738b);--udex-slider-handle-icon-size: var(--udexSpacer20, 1.25rem);--udex-slider-tooltip-bottom: 2.5rem;--udex-slider-tooltip-border: 1px solid var(--sapField_BorderColor, #5B738B);--udex-slider-tooltip-border-radius: var(--udexSpacer4, .25rem);--udex-slider-tooltip-font-size: var(--udexTypographyNavigationRegularMFontSize,14px);--udex-slider-tooltip-color: var(--sapContent_MeasureIndicatorColor, #5b738b);--udex-slider-tooltip-height: var(--udexSpacer32, 2rem);--udex-slider-tooltip-min-width: 2.75rem;--udex-slider-tickmark-in-range-bg: var(--sapSlider_Selected_BorderColor,#0070f2);--udex-slider-tickmark-bg: var(--sapContent_MeasureIndicatorColor, #5b738b);--udex-slider-label-color: var(--sapContent_MeasureIndicatorColor, #5b738b);--udex-slider-handle-focus-border: 2px solid var(--sapSlider_Active_HandleBorderColor);--udex-slider-progress-focus-top: -1.18rem;--udex-slider-progress-focus-left:calc(-1.375rem - 5px);--udex-slider-progress-focus-height: 42px;--udex-slider-progress-focus-width:calc(100% + 2.75rem + 10px)}:host{font-family:var(--sapFontFamily);font-weight:var(--udexTypographyFontWeightRegular, 400);font-size:var(--udexTypographyNavigationRegularMFontSize, 14px);line-height:var(--udexTypographyHeadingLineHeight, 1.1);color:var(--sapContent_MeasureIndicatorColor, #5b738b);height:74px}.ui5-slider-progress-container:before{background-color:var(--udex-slider-color-track-start-point)}.ui5-slider-progress{background-color:var(--udex-slider-color-track-active)}.ui5-slider-progress:focus:after{border:2px solid var(--udex-slider-color-handle-focus-range);border-radius:var(--udex-slider-radius-range-size);top:var(--udex-slider-progress-focus-top);height:var(--udex-slider-progress-focus-height);width:var(--udex-slider-progress-focus-width);left:var(--udex-slider-progress-focus-left)}:host([desktop]) .ui5-slider-handle:focus,.ui5-slider-handle:focus-visible{background-color:var(--_ui5-v2-15-0_range_slider_handle_background_focus)}:host .ui5-slider-inner .ui5-slider-labels{top:34px}:host .ui5-slider-inner .ui5-slider-labels li{height:1.375rem;font-family:var(--sapFontFamily);font-size:var(--udexTypographyNavigationRegularMFontSize, 14px)}[slider-icon]{color:var(--udex-slider-color-handle-default-icon)}.ui5-slider-root:focus .ui5-slider-inner .ui5-slider-handle,.ui5-slider-handle:focus{border:var(--udex-slider-handle-focus-border)}.ui5-slider-labels li{color:var(--udex-slider-label-color)}.ui5-slider-tickmarks li{border-inline-start:1px solid var(--udex-slider-tickmark-bg)}.ui5-slider-tickmarks li.ui5-slider-tickmark-in-range{border-inline-start:1px solid var(--udex-slider-tickmark-in-range-bg)}:host(:not([hidden])) .ui5-slider-handle-container .ui5-slider-tooltip{bottom:var(--udex-slider-tooltip-bottom);border:var(--udex-slider-tooltip-border);border-radius:var(--udex-slider-tooltip-border-radius);font-size:var(--udex-slider-tooltip-font-size);color:var(--udex-slider-tooltip-color);height:var(--udex-slider-tooltip-height);min-width:var(--udex-slider-tooltip-min-width)}[slider-icon]{width:var(--udex-slider-handle-icon-size);height:var(--udex-slider-handle-icon-size)}.ui5-slider-progress-container:after{background-color:var(--udex-slider-progress-after-background)}.ui5-slider-progress-container:before{inset-inline-start:var(--udex-slider-start-end-point-left)}.ui5-slider-progress-container:after{inset-inline-end:var(--udex-slider-start-end-point-right)}.ui5-slider-handle-container{margin-inline-start:calc(-1 * var(--udex-slider-handle-width) / 2);top:var(--udex-slider-handle-top)}.ui5-slider-handle{height:var(--udex-slider-handle-height);width:var(--udex-slider-handle-width)}
7
7
  `;
8
8
  //# sourceMappingURL=Slider.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.css.js","sourceRoot":"","sources":["../../../src/generated/themes/Slider.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,yDAAyD,CAAC;AAExG,OAAO,gBAAgB,MAAM,uFAAuF,CAAC;AACrH,OAAO,YAAY,MAAM,wCAAwC,CAAC;AAElE,6BAA6B,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,uBAAuB,EAAE,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,gBAAgB,CAAC,CAAC;AACxH,6BAA6B,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC;AAChN,eAAe;CACd,CAAA","sourcesContent":["import { registerThemePropertiesLoader } from \"@ui5/webcomponents-base/dist/asset-registries/Themes.js\";\n\nimport defaultThemeBase from \"@ui5/webcomponents-theming/dist/generated/themes/sap_horizon/parameters-bundle.css.js\";\nimport defaultTheme from \"./sap_horizon/parameters-bundle.css.js\";\n\nregisterThemePropertiesLoader(\"@\" + \"ui5\" + \"/\" + \"webcomponents-theming\", \"sap_horizon\", async () => defaultThemeBase);\nregisterThemePropertiesLoader(\"@\" + \"s\" + \"a\" + \"p\" + \"u\" + \"d\" + \"e\" + \"x\" + \"/\" + \"w\" + \"e\" + \"b\" + \"-\" + \"c\" + \"o\" + \"m\" + \"p\" + \"o\" + \"n\" + \"e\" + \"n\" + \"t\" + \"s\", \"sap_horizon\", async () => defaultTheme);\nexport default `:host{--udex-slider-color-track-start-point: var(--sapSlider_Selected_Background, #0070f2);--udex-slider-color-track-active: var(--sapSlider_Selected_Background, #0070f2);--udex-slider-color-handle-focus-range: var(--sapSlider_Selected_BorderColor, #0070f2);--udex-slider-color-handle-active-background: var(--sapSlider_Active_HandleBackground, #ffffff);--udex-slider-color-handle-default-icon: var(--sapContent_Selected_ForegroundColor, #0040b0);--udex-slider-radius-range-size: var(--udexRadiusM, 8px);--udex-slider-handle-width: 2.75rem;--udex-slider-handle-top: -.875rem;--udex-slider-handle-height: var(--udexSpacer32, 2rem);--udex-slider-start-end-point-left: -.875rem;--udex-slider-start-end-point-right: -.875rem;--udex-slider-progress-after-background: var(--sapContent_MeasureIndicatorColor,#5b738b);--udex-slider-handle-icon-size: var(--udexSpacer20, 1.25rem);--udex-slider-tooltip-bottom: 2.5rem;--udex-slider-tooltip-border: 1px solid var(--sapField_BorderColor, #5B738B);--udex-slider-tooltip-border-radius: var(--udexSpacer4, .25rem);--udex-slider-tooltip-font-size: var(--udexTypographyNavigationRegularMFontSize,14px);--udex-slider-tooltip-color: var(--sapContent_MeasureIndicatorColor, #5b738b);--udex-slider-tooltip-height: var(--udexSpacer32, 2rem);--udex-slider-tooltip-min-width: 2.75rem;--udex-slider-tickmark-in-range-bg: var(--sapSlider_Selected_BorderColor,#0070f2);--udex-slider-tickmark-bg: var(--sapContent_MeasureIndicatorColor, #5b738b);--udex-slider-label-color: var(--sapContent_MeasureIndicatorColor, #5b738b);--udex-slider-handle-focus-border: 2px solid var(--sapSlider_Active_HandleBorderColor);--udex-slider-progress-focus-top: -1.18rem;--udex-slider-progress-focus-left:calc(-1.375rem - 5px);--udex-slider-progress-focus-height: 42px;--udex-slider-progress-focus-width:calc(100% + 2.75rem + 10px)}:host{font-family:var(--sapFontFamily);font-weight:var(--udexTypographyFontWeightRegular, 400);font-size:var(--udexTypographyNavigationRegularMFontSize, 14px);line-height:var(--udexTypographyHeadingLineHeight, 1.1);color:var(--sapContent_MeasureIndicatorColor, #5b738b);height:74px}.ui5-slider-progress-container:before{background-color:var(--udex-slider-color-track-start-point)}.ui5-slider-progress{background-color:var(--udex-slider-color-track-active)}.ui5-slider-progress:focus:after{border:2px solid var(--udex-slider-color-handle-focus-range);border-radius:var(--udex-slider-radius-range-size);top:var(--udex-slider-progress-focus-top);height:var(--udex-slider-progress-focus-height);width:var(--udex-slider-progress-focus-width);left:var(--udex-slider-progress-focus-left)}:host([desktop]) .ui5-slider-handle:focus,.ui5-slider-handle:focus-visible{background-color:var(--_ui5-v2-14-0_range_slider_handle_background_focus)}:host .ui5-slider-inner .ui5-slider-labels{top:34px}:host .ui5-slider-inner .ui5-slider-labels li{height:1.375rem;font-family:var(--sapFontFamily);font-size:var(--udexTypographyNavigationRegularMFontSize, 14px)}[slider-icon]{color:var(--udex-slider-color-handle-default-icon)}.ui5-slider-root:focus .ui5-slider-inner .ui5-slider-handle,.ui5-slider-handle:focus{border:var(--udex-slider-handle-focus-border)}.ui5-slider-labels li{color:var(--udex-slider-label-color)}.ui5-slider-tickmarks li{border-inline-start:1px solid var(--udex-slider-tickmark-bg)}.ui5-slider-tickmarks li.ui5-slider-tickmark-in-range{border-inline-start:1px solid var(--udex-slider-tickmark-in-range-bg)}:host(:not([hidden])) .ui5-slider-handle-container .ui5-slider-tooltip{bottom:var(--udex-slider-tooltip-bottom);border:var(--udex-slider-tooltip-border);border-radius:var(--udex-slider-tooltip-border-radius);font-size:var(--udex-slider-tooltip-font-size);color:var(--udex-slider-tooltip-color);height:var(--udex-slider-tooltip-height);min-width:var(--udex-slider-tooltip-min-width)}[slider-icon]{width:var(--udex-slider-handle-icon-size);height:var(--udex-slider-handle-icon-size)}.ui5-slider-progress-container:after{background-color:var(--udex-slider-progress-after-background)}.ui5-slider-progress-container:before{inset-inline-start:var(--udex-slider-start-end-point-left)}.ui5-slider-progress-container:after{inset-inline-end:var(--udex-slider-start-end-point-right)}.ui5-slider-handle-container{margin-inline-start:calc(-1 * var(--udex-slider-handle-width) / 2);top:var(--udex-slider-handle-top)}.ui5-slider-handle{height:var(--udex-slider-handle-height);width:var(--udex-slider-handle-width)}\n`"]}
1
+ {"version":3,"file":"Slider.css.js","sourceRoot":"","sources":["../../../src/generated/themes/Slider.css.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,yDAAyD,CAAC;AAExG,OAAO,gBAAgB,MAAM,uFAAuF,CAAC;AACrH,OAAO,YAAY,MAAM,wCAAwC,CAAC;AAElE,6BAA6B,CAAC,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,uBAAuB,EAAE,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,gBAAgB,CAAC,CAAC;AACxH,6BAA6B,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC;AAChN,eAAe;CACd,CAAA","sourcesContent":["import { registerThemePropertiesLoader } from \"@ui5/webcomponents-base/dist/asset-registries/Themes.js\";\n\nimport defaultThemeBase from \"@ui5/webcomponents-theming/dist/generated/themes/sap_horizon/parameters-bundle.css.js\";\nimport defaultTheme from \"./sap_horizon/parameters-bundle.css.js\";\n\nregisterThemePropertiesLoader(\"@\" + \"ui5\" + \"/\" + \"webcomponents-theming\", \"sap_horizon\", async () => defaultThemeBase);\nregisterThemePropertiesLoader(\"@\" + \"s\" + \"a\" + \"p\" + \"u\" + \"d\" + \"e\" + \"x\" + \"/\" + \"w\" + \"e\" + \"b\" + \"-\" + \"c\" + \"o\" + \"m\" + \"p\" + \"o\" + \"n\" + \"e\" + \"n\" + \"t\" + \"s\", \"sap_horizon\", async () => defaultTheme);\nexport default `:host{--udex-slider-color-track-start-point: var(--sapSlider_Selected_Background, #0070f2);--udex-slider-color-track-active: var(--sapSlider_Selected_Background, #0070f2);--udex-slider-color-handle-focus-range: var(--sapSlider_Selected_BorderColor, #0070f2);--udex-slider-color-handle-active-background: var(--sapSlider_Active_HandleBackground, #ffffff);--udex-slider-color-handle-default-icon: var(--sapContent_Selected_ForegroundColor, #0040b0);--udex-slider-radius-range-size: var(--udexRadiusM, 8px);--udex-slider-handle-width: 2.75rem;--udex-slider-handle-top: -.875rem;--udex-slider-handle-height: var(--udexSpacer32, 2rem);--udex-slider-start-end-point-left: -.875rem;--udex-slider-start-end-point-right: -.875rem;--udex-slider-progress-after-background: var(--sapContent_MeasureIndicatorColor,#5b738b);--udex-slider-handle-icon-size: var(--udexSpacer20, 1.25rem);--udex-slider-tooltip-bottom: 2.5rem;--udex-slider-tooltip-border: 1px solid var(--sapField_BorderColor, #5B738B);--udex-slider-tooltip-border-radius: var(--udexSpacer4, .25rem);--udex-slider-tooltip-font-size: var(--udexTypographyNavigationRegularMFontSize,14px);--udex-slider-tooltip-color: var(--sapContent_MeasureIndicatorColor, #5b738b);--udex-slider-tooltip-height: var(--udexSpacer32, 2rem);--udex-slider-tooltip-min-width: 2.75rem;--udex-slider-tickmark-in-range-bg: var(--sapSlider_Selected_BorderColor,#0070f2);--udex-slider-tickmark-bg: var(--sapContent_MeasureIndicatorColor, #5b738b);--udex-slider-label-color: var(--sapContent_MeasureIndicatorColor, #5b738b);--udex-slider-handle-focus-border: 2px solid var(--sapSlider_Active_HandleBorderColor);--udex-slider-progress-focus-top: -1.18rem;--udex-slider-progress-focus-left:calc(-1.375rem - 5px);--udex-slider-progress-focus-height: 42px;--udex-slider-progress-focus-width:calc(100% + 2.75rem + 10px)}:host{font-family:var(--sapFontFamily);font-weight:var(--udexTypographyFontWeightRegular, 400);font-size:var(--udexTypographyNavigationRegularMFontSize, 14px);line-height:var(--udexTypographyHeadingLineHeight, 1.1);color:var(--sapContent_MeasureIndicatorColor, #5b738b);height:74px}.ui5-slider-progress-container:before{background-color:var(--udex-slider-color-track-start-point)}.ui5-slider-progress{background-color:var(--udex-slider-color-track-active)}.ui5-slider-progress:focus:after{border:2px solid var(--udex-slider-color-handle-focus-range);border-radius:var(--udex-slider-radius-range-size);top:var(--udex-slider-progress-focus-top);height:var(--udex-slider-progress-focus-height);width:var(--udex-slider-progress-focus-width);left:var(--udex-slider-progress-focus-left)}:host([desktop]) .ui5-slider-handle:focus,.ui5-slider-handle:focus-visible{background-color:var(--_ui5-v2-15-0_range_slider_handle_background_focus)}:host .ui5-slider-inner .ui5-slider-labels{top:34px}:host .ui5-slider-inner .ui5-slider-labels li{height:1.375rem;font-family:var(--sapFontFamily);font-size:var(--udexTypographyNavigationRegularMFontSize, 14px)}[slider-icon]{color:var(--udex-slider-color-handle-default-icon)}.ui5-slider-root:focus .ui5-slider-inner .ui5-slider-handle,.ui5-slider-handle:focus{border:var(--udex-slider-handle-focus-border)}.ui5-slider-labels li{color:var(--udex-slider-label-color)}.ui5-slider-tickmarks li{border-inline-start:1px solid var(--udex-slider-tickmark-bg)}.ui5-slider-tickmarks li.ui5-slider-tickmark-in-range{border-inline-start:1px solid var(--udex-slider-tickmark-in-range-bg)}:host(:not([hidden])) .ui5-slider-handle-container .ui5-slider-tooltip{bottom:var(--udex-slider-tooltip-bottom);border:var(--udex-slider-tooltip-border);border-radius:var(--udex-slider-tooltip-border-radius);font-size:var(--udex-slider-tooltip-font-size);color:var(--udex-slider-tooltip-color);height:var(--udex-slider-tooltip-height);min-width:var(--udex-slider-tooltip-min-width)}[slider-icon]{width:var(--udex-slider-handle-icon-size);height:var(--udex-slider-handle-icon-size)}.ui5-slider-progress-container:after{background-color:var(--udex-slider-progress-after-background)}.ui5-slider-progress-container:before{inset-inline-start:var(--udex-slider-start-end-point-left)}.ui5-slider-progress-container:after{inset-inline-end:var(--udex-slider-start-end-point-right)}.ui5-slider-handle-container{margin-inline-start:calc(-1 * var(--udex-slider-handle-width) / 2);top:var(--udex-slider-handle-top)}.ui5-slider-handle{height:var(--udex-slider-handle-height);width:var(--udex-slider-handle-width)}\n`"]}
@@ -0,0 +1,2 @@
1
+ declare const sanitizeString: (str: string) => string;
2
+ export default sanitizeString;
@@ -0,0 +1,12 @@
1
+ const sanitizeString = (str) => {
2
+ const sanitized = str
3
+ .replace(/&/g, "&")
4
+ .replace(/</g, "&lt;")
5
+ .replace(/>/g, "&gt;")
6
+ .replace(/"/g, "&quot;")
7
+ .replace(/'/g, "&#039;");
8
+ return sanitized.replace(/&lt;b&gt;/g, "<b>")
9
+ .replace(/&lt;\/b&gt;/g, "</b>");
10
+ };
11
+ export default sanitizeString;
12
+ //# sourceMappingURL=sanitizeString.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitizeString.js","sourceRoot":"","sources":["../../src/utils/sanitizeString.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,EAAE;IACrC,MAAM,SAAS,GAAG,GAAG;SAClB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE3B,OAAO,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC;SAC1C,OAAO,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,eAAe,cAAc,CAAC","sourcesContent":["const sanitizeString = (str: string) => {\n const sanitized = str\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&#039;\");\n\n return sanitized.replace(/&lt;b&gt;/g, \"<b>\")\n .replace(/&lt;\\/b&gt;/g, \"</b>\");\n};\n\nexport default sanitizeString;\n"]}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
3
  "name": "@sapudex/web-components",
4
- "version": "2.14.0",
4
+ "version": "2.15.0",
5
5
  "description-markup": "markdown",
6
6
  "contributions": {
7
7
  "html": {
@@ -467,7 +467,7 @@
467
467
  {
468
468
  "name": "icon",
469
469
  "description": "Defines item icon to be displayed before the item name.",
470
- "value": { "type": "string | undefined", "default": "\"\"" }
470
+ "value": { "type": "string | undefined", "default": "undefined" }
471
471
  }
472
472
  ],
473
473
  "events": [],
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@sapudex/web-components",
4
- "version": "2.14.0",
4
+ "version": "2.15.0",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
7
7
  },
@@ -50,7 +50,7 @@
50
50
  "@cypress/code-coverage": "^3.14.5",
51
51
  "@ui5/cypress-ct-ui5-webc": "^0.0.4",
52
52
  "@ui5/webcomponents-tools": "2.14.0",
53
- "chromedriver": "138.0.1",
53
+ "chromedriver": "142.0.0",
54
54
  "cross-env": "^7.0.3",
55
55
  "cypress": "^14.3.3",
56
56
  "cypress-real-events": "^1.14.0",
@@ -1,6 +1,6 @@
1
1
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
2
  import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
3
- import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
3
+ import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
4
4
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
5
5
  import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
6
6
  import event from "@ui5/webcomponents-base/dist/decorators/event-strict.js";
@@ -14,7 +14,7 @@ import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
14
14
  import UI5BreadcrumbsCss from "@ui5/webcomponents/dist/generated/themes/Breadcrumbs.css.js";
15
15
  import "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
16
16
  import "@ui5/webcomponents-icons/dist/home.js";
17
- import BreadcrumbsTemplate from "./generated/templates/BreadcrumbsTemplate.lit.js";
17
+ import BreadcrumbsTemplate from "./BreadcrumbsTemplate.js";
18
18
  import UDExBreadcrumbsItem from "./BreadcrumbsItem.js";
19
19
  import UDExDropdown from "./Dropdown.js";
20
20
  import UDExLink from "./Link.js";
@@ -24,8 +24,6 @@ import { BREADCRUMBS_ARIA_LABEL, BREADCRUMBS_OVERFLOW_ARIA_LABEL } from "./gener
24
24
  import BreadcrumbsCss from "./generated/themes/Breadcrumbs.css.js";
25
25
  import BreadcrumbsPopoverCss from "./generated/themes/BreadcrumbsPopover.css.js";
26
26
 
27
- const triggerActiveClass = "udex-breadcrumbs__trigger--opened";
28
-
29
27
  type UDExBreadcrumbsItemClickEventDetail = {
30
28
  item: UDExBreadcrumbsItem;
31
29
  altKey?: boolean;
@@ -53,7 +51,7 @@ type UDExBreadcrumbsItemClickEventDetail = {
53
51
  */
54
52
  @customElement({
55
53
  tag: "udex-breadcrumbs",
56
- renderer: litRender,
54
+ renderer: jsxRenderer,
57
55
  styles: [UI5BreadcrumbsCss, BreadcrumbsCss, BreadcrumbsPopoverCss],
58
56
  template: BreadcrumbsTemplate,
59
57
  dependencies: [UDExBreadcrumbsItem, UDExLink, UDExDropdown, UI5Icon],
@@ -116,6 +114,12 @@ class UDExBreadcrumbs extends UI5Element {
116
114
  _responsivePopover?: UDExDropdown;
117
115
  _itemNavigation?: ItemNavigation;
118
116
  _shouldFocusFirstVisibleItem!: boolean;
117
+ _rootClass: string;
118
+
119
+ constructor() {
120
+ super();
121
+ this._rootClass = "udex-breadcrumbs";
122
+ }
119
123
 
120
124
  onBeforeRendering(): void {
121
125
  this._preprocessItems();
@@ -232,7 +236,7 @@ class UDExBreadcrumbs extends UI5Element {
232
236
  }
233
237
 
234
238
  _handleKeydown(e: KeyboardEvent): void {
235
- const itemIndex = (e.target as HTMLElement).getAttribute("index");
239
+ const itemIndex = (e.target as HTMLElement).getAttribute("data-index");
236
240
  const isLastItem = itemIndex === (this.items.length - 2).toString();
237
241
  const isFirstItem = itemIndex === "0";
238
242
 
@@ -304,7 +308,8 @@ class UDExBreadcrumbs extends UI5Element {
304
308
  }
305
309
 
306
310
  get _triggerClass(): string {
307
- return this._dropdownOpened ? triggerActiveClass : "";
311
+ const rootClass = "udex-breadcrumbs";
312
+ return this._dropdownOpened ? `${rootClass} ${rootClass}__trigger--opened` : rootClass;
308
313
  }
309
314
 
310
315
  get _accessibleNameText(): string {
@@ -24,11 +24,11 @@ import BreadcrumbsItem from "@ui5/webcomponents/dist/BreadcrumbsItem.js";
24
24
  tag: "udex-breadcrumbs-item",
25
25
  renderer: jsxRenderer,
26
26
  })
27
+
27
28
  class UDExBreadcrumbsItem extends BreadcrumbsItem {
28
29
  /**
29
30
  * Defines item icon to be displayed before the item name.
30
- *
31
- * @default ""
31
+ * @default undefined
32
32
  * @public
33
33
  */
34
34
  @property()
@@ -0,0 +1,60 @@
1
+ import type Breadcrumbs from "./Breadcrumbs.js";
2
+ import UDExDropdown from "./Dropdown.js";
3
+ import UDExLink from "./Link.js";
4
+ import { Placement, HorizontalAlign } from "./types/Dropdown.js";
5
+
6
+ export default function BreadcrumbsPopoverTemplate(this: Breadcrumbs) {
7
+ return (
8
+ <UDExDropdown
9
+ id={`udex-${this._id}-breadcrumbs__popover`}
10
+ opener={`udex-${this._id}-breadcrumbs__opener`}
11
+ class={`${this._rootClass}__popover ui5-breadcrumbs-popover`}
12
+ placement={Placement.Bottom}
13
+ horizontalAlign={HorizontalAlign.Start}
14
+ onKeyDown={this._handleKeydown}
15
+ onClose={this._afterDropdownClose}
16
+ onOpen={this._afterDropdownOpen}>
17
+ <div className={`${this._rootClass}__popover-content`}>
18
+ {this._dropdownItems.map((item, index) => (
19
+ item.icon ? (
20
+ <UDExLink
21
+ key={index}
22
+ data-index={index}
23
+ id={`${item._id}-li`}
24
+ onClick={this._onDropdownLinkPress}
25
+ href={item.href}
26
+ target={item.target}
27
+ class={`${this._rootClass}__item ${this._rootClass}__item--with-icon ${this._rootClass}__item--hidden ${this._rootClass}__item--${index}`}
28
+ icon={item.icon}
29
+ accessibleName={item.textContent ?? undefined}
30
+ data-ui5-stable={item.stableDomRef}>
31
+ {item.textContent}
32
+ </UDExLink>
33
+ ) : item._isCurrentPageItem ? (
34
+ <span
35
+ key={index}
36
+ id={`${item._id}-li`}
37
+ className={`${this._rootClass}__item ${this._rootClass}__item--current ${this._rootClass}__item--hidden ${this._rootClass}__item--${index}`}
38
+ accessible-name={item.accessibleName}
39
+ data-ui5-stable={item.stableDomRef}>
40
+ {item.textContent}
41
+ </span>
42
+ ) : (
43
+ <UDExLink
44
+ key={index}
45
+ data-index={index}
46
+ id={`${item._id}-li`}
47
+ onClick={this._onDropdownLinkPress}
48
+ href={item.href}
49
+ target={item.target}
50
+ class={`${this._rootClass}__item ${this._rootClass}__item--hidden ${this._rootClass}__item--${index}`}
51
+ accessibleName={item.accessibleName}
52
+ data-ui5-stable={item.stableDomRef}>
53
+ {item.textContent}
54
+ </UDExLink>
55
+ )
56
+ ))}
57
+ </div>
58
+ </UDExDropdown>
59
+ );
60
+ }
@@ -0,0 +1,53 @@
1
+ import type Breadcrumbs from "./Breadcrumbs.js";
2
+ import UDExLink from "./Link.js";
3
+ import UDExButtonAccessibleRole from "./types/ButtonAccessibleRole.js";
4
+ import slimArrowDown from "@ui5/webcomponents-icons/dist/slim-arrow-down.js";
5
+ import BreadcrumbsPopoverTemplate from "./BreadcrumbsPopoverTemplate.js";
6
+
7
+ export default function BreadcrumbsTemplate(this: Breadcrumbs) {
8
+ const rootClass = "udex-breadcrumbs";
9
+
10
+ return (
11
+ <>
12
+ <nav
13
+ class={`${this._rootClass} ui5-breadcrumbs-root`}
14
+ aria-label={this._accessibleNameText}>
15
+ <ol onFocusIn={this._onfocusin}>
16
+ <li class={`${this._rootClass}__arrow-wrapper ui5-breadcrumbs-dropdown-arrow-link-wrapper`}>
17
+ <UDExLink
18
+ id={`udex-${this._id}-breadcrumbs__opener`}
19
+ class={`${this._rootClass}__trigger ${this._triggerClass}`}
20
+ onClick={this._toggleDropdown}
21
+ aria-label={this._dropdownArrowAccessibleNameText}
22
+ accessibleRole={UDExButtonAccessibleRole.Button}
23
+ icon={slimArrowDown}
24
+ aria-haspopup="true">
25
+ </UDExLink>
26
+ </li>
27
+ {this._linksData.map(linkData =>
28
+ <li
29
+ class={`${this._rootClass}__link-wrapper ui5-breadcrumbs-link-wrapper`}
30
+ id={`${linkData._id}-link-wrapper`}>
31
+ {!linkData._isCurrentPageItem && (
32
+ <>
33
+ <span className={`${this._rootClass}__separator`} aria-hidden="true"></span>
34
+ <UDExLink
35
+ onClick={this._onLinkPress}
36
+ id={`${linkData._id}-link`}
37
+ class={`${rootClass}__item ${this._rootClass}__item--visible`}
38
+ href={linkData.href}
39
+ target={linkData.target}
40
+ accessibleName={linkData._accessibleNameText}
41
+ data-ui5-stable={linkData.stableDomRef}>
42
+ {linkData.innerText}
43
+ </UDExLink>
44
+ </>
45
+ )}
46
+ </li>
47
+ )}
48
+ </ol>
49
+ </nav>
50
+ {BreadcrumbsPopoverTemplate.call(this)}
51
+ </>
52
+ );
53
+ }
package/src/FilterMenu.ts CHANGED
@@ -332,8 +332,7 @@ class UDExFilterMenu extends UDExSearchableListBase {
332
332
  }
333
333
 
334
334
  handleSelectAll(e:CustomEvent): void {
335
- this.onFilterSelectAllHeaderPress(e);
336
- this.fireDecoratorEvent("select-all");
335
+ this.onSelectAllHeaderPress(e);
337
336
  }
338
337
 
339
338
  handleItemPress(e:CustomEvent): void {
@@ -28,10 +28,6 @@ class UDExFilterMenuSelectAll extends UDExListGroupHeaderBase {
28
28
  get isSelectAllHeader() {
29
29
  return true;
30
30
  }
31
-
32
- get isFilterMenuSelectAllHeader() {
33
- return true;
34
- }
35
31
  }
36
32
 
37
33
  UDExFilterMenuSelectAll.define();
package/src/InputGroup.ts CHANGED
@@ -1,13 +1,13 @@
1
1
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
2
3
  import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
3
4
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
5
  import slot from "@ui5/webcomponents-base/dist/decorators/slot.js";
5
- import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
6
6
  import Icon from "@ui5/webcomponents/dist/Icon.js";
7
7
  import type UDExCheckbox from "./Checkbox.js";
8
8
  import type UDExRadioButton from "./RadioButton.js";
9
9
  import UDExStatusMessage from "./StatusMessage.js";
10
- import InputGroupTemplate from "./generated/templates/InputGroupTemplate.lit.js";
10
+ import InputGroupTemplate from "./InputGroupTemplate.js";
11
11
  import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
12
12
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
13
13
  import {
@@ -49,7 +49,7 @@ export enum UDExOrientation {
49
49
 
50
50
  @customElement({
51
51
  tag: "udex-input-group",
52
- renderer: litRender,
52
+ renderer: jsxRenderer,
53
53
  styles: InputGroupCss,
54
54
  template: InputGroupTemplate,
55
55
  dependencies: [Icon, UDExStatusMessage],
@@ -119,10 +119,6 @@ class UDExInputGroup extends UI5Element {
119
119
  };
120
120
  }
121
121
 
122
- get hasValueState(): boolean {
123
- return this.valueState !== "Standard";
124
- }
125
-
126
122
  get valueStateText(): string | undefined {
127
123
  return this.supportingText || this.valueStateTypeMappings[this.valueState];
128
124
  }
@@ -0,0 +1,31 @@
1
+ import type UDExInputGroup from "./InputGroup.js";
2
+ import UDExStatusMessage from "./StatusMessage.js";
3
+
4
+ export default function InputGroupTemplate(this: UDExInputGroup) {
5
+ const rootClass = "udex-input-group";
6
+
7
+ return (
8
+ <>
9
+ <div id={`${this._id}-input-group`}
10
+ class={`${rootClass}__container`}
11
+ role="group"
12
+ aria-describedby={`${this._id}-valueStateDesc`}>
13
+ <div class={`${rootClass}__content`}>
14
+ {this._items.map((itemInfo, index) => (
15
+ <div key={index} class={`${rootClass}__item`}>
16
+ <slot name={`${itemInfo.item._individualSlot}`}></slot>
17
+ </div>
18
+ ))}
19
+ </div>
20
+ {this.valueStateText && (
21
+ <>
22
+ <UDExStatusMessage supporting-text={this.valueStateText} value-state={this.valueState}></UDExStatusMessage>
23
+ <span id={`${this._id}-valueStateDesc`} class="hidden-text">
24
+ {this.valueStateText}
25
+ </span>
26
+ </>
27
+ )}
28
+ </div>
29
+ </>
30
+ );
31
+ }
@@ -532,7 +532,7 @@ class UDExMastheadMobileMenu extends UI5Element {
532
532
  }
533
533
  }
534
534
 
535
- if (isExploreMode) {
535
+ if (isExploreMode && this.hasExploreBtnSlot) {
536
536
  analyticsPath.unshift(this.exploreItem.label);
537
537
  }
538
538
 
package/src/Search.ts CHANGED
@@ -39,6 +39,7 @@ import {
39
39
  } from "./generated/i18n/i18n-defaults.js";
40
40
  import type SearchInputSuggestion from "./features/SearchSuggestionsPopover.js";
41
41
  import retryUntilSuccessful from "./utils/retryUntilSuccessful.js";
42
+ import sanitizeString from "./utils/sanitizeString.js";
42
43
  import UDExButton from "./Button.js";
43
44
 
44
45
  import SearchTemplate from "./generated/templates/SearchTemplate.lit.js";
@@ -690,12 +691,12 @@ class UDExSearch extends UI5Element {
690
691
  const label = itemWithCustomIcon ? item.label : item;
691
692
  return {
692
693
  handleSelectItem: this.handleSelectItem(label, idName),
693
- text: this.getTextWithSuggestion(label),
694
- title: label,
694
+ text: sanitizeString(this.getTextWithSuggestion(label)),
695
+ title: sanitizeString(label),
695
696
  icon: itemWithCustomIcon ? item.icon : SearchIcon,
696
697
  hasCustomIcon: itemWithCustomIcon,
697
698
  id: `${idName}-${index}`,
698
- suggestionDescription: `${label}, ${idName} ${index + 1} ${UDExSearch.i18nBundle.getText(OF)} ${suggestedList.length}`,
699
+ suggestionDescription: sanitizeString(`${label}, ${idName} ${index + 1} ${UDExSearch.i18nBundle.getText(OF)} ${suggestedList.length}`),
699
700
  };
700
701
  });
701
702
  }
@@ -718,7 +719,7 @@ class UDExSearch extends UI5Element {
718
719
  };
719
720
 
720
721
  fireDropdownItemClick(value: string, categoryName: string) {
721
- this.fireDecoratorEvent("dropdown-item-click", { value, categoryName });
722
+ this.fireDecoratorEvent("dropdown-item-click", { value: sanitizeString(value), categoryName });
722
723
  }
723
724
 
724
725
  handleDropdownClick() {
@@ -250,18 +250,6 @@ class UDExSearchableListBase extends UI5Element {
250
250
  this.fireSelectionChange(dropdownItemId);
251
251
  }
252
252
 
253
- onFilterSelectAllHeaderPress(e:CustomEvent) {
254
- const dropdownHeaderItemId = this.getDataTokenId(e);
255
- this.getProcessedItems().forEach(({ item }) => {
256
- if (item._id === dropdownHeaderItemId) {
257
- this.activateHeaderAndSetAllItems(item as UDExListGroupHeaderBase);
258
- }
259
- });
260
-
261
- this.syncFilteredItems();
262
- this.fireSelectionChange(dropdownHeaderItemId);
263
- }
264
-
265
253
  activateHeaderAndSetAllItems(item: UDExListGroupHeaderBase) {
266
254
  item.activateHeader();
267
255
  item.setAllItems(false);
@@ -298,28 +286,29 @@ class UDExSearchableListBase extends UI5Element {
298
286
 
299
287
  handleGroupHeaderState(groupHeader: UDExListGroupHeaderBase) {
300
288
  if (this.modeMultiSelect) {
301
- if (groupHeader.isFilterMenuSelectAllHeader) {
302
- groupHeader.deactivateHeader();
303
-
304
- if (groupHeader.isAllDeselected()) {
305
- groupHeader.activateHeader();
306
- }
307
- } else {
308
- groupHeader.handleHeaderState();
309
- }
289
+ groupHeader.handleHeaderState();
310
290
  }
311
291
  }
312
292
 
313
293
  onHeaderPress(e:CustomEvent) {
314
- const dropdownHeaderItemId = this.getDataTokenId(e);
294
+ this.handleGroupHeaderSelection(e);
295
+ this.syncFilteredItems();
296
+ this.fireSelectionChange(this.getDataTokenId(e));
297
+ }
298
+
299
+ onSelectAllHeaderPress(e:CustomEvent) {
300
+ this.handleGroupHeaderSelection(e);
301
+ this.syncFilteredItems();
302
+ this.fireDecoratorEvent("select-all");
303
+ }
304
+
305
+ handleGroupHeaderSelection(e: CustomEvent): void {
306
+ const headerItemId = this.getDataTokenId(e);
315
307
  this.getProcessedItems().forEach(({ item }) => {
316
- if (item._id === dropdownHeaderItemId) {
308
+ if (item._id === headerItemId) {
317
309
  (item as UDExListGroupHeaderBase).handleSelectionGroupState();
318
310
  }
319
311
  });
320
-
321
- this.syncFilteredItems();
322
- this.fireSelectionChange(dropdownHeaderItemId);
323
312
  }
324
313
 
325
314
  onSearch(e:CustomEvent) {
package/src/SelectBox.ts CHANGED
@@ -326,8 +326,7 @@ class UDExSelectBox extends UDExSearchableListBase {
326
326
  }
327
327
 
328
328
  handleSelectAll(e:CustomEvent) {
329
- this.onHeaderPress(e);
330
- this.fireDecoratorEvent("select-all");
329
+ this.onSelectAllHeaderPress(e);
331
330
  }
332
331
 
333
332
  handleHeaderPress(e:CustomEvent) {
@@ -1,17 +1,15 @@
1
1
  import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js";
2
+ import jsxRenderer from "@ui5/webcomponents-base/renderer/JsxRenderer.js";
2
3
  import customElement from "@ui5/webcomponents-base/dist/decorators/customElement.js";
3
4
  import property from "@ui5/webcomponents-base/dist/decorators/property.js";
4
- import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js";
5
5
  import i18n from "@ui5/webcomponents-base/dist/decorators/i18n.js";
6
6
  import type I18nBundle from "@ui5/webcomponents-base/dist/i18nBundle.js";
7
7
  import { READ_LESS, READ_MORE } from "./generated/i18n/i18n-defaults.js";
8
-
9
- // Template
10
- import TruncatedTextTemplate from "./generated/templates/TruncatedTextTemplate.lit.js";
8
+ import UDExButton from "./Button.js";
9
+ import TruncatedTextTemplate from "./TruncatedTextTemplate.js";
11
10
 
12
11
  // Styles
13
12
  import TruncatedTextCss from "./generated/themes/TruncatedText.css.js";
14
- import UDExButton from "./Button.js";
15
13
 
16
14
  export enum ErrorVariableName {
17
15
  charLimit = "char-limit"
@@ -34,7 +32,7 @@ const lineEndRegExp = new RegExp(/($)|([,.]+)$|([,.]+)?\s+(\S*)$/);
34
32
  */
35
33
  @customElement({
36
34
  tag: "udex-truncated-text",
37
- renderer: litRender,
35
+ renderer: jsxRenderer,
38
36
  styles: TruncatedTextCss,
39
37
  template: TruncatedTextTemplate,
40
38
  dependencies: [UDExButton],
@@ -77,25 +75,21 @@ class UDExTruncatedText extends UI5Element {
77
75
  @i18n("@sapudex/web-components")
78
76
  static i18nBundle: I18nBundle;
79
77
 
80
- constructor() {
81
- super();
82
- }
83
-
84
- get visibleText() {
78
+ get visibleText(): string {
85
79
  return this.initiallyExpanded ? `${this.text} ` : this.truncatedText;
86
80
  }
87
81
 
88
- get truncatedText() {
82
+ get truncatedText(): string {
89
83
  return this.text.substring(0, this.cropAfter()).replace(lineEndRegExp, ellipsisSymbols);
90
84
  }
91
85
 
92
- get buttonLabel() {
86
+ get buttonLabel(): string {
93
87
  return this.initiallyExpanded
94
88
  ? UDExTruncatedText.i18nBundle.getText(READ_LESS)
95
89
  : UDExTruncatedText.i18nBundle.getText(READ_MORE);
96
90
  }
97
91
 
98
- get validatedCharLimit() {
92
+ get validatedCharLimit(): number {
99
93
  return (Number(this.charLimit) < 0) ? 0 : this.charLimit;
100
94
  }
101
95
 
@@ -0,0 +1,21 @@
1
+ import type TruncatedText from "./TruncatedText.js";
2
+ import UDExButtonSize from "./types/ButtonSize.js";
3
+ import UDExButtonDesign from "./types/ButtonDesign.js";
4
+ import UDExButton from "./Button.js";
5
+
6
+ export default function TruncatedTextTemplate(this: TruncatedText) {
7
+ const rootClass = "udex-truncated-text";
8
+ return (
9
+ <p className={rootClass}>
10
+ <span className={`${rootClass}__visible-text`}>{this.visibleText}</span>
11
+ <UDExButton
12
+ id="toggleButton"
13
+ class={`${rootClass}__toggle-button`}
14
+ design={UDExButtonDesign.Tertiary}
15
+ size={UDExButtonSize.Small}
16
+ onClick={this.onToggleClick}>
17
+ {this.buttonLabel}
18
+ </UDExButton>
19
+ </p>
20
+ );
21
+ }