@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.
- package/cypress/specs/Breadcrumbs.cy.tsx +77 -0
- package/cypress/specs/FilterMenu.cy.tsx +19 -43
- package/cypress/specs/InputGroup.cy.tsx +47 -0
- package/cypress/support/component-imports.instrumented.ts +4 -0
- package/cypress/support/component-imports.src.ts +4 -0
- package/dist/Breadcrumbs.d.ts +2 -0
- package/dist/Breadcrumbs.js +8 -7
- package/dist/Breadcrumbs.js.map +1 -1
- package/dist/BreadcrumbsItem.d.ts +1 -2
- package/dist/BreadcrumbsItem.js.map +1 -1
- package/dist/BreadcrumbsPopoverTemplate.d.ts +2 -0
- package/dist/BreadcrumbsPopoverTemplate.js +8 -0
- package/dist/BreadcrumbsPopoverTemplate.js.map +1 -0
- package/dist/BreadcrumbsTemplate.d.ts +2 -0
- package/dist/BreadcrumbsTemplate.js +10 -0
- package/dist/BreadcrumbsTemplate.js.map +1 -0
- package/dist/FilterMenu.js +1 -2
- package/dist/FilterMenu.js.map +1 -1
- package/dist/FilterMenuSelectAll.d.ts +0 -1
- package/dist/FilterMenuSelectAll.js +0 -3
- package/dist/FilterMenuSelectAll.js.map +1 -1
- package/dist/InputGroup.d.ts +0 -1
- package/dist/InputGroup.js +3 -6
- package/dist/InputGroup.js.map +1 -1
- package/dist/InputGroupTemplate.d.ts +2 -0
- package/dist/InputGroupTemplate.js +7 -0
- package/dist/InputGroupTemplate.js.map +1 -0
- package/dist/MastheadMobileMenu.js +1 -1
- package/dist/MastheadMobileMenu.js.map +1 -1
- package/dist/Search.js +5 -4
- package/dist/Search.js.map +1 -1
- package/dist/SearchableListBase.d.ts +2 -1
- package/dist/SearchableListBase.js +13 -23
- package/dist/SearchableListBase.js.map +1 -1
- package/dist/SelectBox.js +1 -2
- package/dist/SelectBox.js.map +1 -1
- package/dist/TruncatedText.d.ts +0 -1
- package/dist/TruncatedText.js +5 -6
- package/dist/TruncatedText.js.map +1 -1
- package/dist/TruncatedTextTemplate.d.ts +2 -0
- package/dist/TruncatedTextTemplate.js +9 -0
- package/dist/TruncatedTextTemplate.js.map +1 -0
- package/dist/assets/{InputSuggestions-AxcsfuTc.js → InputSuggestions-D5z6eIC2.js} +1 -1
- package/dist/assets/{ListItemStandardExpandableTextTemplate-CaS49yZt.js → ListItemStandardExpandableTextTemplate-BKeYxhnX.js} +1 -1
- package/dist/assets/{bundle.esm-DzkSPQ0p.js → bundle.esm-DXwtYGLH.js} +210 -210
- package/dist/css/themes/MediaPlayer.css +1 -1
- package/dist/css/themes/RatingIndicator.css +1 -1
- package/dist/css/themes/Slider.css +1 -1
- package/dist/custom-elements-internal.json +17 -2
- package/dist/custom-elements.json +17 -2
- package/dist/generated/themes/MediaPlayer.css.d.ts +1 -1
- package/dist/generated/themes/MediaPlayer.css.js +1 -1
- package/dist/generated/themes/MediaPlayer.css.js.map +1 -1
- package/dist/generated/themes/RatingIndicator.css.d.ts +1 -1
- package/dist/generated/themes/RatingIndicator.css.js +1 -1
- package/dist/generated/themes/RatingIndicator.css.js.map +1 -1
- package/dist/generated/themes/Slider.css.d.ts +1 -1
- package/dist/generated/themes/Slider.css.js +1 -1
- package/dist/generated/themes/Slider.css.js.map +1 -1
- package/dist/utils/sanitizeString.d.ts +2 -0
- package/dist/utils/sanitizeString.js +12 -0
- package/dist/utils/sanitizeString.js.map +1 -0
- package/dist/web-types.json +2 -2
- package/package.json +2 -2
- package/src/Breadcrumbs.ts +12 -7
- package/src/BreadcrumbsItem.ts +2 -2
- package/src/BreadcrumbsPopoverTemplate.tsx +60 -0
- package/src/BreadcrumbsTemplate.tsx +53 -0
- package/src/FilterMenu.ts +1 -2
- package/src/FilterMenuSelectAll.ts +0 -4
- package/src/InputGroup.ts +3 -7
- package/src/InputGroupTemplate.tsx +31 -0
- package/src/MastheadMobileMenu.ts +1 -1
- package/src/Search.ts +5 -4
- package/src/SearchableListBase.ts +15 -26
- package/src/SelectBox.ts +1 -2
- package/src/TruncatedText.ts +8 -14
- package/src/TruncatedTextTemplate.tsx +21 -0
- package/src/generated/themes/MediaPlayer.css.ts +1 -1
- package/src/generated/themes/RatingIndicator.css.ts +1 -1
- package/src/generated/themes/Slider.css.ts +1 -1
- package/src/themes/MediaPlayer.css +133 -186
- package/src/utils/sanitizeString.ts +13 -0
- package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js +0 -12
- package/dist/generated/templates/BreadcrumbsPopoverTemplate.lit.js.map +0 -1
- package/dist/generated/templates/BreadcrumbsTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/BreadcrumbsTemplate.lit.js +0 -14
- package/dist/generated/templates/BreadcrumbsTemplate.lit.js.map +0 -1
- package/dist/generated/templates/InputGroupTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/InputGroupTemplate.lit.js +0 -9
- package/dist/generated/templates/InputGroupTemplate.lit.js.map +0 -1
- package/dist/generated/templates/TruncatedTextTemplate.lit.d.ts +0 -3
- package/dist/generated/templates/TruncatedTextTemplate.lit.js +0 -7
- package/dist/generated/templates/TruncatedTextTemplate.lit.js.map +0 -1
- package/src/Breadcrumbs.hbs +0 -38
- package/src/BreadcrumbsPopover.hbs +0 -48
- package/src/InputGroup.hbs +0 -20
- package/src/TruncatedText.hbs +0 -11
- package/src/generated/templates/BreadcrumbsPopoverTemplate.lit.ts +0 -16
- package/src/generated/templates/BreadcrumbsTemplate.lit.ts +0 -18
- package/src/generated/templates/InputGroupTemplate.lit.ts +0 -13
- 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-
|
|
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-
|
|
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,12 @@
|
|
|
1
|
+
const sanitizeString = (str) => {
|
|
2
|
+
const sanitized = str
|
|
3
|
+
.replace(/&/g, "&")
|
|
4
|
+
.replace(/</g, "<")
|
|
5
|
+
.replace(/>/g, ">")
|
|
6
|
+
.replace(/"/g, """)
|
|
7
|
+
.replace(/'/g, "'");
|
|
8
|
+
return sanitized.replace(/<b>/g, "<b>")
|
|
9
|
+
.replace(/<\/b>/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, \"&\")\n .replace(/</g, \"<\")\n .replace(/>/g, \">\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\");\n\n return sanitized.replace(/<b>/g, \"<b>\")\n .replace(/<\\/b>/g, \"</b>\");\n};\n\nexport default sanitizeString;\n"]}
|
package/dist/web-types.json
CHANGED
|
@@ -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.
|
|
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.
|
|
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": "
|
|
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",
|
package/src/Breadcrumbs.ts
CHANGED
|
@@ -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
|
|
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 "./
|
|
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:
|
|
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
|
-
|
|
311
|
+
const rootClass = "udex-breadcrumbs";
|
|
312
|
+
return this._dropdownOpened ? `${rootClass} ${rootClass}__trigger--opened` : rootClass;
|
|
308
313
|
}
|
|
309
314
|
|
|
310
315
|
get _accessibleNameText(): string {
|
package/src/BreadcrumbsItem.ts
CHANGED
|
@@ -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.
|
|
336
|
-
this.fireDecoratorEvent("select-all");
|
|
335
|
+
this.onSelectAllHeaderPress(e);
|
|
337
336
|
}
|
|
338
337
|
|
|
339
338
|
handleItemPress(e:CustomEvent): void {
|
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 "./
|
|
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:
|
|
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
|
+
}
|
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
|
-
|
|
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
|
-
|
|
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 ===
|
|
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.
|
|
330
|
-
this.fireDecoratorEvent("select-all");
|
|
329
|
+
this.onSelectAllHeaderPress(e);
|
|
331
330
|
}
|
|
332
331
|
|
|
333
332
|
handleHeaderPress(e:CustomEvent) {
|
package/src/TruncatedText.ts
CHANGED
|
@@ -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
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
+
}
|