@porsche-design-system/components-react 3.28.0-rc.3 → 3.29.0-rc.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 (106) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/cjs/lib/components/input-number.wrapper.cjs +29 -0
  3. package/cjs/lib/components/input-password.wrapper.cjs +3 -3
  4. package/cjs/lib/components/input-search.wrapper.cjs +29 -0
  5. package/cjs/lib/components/input-text.wrapper.cjs +29 -0
  6. package/cjs/lib/components/select.wrapper.cjs +3 -3
  7. package/cjs/lib/components/textarea.wrapper.cjs +1 -1
  8. package/cjs/public-api.cjs +6 -0
  9. package/esm/lib/components/index.d.ts +3 -0
  10. package/esm/lib/components/input-number.wrapper.d.ts +192 -0
  11. package/esm/lib/components/input-number.wrapper.mjs +27 -0
  12. package/esm/lib/components/input-password.wrapper.d.ts +10 -2
  13. package/esm/lib/components/input-password.wrapper.mjs +3 -3
  14. package/esm/lib/components/input-search.wrapper.d.ts +176 -0
  15. package/esm/lib/components/input-search.wrapper.mjs +27 -0
  16. package/esm/lib/components/input-text.wrapper.d.ts +192 -0
  17. package/esm/lib/components/input-text.wrapper.mjs +27 -0
  18. package/esm/lib/components/select.wrapper.d.ts +8 -0
  19. package/esm/lib/components/select.wrapper.mjs +3 -3
  20. package/esm/lib/components/textarea.wrapper.d.ts +4 -4
  21. package/esm/lib/components/textarea.wrapper.mjs +1 -1
  22. package/esm/lib/types.d.ts +29 -4
  23. package/esm/public-api.mjs +3 -0
  24. package/package.json +3 -3
  25. package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +429 -271
  26. package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +4 -24
  27. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/input-number.wrapper.cjs +40 -0
  28. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/input-password.wrapper.cjs +4 -4
  29. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/input-search.wrapper.cjs +40 -0
  30. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/input-text.wrapper.cjs +40 -0
  31. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/select.wrapper.cjs +4 -4
  32. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/textarea.wrapper.cjs +1 -1
  33. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/toast.wrapper.cjs +1 -1
  34. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-base.cjs +26 -0
  35. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-number.cjs +44 -0
  36. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-password.cjs +11 -11
  37. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-search.cjs +47 -0
  38. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-text.cjs +43 -0
  39. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.cjs +10 -3
  40. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.cjs +1 -3
  41. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-option.cjs +6 -5
  42. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.cjs +5 -4
  43. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/public-api.cjs +6 -0
  44. package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +393 -243
  45. package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +4 -22
  46. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/input-number.wrapper.mjs +38 -0
  47. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/input-password.wrapper.mjs +4 -4
  48. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/input-search.wrapper.mjs +38 -0
  49. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/input-text.wrapper.mjs +38 -0
  50. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/select.wrapper.mjs +4 -4
  51. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/textarea.wrapper.mjs +1 -1
  52. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/toast.wrapper.mjs +1 -1
  53. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/accordion.mjs +2 -2
  54. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/banner.mjs +2 -2
  55. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-group.mjs +2 -2
  56. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-pure.mjs +2 -2
  57. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-tile.mjs +2 -2
  58. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button.mjs +2 -2
  59. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/canvas.mjs +2 -2
  60. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/carousel.mjs +2 -2
  61. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox-wrapper.mjs +2 -2
  62. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox.mjs +2 -2
  63. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/content-wrapper.mjs +2 -2
  64. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/crest.mjs +2 -2
  65. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/display.mjs +2 -2
  66. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/divider.mjs +2 -2
  67. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown-item.mjs +2 -2
  68. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown-link.mjs +2 -2
  69. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown.mjs +2 -2
  70. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/fieldset-wrapper.mjs +2 -2
  71. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/fieldset.mjs +2 -2
  72. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flex-item.mjs +2 -2
  73. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flex.mjs +2 -2
  74. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout.mjs +2 -2
  75. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/grid-item.mjs +2 -2
  76. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/grid.mjs +2 -2
  77. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/heading.mjs +2 -2
  78. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/headline.mjs +2 -2
  79. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/icon.mjs +2 -2
  80. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/inline-notification.mjs +2 -2
  81. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-base.mjs +24 -0
  82. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-number.mjs +42 -0
  83. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-password.mjs +12 -12
  84. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-search.mjs +45 -0
  85. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-text.mjs +41 -0
  86. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.mjs +11 -4
  87. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.mjs +2 -4
  88. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-option.mjs +6 -5
  89. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.mjs +6 -5
  90. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/public-api.mjs +3 -0
  91. package/ssr/esm/lib/components/index.d.ts +3 -0
  92. package/ssr/esm/lib/components/input-number.wrapper.d.ts +192 -0
  93. package/ssr/esm/lib/components/input-password.wrapper.d.ts +10 -2
  94. package/ssr/esm/lib/components/input-search.wrapper.d.ts +176 -0
  95. package/ssr/esm/lib/components/input-text.wrapper.d.ts +192 -0
  96. package/ssr/esm/lib/components/select.wrapper.d.ts +8 -0
  97. package/ssr/esm/lib/components/textarea.wrapper.d.ts +4 -4
  98. package/ssr/esm/lib/dsr-components/input-base.d.ts +33 -0
  99. package/ssr/esm/lib/dsr-components/input-number.d.ts +19 -0
  100. package/ssr/esm/lib/dsr-components/input-password.d.ts +6 -3
  101. package/ssr/esm/lib/dsr-components/input-search.d.ts +20 -0
  102. package/ssr/esm/lib/dsr-components/input-text.d.ts +19 -0
  103. package/ssr/esm/lib/dsr-components/multi-select.d.ts +0 -1
  104. package/ssr/esm/lib/dsr-components/select.d.ts +2 -1
  105. package/ssr/esm/lib/types.d.ts +29 -4
  106. package/{tailwind → tailwindcss}/index.css +194 -133
@@ -3934,7 +3934,7 @@ const formatObjectOutput = (value) => {
3934
3934
 
3935
3935
  const OPTION_LIST_SAFE_ZONE = 6;
3936
3936
 
3937
- const getComponentCss$1c = (size, compact, open, theme, sticky) => {
3937
+ const getComponentCss$1f = (size, compact, open, theme, sticky) => {
3938
3938
  const { primaryColor, hoverColor, contrastLowColor, backgroundColor } = getThemedColors(theme);
3939
3939
  const { primaryColor: primaryColorDark, hoverColor: hoverColorDark, contrastLowColor: contrastLowColorDark, backgroundColor: backgroundColorDark, } = getThemedColors('dark');
3940
3940
  const cssVariablePositionStickyTop = '--p-accordion-position-sticky-top';
@@ -4106,7 +4106,7 @@ const cssVariableTop = '--p-banner-position-top';
4106
4106
  const cssVariableBottom = '--p-banner-position-bottom';
4107
4107
  const cssVariableZIndex = '--p-internal-banner-z-index';
4108
4108
  const topBottomFallback = '56px';
4109
- const getComponentCss$1b = (isOpen) => {
4109
+ const getComponentCss$1e = (isOpen) => {
4110
4110
  return getCss({
4111
4111
  '@global': {
4112
4112
  ':host': {
@@ -4178,7 +4178,7 @@ const getGroupDirectionJssStyles = (direction) => {
4178
4178
  return groupDirectionJssStyles[direction];
4179
4179
  };
4180
4180
 
4181
- const getComponentCss$1a = (direction) => {
4181
+ const getComponentCss$1d = (direction) => {
4182
4182
  return getCss({
4183
4183
  '@global': {
4184
4184
  ':host': {
@@ -4331,7 +4331,7 @@ const getFunctionalComponentLoadingMessageStyles = () => {
4331
4331
  };
4332
4332
  };
4333
4333
 
4334
- const getComponentCss$19 = (icon, iconSource, active, isLoading, isDisabledOrLoading, stretch, size, hideLabel, alignLabel, underline, theme) => {
4334
+ const getComponentCss$1c = (icon, iconSource, active, isLoading, isDisabledOrLoading, stretch, size, hideLabel, alignLabel, underline, theme) => {
4335
4335
  const hasIcon = hasVisibleIcon(icon, iconSource);
4336
4336
  return getCss(mergeDeep(getLinkButtonPureStyles(icon, iconSource, active, isDisabledOrLoading, stretch, size, hideLabel, alignLabel, underline, false, theme), {
4337
4337
  root: {
@@ -4369,7 +4369,7 @@ const getFontWeight = (weight) => {
4369
4369
  return fontWeightMap[weight];
4370
4370
  };
4371
4371
 
4372
- const getComponentCss$18 = (isDisabledOrLoading, aspectRatio, size, weight, background, align, compact, hasGradient, isDisabled) => {
4372
+ const getComponentCss$1b = (isDisabledOrLoading, aspectRatio, size, weight, background, align, compact, hasGradient, isDisabled) => {
4373
4373
  const isTopAligned = align === 'top';
4374
4374
  return getCss({
4375
4375
  '@global': {
@@ -4639,7 +4639,7 @@ const getDisabledColors = (variant, loading, theme) => {
4639
4639
  };
4640
4640
  return colors[variant === 'tertiary' ? 'secondary' : variant];
4641
4641
  };
4642
- const getComponentCss$17 = (icon, iconSource, variant, hideLabel, disabled, loading, compact, theme) => {
4642
+ const getComponentCss$1a = (icon, iconSource, variant, hideLabel, disabled, loading, compact, theme) => {
4643
4643
  const disabledOrLoading = isDisabledOrLoading(disabled, loading);
4644
4644
  const { textColor, borderColor, backgroundColor } = getDisabledColors(variant, loading, theme);
4645
4645
  const { textColor: textColorDark, borderColor: borderColorDark, backgroundColor: backgroundColorDark, } = getDisabledColors(variant, loading, 'dark');
@@ -4715,7 +4715,7 @@ const mediaQueryS$1 = getMediaQueryMin('s');
4715
4715
  const mediaQueryM = getMediaQueryMin('m');
4716
4716
  // others
4717
4717
  const spacingBase = gridGap.replace('36px', '24px');
4718
- const getComponentCss$16 = (theme, isSidebarStartOpen, isSidebarEndOpen) => {
4718
+ const getComponentCss$19 = (theme, isSidebarStartOpen, isSidebarEndOpen) => {
4719
4719
  const { primaryColor, backgroundColor, backgroundSurfaceColor, contrastLowColor } = getThemedColors(theme);
4720
4720
  const { primaryColor: primaryColorDark, backgroundColor: backgroundColorDark, backgroundSurfaceColor: backgroundSurfaceColorDark, contrastLowColor: contrastLowColorDark, } = getThemedColors('dark');
4721
4721
  return getCss({
@@ -5094,7 +5094,7 @@ const getGradient$1 = (theme, gradientColorTheme) => {
5094
5094
  `rgba(${gradientColor},0.3) 68%,` +
5095
5095
  `rgba(${gradientColor},0)`);
5096
5096
  };
5097
- const getComponentCss$15 = (gradientColor, hasHeading, hasDescription, hasControlsSlot, headingSize, width, hasPagination, isInfinitePagination, alignHeader, theme, hasNavigation, alignControls) => {
5097
+ const getComponentCss$18 = (gradientColor, hasHeading, hasDescription, hasControlsSlot, headingSize, width, hasPagination, isInfinitePagination, alignHeader, theme, hasNavigation, alignControls) => {
5098
5098
  const { primaryColor, contrastMediumColor } = getThemedColors(theme);
5099
5099
  const { primaryColor: primaryColorDark, contrastMediumColor: contrastMediumColorDark } = getThemedColors('dark');
5100
5100
  const { canvasTextColor } = getHighContrastColors();
@@ -5552,7 +5552,7 @@ const getCheckedSVGBackgroundImage$2 = (fill) => {
5552
5552
  const getIndeterminateSVGBackgroundImage$1 = (fill) => {
5553
5553
  return getInlineSVGBackgroundImage(`<path fill="${fill}" d="m20,11v2H4v-2h16Z"/>`);
5554
5554
  };
5555
- const getComponentCss$14 = (hideLabel, state, isDisabled, isLoading, theme) => {
5555
+ const getComponentCss$17 = (hideLabel, state, isDisabled, isLoading, theme) => {
5556
5556
  const checkedIconColor = escapeHashCharacter(getInvertedThemedColors(theme).primaryColor);
5557
5557
  const checkedIconColorDark = escapeHashCharacter(getInvertedThemedColors('dark').primaryColor);
5558
5558
  const indeterminateIconColor = escapeHashCharacter(getThemedColors(theme).primaryColor);
@@ -5754,7 +5754,7 @@ const getCheckboxCheckedBaseStyles = (theme, isDisabled, isLoading, state) => {
5754
5754
  const getIndeterminateSVGBackgroundImage = (fill) => {
5755
5755
  return getInlineSVGBackgroundImage(`<path fill="${fill}" d="m20,11v2H4v-2h16Z"/>`);
5756
5756
  };
5757
- const getComponentCss$13 = (hideLabel, state, isDisabled, isLoading, compact, theme) => {
5757
+ const getComponentCss$16 = (hideLabel, state, isDisabled, isLoading, compact, theme) => {
5758
5758
  const { primaryColor, contrastMediumColor, contrastHighColor, disabledColor, focusColor } = getThemedColors(theme);
5759
5759
  const { primaryColor: primaryColorDark, contrastMediumColor: contrastMediumColorDark, contrastHighColor: contrastHighColorDark, disabledColor: disabledColorDark, focusColor: focusColorDark, } = getThemedColors('dark');
5760
5760
  const { formStateColor, formStateHoverColor } = getThemedFormStateColors(theme, state);
@@ -5928,12 +5928,257 @@ const getComponentCss$13 = (hideLabel, state, isDisabled, isLoading, compact, th
5928
5928
  });
5929
5929
  };
5930
5930
 
5931
+ const getSlottedTextFieldTextareaSelectStyles = (child, state, isLoading, theme, additionalDefaultJssStyle) => {
5932
+ const { primaryColor, contrastLowColor, contrastMediumColor, disabledColor } = getThemedColors(theme);
5933
+ const { primaryColor: primaryColorDark, contrastLowColor: contrastLowColorDark, contrastMediumColor: contrastMediumColorDark, disabledColor: disabledColorDark, } = getThemedColors('dark');
5934
+ const { formStateColor, formStateHoverColor } = getThemedFormStateColors(theme, state);
5935
+ const { formStateColor: formStateColorDark, formStateHoverColor: formStateHoverColorDark } = getThemedFormStateColors('dark', state);
5936
+ return {
5937
+ [`::slotted(${child})`]: {
5938
+ display: 'block',
5939
+ width: '100%',
5940
+ height: child !== 'textarea'
5941
+ ? `calc(${fontLineHeight} + 10px + ${borderWidthBase} * 2 + ${spacingStaticSmall} * 2)` // we need 10px additionally so input height becomes 54px
5942
+ : 'auto',
5943
+ margin: 0,
5944
+ outline: 0,
5945
+ WebkitAppearance: 'none', // iOS safari
5946
+ appearance: 'none',
5947
+ boxSizing: 'border-box',
5948
+ border: `${borderWidthBase} solid ${formStateColor || contrastMediumColor}`,
5949
+ borderRadius: borderRadiusSmall,
5950
+ background: 'transparent',
5951
+ font: textSmallStyle.font.replace('ex', 'ex + 6px'), // a minimum line-height is needed for input, otherwise value is scrollable in Chrome, +6px is aligned with how Safari visualize date/time input highlighting
5952
+ textIndent: 0,
5953
+ color: primaryColor,
5954
+ transition: `${getTransition('background-color')}, ${getTransition('border-color')}, ${getTransition('color')}`, // for smooth transitions between e.g. disabled states
5955
+ ...prefersColorSchemeDarkMediaQuery(theme, {
5956
+ borderColor: formStateColorDark || contrastMediumColorDark,
5957
+ color: primaryColorDark,
5958
+ }),
5959
+ ...additionalDefaultJssStyle,
5960
+ },
5961
+ '::slotted(:not(input[type="password"]))': {
5962
+ textOverflow: 'ellipsis',
5963
+ },
5964
+ ...(!isLoading &&
5965
+ hoverMediaQuery({
5966
+ // with the media query the selector has higher priority and overrides disabled styles
5967
+ [`::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)' : ''}`]: {
5968
+ borderColor: formStateHoverColor || primaryColor,
5969
+ ...prefersColorSchemeDarkMediaQuery(theme, {
5970
+ borderColor: formStateHoverColorDark || primaryColorDark,
5971
+ }),
5972
+ },
5973
+ })),
5974
+ // TODO: getFocusJssStyle() can't be re-used because focus style differs for form elements
5975
+ [`::slotted(${child}:focus)`]: {
5976
+ borderColor: primaryColor,
5977
+ ...prefersColorSchemeDarkMediaQuery(theme, {
5978
+ borderColor: primaryColorDark,
5979
+ }),
5980
+ },
5981
+ [`::slotted(${child}:disabled)`]: {
5982
+ cursor: 'not-allowed',
5983
+ color: disabledColor,
5984
+ borderColor: disabledColor,
5985
+ WebkitTextFillColor: disabledColor,
5986
+ ...prefersColorSchemeDarkMediaQuery(theme, {
5987
+ color: disabledColorDark,
5988
+ borderColor: disabledColorDark,
5989
+ WebkitTextFillColor: disabledColorDark,
5990
+ }),
5991
+ },
5992
+ ...(child !== 'select' && {
5993
+ [`::slotted(${child}[readonly])`]: {
5994
+ borderColor: contrastLowColor,
5995
+ background: contrastLowColor,
5996
+ ...prefersColorSchemeDarkMediaQuery(theme, {
5997
+ borderColor: contrastLowColorDark,
5998
+ background: contrastLowColorDark,
5999
+ }),
6000
+ },
6001
+ }),
6002
+ };
6003
+ };
6004
+ const formElementLayeredGap = '9px'; // to have same distance vertically and horizontally for e.g. button/icon within form element
6005
+ const formElementLayeredSafeZone = `calc(${formElementLayeredGap} + ${borderWidthBase})`;
6006
+ // TODO: basic button/icon padding can already be set within style function instead of on component style level
6007
+ const formButtonOrIconPadding = spacingStaticXSmall;
6008
+ // TODO: if we'd use 12px instead, it wouldn't be necessary for textarea to have a custom vertical padding,
6009
+ // unfortunately line-height alignment breaks for a select element for some reasons then
6010
+ // TODO: basic form element padding can already be set within style function instead of on component style level
6011
+ const formElementPaddingVertical = spacingStaticSmall;
6012
+ // TODO: basic form element padding can already be set within style function instead of on component style level
6013
+ const formElementPaddingHorizontal = spacingStaticMedium;
6014
+ const getCalculatedFormElementPaddingHorizontal = (buttonOrIconAmount) => {
6015
+ // when applied, font-family and font-size needs to be set too for correct calculation of ex-unit ($fontLineHeight)
6016
+ return `calc(${formElementLayeredGap} + ${formElementPaddingHorizontal} / 2 + (${fontLineHeight} + ${formButtonOrIconPadding} * 2) * ${buttonOrIconAmount})`;
6017
+ };
6018
+ // TODO: re-use in textarea-wrapper not only in text-field-wrapper
6019
+ const getUnitCounterJssStyle = (isDisabled, isReadonly, theme) => {
6020
+ const { disabledColor, contrastMediumColor, contrastHighColor } = getThemedColors(theme);
6021
+ const { disabledColor: disabledColorDark, contrastMediumColor: contrastMediumColorDark } = getThemedColors('dark');
6022
+ return {
6023
+ pointerEvents: 'none',
6024
+ maxWidth: '100%',
6025
+ boxSizing: 'border-box',
6026
+ whiteSpace: 'nowrap',
6027
+ overflow: 'hidden',
6028
+ textOverflow: 'ellipsis',
6029
+ font: textSmallStyle.font,
6030
+ color: contrastMediumColor,
6031
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6032
+ color: contrastMediumColorDark,
6033
+ }),
6034
+ ...(isDisabled && {
6035
+ color: disabledColor,
6036
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6037
+ color: disabledColorDark,
6038
+ }),
6039
+ }),
6040
+ ...(isReadonly && {
6041
+ color: contrastHighColor,
6042
+ }),
6043
+ };
6044
+ };
6045
+
6046
+ const cssVarInternalInputBaseScaling = '--p-internal-input-base-scaling';
6047
+ // Determines the scaling factor for the input-number size. In "compact" mode, it uses 0.5 to achieve a 36px input-number (compact size).
6048
+ // Defaults to 1 for the standard size and can be overridden by the CSS variable `cssVarInternalInputBaseScaling`.
6049
+ const getScalingVar = (compact) => `var(${cssVarInternalInputBaseScaling}, ${compact ? 0.5 : 1})`;
6050
+ /**
6051
+ * @css-variable {"name": "--ref-p-input-slotted-padding", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `padding` in oder to adjust the alignment correctly."}
6052
+ */
6053
+ const cssVarButtonPurePadding = '--ref-p-input-slotted-padding';
6054
+ /**
6055
+ * @css-variable {"name": "--ref-p-input-slotted-margin", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `margin` in oder to adjust the spacings correctly."}
6056
+ */
6057
+ const cssVarButtonPureMargin = '--ref-p-input-slotted-margin';
6058
+ const getFunctionalComponentInputBaseStyles = (disabled, loading, hideLabel, state, compact, readOnly, theme, additionalInputJssStyle) => {
6059
+ const scalingVar = getScalingVar(compact);
6060
+ const paddingBlock = `max(2px, ${formElementPaddingVertical} * ${scalingVar})`;
6061
+ const paddingInline = `max(2px, ${formElementPaddingHorizontal} * ${scalingVar})`;
6062
+ const height = `max(${fontLineHeight}, ${scalingVar} * (${fontLineHeight} + 10px))`;
6063
+ const gap = `max(4px, calc(${spacingStaticMedium} * ${scalingVar}))`;
6064
+ // This will return 0 for <= 0.5, ~4 for 1 and ~8 for 2 scaling...
6065
+ const buttonCompensation = `clamp(0, 6.42 * pow(calc(${scalingVar} - 0.5), 0.6826), 12)`;
6066
+ const { primaryColor, contrastLowColor, contrastMediumColor, disabledColor } = getThemedColors(theme);
6067
+ const { primaryColor: primaryColorDark, contrastLowColor: contrastLowColorDark, contrastMediumColor: contrastMediumColorDark, disabledColor: disabledColorDark, } = getThemedColors('dark');
6068
+ const { formStateColor, formStateHoverColor } = getThemedFormStateColors(theme, state);
6069
+ const { formStateColor: formStateColorDark, formStateHoverColor: formStateHoverColorDark } = getThemedFormStateColors('dark', state);
6070
+ const hoverStyles = {
6071
+ borderColor: formStateHoverColor || primaryColor,
6072
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6073
+ borderColor: formStateHoverColorDark || primaryColorDark,
6074
+ }),
6075
+ };
6076
+ return {
6077
+ '@global': {
6078
+ ':host': {
6079
+ display: 'block',
6080
+ ...addImportantToEachRule({
6081
+ ...colorSchemeStyles,
6082
+ ...hostHiddenStyles,
6083
+ [`${cssVarButtonPurePadding}`]: `calc(1px * ${buttonCompensation})`,
6084
+ [`${cssVarButtonPureMargin}`]: `calc(-1px * ${buttonCompensation})`,
6085
+ }),
6086
+ },
6087
+ ...preventFoucOfNestedElementsStyles,
6088
+ input: {
6089
+ all: 'unset',
6090
+ flex: 1,
6091
+ font: textSmallStyle.font.replace('ex', 'ex + 6px'), // a minimum line-height is needed for input, otherwise value is scrollable in Chrome, +6px is aligned with how Safari visualize date/time input highlighting
6092
+ height,
6093
+ paddingBlock,
6094
+ color: primaryColor,
6095
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6096
+ color: primaryColorDark,
6097
+ }),
6098
+ width: '100%',
6099
+ minWidth: '2rem',
6100
+ ...(disabled && {
6101
+ color: disabledColor,
6102
+ WebkitTextFillColor: disabledColor,
6103
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6104
+ color: disabledColorDark,
6105
+ WebkitTextFillColor: disabledColorDark,
6106
+ }),
6107
+ }),
6108
+ ...additionalInputJssStyle,
6109
+ },
6110
+ },
6111
+ root: {
6112
+ display: 'grid',
6113
+ gap: spacingStaticXSmall,
6114
+ },
6115
+ wrapper: {
6116
+ border: `${borderWidthBase} solid ${formStateColor || contrastMediumColor}`,
6117
+ borderRadius: borderRadiusSmall,
6118
+ paddingInline,
6119
+ display: 'flex',
6120
+ alignItems: 'center',
6121
+ gap,
6122
+ transition: `${getTransition('background-color')}, ${getTransition('border-color')}, ${getTransition('color')}`,
6123
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6124
+ borderColor: formStateColorDark || contrastMediumColorDark,
6125
+ }),
6126
+ ...(!disabled && {
6127
+ '&:has(input:focus)': {
6128
+ borderColor: primaryColor,
6129
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6130
+ borderColor: primaryColorDark,
6131
+ }),
6132
+ },
6133
+ }),
6134
+ ...(!disabled &&
6135
+ !readOnly &&
6136
+ hoverMediaQuery({
6137
+ '&:hover:not(:has(.button:hover, input:focus ))': hoverStyles,
6138
+ })),
6139
+ ...(disabled && {
6140
+ cursor: 'not-allowed',
6141
+ borderColor: disabledColor,
6142
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6143
+ borderColor: disabledColorDark,
6144
+ }),
6145
+ }),
6146
+ ...(readOnly && {
6147
+ cursor: 'text',
6148
+ borderColor: contrastLowColor,
6149
+ background: contrastLowColor,
6150
+ ...prefersColorSchemeDarkMediaQuery(theme, {
6151
+ borderColor: contrastLowColorDark,
6152
+ background: contrastLowColorDark,
6153
+ }),
6154
+ }),
6155
+ },
6156
+ ...(loading && {
6157
+ spinner: {
6158
+ font: textSmallStyle.font,
6159
+ width: fontLineHeight,
6160
+ height: fontLineHeight,
6161
+ },
6162
+ }),
6163
+ // .label / .required
6164
+ ...getFunctionalComponentLabelStyles(disabled, hideLabel, theme, !disabled &&
6165
+ !readOnly &&
6166
+ hoverMediaQuery({
6167
+ '&:hover~.wrapper': hoverStyles,
6168
+ })),
6169
+ // .message
6170
+ ...getFunctionalComponentStateMessageStyles(theme, state),
6171
+ // .loading
6172
+ ...getFunctionalComponentLoadingMessageStyles(),
6173
+ };
6174
+ };
6175
+
5931
6176
  const widthMap = {
5932
6177
  narrow: gridNarrowOffset,
5933
6178
  basic: gridBasicOffset,
5934
6179
  extended: gridExtendedOffset,
5935
6180
  };
5936
- const getComponentCss$12 = (width) => {
6181
+ const getComponentCss$15 = (width) => {
5937
6182
  return getCss({
5938
6183
  '@global': {
5939
6184
  ':host': {
@@ -5975,7 +6220,7 @@ const getDimensionStyle = {
5975
6220
  width: 'inherit',
5976
6221
  height: 'inherit',
5977
6222
  };
5978
- const getComponentCss$11 = () => {
6223
+ const getComponentCss$14 = () => {
5979
6224
  return getCss({
5980
6225
  '@global': {
5981
6226
  ':host': {
@@ -6074,7 +6319,7 @@ const sizeMap$4 = {
6074
6319
  medium: fontSizeDisplayMedium,
6075
6320
  large: fontSizeDisplayLarge,
6076
6321
  };
6077
- const getComponentCss$10 = (size, align, color, ellipsis, theme) => {
6322
+ const getComponentCss$13 = (size, align, color, ellipsis, theme) => {
6078
6323
  return getCss({
6079
6324
  '@global': {
6080
6325
  ':host': {
@@ -6092,7 +6337,7 @@ const getComponentCss$10 = (size, align, color, ellipsis, theme) => {
6092
6337
  });
6093
6338
  };
6094
6339
 
6095
- const getComponentCss$$ = (color, orientation, theme) => {
6340
+ const getComponentCss$12 = (color, orientation, theme) => {
6096
6341
  const { contrastLowColor, contrastMediumColor, contrastHighColor } = getThemedColors(theme);
6097
6342
  const { contrastLowColor: contrastLowColorDark, contrastMediumColor: contrastMediumColorDark, contrastHighColor: contrastHighColorDark, } = getThemedColors('dark');
6098
6343
  const colorMap = {
@@ -6153,7 +6398,7 @@ const easingOpen = 'in';
6153
6398
  const dialogDurationClose = 'short';
6154
6399
  const backdropDurationClose = 'moderate';
6155
6400
  const easingClose = 'out';
6156
- const getComponentCss$_ = (isOpen, isPrimary, isSecondaryScrollerVisible, theme) => {
6401
+ const getComponentCss$11 = (isOpen, isPrimary, isSecondaryScrollerVisible, theme) => {
6157
6402
  const { primaryColor, backgroundColor, backgroundSurfaceColor, backgroundShadingColor } = getThemedColors(theme);
6158
6403
  const { primaryColor: primaryColorDark, backgroundColor: backgroundColorDark, backgroundSurfaceColor: backgroundSurfaceColorDark, backgroundShadingColor: backgroundShadingColorDark, } = getThemedColors('dark');
6159
6404
  return getCss({
@@ -6400,7 +6645,7 @@ const getComponentCss$_ = (isOpen, isPrimary, isSecondaryScrollerVisible, theme)
6400
6645
  });
6401
6646
  };
6402
6647
 
6403
- const getComponentCss$Z = (isPrimary, isSecondary, isCascade) => {
6648
+ const getComponentCss$10 = (isPrimary, isSecondary, isCascade) => {
6404
6649
  return getCss({
6405
6650
  '@global': {
6406
6651
  '@keyframes slide-up-mobile': {
@@ -6631,7 +6876,7 @@ const getComponentCss$Z = (isPrimary, isSecondary, isCascade) => {
6631
6876
  });
6632
6877
  };
6633
6878
 
6634
- const getComponentCss$Y = (hasSlottedAnchor, isActive) => {
6879
+ const getComponentCss$$ = (hasSlottedAnchor, isActive) => {
6635
6880
  const anchorJssStyle = {
6636
6881
  all: 'unset',
6637
6882
  padding: `calc(${spacingFluidSmall} + 2px) calc(${spacingFluidSmall} + 4px)`, // aligned with link-pure
@@ -6683,7 +6928,7 @@ const getComponentCss$Y = (hasSlottedAnchor, isActive) => {
6683
6928
  });
6684
6929
  };
6685
6930
 
6686
- const getComponentCss$X = (state, labelSize, hasLabel, theme) => {
6931
+ const getComponentCss$_ = (state, labelSize, hasLabel, theme) => {
6687
6932
  return getCss({
6688
6933
  '@global': {
6689
6934
  ':host': {
@@ -6720,7 +6965,7 @@ const getComponentCss$X = (state, labelSize, hasLabel, theme) => {
6720
6965
  });
6721
6966
  };
6722
6967
 
6723
- const getComponentCss$W = (state, labelSize, hasLabel, theme) => {
6968
+ const getComponentCss$Z = (state, labelSize, hasLabel, theme) => {
6724
6969
  return getCss({
6725
6970
  '@global': {
6726
6971
  ':host': {
@@ -6767,7 +7012,7 @@ const flexItemWidths = {
6767
7012
  full: 100,
6768
7013
  auto: 'auto',
6769
7014
  };
6770
- const getComponentCss$V = (width, offset, alignSelf, grow, shrink, flex) => {
7015
+ const getComponentCss$Y = (width, offset, alignSelf, grow, shrink, flex) => {
6771
7016
  return getCss({
6772
7017
  '@global': {
6773
7018
  ':host': addImportantToEachRule({
@@ -6789,7 +7034,7 @@ const getComponentCss$V = (width, offset, alignSelf, grow, shrink, flex) => {
6789
7034
  });
6790
7035
  };
6791
7036
 
6792
- const getComponentCss$U = (inline, wrap, direction, justifyContent, alignItems, alignContent) => {
7037
+ const getComponentCss$X = (inline, wrap, direction, justifyContent, alignItems, alignContent) => {
6793
7038
  return getCss({
6794
7039
  '@global': {
6795
7040
  ':host': {
@@ -6906,10 +7151,9 @@ const getScrollerJssStyle = (position, theme) => {
6906
7151
  const dialogPaddingBlock = `calc(${spacingFluidSmall} + ${spacingFluidMedium})`;
6907
7152
  const dialogGridJssStyle = {
6908
7153
  display: 'grid',
6909
- gridTemplate: `auto/${spacingFluidSmall} auto ${spacingFluidSmall}`,
7154
+ gridTemplate: `auto/${spacingFluidSmall} minmax(0,1fr) ${spacingFluidSmall}`,
7155
+ gap: `${spacingFluidMedium} calc(${spacingFluidLarge} - ${spacingFluidSmall})`,
6910
7156
  paddingBlock: dialogPaddingBlock,
6911
- rowGap: spacingFluidMedium,
6912
- columnGap: `calc(${spacingFluidLarge} - ${spacingFluidSmall})`,
6913
7157
  alignContent: 'flex-start',
6914
7158
  };
6915
7159
  const getDialogColorJssStyle = (theme) => {
@@ -6977,9 +7221,17 @@ const getDialogStickyAreaJssStyle = (area, theme) => {
6977
7221
  * @css-variable {"name": "--p-flyout-width", "description": "Width of the flyout.", "defaultValue": "auto"}
6978
7222
  */
6979
7223
  const cssVariableWidth$2 = '--p-flyout-width';
7224
+ /**
7225
+ * @css-variable {"name": "--ref-p-flyout-pt", "description": "Exposes the internally used padding-top of the Flyout as read only CSS variable. When slotting e.g. a media container, this variable can be used to stretch the element to the top of the Flyout."}
7226
+ */
7227
+ const cssVarRefPaddingTop = '--ref-p-flyout-pt';
7228
+ /**
7229
+ * @css-variable {"name": "--ref-p-flyout-px", "description": "Exposes the internally used padding-inline of the Flyout as read only CSS variable. When slotting e.g. a media container, this variable can be used to stretch the element to the full horizontal size of the Flyout."}
7230
+ */
7231
+ const cssVarRefPaddingInline = '--ref-p-flyout-px';
6980
7232
  // TODO: we shouldn't expose --p-flyout-max-width
6981
7233
  const cssVariableMaxWidth = '--p-flyout-max-width';
6982
- const getComponentCss$T = (isOpen, position, hasHeader, hasFooter, hasSubFooter, footerBehavior, theme) => {
7234
+ const getComponentCss$W = (isOpen, position, hasHeader, hasFooter, hasSubFooter, footerBehavior, theme) => {
6983
7235
  const isPositionStart = position === 'start' || position === 'left';
6984
7236
  const isFooterFixed = footerBehavior === 'fixed';
6985
7237
  return getCss({
@@ -6990,6 +7242,8 @@ const getComponentCss$T = (isOpen, position, hasHeader, hasFooter, hasSubFooter,
6990
7242
  ...dialogHostJssStyle,
6991
7243
  ...colorSchemeStyles,
6992
7244
  ...hostHiddenStyles,
7245
+ [`${cssVarRefPaddingTop}`]: dialogPaddingBlock,
7246
+ [`${cssVarRefPaddingInline}`]: spacingFluidLarge,
6993
7247
  }),
6994
7248
  },
6995
7249
  ...preventFoucOfNestedElementsStyles,
@@ -7089,7 +7343,7 @@ const gutter$1 = `calc(${gridGap} / 2)`;
7089
7343
  const gridItemWidths = [
7090
7344
  0, 8.333333, 16.666667, 25, 33.333333, 41.666667, 50, 58.333333, 66.666667, 75, 83.333333, 91.666667, 100,
7091
7345
  ];
7092
- const getComponentCss$S = (size, offset) => {
7346
+ const getComponentCss$V = (size, offset) => {
7093
7347
  return getCss({
7094
7348
  '@global': {
7095
7349
  ':host': addImportantToEachRule({
@@ -7109,7 +7363,7 @@ const getComponentCss$S = (size, offset) => {
7109
7363
  };
7110
7364
 
7111
7365
  const gutter = `calc(${gridGap} / -2)`;
7112
- const getComponentCss$R = (direction, wrap) => {
7366
+ const getComponentCss$U = (direction, wrap) => {
7113
7367
  return getCss({
7114
7368
  '@global': {
7115
7369
  ':host': {
@@ -7135,7 +7389,7 @@ const sizeMap$3 = {
7135
7389
  'x-large': fontSizeHeadingXLarge,
7136
7390
  'xx-large': fontSizeHeadingXXLarge,
7137
7391
  };
7138
- const getComponentCss$Q = (size, align, color, ellipsis, theme) => {
7392
+ const getComponentCss$T = (size, align, color, ellipsis, theme) => {
7139
7393
  return getCss({
7140
7394
  '@global': {
7141
7395
  ':host': {
@@ -7195,7 +7449,7 @@ const getTextSizeJssStyle = (textSize) => {
7195
7449
  fontSize: textSize === 'inherit' ? textSize : textSizeMap[textSize],
7196
7450
  };
7197
7451
  };
7198
- const getComponentCss$P = (variant, align, color, ellipsis, theme) => {
7452
+ const getComponentCss$S = (variant, align, color, ellipsis, theme) => {
7199
7453
  return getCss({
7200
7454
  '@global': {
7201
7455
  ':host': {
@@ -7306,7 +7560,7 @@ const isFlippableIcon = (name, source) => {
7306
7560
  name === 'return' ||
7307
7561
  name === 'send'));
7308
7562
  };
7309
- const getComponentCss$O = (name, source, color, size, theme) => {
7563
+ const getComponentCss$R = (name, source, color, size, theme) => {
7310
7564
  const isColorInherit = color === 'inherit';
7311
7565
  const isSizeInherit = size === 'inherit';
7312
7566
  const isDark = isThemeDark(theme);
@@ -7425,7 +7679,7 @@ const getHeadingJssStyle = (theme) => ({
7425
7679
  ...headingSmallStyle,
7426
7680
  ...getTextJssStyle(theme),
7427
7681
  });
7428
- const getComponentCss$N = (state, hasAction, hasClose, theme) => {
7682
+ const getComponentCss$Q = (state, hasAction, hasClose, theme) => {
7429
7683
  return getCss({
7430
7684
  '@global': {
7431
7685
  ':host': {
@@ -7465,231 +7719,101 @@ const getComponentCss$N = (state, hasAction, hasClose, theme) => {
7465
7719
  });
7466
7720
  };
7467
7721
 
7468
- const getSlottedTextFieldTextareaSelectStyles = (child, state, isLoading, theme, additionalDefaultJssStyle) => {
7469
- const { primaryColor, contrastLowColor, contrastMediumColor, disabledColor } = getThemedColors(theme);
7470
- const { primaryColor: primaryColorDark, contrastLowColor: contrastLowColorDark, contrastMediumColor: contrastMediumColorDark, disabledColor: disabledColorDark, } = getThemedColors('dark');
7471
- const { formStateColor, formStateHoverColor } = getThemedFormStateColors(theme, state);
7472
- const { formStateColor: formStateColorDark, formStateHoverColor: formStateHoverColorDark } = getThemedFormStateColors('dark', state);
7473
- return {
7474
- [`::slotted(${child})`]: {
7475
- display: 'block',
7476
- width: '100%',
7477
- height: child !== 'textarea'
7478
- ? `calc(${fontLineHeight} + 10px + ${borderWidthBase} * 2 + ${spacingStaticSmall} * 2)` // we need 10px additionally so input height becomes 54px
7479
- : 'auto',
7480
- margin: 0,
7481
- outline: 0,
7482
- WebkitAppearance: 'none', // iOS safari
7483
- appearance: 'none',
7484
- boxSizing: 'border-box',
7485
- border: `${borderWidthBase} solid ${formStateColor || contrastMediumColor}`,
7486
- borderRadius: borderRadiusSmall,
7487
- background: 'transparent',
7488
- font: textSmallStyle.font.replace('ex', 'ex + 6px'), // a minimum line-height is needed for input, otherwise value is scrollable in Chrome, +6px is aligned with how Safari visualize date/time input highlighting
7489
- textIndent: 0,
7490
- color: primaryColor,
7491
- transition: `${getTransition('background-color')}, ${getTransition('border-color')}, ${getTransition('color')}`, // for smooth transitions between e.g. disabled states
7492
- ...prefersColorSchemeDarkMediaQuery(theme, {
7493
- borderColor: formStateColorDark || contrastMediumColorDark,
7494
- color: primaryColorDark,
7495
- }),
7496
- ...additionalDefaultJssStyle,
7497
- },
7498
- '::slotted(:not(input[type="password"]))': {
7722
+ // CSS Variables defined in base input
7723
+ /**
7724
+ * @css-variable {"name": "--ref-p-input-slotted-padding", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `padding` in oder to adjust the alignment correctly."}
7725
+ */
7726
+ /**
7727
+ * @css-variable {"name": "--ref-p-input-slotted-margin", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `margin` in oder to adjust the spacings correctly."}
7728
+ */
7729
+ const getComponentCss$P = (disabled, loading, hideLabel, state, compact, readOnly, theme, controls) => {
7730
+ return getCss({
7731
+ ...getFunctionalComponentInputBaseStyles(disabled, loading, hideLabel, state, compact, readOnly, theme, {
7499
7732
  textOverflow: 'ellipsis',
7500
- },
7501
- ...(!isLoading &&
7502
- hoverMediaQuery({
7503
- // with the media query the selector has higher priority and overrides disabled styles
7504
- [`::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)' : ''}`]: {
7505
- borderColor: formStateHoverColor || primaryColor,
7506
- ...prefersColorSchemeDarkMediaQuery(theme, {
7507
- borderColor: formStateHoverColorDark || primaryColorDark,
7508
- }),
7509
- },
7510
- })),
7511
- // TODO: getFocusJssStyle() can't be re-used because focus style differs for form elements
7512
- [`::slotted(${child}:focus)`]: {
7513
- borderColor: primaryColor,
7514
- ...prefersColorSchemeDarkMediaQuery(theme, {
7515
- borderColor: primaryColorDark,
7516
- }),
7517
- },
7518
- [`::slotted(${child}:disabled)`]: {
7519
- cursor: 'not-allowed',
7520
- color: disabledColor,
7521
- borderColor: disabledColor,
7522
- WebkitTextFillColor: disabledColor,
7523
- ...prefersColorSchemeDarkMediaQuery(theme, {
7524
- color: disabledColorDark,
7525
- borderColor: disabledColorDark,
7526
- WebkitTextFillColor: disabledColorDark,
7527
- }),
7528
- },
7529
- ...(child !== 'select' && {
7530
- [`::slotted(${child}[readonly])`]: {
7531
- borderColor: contrastLowColor,
7532
- background: contrastLowColor,
7533
- ...prefersColorSchemeDarkMediaQuery(theme, {
7534
- borderColor: contrastLowColorDark,
7535
- background: contrastLowColorDark,
7536
- }),
7733
+ MozAppearance: 'textfield',
7734
+ '&::-webkit-inner-spin-button, &::-webkit-outer-spin-button': {
7735
+ WebkitAppearance: 'none',
7537
7736
  },
7538
7737
  }),
7539
- };
7540
- };
7541
- const formElementLayeredGap = '9px'; // to have same distance vertically and horizontally for e.g. button/icon within form element
7542
- const formElementLayeredSafeZone = `calc(${formElementLayeredGap} + ${borderWidthBase})`;
7543
- // TODO: basic button/icon padding can already be set within style function instead of on component style level
7544
- const formButtonOrIconPadding = spacingStaticXSmall;
7545
- // TODO: if we'd use 12px instead, it wouldn't be necessary for textarea to have a custom vertical padding,
7546
- // unfortunately line-height alignment breaks for a select element for some reasons then
7547
- // TODO: basic form element padding can already be set within style function instead of on component style level
7548
- const formElementPaddingVertical = spacingStaticSmall;
7549
- // TODO: basic form element padding can already be set within style function instead of on component style level
7550
- const formElementPaddingHorizontal = spacingStaticMedium;
7551
- const getCalculatedFormElementPaddingHorizontal = (buttonOrIconAmount) => {
7552
- // when applied, font-family and font-size needs to be set too for correct calculation of ex-unit ($fontLineHeight)
7553
- return `calc(${formElementLayeredGap} + ${formElementPaddingHorizontal} / 2 + (${fontLineHeight} + ${formButtonOrIconPadding} * 2) * ${buttonOrIconAmount})`;
7554
- };
7555
- // TODO: re-use in textarea-wrapper not only in text-field-wrapper
7556
- const getUnitCounterJssStyle = (isDisabled, isReadonly, theme) => {
7557
- const { disabledColor, contrastMediumColor, contrastHighColor } = getThemedColors(theme);
7558
- const { disabledColor: disabledColorDark, contrastMediumColor: contrastMediumColorDark } = getThemedColors('dark');
7559
- return {
7560
- pointerEvents: 'none',
7561
- maxWidth: '100%',
7562
- boxSizing: 'border-box',
7563
- whiteSpace: 'nowrap',
7564
- overflow: 'hidden',
7565
- textOverflow: 'ellipsis',
7566
- font: textSmallStyle.font,
7567
- color: contrastMediumColor,
7568
- ...prefersColorSchemeDarkMediaQuery(theme, {
7569
- color: contrastMediumColorDark,
7738
+ ...(controls && {
7739
+ button: {
7740
+ padding: `var(${cssVarButtonPurePadding})`,
7741
+ margin: `var(${cssVarButtonPureMargin})`,
7742
+ },
7570
7743
  }),
7571
- ...(isDisabled && {
7572
- color: disabledColor,
7573
- ...prefersColorSchemeDarkMediaQuery(theme, {
7574
- color: disabledColorDark,
7575
- }),
7744
+ });
7745
+ };
7746
+
7747
+ // CSS Variables defined in base input
7748
+ /**
7749
+ * @css-variable {"name": "--ref-p-input-slotted-padding", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `padding` in oder to adjust the alignment correctly."}
7750
+ */
7751
+ /**
7752
+ * @css-variable {"name": "--ref-p-input-slotted-margin", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `margin` in oder to adjust the spacings correctly."}
7753
+ */
7754
+ const getComponentCss$O = (disabled, loading, hideLabel, state, toggle, compact, readOnly, theme) => {
7755
+ return getCss({
7756
+ ...getFunctionalComponentInputBaseStyles(disabled, loading, hideLabel, state, compact, readOnly, theme, {
7757
+ '&[type="text"]': {
7758
+ textOverflow: 'ellipsis',
7759
+ },
7576
7760
  }),
7577
- ...(isReadonly && {
7578
- color: contrastHighColor,
7761
+ ...(toggle && {
7762
+ button: {
7763
+ padding: `var(${cssVarButtonPurePadding})`,
7764
+ margin: `var(${cssVarButtonPureMargin})`,
7765
+ },
7579
7766
  }),
7580
- };
7767
+ });
7581
7768
  };
7582
7769
 
7583
- const cssVarInternalInputPasswordScaling = '--p-internal-input-password-scaling';
7584
- const getComponentCss$M = (disabled, hideLabel, state, toggle, compact, readOnly, theme) => {
7585
- // Determines the scaling factor for the input-password size. In "compact" mode, it uses 0.5 to achieve a 36px input-password (compact size).
7586
- // Defaults to 1 for the standard size and can be overridden by the CSS variable `cssVarInternalInputPasswordScaling`.
7587
- const scalingVar = `var(${cssVarInternalInputPasswordScaling}, ${compact ? 0.5 : 1})`;
7588
- const paddingBlock = `max(2px, ${formElementPaddingVertical} * ${scalingVar})`;
7589
- const paddingInline = `max(2px, ${formElementPaddingHorizontal} * ${scalingVar})`;
7590
- // TODO: Ideally, 'compact' should only influence the calculation of scalingVar,
7591
- // ensuring that the paddingButton calculation solely depends on the scaling factor.
7592
- const paddingButton = compact ? '0px' : `calc(${formButtonOrIconPadding} * ${scalingVar})`;
7593
- const height = `max(${fontLineHeight}, ${scalingVar} * (${fontLineHeight} + 10px))`;
7594
- const { primaryColor, contrastLowColor, contrastMediumColor, disabledColor } = getThemedColors(theme);
7595
- const { primaryColor: primaryColorDark, contrastLowColor: contrastLowColorDark, contrastMediumColor: contrastMediumColorDark, disabledColor: disabledColorDark, } = getThemedColors('dark');
7596
- const { formStateColor, formStateHoverColor } = getThemedFormStateColors(theme, state);
7597
- const { formStateColor: formStateColorDark, formStateHoverColor: formStateHoverColorDark } = getThemedFormStateColors('dark', state);
7598
- const hoverStyles = {
7599
- borderColor: formStateHoverColor || primaryColor,
7600
- ...prefersColorSchemeDarkMediaQuery(theme, {
7601
- borderColor: formStateHoverColorDark || primaryColorDark,
7602
- }),
7603
- };
7770
+ // CSS Variables defined in base input
7771
+ /**
7772
+ * @css-variable {"name": "--ref-p-input-slotted-padding", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `padding` in oder to adjust the alignment correctly."}
7773
+ */
7774
+ /**
7775
+ * @css-variable {"name": "--ref-p-input-slotted-margin", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `margin` in oder to adjust the spacings correctly."}
7776
+ */
7777
+ const getComponentCss$N = (disabled, loading, hideLabel, state, compact, readOnly, theme, clear) => {
7604
7778
  return getCss({
7605
- '@global': {
7606
- ':host': {
7607
- display: 'block',
7608
- ...addImportantToEachRule({
7609
- ...colorSchemeStyles,
7610
- ...hostHiddenStyles,
7611
- }),
7779
+ ...getFunctionalComponentInputBaseStyles(disabled, loading, hideLabel, state, compact, readOnly, theme, {
7780
+ textOverflow: 'ellipsis',
7781
+ '&[type="search"]::-webkit-search-cancel-button': {
7782
+ display: 'none',
7612
7783
  },
7613
- ...preventFoucOfNestedElementsStyles,
7614
- input: {
7615
- all: 'unset',
7616
- flex: 1,
7617
- font: textSmallStyle.font.replace('ex', 'ex + 6px'), // a minimum line-height is needed for input, otherwise value is scrollable in Chrome, +6px is aligned with how Safari visualize date/time input highlighting
7618
- height,
7619
- paddingBlock,
7620
- textIndent: 0,
7621
- color: primaryColor,
7622
- ...prefersColorSchemeDarkMediaQuery(theme, {
7623
- color: primaryColorDark,
7624
- }),
7625
- width: '100%',
7626
- minWidth: '2rem',
7627
- '&[type="text"]': {
7628
- textOverflow: 'ellipsis',
7629
- },
7784
+ }),
7785
+ ...(clear && {
7786
+ button: {
7787
+ padding: `var(${cssVarButtonPurePadding})`,
7788
+ margin: `var(${cssVarButtonPureMargin})`,
7630
7789
  },
7631
- },
7632
- root: {
7633
- display: 'grid',
7634
- gap: spacingStaticXSmall,
7635
- },
7636
- wrapper: {
7637
- border: `${borderWidthBase} solid ${formStateColor || contrastMediumColor}`,
7638
- borderRadius: borderRadiusSmall,
7639
- paddingInlineStart: paddingInline,
7640
- paddingInlineEnd: toggle ? paddingBlock : paddingInline, // TODO resolve inconsistency in Figma
7641
- display: 'flex',
7642
- gap: formElementLayeredGap,
7643
- transition: `${getTransition('background-color')}, ${getTransition('border-color')}, ${getTransition('color')}`,
7644
- ...prefersColorSchemeDarkMediaQuery(theme, {
7645
- borderColor: formStateColorDark || contrastMediumColorDark,
7646
- }),
7647
- '&:has(input:focus:not([readonly]))': {
7648
- borderColor: primaryColor,
7649
- ...prefersColorSchemeDarkMediaQuery(theme, {
7650
- borderColor: primaryColorDark,
7651
- }),
7790
+ }),
7791
+ });
7792
+ };
7793
+
7794
+ // CSS Variables defined in base input
7795
+ /**
7796
+ * @css-variable {"name": "--ref-p-input-slotted-padding", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `padding` in oder to adjust the alignment correctly."}
7797
+ */
7798
+ /**
7799
+ * @css-variable {"name": "--ref-p-input-slotted-margin", "description": "When slotting a `p-button-pure` or `p-link-pure` this variable needs to be set as `margin` in oder to adjust the spacings correctly."}
7800
+ */
7801
+ const getComponentCss$M = (disabled, loading, hideLabel, state, compact, readOnly, theme, counter) => {
7802
+ return getCss({
7803
+ ...getFunctionalComponentInputBaseStyles(disabled, loading, hideLabel, state, compact, readOnly, theme, {
7804
+ textOverflow: 'ellipsis',
7805
+ MozAppearance: 'textfield',
7806
+ '&::-webkit-inner-spin-button, &::-webkit-outer-spin-button': {
7807
+ WebkitAppearance: 'none',
7652
7808
  },
7653
- ...(!disabled &&
7654
- !readOnly &&
7655
- hoverMediaQuery({
7656
- '&:hover:not(:has(.button:hover, input:focus ))': hoverStyles,
7657
- })),
7658
- ...(disabled && {
7659
- cursor: 'not-allowed',
7660
- color: disabledColor,
7661
- borderColor: disabledColor,
7662
- WebkitTextFillColor: disabledColor,
7663
- ...prefersColorSchemeDarkMediaQuery(theme, {
7664
- color: disabledColorDark,
7665
- borderColor: disabledColorDark,
7666
- WebkitTextFillColor: disabledColorDark,
7667
- }),
7668
- }),
7669
- ...(readOnly && {
7809
+ }),
7810
+ ...(counter && {
7811
+ counter: {
7812
+ ...getUnitCounterJssStyle(disabled, readOnly, theme),
7670
7813
  cursor: 'text',
7671
- borderColor: contrastLowColor,
7672
- background: contrastLowColor,
7673
- ...prefersColorSchemeDarkMediaQuery(theme, {
7674
- borderColor: contrastLowColorDark,
7675
- background: contrastLowColorDark,
7676
- }),
7677
- }),
7678
- },
7679
- ...(toggle && {
7680
- button: {
7681
- placeSelf: 'center',
7682
- padding: paddingButton, // TODO resolve inconsistency in Figma
7683
7814
  },
7684
7815
  }),
7685
- // .label / .required
7686
- ...getFunctionalComponentLabelStyles(disabled, hideLabel, theme, !disabled &&
7687
- !readOnly &&
7688
- hoverMediaQuery({
7689
- '&:hover~.wrapper': hoverStyles,
7690
- })),
7691
- // .message
7692
- ...getFunctionalComponentStateMessageStyles(theme, state),
7816
+ 'sr-only': getHiddenTextJssStyle(),
7693
7817
  });
7694
7818
  };
7695
7819
 
@@ -9753,7 +9877,8 @@ const getComponentCss$r = (theme) => {
9753
9877
  },
9754
9878
  ...addImportantToEachRule({
9755
9879
  ':host': {
9756
- scrollMargin: '6px', // Aligns option when list is scrolled by navigating with keyboard
9880
+ scrollMarginBlockStart: `calc(max(2px, var(${cssVarInternalSelectOptionScaling}, 1) * 6px) + 36px)`, // 36px input height + 6px padding
9881
+ scrollMarginBlockEnd: `max(2px, var(${cssVarInternalSelectOptionScaling}, 1) * 6px)`, // Aligns option when list is scrolled by navigating with keyboard
9757
9882
  ...hostHiddenStyles,
9758
9883
  },
9759
9884
  '::slotted(img)': getButtonImageJssStyle,
@@ -9770,6 +9895,8 @@ const getComponentCss$r = (theme) => {
9770
9895
  const cssVarInternalSelectScaling = '--p-internal-select-scaling';
9771
9896
  const getComponentCss$q = (isOpen, isDisabled, hideLabel, state, compact, theme, hasSlottedImage) => {
9772
9897
  const scalingVar = `var(${cssVarInternalSelectScaling}, ${compact ? 0.5 : 1})`;
9898
+ const { contrastMediumColor: contrastMediumColorDark, backgroundSurfaceColor: backgroundSurfaceColorDark } = getThemedColors('dark');
9899
+ const { contrastMediumColor, backgroundColor, backgroundSurfaceColor } = getThemedColors(theme);
9773
9900
  return getCss({
9774
9901
  '@global': {
9775
9902
  // @keyframes fade-in
@@ -9799,6 +9926,29 @@ const getComponentCss$q = (isOpen, isDisabled, hideLabel, state, compact, theme,
9799
9926
  // min width is needed for showing at least 1 character in very narrow containers. The "1rem" value is the minimum safe zone to show at least 1 character plus the ellipsis dots.
9800
9927
  minWidth: `calc(1rem + ${formElementPaddingHorizontal} + ${borderWidthBase} * 2 + ${getCalculatedFormElementPaddingHorizontal(1)})`,
9801
9928
  },
9929
+ filter: {
9930
+ position: 'sticky',
9931
+ top: `calc(max(2px, ${scalingVar} * 6px) * -1)`,
9932
+ padding: `max(2px, ${scalingVar} * 6px)`,
9933
+ margin: `calc(max(2px, ${scalingVar} * 6px) * -1)`,
9934
+ background: isThemeDark(theme) ? backgroundSurfaceColor : backgroundColor,
9935
+ ...prefersColorSchemeDarkMediaQuery(theme, {
9936
+ background: backgroundSurfaceColorDark,
9937
+ }),
9938
+ zIndex: 1,
9939
+ },
9940
+ options: {
9941
+ display: 'flex',
9942
+ flexDirection: 'column',
9943
+ gap: `max(2px, ${scalingVar} * ${spacingStaticSmall})`,
9944
+ },
9945
+ 'no-results': {
9946
+ ...getOptionJssStyle('select-option', scalingVar, theme),
9947
+ color: contrastMediumColor,
9948
+ ...prefersColorSchemeDarkMediaQuery(theme, {
9949
+ color: contrastMediumColorDark,
9950
+ }),
9951
+ },
9802
9952
  icon: getIconJssStyle('select', isOpen),
9803
9953
  'sr-only': getHiddenTextJssStyle(),
9804
9954
  // .label / .required
@@ -11349,39 +11499,46 @@ const getComponentCss = (size, theme) => {
11349
11499
  });
11350
11500
  };
11351
11501
 
11352
- exports.getAccordionCss = getComponentCss$1c;
11353
- exports.getBannerCss = getComponentCss$1b;
11354
- exports.getButtonCss = getComponentCss$17;
11355
- exports.getButtonGroupCss = getComponentCss$1a;
11356
- exports.getButtonPureCss = getComponentCss$19;
11357
- exports.getButtonTileCss = getComponentCss$18;
11358
- exports.getCanvasCss = getComponentCss$16;
11359
- exports.getCarouselCss = getComponentCss$15;
11360
- exports.getCheckboxCss = getComponentCss$13;
11361
- exports.getCheckboxWrapperCss = getComponentCss$14;
11362
- exports.getContentWrapperCss = getComponentCss$12;
11363
- exports.getCrestCss = getComponentCss$11;
11364
- exports.getDisplayCss = getComponentCss$10;
11365
- exports.getDividerCss = getComponentCss$$;
11366
- exports.getDrilldownCss = getComponentCss$_;
11367
- exports.getDrilldownItemCss = getComponentCss$Z;
11368
- exports.getDrilldownLinkCss = getComponentCss$Y;
11369
- exports.getFieldsetCss = getComponentCss$W;
11370
- exports.getFieldsetWrapperCss = getComponentCss$X;
11371
- exports.getFlexCss = getComponentCss$U;
11372
- exports.getFlexItemCss = getComponentCss$V;
11373
- exports.getFlyoutCss = getComponentCss$T;
11502
+ exports.cssVarButtonPureMargin = cssVarButtonPureMargin;
11503
+ exports.cssVarButtonPurePadding = cssVarButtonPurePadding;
11504
+ exports.cssVarInternalInputBaseScaling = cssVarInternalInputBaseScaling;
11505
+ exports.getAccordionCss = getComponentCss$1f;
11506
+ exports.getBannerCss = getComponentCss$1e;
11507
+ exports.getButtonCss = getComponentCss$1a;
11508
+ exports.getButtonGroupCss = getComponentCss$1d;
11509
+ exports.getButtonPureCss = getComponentCss$1c;
11510
+ exports.getButtonTileCss = getComponentCss$1b;
11511
+ exports.getCanvasCss = getComponentCss$19;
11512
+ exports.getCarouselCss = getComponentCss$18;
11513
+ exports.getCheckboxCss = getComponentCss$16;
11514
+ exports.getCheckboxWrapperCss = getComponentCss$17;
11515
+ exports.getContentWrapperCss = getComponentCss$15;
11516
+ exports.getCrestCss = getComponentCss$14;
11517
+ exports.getDisplayCss = getComponentCss$13;
11518
+ exports.getDividerCss = getComponentCss$12;
11519
+ exports.getDrilldownCss = getComponentCss$11;
11520
+ exports.getDrilldownItemCss = getComponentCss$10;
11521
+ exports.getDrilldownLinkCss = getComponentCss$$;
11522
+ exports.getFieldsetCss = getComponentCss$Z;
11523
+ exports.getFieldsetWrapperCss = getComponentCss$_;
11524
+ exports.getFlexCss = getComponentCss$X;
11525
+ exports.getFlexItemCss = getComponentCss$Y;
11526
+ exports.getFlyoutCss = getComponentCss$W;
11527
+ exports.getFunctionalComponentInputBaseStyles = getFunctionalComponentInputBaseStyles;
11374
11528
  exports.getFunctionalComponentLabelStyles = getFunctionalComponentLabelStyles;
11375
11529
  exports.getFunctionalComponentLoadingMessageStyles = getFunctionalComponentLoadingMessageStyles;
11376
11530
  exports.getFunctionalComponentRequiredStyles = getFunctionalComponentRequiredStyles;
11377
11531
  exports.getFunctionalComponentStateMessageStyles = getFunctionalComponentStateMessageStyles;
11378
- exports.getGridCss = getComponentCss$R;
11379
- exports.getGridItemCss = getComponentCss$S;
11380
- exports.getHeadingCss = getComponentCss$Q;
11381
- exports.getHeadlineCss = getComponentCss$P;
11382
- exports.getIconCss = getComponentCss$O;
11383
- exports.getInlineNotificationCss = getComponentCss$N;
11384
- exports.getInputPasswordCss = getComponentCss$M;
11532
+ exports.getGridCss = getComponentCss$U;
11533
+ exports.getGridItemCss = getComponentCss$V;
11534
+ exports.getHeadingCss = getComponentCss$T;
11535
+ exports.getHeadlineCss = getComponentCss$S;
11536
+ exports.getIconCss = getComponentCss$R;
11537
+ exports.getInlineNotificationCss = getComponentCss$Q;
11538
+ exports.getInputNumberCss = getComponentCss$P;
11539
+ exports.getInputPasswordCss = getComponentCss$O;
11540
+ exports.getInputSearchCss = getComponentCss$N;
11541
+ exports.getInputTextCss = getComponentCss$M;
11385
11542
  exports.getLinkCss = getComponentCss$K;
11386
11543
  exports.getLinkPureCss = getComponentCss$L;
11387
11544
  exports.getLinkSocialCss = getComponentCss$K;
@@ -11398,6 +11555,7 @@ exports.getPaginationCss = getComponentCss$A;
11398
11555
  exports.getPinCodeCss = getComponentCss$z;
11399
11556
  exports.getPopoverCss = getComponentCss$y;
11400
11557
  exports.getRadioButtonWrapperCss = getComponentCss$x;
11558
+ exports.getScalingVar = getScalingVar;
11401
11559
  exports.getScrollerCss = getComponentCss$w;
11402
11560
  exports.getSegmentedControlCss = getComponentCss$u;
11403
11561
  exports.getSegmentedControlItemCss = getComponentCss$v;