@porsche-design-system/components-react 3.28.0-rc.1 → 3.28.0-rc.3
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/CHANGELOG.md +684 -657
- package/LICENSE.md +1 -1
- package/package.json +5 -2
- package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +155 -89
- package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +0 -5
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/banner.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/canvas.cjs +6 -4
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.cjs +4 -5
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/state-message.cjs +6 -2
- package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +155 -89
- package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +1 -5
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/banner.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/canvas.mjs +6 -4
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.mjs +4 -5
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/state-message.mjs +7 -3
- package/ssr/esm/lib/dsr-components/banner.d.ts +1 -1
- package/ssr/esm/lib/dsr-components/canvas.d.ts +0 -4
- package/ssr/esm/lib/dsr-components/link.d.ts +1 -1
- package/tailwind/index.css +348 -0
package/LICENSE.md
CHANGED
|
@@ -21,7 +21,7 @@ update this licensing agreement at any time.
|
|
|
21
21
|
Subject to the terms of this Agreement, Porsche grants you a limited, worldwide, royalty-free, non-assignable,
|
|
22
22
|
non-transferable, non-sublicensable, and non-exclusive license to use the Porsche Design System Assets solely to
|
|
23
23
|
develop, test, and distribute software applications, websites, and interfaces on behalf of Porsche that are available
|
|
24
|
-
via
|
|
24
|
+
via [https://porsche.com](https://porsche.com) or any associated websites or other Porsche software (“Applications”).
|
|
25
25
|
|
|
26
26
|
### License Restrictions
|
|
27
27
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@porsche-design-system/components-react",
|
|
3
|
-
"version": "3.28.0-rc.
|
|
3
|
+
"version": "3.28.0-rc.3",
|
|
4
4
|
"description": "Porsche Design System is a component library designed to help developers create the best experience for software or services distributed by Dr. Ing. h.c. F. Porsche AG.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"porsche",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"license": "SEE LICENSE IN LICENSE",
|
|
18
18
|
"homepage": "https://designsystem.porsche.com",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@porsche-design-system/components-js": "3.28.0-rc.
|
|
20
|
+
"@porsche-design-system/components-js": "3.28.0-rc.3"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {
|
|
23
23
|
"ag-grid-community": ">= 33.0.0 <34.0.0",
|
|
@@ -75,6 +75,9 @@
|
|
|
75
75
|
"import": "./styles/vanilla-extract/esm/vanilla-extract/index.mjs",
|
|
76
76
|
"default": "./styles/vanilla-extract/cjs/vanilla-extract/index.cjs"
|
|
77
77
|
},
|
|
78
|
+
"./tailwindcss": {
|
|
79
|
+
"style": "./tailwind/index.css"
|
|
80
|
+
},
|
|
78
81
|
"./ag-grid": {
|
|
79
82
|
"types": "./ag-grid/esm/index.d.ts",
|
|
80
83
|
"import": "./ag-grid/esm/index.mjs",
|
|
@@ -4098,6 +4098,10 @@ const getBannerPopoverResetStyles = () => {
|
|
|
4098
4098
|
};
|
|
4099
4099
|
};
|
|
4100
4100
|
|
|
4101
|
+
/**
|
|
4102
|
+
* @css-variable {"name": "--p-banner-position-top", "description": "Position top of banner", "defaultValue": "56px"}
|
|
4103
|
+
* @css-variable {"name": "--p-banner-position-bottom", "description": "Position bottom of banner. Only has an effect below breakpoint 's'.", "defaultValue": "56px"}
|
|
4104
|
+
*/
|
|
4101
4105
|
const cssVariableTop = '--p-banner-position-top';
|
|
4102
4106
|
const cssVariableBottom = '--p-banner-position-bottom';
|
|
4103
4107
|
const cssVariableZIndex = '--p-internal-banner-z-index';
|
|
@@ -5036,6 +5040,9 @@ const getComponentCss$16 = (theme, isSidebarStartOpen, isSidebarEndOpen) => {
|
|
|
5036
5040
|
});
|
|
5037
5041
|
};
|
|
5038
5042
|
|
|
5043
|
+
/**
|
|
5044
|
+
* @css-variable {"name": "--p-carousel-prev-next-filter", "description": "CSS Filter applied to the navigation (prev/next buttons)", "defaultValue": "none"}
|
|
5045
|
+
*/
|
|
5039
5046
|
const cssVariablePrevNextFilter = '--p-carousel-prev-next-filter';
|
|
5040
5047
|
const cssVariableGradientColorWidth = '--p-gradient-color-width';
|
|
5041
5048
|
const carouselTransitionDuration = motionDurationModerate;
|
|
@@ -5529,8 +5536,12 @@ const getFunctionalComponentStateMessageStyles = (theme, state, additionalDefaul
|
|
|
5529
5536
|
...prefersColorSchemeDarkMediaQuery(theme, {
|
|
5530
5537
|
color: getThemedFormStateColors('dark', state).formStateColor,
|
|
5531
5538
|
}),
|
|
5532
|
-
transition: getTransition('color'),
|
|
5539
|
+
transition: `${getTransition('color')}, ${getTransition('opacity')}`,
|
|
5533
5540
|
...additionalDefaultJssStyle,
|
|
5541
|
+
'&:empty': {
|
|
5542
|
+
opacity: '0',
|
|
5543
|
+
position: 'absolute',
|
|
5544
|
+
},
|
|
5534
5545
|
},
|
|
5535
5546
|
};
|
|
5536
5547
|
};
|
|
@@ -5637,13 +5648,112 @@ const getComponentCss$14 = (hideLabel, state, isDisabled, isLoading, theme) => {
|
|
|
5637
5648
|
});
|
|
5638
5649
|
};
|
|
5639
5650
|
|
|
5651
|
+
const cssVarInternalCheckboxScaling = '--p-internal-checkbox-scaling';
|
|
5652
|
+
const getCheckboxBaseStyles = (theme, isDisabled, isLoading, state, compact) => {
|
|
5653
|
+
const { contrastMediumColor, disabledColor } = getThemedColors(theme);
|
|
5654
|
+
const { contrastMediumColor: contrastMediumColorDark, disabledColor: disabledColorDark } = getThemedColors('dark');
|
|
5655
|
+
const { formStateColor } = getThemedFormStateColors(theme, state);
|
|
5656
|
+
const { formStateColor: formStateColorDark } = getThemedFormStateColors('dark', state);
|
|
5657
|
+
const disabledOrLoading = isDisabledOrLoading(isDisabled, isLoading);
|
|
5658
|
+
// TODO: needs to be extracted into a color function
|
|
5659
|
+
const uncheckedColor = disabledOrLoading ? disabledColor : formStateColor || contrastMediumColor;
|
|
5660
|
+
const uncheckedColorDark = disabledOrLoading ? disabledColorDark : formStateColorDark || contrastMediumColorDark;
|
|
5661
|
+
const background = `transparent 0% 0% / ${fontLineHeight}`;
|
|
5662
|
+
const minimumTouchTargetSize = '24px'; // Minimum touch target size to comply with accessibility guidelines.
|
|
5663
|
+
const scalingVar = `var(${cssVarInternalCheckboxScaling}, ${compact ? 0.6668 : 1})`;
|
|
5664
|
+
// Determines the scaling factor for the checkbox size. In "compact" mode, it uses 0.6668 to achieve a 20px checkbox (compact size).
|
|
5665
|
+
// Defaults to 1 for the standard size and can be overridden by the CSS variable `cssVarInternalCheckboxScaling`.
|
|
5666
|
+
const dimension = `calc(max(${SCALING_BASE_VALUE} * 0.75, ${scalingVar} * ${fontLineHeight}))`;
|
|
5667
|
+
// Calculates the checkbox size and ensures a minimum size of 12px (0.75 * SCALING_BASE_VALUE).
|
|
5668
|
+
// Scales proportionally with the line height and the scaling factor.
|
|
5669
|
+
const dimensionFull = `calc(${dimension} + ${borderWidthBase} * 2)`; // Calculates the total size of the checkbox including its borders.
|
|
5670
|
+
const touchTargetSizeDiff = `calc(${minimumTouchTargetSize} - ${dimensionFull})`; // Difference between the minimum touch target size and the checkbox full size.
|
|
5671
|
+
const inset = `calc(-${borderWidthBase} - max(0px, ${touchTargetSizeDiff} / 2))`; // Positions the checkbox ::before pseudo-element with a negative offset to align it with the touch target.
|
|
5672
|
+
return {
|
|
5673
|
+
position: 'relative',
|
|
5674
|
+
'&::before': {
|
|
5675
|
+
// Ensures the touch target is at least 24px, even if the checkbox is smaller than the minimum touch target size.
|
|
5676
|
+
// This pseudo-element expands the clickable area without affecting the visual size of the checkbox itself.
|
|
5677
|
+
content: '""',
|
|
5678
|
+
position: 'absolute',
|
|
5679
|
+
inset,
|
|
5680
|
+
},
|
|
5681
|
+
width: dimension,
|
|
5682
|
+
height: dimension,
|
|
5683
|
+
font: `${fontSizeTextSmall} ${fontFamily}`, // needed for correct width and height definition based on ex-unit
|
|
5684
|
+
display: 'block',
|
|
5685
|
+
margin: 0,
|
|
5686
|
+
padding: 0,
|
|
5687
|
+
WebkitAppearance: 'none', // iOS safari
|
|
5688
|
+
appearance: 'none',
|
|
5689
|
+
boxSizing: 'content-box',
|
|
5690
|
+
background,
|
|
5691
|
+
transition: `${getTransition('background-color')}, ${getTransition('border-color')}`,
|
|
5692
|
+
border: `${borderWidthBase} solid ${uncheckedColor}`,
|
|
5693
|
+
outline: 0, // TODO: only relevant for VRT testing with forced states - prevents :focus style (in case getFocusJssStyle() condition is not matching)
|
|
5694
|
+
...(disabledOrLoading
|
|
5695
|
+
? {
|
|
5696
|
+
pointerEvents: 'none', // to prevent form element becomes clickable/toggleable
|
|
5697
|
+
}
|
|
5698
|
+
: {
|
|
5699
|
+
cursor: 'pointer',
|
|
5700
|
+
}),
|
|
5701
|
+
...prefersColorSchemeDarkMediaQuery(theme, {
|
|
5702
|
+
borderColor: uncheckedColorDark,
|
|
5703
|
+
}),
|
|
5704
|
+
gridArea: '1/1',
|
|
5705
|
+
borderRadius: borderRadiusSmall,
|
|
5706
|
+
...addImportantToEachRule({
|
|
5707
|
+
backgroundSize: 'cover',
|
|
5708
|
+
}),
|
|
5709
|
+
};
|
|
5710
|
+
};
|
|
5711
|
+
|
|
5640
5712
|
const getCheckedSVGBackgroundImage$1 = (fill) => {
|
|
5641
5713
|
return getInlineSVGBackgroundImage(`<path fill="${fill}" d="m20.22,7.47l-1.47-1.42-9.26,9.02-4.24-4.15-1.47,1.42,5.71,5.6,10.73-10.47Z"/>`);
|
|
5642
5714
|
};
|
|
5715
|
+
const getCheckboxCheckedBaseStyles = (theme, isDisabled, isLoading, state) => {
|
|
5716
|
+
const { primaryColor, disabledColor } = getThemedColors(theme);
|
|
5717
|
+
const { primaryColor: primaryColorDark, disabledColor: disabledColorDark } = getThemedColors('dark');
|
|
5718
|
+
const { formStateColor } = getThemedFormStateColors(theme, state);
|
|
5719
|
+
const { formStateColor: formStateColorDark } = getThemedFormStateColors('dark', state);
|
|
5720
|
+
const { canvasTextColor } = getHighContrastColors();
|
|
5721
|
+
const disabledOrLoading = isDisabledOrLoading(isDisabled, isLoading);
|
|
5722
|
+
// TODO: needs to be extracted into a color function
|
|
5723
|
+
const checkedColor = isHighContrastMode
|
|
5724
|
+
? canvasTextColor
|
|
5725
|
+
: disabledOrLoading
|
|
5726
|
+
? disabledColor
|
|
5727
|
+
: formStateColor || primaryColor;
|
|
5728
|
+
const checkedColorDark = isHighContrastMode
|
|
5729
|
+
? canvasTextColor
|
|
5730
|
+
: disabledOrLoading
|
|
5731
|
+
? disabledColorDark
|
|
5732
|
+
: formStateColorDark || primaryColorDark;
|
|
5733
|
+
const checkedIconColor = escapeHashCharacter(getInvertedThemedColors(theme).primaryColor);
|
|
5734
|
+
const checkedIconColorDark = escapeHashCharacter(getInvertedThemedColors('dark').primaryColor);
|
|
5735
|
+
return {
|
|
5736
|
+
borderColor: checkedColor,
|
|
5737
|
+
backgroundColor: checkedColor,
|
|
5738
|
+
backgroundImage: getCheckedSVGBackgroundImage$1(checkedIconColor),
|
|
5739
|
+
...prefersColorSchemeDarkMediaQuery(theme, {
|
|
5740
|
+
backgroundImage: getCheckedSVGBackgroundImage$1(checkedIconColorDark),
|
|
5741
|
+
borderColor: checkedColorDark,
|
|
5742
|
+
backgroundColor: checkedColorDark,
|
|
5743
|
+
}),
|
|
5744
|
+
// This is a workaround for Blink based browsers, which do not reflect the high contrast system colors (e.g.: "Canvas" and "CanvasText") when added to background SVG's.
|
|
5745
|
+
...(isHighContrastMode &&
|
|
5746
|
+
getSchemedHighContrastMediaQuery({
|
|
5747
|
+
backgroundImage: getCheckedSVGBackgroundImage$1('white'),
|
|
5748
|
+
}, {
|
|
5749
|
+
backgroundImage: getCheckedSVGBackgroundImage$1('black'),
|
|
5750
|
+
})),
|
|
5751
|
+
};
|
|
5752
|
+
};
|
|
5753
|
+
|
|
5643
5754
|
const getIndeterminateSVGBackgroundImage = (fill) => {
|
|
5644
5755
|
return getInlineSVGBackgroundImage(`<path fill="${fill}" d="m20,11v2H4v-2h16Z"/>`);
|
|
5645
5756
|
};
|
|
5646
|
-
const cssVarInternalCheckboxScaling = '--p-internal-checkbox-scaling';
|
|
5647
5757
|
const getComponentCss$13 = (hideLabel, state, isDisabled, isLoading, compact, theme) => {
|
|
5648
5758
|
const { primaryColor, contrastMediumColor, contrastHighColor, disabledColor, focusColor } = getThemedColors(theme);
|
|
5649
5759
|
const { primaryColor: primaryColorDark, contrastMediumColor: contrastMediumColorDark, contrastHighColor: contrastHighColorDark, disabledColor: disabledColorDark, focusColor: focusColorDark, } = getThemedColors('dark');
|
|
@@ -5668,8 +5778,6 @@ const getComponentCss$13 = (hideLabel, state, isDisabled, isLoading, compact, th
|
|
|
5668
5778
|
: formStateColorDark || primaryColorDark;
|
|
5669
5779
|
const checkedHoverColor = formStateHoverColor || contrastHighColor;
|
|
5670
5780
|
const checkedHoverColorDark = formStateHoverColorDark || contrastHighColorDark;
|
|
5671
|
-
const checkedIconColor = escapeHashCharacter(getInvertedThemedColors(theme).primaryColor);
|
|
5672
|
-
const checkedIconColorDark = escapeHashCharacter(getInvertedThemedColors('dark').primaryColor);
|
|
5673
5781
|
const indeterminateIconColor = escapeHashCharacter(disabledOrLoading ? disabledColorDark : formStateColor || primaryColor);
|
|
5674
5782
|
const indeterminateIconColorDark = escapeHashCharacter(formStateColorDark || primaryColorDark);
|
|
5675
5783
|
const indeterminateIconHoverColor = escapeHashCharacter(formStateHoverColor || primaryColor);
|
|
@@ -5677,18 +5785,11 @@ const getComponentCss$13 = (hideLabel, state, isDisabled, isLoading, compact, th
|
|
|
5677
5785
|
const background = `transparent 0% 0% / ${fontLineHeight}`;
|
|
5678
5786
|
const minimumTouchTargetSize = '24px'; // Minimum touch target size to comply with accessibility guidelines.
|
|
5679
5787
|
const scalingVar = `var(${cssVarInternalCheckboxScaling}, ${compact ? 0.6668 : 1})`;
|
|
5680
|
-
// Determines the scaling factor for the checkbox size. In "compact" mode, it uses 0.6668 to achieve a 20px checkbox (compact size).
|
|
5681
|
-
// Defaults to 1 for the standard size and can be overridden by the CSS variable `cssVarInternalCheckboxScaling`.
|
|
5682
5788
|
const dimension = `calc(max(${SCALING_BASE_VALUE} * 0.75, ${scalingVar} * ${fontLineHeight}))`;
|
|
5683
|
-
// Calculates the checkbox size and ensures a minimum size of 12px (0.75 * SCALING_BASE_VALUE).
|
|
5684
|
-
// Scales proportionally with the line height and the scaling factor.
|
|
5685
5789
|
const dimensionFull = `calc(${dimension} + ${borderWidthBase} * 2)`; // Calculates the total size of the checkbox including its borders.
|
|
5686
5790
|
const touchTargetSizeDiff = `calc(${minimumTouchTargetSize} - ${dimensionFull})`; // Difference between the minimum touch target size and the checkbox full size.
|
|
5687
5791
|
const paddingInlineStart = `calc(${spacingStaticSmall} - (max(0px, ${touchTargetSizeDiff})))`;
|
|
5688
|
-
// Adjusts padding to maintain consistent spacing when the checkbox is smaller than the minimum touch target size.
|
|
5689
|
-
// Uses asymmetric padding instead of `gap` to ensure there is no non-clickable area between the label and the input.
|
|
5690
5792
|
const paddingTop = `calc((${dimensionFull} - ${fontLineHeight}) / 2)`; // Vertically centers the checkbox label relative to the checkbox size.
|
|
5691
|
-
const inset = `calc(-${borderWidthBase} - max(0px, ${touchTargetSizeDiff} / 2))`; // Positions the checkbox ::before pseudo-element with a negative offset to align it with the touch target.
|
|
5692
5793
|
const height = `calc(max(${fontLineHeight}, ${dimensionFull}))`; // Ensures the wrapper height matches either the font's line height or the full size of the checkbox, whichever is larger.
|
|
5693
5794
|
return getCss({
|
|
5694
5795
|
'@global': {
|
|
@@ -5700,44 +5801,7 @@ const getComponentCss$13 = (hideLabel, state, isDisabled, isLoading, compact, th
|
|
|
5700
5801
|
}),
|
|
5701
5802
|
},
|
|
5702
5803
|
...preventFoucOfNestedElementsStyles,
|
|
5703
|
-
input:
|
|
5704
|
-
position: 'relative',
|
|
5705
|
-
'&::before': {
|
|
5706
|
-
// Ensures the touch target is at least 24px, even if the checkbox is smaller than the minimum touch target size.
|
|
5707
|
-
// This pseudo-element expands the clickable area without affecting the visual size of the checkbox itself.
|
|
5708
|
-
content: '""',
|
|
5709
|
-
position: 'absolute',
|
|
5710
|
-
inset,
|
|
5711
|
-
},
|
|
5712
|
-
width: dimension,
|
|
5713
|
-
height: dimension,
|
|
5714
|
-
font: `${fontSizeTextSmall} ${fontFamily}`, // needed for correct width and height definition based on ex-unit
|
|
5715
|
-
display: 'block',
|
|
5716
|
-
margin: 0,
|
|
5717
|
-
padding: 0,
|
|
5718
|
-
WebkitAppearance: 'none', // iOS safari
|
|
5719
|
-
appearance: 'none',
|
|
5720
|
-
boxSizing: 'content-box',
|
|
5721
|
-
background,
|
|
5722
|
-
transition: `${getTransition('background-color')}, ${getTransition('border-color')}`,
|
|
5723
|
-
border: `${borderWidthBase} solid ${uncheckedColor}`,
|
|
5724
|
-
outline: 0, // TODO: only relevant for VRT testing with forced states - prevents :focus style (in case getFocusJssStyle() condition is not matching)
|
|
5725
|
-
...(disabledOrLoading
|
|
5726
|
-
? {
|
|
5727
|
-
pointerEvents: 'none', // to prevent form element becomes clickable/toggleable
|
|
5728
|
-
}
|
|
5729
|
-
: {
|
|
5730
|
-
cursor: 'pointer',
|
|
5731
|
-
}),
|
|
5732
|
-
...prefersColorSchemeDarkMediaQuery(theme, {
|
|
5733
|
-
borderColor: uncheckedColorDark,
|
|
5734
|
-
}),
|
|
5735
|
-
gridArea: '1/1',
|
|
5736
|
-
borderRadius: borderRadiusSmall,
|
|
5737
|
-
...addImportantToEachRule({
|
|
5738
|
-
backgroundSize: 'cover',
|
|
5739
|
-
}),
|
|
5740
|
-
},
|
|
5804
|
+
input: getCheckboxBaseStyles(theme, isDisabled, isLoading, state, compact),
|
|
5741
5805
|
...(isLoading
|
|
5742
5806
|
? {
|
|
5743
5807
|
'input:checked': {
|
|
@@ -5751,23 +5815,7 @@ const getComponentCss$13 = (hideLabel, state, isDisabled, isLoading, compact, th
|
|
|
5751
5815
|
},
|
|
5752
5816
|
}
|
|
5753
5817
|
: {
|
|
5754
|
-
'input:checked':
|
|
5755
|
-
borderColor: checkedColor,
|
|
5756
|
-
backgroundColor: checkedColor,
|
|
5757
|
-
backgroundImage: getCheckedSVGBackgroundImage$1(checkedIconColor),
|
|
5758
|
-
...prefersColorSchemeDarkMediaQuery(theme, {
|
|
5759
|
-
backgroundImage: getCheckedSVGBackgroundImage$1(checkedIconColorDark),
|
|
5760
|
-
borderColor: checkedColorDark,
|
|
5761
|
-
backgroundColor: checkedColorDark,
|
|
5762
|
-
}),
|
|
5763
|
-
// This is a workaround for Blink based browsers, which do not reflect the high contrast system colors (e.g.: "Canvas" and "CanvasText") when added to background SVG's.
|
|
5764
|
-
...(isHighContrastMode &&
|
|
5765
|
-
getSchemedHighContrastMediaQuery({
|
|
5766
|
-
backgroundImage: getCheckedSVGBackgroundImage$1('white'),
|
|
5767
|
-
}, {
|
|
5768
|
-
backgroundImage: getCheckedSVGBackgroundImage$1('black'),
|
|
5769
|
-
})),
|
|
5770
|
-
},
|
|
5818
|
+
'input:checked': getCheckboxCheckedBaseStyles(theme, isDisabled, isLoading, state),
|
|
5771
5819
|
'input:indeterminate': {
|
|
5772
5820
|
background, // Safari fix: ensures proper rendering of 'indeterminate' mode with 'checked' state.
|
|
5773
5821
|
borderColor: uncheckedColor, // Safari fix: ensures proper rendering of 'indeterminate' mode with 'checked' state.
|
|
@@ -6925,6 +6973,9 @@ const getDialogStickyAreaJssStyle = (area, theme) => {
|
|
|
6925
6973
|
};
|
|
6926
6974
|
};
|
|
6927
6975
|
|
|
6976
|
+
/**
|
|
6977
|
+
* @css-variable {"name": "--p-flyout-width", "description": "Width of the flyout.", "defaultValue": "auto"}
|
|
6978
|
+
*/
|
|
6928
6979
|
const cssVariableWidth$2 = '--p-flyout-width';
|
|
6929
6980
|
// TODO: we shouldn't expose --p-flyout-max-width
|
|
6930
6981
|
const cssVariableMaxWidth = '--p-flyout-max-width';
|
|
@@ -7525,7 +7576,7 @@ const getUnitCounterJssStyle = (isDisabled, isReadonly, theme) => {
|
|
|
7525
7576
|
}),
|
|
7526
7577
|
...(isReadonly && {
|
|
7527
7578
|
color: contrastHighColor,
|
|
7528
|
-
})
|
|
7579
|
+
}),
|
|
7529
7580
|
};
|
|
7530
7581
|
};
|
|
7531
7582
|
|
|
@@ -7599,12 +7650,11 @@ const getComponentCss$M = (disabled, hideLabel, state, toggle, compact, readOnly
|
|
|
7599
7650
|
borderColor: primaryColorDark,
|
|
7600
7651
|
}),
|
|
7601
7652
|
},
|
|
7602
|
-
...
|
|
7603
|
-
|
|
7604
|
-
|
|
7653
|
+
...(!disabled &&
|
|
7654
|
+
!readOnly &&
|
|
7655
|
+
hoverMediaQuery({
|
|
7605
7656
|
'&:hover:not(:has(.button:hover, input:focus ))': hoverStyles,
|
|
7606
|
-
}),
|
|
7607
|
-
}),
|
|
7657
|
+
})),
|
|
7608
7658
|
...(disabled && {
|
|
7609
7659
|
cursor: 'not-allowed',
|
|
7610
7660
|
color: disabledColor,
|
|
@@ -7633,14 +7683,11 @@ const getComponentCss$M = (disabled, hideLabel, state, toggle, compact, readOnly
|
|
|
7633
7683
|
},
|
|
7634
7684
|
}),
|
|
7635
7685
|
// .label / .required
|
|
7636
|
-
...getFunctionalComponentLabelStyles(disabled, hideLabel, theme,
|
|
7637
|
-
|
|
7638
|
-
|
|
7639
|
-
|
|
7640
|
-
|
|
7641
|
-
}),
|
|
7642
|
-
}),
|
|
7643
|
-
}),
|
|
7686
|
+
...getFunctionalComponentLabelStyles(disabled, hideLabel, theme, !disabled &&
|
|
7687
|
+
!readOnly &&
|
|
7688
|
+
hoverMediaQuery({
|
|
7689
|
+
'&:hover~.wrapper': hoverStyles,
|
|
7690
|
+
})),
|
|
7644
7691
|
// .message
|
|
7645
7692
|
...getFunctionalComponentStateMessageStyles(theme, state),
|
|
7646
7693
|
});
|
|
@@ -7682,12 +7729,12 @@ const getComponentCss$K = (icon, iconSource, variant, hideLabel, hasSlottedAncho
|
|
|
7682
7729
|
label: {
|
|
7683
7730
|
clip: addImportantToRule('unset'), // to overrule breakpoint customizable hide-label style
|
|
7684
7731
|
},
|
|
7685
|
-
|
|
7686
|
-
|
|
7687
|
-
|
|
7732
|
+
...(isPrimary &&
|
|
7733
|
+
!isHighContrastMode && {
|
|
7734
|
+
icon: {
|
|
7688
7735
|
filter: 'invert(1)',
|
|
7689
|
-
}
|
|
7690
|
-
},
|
|
7736
|
+
},
|
|
7737
|
+
}),
|
|
7691
7738
|
}, hasSlottedAnchor && {
|
|
7692
7739
|
...(isHighContrastMode && {
|
|
7693
7740
|
root: {
|
|
@@ -8175,6 +8222,11 @@ const getComponentCss$G = (size) => {
|
|
|
8175
8222
|
});
|
|
8176
8223
|
};
|
|
8177
8224
|
|
|
8225
|
+
/**
|
|
8226
|
+
* @css-variable {"name": "--p-modal-width", "description": "Width of the modal.", "defaultValue": "auto"}
|
|
8227
|
+
* @css-variable {"name": "--p-modal-spacing-top", "description": "Spacing of the modal to the top.", "defaultValue": "clamp(16px, 10vh, 192px)"}
|
|
8228
|
+
* @css-variable {"name": "--p-modal-spacing-bottom", "description": "Spacing of the modal to the bottom.", "defaultValue": "clamp(16px, 10vh, 192px)"}
|
|
8229
|
+
*/
|
|
8178
8230
|
const cssVariableWidth$1 = '--p-modal-width';
|
|
8179
8231
|
const cssVariableSpacingTop = '--p-modal-spacing-top'; // TODO: maybe --p-modal-spacing-block-start would be more precise?
|
|
8180
8232
|
const cssVariableSpacingBottom = '--p-modal-spacing-bottom'; // TODO: maybe --p-modal-spacing-block-end would be more precise?
|
|
@@ -8565,7 +8617,10 @@ optionHeight, theme) => {
|
|
|
8565
8617
|
};
|
|
8566
8618
|
};
|
|
8567
8619
|
|
|
8568
|
-
const getComponentCss$D = (theme) => {
|
|
8620
|
+
const getComponentCss$D = (theme, isDisabled, selected) => {
|
|
8621
|
+
const dimension = `calc(max(${SCALING_BASE_VALUE} * 0.75, ${fontLineHeight}))`;
|
|
8622
|
+
const dimensionFull = `calc(${dimension} + ${borderWidthBase} * 2)`; // Calculates the total size of the checkbox including its borders.
|
|
8623
|
+
const paddingTop = `calc((${dimensionFull} - ${fontLineHeight}) / 2)`; // Vertically centers the checkbox label relative to the checkbox size.
|
|
8569
8624
|
return getCss({
|
|
8570
8625
|
'@global': {
|
|
8571
8626
|
':host': {
|
|
@@ -8575,11 +8630,19 @@ const getComponentCss$D = (theme) => {
|
|
|
8575
8630
|
...hostHiddenStyles,
|
|
8576
8631
|
}),
|
|
8577
8632
|
},
|
|
8578
|
-
|
|
8633
|
+
slot: {
|
|
8634
|
+
display: 'block',
|
|
8635
|
+
paddingTop,
|
|
8636
|
+
},
|
|
8637
|
+
},
|
|
8638
|
+
option: {
|
|
8639
|
+
...getOptionJssStyle('multi-select-option', 1, theme),
|
|
8640
|
+
columnGap: '8px',
|
|
8579
8641
|
},
|
|
8580
|
-
option: getOptionJssStyle('multi-select-option', 1, theme),
|
|
8581
8642
|
checkbox: {
|
|
8582
|
-
|
|
8643
|
+
flexShrink: 0,
|
|
8644
|
+
...getCheckboxBaseStyles(theme, isDisabled),
|
|
8645
|
+
...(selected && getCheckboxCheckedBaseStyles(theme, isDisabled)),
|
|
8583
8646
|
},
|
|
8584
8647
|
});
|
|
8585
8648
|
};
|
|
@@ -11175,6 +11238,9 @@ const getComponentCss$3 = (isDisabled, isReadonly, hideLabel, state, hasCounter,
|
|
|
11175
11238
|
});
|
|
11176
11239
|
};
|
|
11177
11240
|
|
|
11241
|
+
/**
|
|
11242
|
+
* @css-variable {"name": "--p-toast-position-bottom", "description": "Defines the spacing between the toast and the bottom edge of its container.", "defaultValue": "56px"}
|
|
11243
|
+
*/
|
|
11178
11244
|
const cssVariablePositionBottom = '--p-toast-position-bottom'; // CSS custom property exposed as public interface
|
|
11179
11245
|
const cssVariablePositionBottomInternal = '--p-internal-toast-position-bottom';
|
|
11180
11246
|
const ANIMATION_DURATION = motionDurationModerate;
|
|
@@ -3449,10 +3449,6 @@ function debounce(fn, ms = 800) {
|
|
|
3449
3449
|
};
|
|
3450
3450
|
}
|
|
3451
3451
|
|
|
3452
|
-
const getRole = (state) => {
|
|
3453
|
-
return state === 'error' ? 'alert' : state === 'success' ? 'status' : null;
|
|
3454
|
-
};
|
|
3455
|
-
|
|
3456
3452
|
const isWithinForm = (host) => !!getClosestHTMLElement(host, 'form');
|
|
3457
3453
|
|
|
3458
3454
|
const getCDNBaseURL = () => global.PORSCHE_DESIGN_SYSTEM_CDN_URL + "/porsche-design-system";
|
|
@@ -3955,7 +3951,6 @@ exports.getInlineNotificationIconName = getInlineNotificationIconName;
|
|
|
3955
3951
|
exports.getInnerManifest = getInnerManifest;
|
|
3956
3952
|
exports.getListAriaAttributes = getListAriaAttributes;
|
|
3957
3953
|
exports.getOptionAriaAttributes = getOptionAriaAttributes;
|
|
3958
|
-
exports.getRole = getRole;
|
|
3959
3954
|
exports.getSegmentedControlItemAriaAttributes = getSegmentedControlItemAriaAttributes;
|
|
3960
3955
|
exports.getSelectedOptionMap = getSelectedOptionMap;
|
|
3961
3956
|
exports.getSelectedOptionString = getSelectedOptionString;
|
package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/banner.cjs
CHANGED
|
@@ -10,7 +10,7 @@ var inlineNotification_wrapper = require('../components/inline-notification.wrap
|
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* @slot {"name": "heading", "description": "Defines the heading used in the banner. Can be used alternatively to the heading prop. Can be used for rich content.", "hasAltProp": true }
|
|
13
|
-
* @slot {"name": "title", "description": "
|
|
13
|
+
* @slot {"name": "title", "description": "Please use the heading prop or slot=\"heading\" instead.", "hasAltProp": true, "isDeprecated": true }
|
|
14
14
|
* @slot {"name": "description", "description": "Defines the description used in the banner. Can be used alternatively to the description prop. Can be used for rich content.", "hasAltProp": true }
|
|
15
15
|
*
|
|
16
16
|
* @controlled {"props": ["open"], "event": "dismiss"}
|
package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/canvas.cjs
CHANGED
|
@@ -33,10 +33,12 @@ class DSRCanvas extends react.Component {
|
|
|
33
33
|
hasSidebarEndHeader;
|
|
34
34
|
hasFooter;
|
|
35
35
|
hasBackground;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
// TODO: Produces bug when using text-field-wrapper which looses focus
|
|
37
|
+
// private sidebarStart: any;
|
|
38
|
+
// private sidebarEnd: any;
|
|
39
|
+
// private root: any;
|
|
40
|
+
// private header: any;
|
|
41
|
+
//
|
|
40
42
|
render() {
|
|
41
43
|
const { children, namedSlotChildren, otherChildren } = splitChildren.splitChildren(this.props.children);
|
|
42
44
|
const hasTitle = namedSlotChildren.filter(({ props: { slot } }) => slot === 'title').length > 0;
|
|
@@ -10,7 +10,7 @@ var utilsEntry = require('../../../../../../components/dist/utils/esm/utils-entr
|
|
|
10
10
|
var icon_wrapper = require('../components/icon.wrapper.cjs');
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
* @slot {"name": "", "description": "Default slot to render the link label." }
|
|
13
|
+
* @slot {"name": "", "description": "Default slot to render the link label. This slot can be used to slot an anchor tag instead of using the href prop." }
|
|
14
14
|
*/
|
|
15
15
|
class DSRLink extends react.Component {
|
|
16
16
|
host;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var react = require('react');
|
|
5
|
-
require('../../provider.cjs');
|
|
6
4
|
var splitChildren = require('../../splitChildren.cjs');
|
|
5
|
+
var react = require('react');
|
|
7
6
|
var minifyCss = require('../../minifyCss.cjs');
|
|
8
7
|
var stylesEntry = require('../../../../../../components/dist/styles/esm/styles-entry.cjs');
|
|
9
8
|
|
|
@@ -14,9 +13,9 @@ class DSRMultiSelectOption extends react.Component {
|
|
|
14
13
|
host;
|
|
15
14
|
render() {
|
|
16
15
|
splitChildren.splitChildren(this.props.children);
|
|
17
|
-
const { theme = 'light', selected, highlighted } = this.props;
|
|
18
|
-
this.props.disabled || this.props.disabledParent;
|
|
19
|
-
minifyCss.minifyCss(stylesEntry.getMultiSelectOptionCss(theme));
|
|
16
|
+
const { theme = 'light', selected: isSelected, highlighted } = this.props;
|
|
17
|
+
const isDisabled = this.props.disabled || this.props.disabledParent;
|
|
18
|
+
minifyCss.minifyCss(stylesEntry.getMultiSelectOptionCss(theme, isDisabled, isSelected));
|
|
20
19
|
return (jsxRuntime.jsx(jsxRuntime.Fragment, {}));
|
|
21
20
|
}
|
|
22
21
|
}
|
package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/state-message.cjs
CHANGED
|
@@ -3,13 +3,17 @@
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
4
|
require('react');
|
|
5
5
|
require('../../provider.cjs');
|
|
6
|
-
var utilsEntry = require('../../../../../../components/dist/utils/esm/utils-entry.cjs');
|
|
7
6
|
var icon_wrapper = require('../components/icon.wrapper.cjs');
|
|
8
7
|
|
|
9
8
|
const messageId = 'message';
|
|
10
9
|
const StateMessage = ({ hasMessage, state, message, theme }) => {
|
|
11
10
|
const isErrorState = state === 'error';
|
|
12
|
-
return (
|
|
11
|
+
return (
|
|
12
|
+
// needs to be rendered always to have correct behaviour for screen readers
|
|
13
|
+
jsxRuntime.jsx("span", { id: messageId, className: "message", role: state === 'success' ? 'status' : 'alert', children: hasMessage && [
|
|
14
|
+
jsxRuntime.jsx(icon_wrapper.PIcon, { name: isErrorState ? 'exclamation' : 'check', color: isErrorState ? 'notification-error' : 'notification-success', theme: theme, "aria-hidden": "true" }),
|
|
15
|
+
message || jsxRuntime.jsx("slot", { name: "message" }),
|
|
16
|
+
] }));
|
|
13
17
|
};
|
|
14
18
|
|
|
15
19
|
exports.StateMessage = StateMessage;
|