@porsche-design-system/components-react 3.32.0-rc.1 → 3.32.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 (70) hide show
  1. package/CHANGELOG.md +17 -1
  2. package/esm/lib/types.d.ts +3 -1
  3. package/package.json +5 -5
  4. package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +105 -44
  5. package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +1 -1
  6. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox.cjs +2 -1
  7. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-date.cjs +1 -0
  8. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-email.cjs +1 -0
  9. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-month.cjs +1 -0
  10. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-number.cjs +1 -0
  11. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-password.cjs +1 -0
  12. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-search.cjs +1 -0
  13. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-tel.cjs +1 -0
  14. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-text.cjs +1 -0
  15. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-time.cjs +1 -0
  16. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-url.cjs +1 -0
  17. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-week.cjs +1 -0
  18. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/label.cjs +4 -2
  19. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/legacy-label.cjs +1 -1
  20. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.cjs +1 -0
  21. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.cjs +1 -0
  22. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group-option.cjs +4 -5
  23. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group.cjs +3 -4
  24. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.cjs +3 -1
  25. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.cjs +1 -0
  26. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/textarea.cjs +1 -0
  27. package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +105 -45
  28. package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +1 -1
  29. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox.mjs +2 -1
  30. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-date.mjs +1 -0
  31. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-email.mjs +1 -0
  32. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-month.mjs +1 -0
  33. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-number.mjs +1 -0
  34. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-password.mjs +1 -0
  35. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-search.mjs +1 -0
  36. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-tel.mjs +1 -0
  37. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-text.mjs +1 -0
  38. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-time.mjs +1 -0
  39. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-url.mjs +1 -0
  40. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-week.mjs +1 -0
  41. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/label.mjs +4 -2
  42. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/legacy-label.mjs +1 -1
  43. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.mjs +1 -0
  44. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.mjs +1 -0
  45. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group-option.mjs +4 -5
  46. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group.mjs +4 -5
  47. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.mjs +3 -1
  48. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.mjs +1 -0
  49. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/textarea.mjs +1 -0
  50. package/ssr/esm/lib/dsr-components/checkbox.d.ts +1 -0
  51. package/ssr/esm/lib/dsr-components/input-date.d.ts +1 -0
  52. package/ssr/esm/lib/dsr-components/input-email.d.ts +1 -0
  53. package/ssr/esm/lib/dsr-components/input-month.d.ts +1 -0
  54. package/ssr/esm/lib/dsr-components/input-number.d.ts +1 -0
  55. package/ssr/esm/lib/dsr-components/input-password.d.ts +1 -0
  56. package/ssr/esm/lib/dsr-components/input-search.d.ts +1 -0
  57. package/ssr/esm/lib/dsr-components/input-tel.d.ts +1 -0
  58. package/ssr/esm/lib/dsr-components/input-text.d.ts +1 -0
  59. package/ssr/esm/lib/dsr-components/input-time.d.ts +1 -0
  60. package/ssr/esm/lib/dsr-components/input-url.d.ts +1 -0
  61. package/ssr/esm/lib/dsr-components/input-week.d.ts +1 -0
  62. package/ssr/esm/lib/dsr-components/label.d.ts +1 -0
  63. package/ssr/esm/lib/dsr-components/multi-select.d.ts +1 -0
  64. package/ssr/esm/lib/dsr-components/pin-code.d.ts +1 -0
  65. package/ssr/esm/lib/dsr-components/radio-group-option.d.ts +2 -3
  66. package/ssr/esm/lib/dsr-components/radio-group.d.ts +2 -1
  67. package/ssr/esm/lib/dsr-components/segmented-control.d.ts +1 -0
  68. package/ssr/esm/lib/dsr-components/select.d.ts +1 -0
  69. package/ssr/esm/lib/dsr-components/textarea.d.ts +1 -0
  70. package/ssr/esm/lib/types.d.ts +3 -1
@@ -155,6 +155,18 @@ const _getGridOffsetXXL = (width) => `calc(${_gridPadding} + ${_gridSafeZoneXXL}
155
155
 
156
156
  const gridFullOffset = _gridPadding;
157
157
 
158
+ const gridWideOffsetBase = _gridSafeZoneBase;
159
+
160
+ const gridWideOffsetS = _gridSafeZoneS;
161
+
162
+ const gridWideOffsetXXL = `calc(${_gridPadding} + ${_gridSafeZoneXXL})`;
163
+
164
+ const gridWideOffset = {
165
+ base: gridWideOffsetBase,
166
+ s: gridWideOffsetS,
167
+ xxl: gridWideOffsetXXL,
168
+ };
169
+
158
170
  const gridExtendedOffsetBase = _gridSafeZoneBase;
159
171
 
160
172
  const gridExtendedOffsetS = _getGridOffsetS('extended');
@@ -3629,7 +3641,7 @@ const hasShowPickerSupport = () => (hasDocument &&
3629
3641
  'showPicker' in HTMLInputElement.prototype &&
3630
3642
  CSS.supports('selector(::-webkit-calendar-picker-indicator)'));
3631
3643
 
3632
- const prefix = `[Porsche Design System v${"3.32.0-rc.1"}]` // this part isn't covered by unit tests
3644
+ const prefix = `[Porsche Design System v${"3.32.0"}]` // this part isn't covered by unit tests
3633
3645
  ;
3634
3646
  const consoleError = (...messages) => {
3635
3647
  console.error(prefix, ...messages); // eslint-disable-line no-console
@@ -5162,6 +5174,18 @@ const getComponentCss$1j = (theme, isSidebarStartOpen, isSidebarEndOpen) => {
5162
5174
  });
5163
5175
  };
5164
5176
 
5177
+ /**
5178
+ * @css-variable {"name": "--p-carousel-px", "description": "Defines the logical inline start and end padding of the carousel, the extra space is used to show parts of the next/previous slide. When used then the prop `width` has no effect anymore.", "defaultValue": ""}
5179
+ */
5180
+ const cssVarPaddingInline = '--p-carousel-px';
5181
+ /**
5182
+ * @css-variable {"name": "--p-carousel-ps", "description": "Defines the logical inline start padding of the carousel, the extra space is used to show parts of the next/previous slide. Needs to be used in combination with `--p-carousel-px` or `--p-carousel-pe`. When used then the prop `width` has no effect anymore.", "defaultValue": ""}
5183
+ */
5184
+ const cssVarPaddingInlineStart = '--p-carousel-ps';
5185
+ /**
5186
+ * @css-variable {"name": "--p-carousel-pe", "description": "Defines the logical inline end padding of the carousel, the extra space is used to show parts of the next/previous slide. Needs to be used in combination with `--p-carousel-px` or `--p-carousel-ps`. When used then the prop `width` has no effect anymore.", "defaultValue": ""}
5187
+ */
5188
+ const cssVarPaddingInlineEnd = '--p-carousel-pe';
5165
5189
  /**
5166
5190
  * @css-variable {"name": "--p-carousel-prev-next-filter", "description": "CSS Filter applied to the navigation (prev/next buttons)", "defaultValue": "none"}
5167
5191
  */
@@ -5189,6 +5213,12 @@ const mediaQueryPointerCoarse = '@media (pointer: coarse)';
5189
5213
  const spacingMap = {
5190
5214
  basic: gridBasicOffset,
5191
5215
  extended: gridExtendedOffset,
5216
+ wide: gridWideOffset,
5217
+ full: {
5218
+ base: gridFullOffset,
5219
+ s: gridFullOffset,
5220
+ xxl: gridFullOffset
5221
+ },
5192
5222
  };
5193
5223
  const backfaceVisibilityJssStyle = {
5194
5224
  backfaceVisibility: 'hidden',
@@ -5304,14 +5334,17 @@ const getComponentCss$1i = (gradientColor, hasHeading, hasDescription, hasContro
5304
5334
  },
5305
5335
  header: {
5306
5336
  display: 'grid',
5307
- padding: `0 ${spacingMap[width].base}`,
5337
+ paddingInlineStart: `var(${cssVarPaddingInlineStart},var(${cssVarPaddingInline},${spacingMap[width].base}))`,
5338
+ paddingInlineEnd: `var(${cssVarPaddingInlineEnd},var(${cssVarPaddingInline},${spacingMap[width].base}))`,
5308
5339
  [mediaQueryS]: {
5309
- gridTemplateColumns: 'minmax(0px, 1fr) auto',
5310
- padding: `0 ${spacingMap[width].s}`,
5340
+ gridTemplateColumns: 'minmax(0px,1fr) auto',
5341
+ paddingInlineStart: `var(${cssVarPaddingInlineStart},var(${cssVarPaddingInline},${spacingMap[width].s}))`,
5342
+ paddingInlineEnd: `var(${cssVarPaddingInlineEnd},var(${cssVarPaddingInline},${spacingMap[width].s}))`,
5311
5343
  ...(hasNavigation && { columnGap: spacingStaticMedium }),
5312
5344
  },
5313
5345
  [mediaQueryXXL]: {
5314
- padding: `0 ${spacingMap[width].xxl}`,
5346
+ paddingInlineStart: `var(${cssVarPaddingInlineStart},var(${cssVarPaddingInline},${spacingMap[width].xxl}))`,
5347
+ paddingInlineEnd: `var(${cssVarPaddingInlineEnd},var(${cssVarPaddingInline},${spacingMap[width].xxl}))`,
5315
5348
  },
5316
5349
  },
5317
5350
  nav: {
@@ -5343,12 +5376,16 @@ const getComponentCss$1i = (gradientColor, hasHeading, hasDescription, hasContro
5343
5376
  position: 'relative',
5344
5377
  // !important is necessary to override inline styles set by splide library
5345
5378
  ...addImportantToEachRule({
5346
- padding: `0 ${spacingMap[width].base}`,
5379
+ paddingBlock: '0px',
5380
+ paddingInlineStart: `var(${cssVarPaddingInlineStart},var(${cssVarPaddingInline},${spacingMap[width].base}))`,
5381
+ paddingInlineEnd: `var(${cssVarPaddingInlineEnd},var(${cssVarPaddingInline},${spacingMap[width].base}))`,
5347
5382
  [mediaQueryS]: {
5348
- padding: `0 ${spacingMap[width].s}`,
5383
+ paddingInlineStart: `var(${cssVarPaddingInlineStart},var(${cssVarPaddingInline},${spacingMap[width].s}))`,
5384
+ paddingInlineEnd: `var(${cssVarPaddingInlineEnd},var(${cssVarPaddingInline},${spacingMap[width].s}))`,
5349
5385
  },
5350
5386
  [mediaQueryXXL]: {
5351
- padding: `0 ${spacingMap[width].xxl}`,
5387
+ paddingInlineStart: `var(${cssVarPaddingInlineStart},var(${cssVarPaddingInline},${spacingMap[width].xxl}))`,
5388
+ paddingInlineEnd: `var(${cssVarPaddingInlineEnd},var(${cssVarPaddingInline},${spacingMap[width].xxl}))`,
5352
5389
  },
5353
5390
  }),
5354
5391
  '&--draggable': {
@@ -5578,13 +5615,13 @@ const getSlottedCheckboxRadioButtonStyles = (state, isDisabled, isLoading, theme
5578
5615
  ...(!disabledOrLoading &&
5579
5616
  !isHighContrastMode &&
5580
5617
  hoverMediaQuery({
5581
- '&(input:hover),label:hover~.wrapper &(input)': {
5618
+ '&(input:hover),.label-wrapper:hover~.wrapper &(input)': {
5582
5619
  borderColor: uncheckedHoverColor,
5583
5620
  ...prefersColorSchemeDarkMediaQuery(theme, {
5584
5621
  borderColor: uncheckedHoverColorDark,
5585
5622
  }),
5586
5623
  },
5587
- '&(input:checked:hover),label:hover~.wrapper &(input:checked)': {
5624
+ '&(input:checked:hover),.label-wrapper:hover~.wrapper &(input:checked)': {
5588
5625
  borderColor: checkedHoverColor,
5589
5626
  backgroundColor: checkedHoverColor,
5590
5627
  ...prefersColorSchemeDarkMediaQuery(theme, {
@@ -5592,7 +5629,7 @@ const getSlottedCheckboxRadioButtonStyles = (state, isDisabled, isLoading, theme
5592
5629
  backgroundColor: checkedHoverColorDark,
5593
5630
  }),
5594
5631
  },
5595
- 'label:hover~.wrapper &(input)': supportsChromiumMediaQuery({
5632
+ '.label-wrapper:hover~.wrapper &(input)': supportsChromiumMediaQuery({
5596
5633
  transition: 'unset', // Fixes chrome bug where transition properties are stuck on hover
5597
5634
  }),
5598
5635
  })),
@@ -5617,26 +5654,44 @@ const getFunctionalComponentRequiredStyles = () => {
5617
5654
  };
5618
5655
  };
5619
5656
 
5620
- const getFunctionalComponentLabelStyles = (isDisabledOrLoading, hideLabel, theme, additionalDefaultJssStyle, additionalIsShownJssStyle) => {
5657
+ const getFunctionalComponentLabelAfterStyles = (isDisabledOrLoading, additionalIsDisabledJssStyle) => {
5658
+ return {
5659
+ 'slot[name="label-after"]': {
5660
+ display: 'inline-block',
5661
+ verticalAlign: 'top',
5662
+ ...(isDisabledOrLoading && {
5663
+ pointerEvents: 'none',
5664
+ opacity: '0.4', // workaround: must be opacity because color tokens would not affect e.g. slotted `popover`
5665
+ ...additionalIsDisabledJssStyle,
5666
+ }),
5667
+ },
5668
+ };
5669
+ };
5670
+ const getFunctionalComponentLabelStyles = (isDisabledOrLoading, hideLabel, theme, additionalDefaultJssStyle, additionalLabelWrapperJssStyle, additionalIsShownJssStyle) => {
5621
5671
  const { primaryColor, disabledColor, contrastHighColor } = getThemedColors(theme);
5622
5672
  const { primaryColor: primaryColorDark, disabledColor: disabledColorDark, contrastHighColor: contrastHighColorDark, } = getThemedColors('dark');
5623
5673
  return {
5674
+ 'label-wrapper': {
5675
+ ...buildResponsiveStyles(hideLabel, (isHidden) => ({
5676
+ ...(!isHidden && { minWidth: 'fit-content' }), // ensures label contents don't shrink to zero in grid containers
5677
+ ...getHiddenTextJssStyle(isHidden, additionalIsShownJssStyle),
5678
+ })),
5679
+ ...additionalLabelWrapperJssStyle,
5680
+ },
5624
5681
  label: {
5625
5682
  ...textSmallStyle,
5626
5683
  cursor: isDisabledOrLoading ? 'not-allowed' : 'pointer',
5627
- justifySelf: 'flex-start', // ensures label is not getting stretched by flex or grid context of its parent
5628
5684
  color: isDisabledOrLoading ? disabledColor : primaryColor,
5629
5685
  transition: getTransition('color'), // for smooth transitions between e.g. disabled state
5630
- ...buildResponsiveStyles(hideLabel, (isHidden) => getHiddenTextJssStyle(isHidden, additionalIsShownJssStyle)),
5631
5686
  ...prefersColorSchemeDarkMediaQuery(theme, {
5632
5687
  color: isDisabledOrLoading ? disabledColorDark : primaryColorDark,
5633
5688
  }),
5689
+ display: 'inline',
5634
5690
  '&:empty': {
5635
5691
  display: 'none', // prevents outer spacing caused by parents grid gap, in case no label value is defined (although it has to be set to be a11y compliant)
5636
5692
  },
5637
- '&+&': {
5693
+ '&:is(span)': {
5638
5694
  cursor: 'unset',
5639
- marginTop: `-${spacingStaticXSmall}`,
5640
5695
  fontSize: fontSizeTextXSmall,
5641
5696
  ...(!isDisabledOrLoading && {
5642
5697
  color: contrastHighColor,
@@ -5644,6 +5699,8 @@ const getFunctionalComponentLabelStyles = (isDisabledOrLoading, hideLabel, theme
5644
5699
  color: contrastHighColorDark,
5645
5700
  }),
5646
5701
  }),
5702
+ ...buildResponsiveStyles(hideLabel, (isHidden) => getHiddenTextJssStyle(isHidden, { marginTop: `-${spacingStaticXSmall}` })),
5703
+ marginTop: `-${spacingStaticXSmall}`,
5647
5704
  },
5648
5705
  ...additionalDefaultJssStyle,
5649
5706
  },
@@ -5765,7 +5822,7 @@ const getComponentCss$1h = (hideLabel, state, isDisabled, isLoading, theme) => {
5765
5822
  // .label / .required
5766
5823
  ...getFunctionalComponentLabelStyles(isDisabled || isLoading, hideLabel, theme, {
5767
5824
  gridArea: '1/2',
5768
- }, {
5825
+ }, null, {
5769
5826
  paddingTop: '2px', // compensate vertical alignment
5770
5827
  paddingInlineStart: spacingStaticSmall, // asymmetric padding used instead of gap to prevent not clickable area between label and input
5771
5828
  }),
@@ -5934,6 +5991,7 @@ const getComponentCss$1g = (hideLabel, state, isDisabled, isLoading, compact, th
5934
5991
  ...hostHiddenStyles,
5935
5992
  }),
5936
5993
  },
5994
+ ...getFunctionalComponentLabelAfterStyles(disabledOrLoading),
5937
5995
  ...preventFoucOfNestedElementsStyles,
5938
5996
  input: getCheckboxBaseStyles(theme, isDisabled, isLoading, state, compact),
5939
5997
  ...(isLoading
@@ -5971,13 +6029,13 @@ const getComponentCss$1g = (hideLabel, state, isDisabled, isLoading, compact, th
5971
6029
  ...(!disabledOrLoading &&
5972
6030
  !isHighContrastMode &&
5973
6031
  hoverMediaQuery({
5974
- 'input:hover,label:hover~.wrapper input': {
6032
+ 'input:hover,.wrapper:has(.label-wrapper:hover) input': {
5975
6033
  borderColor: uncheckedHoverColor,
5976
6034
  ...prefersColorSchemeDarkMediaQuery(theme, {
5977
6035
  borderColor: uncheckedHoverColorDark,
5978
6036
  }),
5979
6037
  },
5980
- 'input:checked:hover,label:hover~.wrapper input:checked': {
6038
+ 'input:checked:hover,.wrapper:has(.label-wrapper:hover) input:checked': {
5981
6039
  borderColor: checkedHoverColor,
5982
6040
  backgroundColor: checkedHoverColor,
5983
6041
  ...prefersColorSchemeDarkMediaQuery(theme, {
@@ -5985,7 +6043,7 @@ const getComponentCss$1g = (hideLabel, state, isDisabled, isLoading, compact, th
5985
6043
  backgroundColor: checkedHoverColorDark,
5986
6044
  }),
5987
6045
  },
5988
- 'input:indeterminate:hover,label:hover~.wrapper input:indeterminate': {
6046
+ 'input:indeterminate:hover,.wrapper:has(.label-wrapper:hover) input:indeterminate': {
5989
6047
  background, // Safari fix: ensures proper rendering of 'indeterminate' mode with 'checked' state.
5990
6048
  borderColor: uncheckedHoverColor, // Safari fix: ensures proper rendering of 'indeterminate' mode with 'checked' state.
5991
6049
  backgroundImage: getIndeterminateSVGBackgroundImage(escapeHashCharacter(indeterminateIconHoverColor)),
@@ -5995,7 +6053,7 @@ const getComponentCss$1g = (hideLabel, state, isDisabled, isLoading, compact, th
5995
6053
  backgroundColor: 'transparent',
5996
6054
  }),
5997
6055
  },
5998
- 'label:hover~.wrapper input': supportsChromiumMediaQuery({
6056
+ '.label-wrapper:hover~.wrapper input': supportsChromiumMediaQuery({
5999
6057
  transition: 'unset', // Fixes chrome bug where transition properties are stuck on hover
6000
6058
  }),
6001
6059
  })),
@@ -6017,21 +6075,24 @@ const getComponentCss$1g = (hideLabel, state, isDisabled, isLoading, compact, th
6017
6075
  },
6018
6076
  root: {
6019
6077
  display: 'grid',
6020
- gridTemplateColumns: 'auto minmax(0, 1fr)',
6021
6078
  rowGap: spacingStaticXSmall,
6022
6079
  ...(disabledOrLoading && {
6023
6080
  cursor: 'not-allowed',
6024
6081
  }),
6025
6082
  },
6026
6083
  wrapper: {
6084
+ display: 'grid',
6085
+ gridTemplateColumns: 'auto minmax(0, 1fr)',
6086
+ },
6087
+ 'input-wrapper': {
6027
6088
  ...textSmallStyle,
6028
6089
  minWidth: minimumTouchTargetSize,
6029
6090
  minHeight: minimumTouchTargetSize,
6030
6091
  justifyContent: 'center',
6031
6092
  alignItems: 'center',
6093
+ alignSelf: 'flex-start', // in case label becomes multiline
6032
6094
  display: 'grid',
6033
6095
  gridArea: '1/1',
6034
- alignSelf: 'flex-start', // in case label becomes multiline
6035
6096
  height,
6036
6097
  },
6037
6098
  ...(isLoading && {
@@ -6047,16 +6108,13 @@ const getComponentCss$1g = (hideLabel, state, isDisabled, isLoading, compact, th
6047
6108
  }),
6048
6109
  // .label / .required
6049
6110
  ...getFunctionalComponentLabelStyles(isDisabled || isLoading, hideLabel, theme, {
6050
- gridArea: '1/2',
6051
6111
  ...(isLoading && { pointerEvents: 'none' }), // prevent default htmlFor behavior. TODO: Remove as soon as label component for custom form components exists.
6052
- }, {
6112
+ }, null, {
6053
6113
  paddingTop,
6054
6114
  paddingInlineStart,
6055
6115
  }),
6056
6116
  // .message
6057
- ...getFunctionalComponentStateMessageStyles(theme, state, {
6058
- gridColumn: '1/3',
6059
- }),
6117
+ ...getFunctionalComponentStateMessageStyles(theme, state, {}),
6060
6118
  // .loading
6061
6119
  ...getFunctionalComponentLoadingMessageStyles(),
6062
6120
  });
@@ -6098,7 +6156,7 @@ const getSlottedTextFieldTextareaSelectStyles = (child, state, isLoading, theme,
6098
6156
  ...(!isLoading &&
6099
6157
  hoverMediaQuery({
6100
6158
  // with the media query the selector has higher priority and overrides disabled styles
6101
- [`::slotted(${child}:not(:disabled):not(:focus):not([readonly]):hover),label:hover~.wrapper ::slotted(${child}:not(:disabled):not(:focus):not([readonly]))${child === 'select' ? ',label:hover~.wrapper ::part(select-wrapper-dropdown)' : ''}`]: {
6159
+ [`::slotted(${child}:not(:disabled):not(:focus):not([readonly]):hover),.label-wrapper:hover~.wrapper ::slotted(${child}:not(:disabled):not(:focus):not([readonly]))${child === 'select' ? ',.label-wrapper:hover~.wrapper ::part(select-wrapper-dropdown)' : ''}`]: {
6102
6160
  borderColor: formStateHoverColor || primaryColor,
6103
6161
  ...prefersColorSchemeDarkMediaQuery(theme, {
6104
6162
  borderColor: formStateHoverColorDark || primaryColorDark,
@@ -6218,6 +6276,7 @@ const getFunctionalComponentInputBaseStyles = (disabled, loading, hideLabel, sta
6218
6276
  [`${cssVarButtonPureMargin}`]: `calc(-1px * ${buttonCompensation})`,
6219
6277
  }),
6220
6278
  },
6279
+ ...getFunctionalComponentLabelAfterStyles(disabled),
6221
6280
  ...preventFoucOfNestedElementsStyles,
6222
6281
  input: {
6223
6282
  all: 'unset',
@@ -6294,7 +6353,7 @@ const getFunctionalComponentInputBaseStyles = (disabled, loading, hideLabel, sta
6294
6353
  },
6295
6354
  }),
6296
6355
  // .label / .required
6297
- ...getFunctionalComponentLabelStyles(disabled, hideLabel, theme, !disabled &&
6356
+ ...getFunctionalComponentLabelStyles(disabled, hideLabel, theme, null, !disabled &&
6298
6357
  !readOnly &&
6299
6358
  hoverMediaQuery({
6300
6359
  '&:hover~.wrapper': hoverStyles,
@@ -9272,6 +9331,7 @@ const getComponentCss$D = (isOpen, isDisabled, hideLabel, state, compact, theme)
9272
9331
  [`${cssVarInternalOptgroupScaling}`]: scalingVar,
9273
9332
  }),
9274
9333
  },
9334
+ ...getFunctionalComponentLabelAfterStyles(isDisabled),
9275
9335
  ...preventFoucOfNestedElementsStyles,
9276
9336
  button: {
9277
9337
  ...getButtonJssStyle('multi-select', isOpen, isDisabled, state, scalingVar, theme),
@@ -9482,6 +9542,7 @@ const getComponentCss$B = (hideLabel, state, isDisabled, isLoading, length, comp
9482
9542
  ...hostHiddenStyles,
9483
9543
  }),
9484
9544
  },
9545
+ ...getFunctionalComponentLabelAfterStyles(isDisabled),
9485
9546
  ...preventFoucOfNestedElementsStyles,
9486
9547
  // input
9487
9548
  ...inputStyles,
@@ -9703,7 +9764,7 @@ const getComponentCss$z = (hideLabel, state, isDisabled, isLoading, theme) => {
9703
9764
  // .label / .required
9704
9765
  ...getFunctionalComponentLabelStyles(isDisabled || isLoading, hideLabel, theme, {
9705
9766
  gridArea: '1/2',
9706
- }, {
9767
+ }, null, {
9707
9768
  paddingTop: '2px', // compensate vertical alignment
9708
9769
  paddingInlineStart: spacingStaticSmall, // asymmetric padding used instead of gap to prevent not clickable area between label and input
9709
9770
  }),
@@ -9769,6 +9830,7 @@ const getComponentCss$y = (disabled, loading, state, theme) => {
9769
9830
  }),
9770
9831
  display: 'block',
9771
9832
  },
9833
+ ...getFunctionalComponentLabelAfterStyles(disabledOrLoading),
9772
9834
  input: {
9773
9835
  gridArea: '1/1',
9774
9836
  borderRadius: '50%',
@@ -9825,13 +9887,13 @@ const getComponentCss$y = (disabled, loading, state, theme) => {
9825
9887
  ...(!disabledOrLoading &&
9826
9888
  !isHighContrastMode &&
9827
9889
  hoverMediaQuery({
9828
- 'input:hover,label:hover~.wrapper input': {
9890
+ 'input:hover,.wrapper:has(~.label-wrapper:hover) input': {
9829
9891
  borderColor: uncheckedHoverColor,
9830
9892
  ...prefersColorSchemeDarkMediaQuery(theme, {
9831
9893
  borderColor: uncheckedHoverColorDark,
9832
9894
  }),
9833
9895
  },
9834
- 'input:checked:hover,label:hover~.wrapper input:checked': {
9896
+ 'input:checked:hover,.wrapper:has(~.label-wrapper:hover) input:checked': {
9835
9897
  borderColor: checkedHoverColor,
9836
9898
  backgroundColor: checkedHoverColor,
9837
9899
  ...prefersColorSchemeDarkMediaQuery(theme, {
@@ -9839,7 +9901,7 @@ const getComponentCss$y = (disabled, loading, state, theme) => {
9839
9901
  backgroundColor: checkedHoverColorDark,
9840
9902
  }),
9841
9903
  },
9842
- 'label:hover~.wrapper input': supportsChromiumMediaQuery({
9904
+ '.wrapper:has(~.label-wrapper:hover) input': supportsChromiumMediaQuery({
9843
9905
  transition: 'unset', // Fixes a chrome bug where transition properties are stuck on hover
9844
9906
  }),
9845
9907
  })),
@@ -9868,7 +9930,6 @@ const getComponentCss$y = (disabled, loading, state, theme) => {
9868
9930
  wrapper: {
9869
9931
  ...textSmallStyle,
9870
9932
  display: 'grid',
9871
- gridArea: '1/1',
9872
9933
  minWidth: minimumTouchTargetSize,
9873
9934
  minHeight: minimumTouchTargetSize,
9874
9935
  justifyContent: 'center',
@@ -9891,9 +9952,7 @@ const getComponentCss$y = (disabled, loading, state, theme) => {
9891
9952
  },
9892
9953
  }),
9893
9954
  // .label / .required
9894
- ...getFunctionalComponentLabelStyles(disabled || loading, false, theme, {
9895
- gridArea: '1/2',
9896
- }, {
9955
+ ...getFunctionalComponentLabelStyles(disabled || loading, false, theme, null, null, {
9897
9956
  paddingTop,
9898
9957
  paddingInlineStart,
9899
9958
  }),
@@ -9906,7 +9965,7 @@ const cssVarInternalRadioGroupScaling = '--p-internal-radio-group-scaling';
9906
9965
  const groupRadioGroupDirectionJssStyles = {
9907
9966
  column: {
9908
9967
  flexFlow: 'column nowrap',
9909
- alignItems: 'stretch',
9968
+ alignItems: 'start',
9910
9969
  },
9911
9970
  row: {
9912
9971
  flexFlow: 'row wrap',
@@ -9934,6 +9993,7 @@ const getComponentCss$x = (disabled, loading, hideLabel, state, compact, directi
9934
9993
  }),
9935
9994
  [`${cssVarInternalRadioGroupOptionScaling}`]: scalingVar,
9936
9995
  },
9996
+ ...getFunctionalComponentLabelAfterStyles(disabled),
9937
9997
  ...preventFoucOfNestedElementsStyles,
9938
9998
  },
9939
9999
  root: {
@@ -9964,9 +10024,6 @@ const getComponentCss$x = (disabled, loading, hideLabel, state, compact, directi
9964
10024
  // .label / .required
9965
10025
  ...getFunctionalComponentLabelStyles(disabled, hideLabel, theme, {
9966
10026
  cursor: 'inherit',
9967
- '&:is(legend)': {
9968
- marginBottom: spacingStaticXSmall, // this fixes a known layout bug of the legend element (in all browsers) when the parent fieldset is a flex or grid container
9969
- },
9970
10027
  }),
9971
10028
  // .message
9972
10029
  ...getFunctionalComponentStateMessageStyles(theme, state),
@@ -10214,6 +10271,7 @@ const getComponentCss$u = (minWidth, maxWidth, columns, disabled, hideLabel, sta
10214
10271
  ...hostHiddenStyles,
10215
10272
  }),
10216
10273
  },
10274
+ ...getFunctionalComponentLabelAfterStyles(disabled),
10217
10275
  ...preventFoucOfNestedElementsStyles,
10218
10276
  'slot:not([name])': {
10219
10277
  display: 'grid',
@@ -10259,7 +10317,7 @@ const getButtonStyles = (isOpen, state, theme) => {
10259
10317
  margin: 0,
10260
10318
  padding: 0,
10261
10319
  background: 'transparent',
10262
- border: `${borderWidthBase} solid ${isOpen ? primaryColor : formStateColor || contrastMediumColor}`, // using border of styled select below for label:hover selector
10320
+ border: `${borderWidthBase} solid ${isOpen ? primaryColor : formStateColor || contrastMediumColor}`, // using border of styled select below for .label-wrapper:hover selector
10263
10321
  borderRadius: borderRadiusSmall,
10264
10322
  outline: '0',
10265
10323
  cursor: 'pointer',
@@ -10573,6 +10631,7 @@ const getComponentCss$q = (isOpen, isDisabled, hideLabel, state, compact, theme)
10573
10631
  [`${cssVarInternalOptgroupScaling}`]: scalingVar,
10574
10632
  }),
10575
10633
  },
10634
+ ...getFunctionalComponentLabelAfterStyles(isDisabled),
10576
10635
  ...preventFoucOfNestedElementsStyles,
10577
10636
  button: {
10578
10637
  ...getButtonJssStyle('select', isOpen, isDisabled, state, scalingVar, theme),
@@ -11984,6 +12043,7 @@ const getComponentCss$3 = (isDisabled, isReadonly, hideLabel, state, compact, co
11984
12043
  ...hostHiddenStyles,
11985
12044
  }),
11986
12045
  },
12046
+ ...getFunctionalComponentLabelAfterStyles(isDisabled),
11987
12047
  ...preventFoucOfNestedElementsStyles,
11988
12048
  textarea: {
11989
12049
  resize,
@@ -12044,7 +12104,7 @@ const getComponentCss$3 = (isDisabled, isReadonly, hideLabel, state, compact, co
12044
12104
  },
12045
12105
  ...hoverMediaQuery({
12046
12106
  // with the media query the selector has higher priority and overrides disabled styles
12047
- 'textarea:not(:disabled):not(:focus):not([readonly]):hover,label:hover~.wrapper textarea:not(:disabled):not(:focus):not([readonly])': {
12107
+ 'textarea:not(:disabled):not(:focus):not([readonly]):hover,.label-wrapper:hover~.wrapper textarea:not(:disabled):not(:focus):not([readonly])': {
12048
12108
  borderColor: formStateHoverColor || primaryColor,
12049
12109
  ...prefersColorSchemeDarkMediaQuery(theme, {
12050
12110
  borderColor: formStateHoverColorDark || primaryColorDark,
@@ -12191,4 +12251,4 @@ const getComponentCss = (size, theme) => {
12191
12251
  });
12192
12252
  };
12193
12253
 
12194
- export { cssVarButtonPureMargin, cssVarButtonPurePadding, cssVarInternalInputBaseScaling, getComponentCss$1p as getAccordionCss, getComponentCss$1o as getBannerCss, getComponentCss$1k as getButtonCss, getComponentCss$1n as getButtonGroupCss, getComponentCss$1m as getButtonPureCss, getComponentCss$1l as getButtonTileCss, getComponentCss$1j as getCanvasCss, getComponentCss$1i as getCarouselCss, getComponentCss$1g as getCheckboxCss, getComponentCss$1h as getCheckboxWrapperCss, getComponentCss$1f as getContentWrapperCss, getComponentCss$1e as getCrestCss, getComponentCss$1d as getDisplayCss, getComponentCss$1c as getDividerCss, getComponentCss$1b as getDrilldownCss, getComponentCss$1a as getDrilldownItemCss, getComponentCss$19 as getDrilldownLinkCss, getComponentCss$17 as getFieldsetCss, getComponentCss$18 as getFieldsetWrapperCss, getComponentCss$16 as getFlagCss, getComponentCss$14 as getFlexCss, getComponentCss$15 as getFlexItemCss, getComponentCss$13 as getFlyoutCss, getFunctionalComponentInputBaseStyles, getFunctionalComponentLabelStyles, getFunctionalComponentLoadingMessageStyles, getFunctionalComponentNoResultsOptionStyles, getFunctionalComponentRequiredStyles, getFunctionalComponentStateMessageStyles, getComponentCss$11 as getGridCss, getComponentCss$12 as getGridItemCss, getComponentCss$10 as getHeadingCss, getComponentCss$$ as getHeadlineCss, getComponentCss$_ as getIconCss, getComponentCss$Z as getInlineNotificationCss, getComponentCss$Y as getInputDateCss, getComponentCss$X as getInputEmailCss, getComponentCss$W as getInputMonthCss, getComponentCss$V as getInputNumberCss, getComponentCss$U as getInputPasswordCss, getComponentCss$T as getInputSearchCss, getComponentCss$S as getInputTelCss, getComponentCss$R as getInputTextCss, getComponentCss$Q as getInputTimeCss, getComponentCss$P as getInputUrlCss, getComponentCss$O as getInputWeekCss, getComponentCss$M as getLinkCss, getComponentCss$N as getLinkPureCss, getComponentCss$M as getLinkSocialCss, getComponentCss$J as getLinkTileCss, getComponentCss$L as getLinkTileModelSignatureCss, getComponentCss$K as getLinkTileProductCss, getComponentCss$I as getMarqueCss, getComponentCss$H as getModalCss, getComponentCss$G as getModelSignatureCss, getComponentCss$D as getMultiSelectCss, getComponentCss$F as getMultiSelectOptionCss, getComponentCss$E as getOptgroupCss, getComponentCss$C as getPaginationCss, getComponentCss$B as getPinCodeCss, getComponentCss$A as getPopoverCss, getComponentCss$z as getRadioButtonWrapperCss, getComponentCss$x as getRadioGroupCss, getComponentCss$y as getRadioGroupOptionCss, getScalingVar$4 as getScalingVar, getComponentCss$w as getScrollerCss, getComponentCss$u as getSegmentedControlCss, getComponentCss$v as getSegmentedControlItemCss, getComponentCss$q as getSelectCss, getComponentCss$r as getSelectOptionCss, getComponentCss$s as getSelectWrapperCss, getComponentCss$t as getSelectWrapperDropdownCss, getComponentCss$p as getSheetCss, getComponentCss$o as getSpinnerCss, getComponentCss$m as getStepperHorizontalCss, getComponentCss$n as getStepperHorizontalItemCss, getComponentCss$l as getSwitchCss, getComponentCss$k as getTableBodyCss, getComponentCss$i as getTableCellCss, getComponentCss$j as getTableCss, getComponentCss$h as getTableHeadCellCss, getComponentCss$f as getTableHeadCss, getComponentCss$g as getTableHeadRowCss, getComponentCss$e as getTableRowCss, getComponentCss$d as getTabsBarCss, getComponentCss$b as getTabsCss, getComponentCss$c as getTabsItemCss, getComponentCss$9 as getTagCss, getComponentCss$a as getTagDismissibleCss, getComponentCss$5 as getTextCss, getComponentCss$8 as getTextFieldWrapperCss, getComponentCss$7 as getTextListCss, getComponentCss$6 as getTextListItemCss, getComponentCss$3 as getTextareaCss, getComponentCss$4 as getTextareaWrapperCss, getComponentCss$1 as getToastCss, getComponentCss as getWordmarkCss };
12254
+ export { cssVarButtonPureMargin, cssVarButtonPurePadding, cssVarInternalInputBaseScaling, getComponentCss$1p as getAccordionCss, getComponentCss$1o as getBannerCss, getComponentCss$1k as getButtonCss, getComponentCss$1n as getButtonGroupCss, getComponentCss$1m as getButtonPureCss, getComponentCss$1l as getButtonTileCss, getComponentCss$1j as getCanvasCss, getComponentCss$1i as getCarouselCss, getComponentCss$1g as getCheckboxCss, getComponentCss$1h as getCheckboxWrapperCss, getComponentCss$1f as getContentWrapperCss, getComponentCss$1e as getCrestCss, getComponentCss$1d as getDisplayCss, getComponentCss$1c as getDividerCss, getComponentCss$1b as getDrilldownCss, getComponentCss$1a as getDrilldownItemCss, getComponentCss$19 as getDrilldownLinkCss, getComponentCss$17 as getFieldsetCss, getComponentCss$18 as getFieldsetWrapperCss, getComponentCss$16 as getFlagCss, getComponentCss$14 as getFlexCss, getComponentCss$15 as getFlexItemCss, getComponentCss$13 as getFlyoutCss, getFunctionalComponentInputBaseStyles, getFunctionalComponentLabelAfterStyles, getFunctionalComponentLabelStyles, getFunctionalComponentLoadingMessageStyles, getFunctionalComponentNoResultsOptionStyles, getFunctionalComponentRequiredStyles, getFunctionalComponentStateMessageStyles, getComponentCss$11 as getGridCss, getComponentCss$12 as getGridItemCss, getComponentCss$10 as getHeadingCss, getComponentCss$$ as getHeadlineCss, getComponentCss$_ as getIconCss, getComponentCss$Z as getInlineNotificationCss, getComponentCss$Y as getInputDateCss, getComponentCss$X as getInputEmailCss, getComponentCss$W as getInputMonthCss, getComponentCss$V as getInputNumberCss, getComponentCss$U as getInputPasswordCss, getComponentCss$T as getInputSearchCss, getComponentCss$S as getInputTelCss, getComponentCss$R as getInputTextCss, getComponentCss$Q as getInputTimeCss, getComponentCss$P as getInputUrlCss, getComponentCss$O as getInputWeekCss, getComponentCss$M as getLinkCss, getComponentCss$N as getLinkPureCss, getComponentCss$M as getLinkSocialCss, getComponentCss$J as getLinkTileCss, getComponentCss$L as getLinkTileModelSignatureCss, getComponentCss$K as getLinkTileProductCss, getComponentCss$I as getMarqueCss, getComponentCss$H as getModalCss, getComponentCss$G as getModelSignatureCss, getComponentCss$D as getMultiSelectCss, getComponentCss$F as getMultiSelectOptionCss, getComponentCss$E as getOptgroupCss, getComponentCss$C as getPaginationCss, getComponentCss$B as getPinCodeCss, getComponentCss$A as getPopoverCss, getComponentCss$z as getRadioButtonWrapperCss, getComponentCss$x as getRadioGroupCss, getComponentCss$y as getRadioGroupOptionCss, getScalingVar$4 as getScalingVar, getComponentCss$w as getScrollerCss, getComponentCss$u as getSegmentedControlCss, getComponentCss$v as getSegmentedControlItemCss, getComponentCss$q as getSelectCss, getComponentCss$r as getSelectOptionCss, getComponentCss$s as getSelectWrapperCss, getComponentCss$t as getSelectWrapperDropdownCss, getComponentCss$p as getSheetCss, getComponentCss$o as getSpinnerCss, getComponentCss$m as getStepperHorizontalCss, getComponentCss$n as getStepperHorizontalItemCss, getComponentCss$l as getSwitchCss, getComponentCss$k as getTableBodyCss, getComponentCss$i as getTableCellCss, getComponentCss$j as getTableCss, getComponentCss$h as getTableHeadCellCss, getComponentCss$f as getTableHeadCss, getComponentCss$g as getTableHeadRowCss, getComponentCss$e as getTableRowCss, getComponentCss$d as getTabsBarCss, getComponentCss$b as getTabsCss, getComponentCss$c as getTabsItemCss, getComponentCss$9 as getTagCss, getComponentCss$a as getTagDismissibleCss, getComponentCss$5 as getTextCss, getComponentCss$8 as getTextFieldWrapperCss, getComponentCss$7 as getTextListCss, getComponentCss$6 as getTextListItemCss, getComponentCss$3 as getTextareaCss, getComponentCss$4 as getTextareaWrapperCss, getComponentCss$1 as getToastCss, getComponentCss as getWordmarkCss };
@@ -3444,7 +3444,7 @@ const hasShowPickerSupport = () => (hasDocument &&
3444
3444
  'showPicker' in HTMLInputElement.prototype &&
3445
3445
  CSS.supports('selector(::-webkit-calendar-picker-indicator)'));
3446
3446
 
3447
- const prefix = `[Porsche Design System v${"3.32.0-rc.1"}]` // this part isn't covered by unit tests
3447
+ const prefix = `[Porsche Design System v${"3.32.0"}]` // this part isn't covered by unit tests
3448
3448
  ;
3449
3449
  const consoleError$1 = (...messages) => {
3450
3450
  console.error(prefix, ...messages); // eslint-disable-line no-console
@@ -12,6 +12,7 @@ import { PSpinner } from '../components/spinner.wrapper.mjs';
12
12
 
13
13
  /**
14
14
  * @slot {"name": "label", "description": "Shows a label. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed." }
15
+ * @slot {"name": "label-after", "description": "Places additional content after the label text (for content that should not be part of the label, e.g. external links or `p-popover`)."}
15
16
  * @slot {"name": "message", "description": "Shows a state message. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed." }
16
17
  */
17
18
  class DSRCheckbox extends Component {
@@ -38,7 +39,7 @@ class DSRCheckbox extends Component {
38
39
  const { namedSlotChildren} = splitChildren(this.props.children);
39
40
  const id = 'checkbox';
40
41
  const style = minifyCss(getComponentCss$1g(this.props.hideLabel, this.props.state, this.props.disabled, this.props.loading, this.props.compact, this.props.theme));
41
- return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxs("div", { className: "root", children: [jsx(Label, { hasLabel: this.props.label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0, hasDescription: this.props.description || namedSlotChildren.filter(({ props: { slot } }) => slot === 'description').length > 0, host: null, htmlFor: id, label: this.props.label, isLoading: this.props.loading, isDisabled: this.props.disabled, isRequired: this.props.required }), jsxs("div", { className: "wrapper", children: [jsx("input", { type: "checkbox", id: id, "aria-describedby": `${descriptionId} ${messageId}`, "aria-invalid": this.props.state === 'error' ? 'true' : null, "aria-disabled": this.props.loading || this.props.disabled ? 'true' : null, checked: this.props.checked, form: this.props.form, value: this.props.value, name: this.props.name, onBlur: this.props.onBlur, required: this.props.required, disabled: this.props.disabled }), this.props.loading && (jsx(PSpinner, { className: "spinner", size: "inherit", theme: this.props.theme, "aria-hidden": "true" }))] }), jsx(StateMessage, { hasMessage: (this.props.message || namedSlotChildren.filter(({ props: { slot } }) => slot === 'message').length > 0) && ['success', 'error'].includes(this.props.state), state: this.props.state, message: this.props.message, theme: this.props.theme, host: null }), jsx(LoadingMessage, { loading: this.props.loading, initialLoading: this.props.initialLoading })] })] }), this.props.children] }));
42
+ return (jsxs(Fragment, { children: [jsxs("template", { shadowroot: "open", shadowrootmode: "open", shadowrootdelegatesfocus: "true", children: [jsx("style", { dangerouslySetInnerHTML: { __html: style } }), jsxs("div", { className: "root", children: [jsxs("div", { className: "wrapper", children: [jsxs("div", { className: "input-wrapper", children: [jsx("input", { type: "checkbox", id: id, "aria-describedby": `${descriptionId} ${messageId}`, "aria-invalid": this.props.state === 'error' ? 'true' : null, "aria-disabled": this.props.loading || this.props.disabled ? 'true' : null, checked: this.props.checked, form: this.props.form, value: this.props.value, name: this.props.name, onBlur: this.props.onBlur, required: this.props.required, disabled: this.props.disabled }), this.props.loading && (jsx(PSpinner, { className: "spinner", size: "inherit", theme: this.props.theme, "aria-hidden": "true" }))] }), jsx(Label, { hasLabel: this.props.label || namedSlotChildren.filter(({ props: { slot } }) => slot === 'label').length > 0, hasDescription: this.props.description || namedSlotChildren.filter(({ props: { slot } }) => slot === 'description').length > 0, host: null, htmlFor: id, label: this.props.label, isLoading: this.props.loading, isDisabled: this.props.disabled, isRequired: this.props.required })] }), jsx(StateMessage, { hasMessage: (this.props.message || namedSlotChildren.filter(({ props: { slot } }) => slot === 'message').length > 0) && ['success', 'error'].includes(this.props.state), state: this.props.state, message: this.props.message, theme: this.props.theme, host: null }), jsx(LoadingMessage, { loading: this.props.loading, initialLoading: this.props.initialLoading })] })] }), this.props.children] }));
42
43
  }
43
44
  }
44
45
 
@@ -10,6 +10,7 @@ import { InputBase } from './input-base.mjs';
10
10
 
11
11
  /**
12
12
  * @slot {"name": "label", "description": "Shows a label. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
13
+ * @slot {"name": "label-after", "description": "Places additional content after the label text (for content that should not be part of the label, e.g. external links or `p-popover`)."}
13
14
  * @slot {"name": "description", "description": "Shows a description. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
14
15
  * @slot {"name": "message", "description": "Shows a state message. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
15
16
  * @slot {"name": "start", "description": "Shows content at the start of the input (e.g. unit prefix)."}
@@ -9,6 +9,7 @@ import { InputBase } from './input-base.mjs';
9
9
 
10
10
  /**
11
11
  * @slot {"name": "label", "description": "Shows a label. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
12
+ * @slot {"name": "label-after", "description": "Places additional content after the label text (for content that should not be part of the label, e.g. external links or `p-popover`)."}
12
13
  * @slot {"name": "description", "description": "Shows a description. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
13
14
  * @slot {"name": "message", "description": "Shows a state message. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
14
15
  * @slot {"name": "start", "description": "Shows content at the start of the input (e.g. unit prefix)."}
@@ -10,6 +10,7 @@ import { InputBase } from './input-base.mjs';
10
10
 
11
11
  /**
12
12
  * @slot {"name": "label", "description": "Shows a label. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
13
+ * @slot {"name": "label-after", "description": "Places additional content after the label text (for content that should not be part of the label, e.g. external links or `p-popover`)."}
13
14
  * @slot {"name": "description", "description": "Shows a description. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
14
15
  * @slot {"name": "message", "description": "Shows a state message. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
15
16
  * @slot {"name": "start", "description": "Shows content at the start of the input (e.g. unit prefix)."}
@@ -9,6 +9,7 @@ import { InputBase } from './input-base.mjs';
9
9
 
10
10
  /**
11
11
  * @slot {"name": "label", "description": "Shows a label. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
12
+ * @slot {"name": "label-after", "description": "Places additional content after the label text (for content that should not be part of the label, e.g. external links or `p-popover`)."}
12
13
  * @slot {"name": "description", "description": "Shows a description. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
13
14
  * @slot {"name": "message", "description": "Shows a state message. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
14
15
  * @slot {"name": "start", "description": "Shows content at the start of the input (e.g. unit prefix)."}
@@ -9,6 +9,7 @@ import { InputBase } from './input-base.mjs';
9
9
 
10
10
  /**
11
11
  * @slot {"name": "label", "description": "Shows a label. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
12
+ * @slot {"name": "label-after", "description": "Places additional content after the label text (for content that should not be part of the label, e.g. external links or `p-popover`)."}
12
13
  * @slot {"name": "description", "description": "Shows a description. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
13
14
  * @slot {"name": "message", "description": "Shows a state message. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
14
15
  * @slot {"name": "start", "description": "Shows content at the start of the input (e.g. unit prefix)."}
@@ -10,6 +10,7 @@ import { InputBase } from './input-base.mjs';
10
10
 
11
11
  /**
12
12
  * @slot {"name": "label", "description": "Shows a label. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
13
+ * @slot {"name": "label-after", "description": "Places additional content after the label text (for content that should not be part of the label, e.g. external links or `p-popover`)."}
13
14
  * @slot {"name": "description", "description": "Shows a description. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
14
15
  * @slot {"name": "message", "description": "Shows a state message. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
15
16
  * @slot {"name": "start", "description": "Shows content at the start of the input (e.g. icon)."}
@@ -9,6 +9,7 @@ import { InputBase } from './input-base.mjs';
9
9
 
10
10
  /**
11
11
  * @slot {"name": "label", "description": "Shows a label. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
12
+ * @slot {"name": "label-after", "description": "Places additional content after the label text (for content that should not be part of the label, e.g. external links or `p-popover`)."}
12
13
  * @slot {"name": "description", "description": "Shows a description. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
13
14
  * @slot {"name": "message", "description": "Shows a state message. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
14
15
  * @slot {"name": "start", "description": "Shows content at the start of the input (e.g. unit prefix)."}
@@ -7,6 +7,7 @@ import { InputBase } from './input-base.mjs';
7
7
 
8
8
  /**
9
9
  * @slot {"name": "label", "description": "Shows a label. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
10
+ * @slot {"name": "label-after", "description": "Places additional content after the label text (for content that should not be part of the label, e.g. external links or `p-popover`)."}
10
11
  * @slot {"name": "description", "description": "Shows a description. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
11
12
  * @slot {"name": "message", "description": "Shows a state message. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
12
13
  * @slot {"name": "start", "description": "Shows content at the start of the input (e.g. unit prefix)."}
@@ -10,6 +10,7 @@ import { InputBase } from './input-base.mjs';
10
10
 
11
11
  /**
12
12
  * @slot {"name": "label", "description": "Shows a label. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
13
+ * @slot {"name": "label-after", "description": "Places additional content after the label text (for content that should not be part of the label, e.g. external links or `p-popover`)."}
13
14
  * @slot {"name": "description", "description": "Shows a description. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
14
15
  * @slot {"name": "message", "description": "Shows a state message. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
15
16
  * @slot {"name": "start", "description": "Shows content at the start of the input (e.g. unit prefix)."}
@@ -9,6 +9,7 @@ import { InputBase } from './input-base.mjs';
9
9
 
10
10
  /**
11
11
  * @slot {"name": "label", "description": "Shows a label. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
12
+ * @slot {"name": "label-after", "description": "Places additional content after the label text (for content that should not be part of the label, e.g. external links or `p-popover`)."}
12
13
  * @slot {"name": "description", "description": "Shows a description. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
13
14
  * @slot {"name": "message", "description": "Shows a state message. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
14
15
  * @slot {"name": "start", "description": "Shows content at the start of the input (e.g. unit prefix)."}
@@ -10,6 +10,7 @@ import { InputBase } from './input-base.mjs';
10
10
 
11
11
  /**
12
12
  * @slot {"name": "label", "description": "Shows a label. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
13
+ * @slot {"name": "label-after", "description": "Places additional content after the label text (for content that should not be part of the label, e.g. external links or `p-popover`)."}
13
14
  * @slot {"name": "description", "description": "Shows a description. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
14
15
  * @slot {"name": "message", "description": "Shows a state message. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed."}
15
16
  * @slot {"name": "start", "description": "Shows content at the start of the input (e.g. unit prefix)."}