@patternfly/patternfly 6.3.0-prerelease.6 → 6.3.0-prerelease.60

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 (168) hide show
  1. package/README.md +22 -14
  2. package/assets/images/icon-help.hbs +3 -0
  3. package/assets/images/icon-outlined-star.hbs +3 -0
  4. package/assets/images/icon-star.hbs +3 -0
  5. package/base/normalize.scss +4 -0
  6. package/base/patternfly-common.css +46 -11
  7. package/base/patternfly-common.scss +58 -13
  8. package/base/patternfly-variables.css +1172 -1
  9. package/base/patternfly-variables.scss +10 -0
  10. package/base/tokens/tokens-charts-dark.scss +1 -1
  11. package/base/tokens/tokens-charts.scss +1 -1
  12. package/base/tokens/tokens-dark.scss +13 -1
  13. package/base/tokens/tokens-default.scss +60 -2
  14. package/base/tokens/tokens-highcontrast-dark.scss +396 -0
  15. package/base/tokens/tokens-highcontrast.scss +703 -0
  16. package/base/tokens/tokens-local.scss +1 -0
  17. package/base/tokens/tokens-palette.scss +9 -1
  18. package/components/Accordion/accordion.css +102 -6
  19. package/components/Accordion/accordion.scss +112 -10
  20. package/components/Alert/alert-group.css +67 -33
  21. package/components/Alert/alert-group.scss +95 -48
  22. package/components/Badge/badge.css +2 -0
  23. package/components/Badge/badge.scss +2 -0
  24. package/components/Banner/banner.css +4 -0
  25. package/components/Banner/banner.scss +4 -0
  26. package/components/Button/button.css +187 -9
  27. package/components/Button/button.scss +195 -13
  28. package/components/CalendarMonth/calendar-month.css +16 -0
  29. package/components/CalendarMonth/calendar-month.scss +16 -0
  30. package/components/Card/card.css +5 -4
  31. package/components/Card/card.scss +5 -4
  32. package/components/CodeBlock/code-block.css +3 -0
  33. package/components/CodeBlock/code-block.scss +3 -0
  34. package/components/CodeEditor/code-editor.css +8 -3
  35. package/components/CodeEditor/code-editor.scss +11 -6
  36. package/components/DataList/data-list.css +2 -2
  37. package/components/DataList/data-list.scss +2 -2
  38. package/components/DatePicker/date-picker.css +3 -0
  39. package/components/DatePicker/date-picker.scss +4 -0
  40. package/components/Drawer/drawer.css +44 -41
  41. package/components/Drawer/drawer.scss +42 -36
  42. package/components/DualListSelector/dual-list-selector.css +55 -1
  43. package/components/DualListSelector/dual-list-selector.scss +63 -1
  44. package/components/ExpandableSection/expandable-section.css +63 -1
  45. package/components/ExpandableSection/expandable-section.scss +76 -2
  46. package/components/FileUpload/file-upload.css +3 -3
  47. package/components/FileUpload/file-upload.scss +3 -3
  48. package/components/Form/form.css +40 -1
  49. package/components/Form/form.scss +47 -1
  50. package/components/FormControl/form-control.css +16 -0
  51. package/components/FormControl/form-control.scss +9 -0
  52. package/components/InputGroup/input-group.css +80 -0
  53. package/components/InputGroup/input-group.scss +95 -0
  54. package/components/Label/label.css +20 -11
  55. package/components/Label/label.scss +21 -11
  56. package/components/Login/login.css +3 -0
  57. package/components/Login/login.scss +3 -0
  58. package/components/Menu/menu.css +35 -4
  59. package/components/Menu/menu.scss +32 -6
  60. package/components/MenuToggle/menu-toggle.css +51 -10
  61. package/components/MenuToggle/menu-toggle.scss +61 -9
  62. package/components/ModalBox/modal-box.css +3 -0
  63. package/components/ModalBox/modal-box.scss +3 -0
  64. package/components/Nav/nav.css +39 -8
  65. package/components/Nav/nav.scss +42 -9
  66. package/components/Page/page.css +124 -26
  67. package/components/Page/page.scss +86 -16
  68. package/components/Pagination/pagination.css +14 -1
  69. package/components/Pagination/pagination.scss +14 -1
  70. package/components/Panel/panel.css +7 -1
  71. package/components/Panel/panel.scss +7 -1
  72. package/components/Popover/popover.css +4 -0
  73. package/components/Popover/popover.scss +4 -0
  74. package/components/Progress/progress.css +26 -0
  75. package/components/Progress/progress.scss +22 -1
  76. package/components/ProgressStepper/progress-stepper.scss +1 -0
  77. package/components/SimpleList/simple-list.css +15 -0
  78. package/components/SimpleList/simple-list.scss +17 -1
  79. package/components/Skeleton/skeleton.css +22 -2
  80. package/components/Skeleton/skeleton.scss +25 -3
  81. package/components/Spinner/spinner.css +5 -0
  82. package/components/Spinner/spinner.scss +6 -0
  83. package/components/Table/table-grid.css +51 -5
  84. package/components/Table/table-grid.scss +22 -1
  85. package/components/Table/table.css +124 -2
  86. package/components/Table/table.scss +171 -3
  87. package/components/Tabs/tabs.css +32 -15
  88. package/components/Tabs/tabs.scss +34 -14
  89. package/components/TextInputGroup/text-input-group.css +23 -0
  90. package/components/TextInputGroup/text-input-group.scss +16 -1
  91. package/components/Timestamp/timestamp.css +4 -0
  92. package/components/Timestamp/timestamp.scss +7 -0
  93. package/components/TreeView/tree-view.css +54 -0
  94. package/components/TreeView/tree-view.scss +59 -2
  95. package/components/Truncate/truncate.css +1 -0
  96. package/components/Truncate/truncate.scss +3 -0
  97. package/components/Wizard/wizard.css +33 -6
  98. package/components/Wizard/wizard.scss +38 -8
  99. package/components/_index.css +1390 -195
  100. package/docs/components/Alert/examples/Alert.md +2 -2
  101. package/docs/components/Breadcrumb/examples/Breadcrumb.md +1 -1
  102. package/docs/components/Button/examples/Button.md +159 -6
  103. package/docs/components/Card/examples/Card.md +8 -8
  104. package/docs/components/ClipboardCopy/examples/ClipboardCopy.md +24 -32
  105. package/docs/components/CodeBlock/examples/CodeBlock.md +10 -10
  106. package/docs/components/CodeEditor/examples/CodeEditor.md +29 -5
  107. package/docs/components/DataList/examples/DataList.md +83 -207
  108. package/docs/components/DescriptionList/examples/DescriptionList.md +78 -22
  109. package/docs/components/DualListSelector/examples/DualListSelector.md +642 -319
  110. package/docs/components/EmptyState/examples/EmptyState.md +6 -6
  111. package/docs/components/ExpandableSection/examples/ExpandableSection.md +26 -15
  112. package/docs/components/Form/examples/Form.md +1178 -113
  113. package/docs/components/Hint/examples/Hint.md +3 -3
  114. package/docs/components/InlineEdit/examples/InlineEdit.md +2 -6
  115. package/docs/components/InputGroup/examples/InputGroup.md +5 -1
  116. package/docs/components/Label/examples/Label.md +2 -2
  117. package/docs/components/Login/examples/Login.md +22 -22
  118. package/docs/components/Masthead/examples/masthead.md +90 -12
  119. package/docs/components/Menu/examples/Menu.md +122 -6
  120. package/docs/components/MenuToggle/examples/MenuToggle.md +93 -55
  121. package/docs/components/ModalBox/examples/ModalBox.md +13 -1
  122. package/docs/components/OverflowMenu/examples/overflow-menu.md +5 -5
  123. package/docs/components/Page/examples/Page.md +147 -14
  124. package/docs/components/Pagination/examples/Pagination.md +123 -12
  125. package/docs/components/Popover/examples/Popover.md +0 -4
  126. package/docs/components/Progress/examples/Progress.md +222 -210
  127. package/docs/components/ProgressStepper/examples/ProgressStepper.md +32 -6
  128. package/docs/components/Skeleton/examples/Skeleton.md +21 -7
  129. package/docs/components/Slider/examples/Slider.md +2 -2
  130. package/docs/components/Spinner/examples/Spinner.md +10 -0
  131. package/docs/components/Table/examples/Table.md +7699 -4896
  132. package/docs/components/Tabs/examples/Tabs.md +1214 -6729
  133. package/docs/components/TextInputGroup/examples/TextInputGroup.md +168 -49
  134. package/docs/components/Title/examples/Title.md +8 -8
  135. package/docs/components/Toolbar/examples/Toolbar.md +7 -7
  136. package/docs/components/Wizard/examples/Wizard.md +583 -0
  137. package/docs/demos/AboutModal/examples/AboutModal.md +22 -3
  138. package/docs/demos/Alert/examples/Alert.md +66 -9
  139. package/docs/demos/BackToTop/examples/BackToTop.md +22 -3
  140. package/docs/demos/Banner/examples/Banner.md +47 -6
  141. package/docs/demos/Card/examples/Card.md +13 -67
  142. package/docs/demos/CardView/examples/CardView.md +24 -5
  143. package/docs/demos/Dashboard/examples/Dashboard.md +34 -27
  144. package/docs/demos/DataList/examples/DataList.md +628 -192
  145. package/docs/demos/DescriptionList/examples/DescriptionList.md +79 -50
  146. package/docs/demos/Drawer/examples/Drawer.md +110 -53
  147. package/docs/demos/Form/examples/BasicForms.md +146 -26
  148. package/docs/demos/JumpLinks/examples/JumpLinks.md +132 -18
  149. package/docs/demos/Masthead/examples/Masthead.md +170 -18
  150. package/docs/demos/Modal/examples/Modal.md +171 -21
  151. package/docs/demos/Nav/examples/Nav.md +111 -16
  152. package/docs/demos/NotificationDrawer/examples/NotificationDrawer.md +114 -19
  153. package/docs/demos/Page/examples/Page.md +309 -43
  154. package/docs/demos/PasswordGenerator/examples/PasswordGenerator.md +13 -1
  155. package/docs/demos/PrimaryDetail/examples/PrimaryDetail.md +886 -415
  156. package/docs/demos/Skeleton/examples/Skeleton.md +25 -4
  157. package/docs/demos/Table/examples/Table.md +480 -177
  158. package/docs/demos/Tabs/examples/Tabs.md +139 -594
  159. package/docs/demos/Toolbar/examples/Toolbar.md +72 -34
  160. package/docs/demos/Wizard/examples/Wizard.md +198 -27
  161. package/package.json +12 -7
  162. package/patternfly-base-no-globals.css +1217 -12
  163. package/patternfly-base.css +1221 -12
  164. package/patternfly-no-globals.css +2837 -437
  165. package/patternfly.css +2839 -435
  166. package/patternfly.min.css +1 -1
  167. package/patternfly.min.css.map +1 -1
  168. package/sass-utilities/mixins.scss +54 -0
@@ -35,11 +35,34 @@ $pf-v6-c-dual-list-selector__item--MaxNesting: 10;
35
35
  --#{$dual-list-selector}__menu--MaxHeight: #{pf-size-prem(320px)};
36
36
  --#{$dual-list-selector}__menu--MarginBlockStart: var(--pf-t--global--spacer--md);
37
37
 
38
+ // List
39
+ --#{$dual-list-selector}__list--TransitionDuration--expand--slide: 0s;
40
+ --#{$dual-list-selector}__list--TransitionDuration--expand--fade: var(--pf-t--global--motion--duration--fade--default);
41
+ --#{$dual-list-selector}__list--TransitionDuration--collapse--slide: 0s;
42
+ --#{$dual-list-selector}__list--TransitionDuration--collapse--fade: var(--pf-t--global--motion--duration--fade--short);
43
+ --#{$dual-list-selector}__list--TransitionDuration--slide: var(--#{$dual-list-selector}__list--TransitionDuration--collapse--slide);
44
+ --#{$dual-list-selector}__list--TransitionDuration--fade: var(--#{$dual-list-selector}__list--TransitionDuration--collapse--fade);
45
+ --#{$dual-list-selector}__list--TransitionTimingFunction: var(--pf-t--global--motion--timing-function--default);
46
+ --#{$dual-list-selector}__list--Opacity: 0;
47
+ --#{$dual-list-selector}--m-expanded__list--Opacity: 1;
48
+ --#{$dual-list-selector}__list--TranslateY: 0;
49
+ --#{$dual-list-selector}--m-expanded__list--TranslateY: 0;
50
+
51
+ @media screen and (prefers-reduced-motion: no-preference) {
52
+ --#{$dual-list-selector}__list--TransitionDuration--expand--slide: var(--pf-t--global--motion--duration--fade--default);
53
+ --#{$dual-list-selector}__list--TransitionDuration--collapse--slide: var(--pf-t--global--motion--duration--fade--short);
54
+ --#{$dual-list-selector}__list--TranslateY: -.5rem;
55
+ }
56
+
38
57
  // List item
39
58
  --#{$dual-list-selector}__list-item-row--FontSize: var(--pf-t--global--font--size--sm);
40
59
  --#{$dual-list-selector}__list-item-row--BackgroundColor: var(--pf-t--global--background--color--action--plain--default);
60
+ --#{$dual-list-selector}__list-item-row--BorderWidth: var(--pf-t--global--border--width--action--plain--default);
61
+ --#{$dual-list-selector}__list-item-row--BorderColor: var(--pf-t--global--border--color--high-contrast);
41
62
  --#{$dual-list-selector}__list-item-row--hover--BackgroundColor: var(--pf-t--global--background--color--primary--hover);
63
+ --#{$dual-list-selector}__list-item-row--hover--BorderWidth: var(--pf-t--global--border--width--action--plain--hover);
42
64
  --#{$dual-list-selector}__list-item-row--m-selected--BackgroundColor: var(--pf-t--global--background--color--primary--clicked);
65
+ --#{$dual-list-selector}__list-item-row--m-selected--BorderWidth: var(--pf-t--global--border--width--action--plain--clicked);
43
66
  --#{$dual-list-selector}__list-item--m-ghost-row--BackgroundColor: var(--pf-t--global--background--color--action--plain--clicked);
44
67
  --#{$dual-list-selector}__list-item--m-ghost-row--Opacity: .4;
45
68
 
@@ -163,6 +186,7 @@ $pf-v6-c-dual-list-selector__item--MaxNesting: 10;
163
186
  overflow: auto;
164
187
  border: var(--#{$dual-list-selector}__menu--BorderWidth) solid var(--#{$dual-list-selector}__menu--BorderColor);
165
188
  border-radius: var(--#{$dual-list-selector}__menu--BorderRadius);
189
+ outline-offset: 2px; // push the focus outline out so that it is not broken by the list item row background
166
190
  }
167
191
 
168
192
  .#{$dual-list-selector}__list {
@@ -193,16 +217,40 @@ $pf-v6-c-dual-list-selector__item--MaxNesting: 10;
193
217
  }
194
218
 
195
219
  .#{$dual-list-selector}__list-item {
196
- &:focus {
220
+ &:focus-visible {
197
221
  --#{$dual-list-selector}__list-item-row--BackgroundColor: var(--#{$dual-list-selector}__list-item-row--hover--BackgroundColor);
198
222
  }
199
223
 
200
224
  &.pf-m-expandable {
201
225
  --#{$dual-list-selector}__item--PaddingInlineStart: var(--#{$dual-list-selector}__item--m-expandable--PaddingInlineStart);
226
+
227
+ > .#{$dual-list-selector}__list {
228
+ .#{$dual-list-selector}.pf-m-animate-expand & { // TODO - remove opt-in class in a breaking change
229
+ max-height: 0;
230
+ visibility: hidden;
231
+ opacity: var(--#{$dual-list-selector}__list--Opacity);
232
+ transition-delay: 0s, 0s, var(--#{$dual-list-selector}__list--TransitionDuration--fade), var(--#{$dual-list-selector}__list--TransitionDuration--fade);
233
+ transition-timing-function: var(--#{$dual-list-selector}__list--TransitionTimingFunction);
234
+ transition-duration: var(--#{$dual-list-selector}__list--TransitionDuration--fade), var(--#{$dual-list-selector}__list--TransitionDuration--slide), 0s, 0s;
235
+ transition-property: opacity, translate, visibility, max-height;
236
+ translate: 0 var(--#{$dual-list-selector}__list--TranslateY);
237
+ }
238
+ }
202
239
  }
203
240
 
204
241
  &.pf-m-expanded {
205
242
  --#{$dual-list-selector}__item-toggle-icon--Rotate: var(--#{$dual-list-selector}__list-item--m-expanded__item-toggle-icon--Rotate);
243
+
244
+ > .#{$dual-list-selector}__list {
245
+ .#{$dual-list-selector}.pf-m-animate-expand & {
246
+ max-height: 99999px;
247
+ visibility: revert;
248
+ opacity: var(--#{$dual-list-selector}--m-expanded__list--Opacity);
249
+ transition-delay: 0s;
250
+ transition-duration: var(--#{$dual-list-selector}__list--TransitionDuration--expand--fade), var(--#{$dual-list-selector}__list--TransitionDuration--expand--slide), 0s, 0s;
251
+ translate: 0 var(--#{$dual-list-selector}--m-expanded__list--TranslateY);
252
+ }
253
+ }
206
254
  }
207
255
 
208
256
  &.pf-m-disabled {
@@ -214,12 +262,23 @@ $pf-v6-c-dual-list-selector__item--MaxNesting: 10;
214
262
  }
215
263
 
216
264
  .#{$dual-list-selector}__list-item-row {
265
+ position: relative;
217
266
  display: flex;
218
267
  font-size: var(--#{$dual-list-selector}__list-item-row--FontSize);
219
268
  background-color: var(--#{$dual-list-selector}__list-item-row--BackgroundColor);
220
269
 
270
+ &::before {
271
+ position: absolute;
272
+ inset: 0;
273
+ pointer-events: none;
274
+ content: "";
275
+ border-block-start: var(--#{$dual-list-selector}__list-item-row--BorderWidth) solid var(--#{$dual-list-selector}__list-item-row--BorderColor);
276
+ border-block-end: var(--#{$dual-list-selector}__list-item-row--BorderWidth) solid var(--#{$dual-list-selector}__list-item-row--BorderColor);
277
+ }
278
+
221
279
  &.pf-m-selected {
222
280
  --#{$dual-list-selector}__list-item-row--BackgroundColor: var(--#{$dual-list-selector}__list-item-row--m-selected--BackgroundColor);
281
+ --#{$dual-list-selector}__list-item-row--BorderWidth: var(--#{$dual-list-selector}__list-item-row--m-selected--BorderWidth);
223
282
 
224
283
  .#{$dual-list-selector}__item-text {
225
284
  --#{$dual-list-selector}__item-text--Color: var(--#{$dual-list-selector}__list-item-row--m-selected__text--Color);
@@ -230,10 +289,13 @@ $pf-v6-c-dual-list-selector__item--MaxNesting: 10;
230
289
 
231
290
  &:hover {
232
291
  --#{$dual-list-selector}__list-item-row--BackgroundColor: var(--#{$dual-list-selector}__list-item-row--hover--BackgroundColor);
292
+ --#{$dual-list-selector}__list-item-row--BorderWidth: var(--#{$dual-list-selector}__list-item-row--hover--BorderWidth);
233
293
  }
234
294
 
235
295
  &.pf-m-check {
236
296
  --#{$dual-list-selector}__list-item-row--m-selected--BackgroundColor: transparent;
297
+ --#{$dual-list-selector}__list-item-row--m-selected--BorderColor: transparent;
298
+ --#{$dual-list-selector}__list-item-row--BorderWidth: revert;
237
299
  }
238
300
 
239
301
  &.pf-m-ghost-row {
@@ -9,6 +9,20 @@
9
9
  --pf-v6-c-expandable-section__toggle-icon--m-expand-top--Rotate: 0;
10
10
  --pf-v6-c-expandable-section--m-expanded__toggle-icon--Rotate: 90deg;
11
11
  --pf-v6-c-expandable-section--m-expanded__toggle-icon--m-expand-top--Rotate: -90deg;
12
+ --pf-v6-c-expandable-section__content--TransitionDuration--collapse--slide: 0s;
13
+ --pf-v6-c-expandable-section__content--TransitionDuration--collapse--fade: var(--pf-t--global--motion--duration--fade--short);
14
+ --pf-v6-c-expandable-section__content--TransitionDuration--expand--slide: 0s;
15
+ --pf-v6-c-expandable-section__content--TransitionDuration--expand--fade: var(--pf-t--global--motion--duration--fade--default);
16
+ --pf-v6-c-expandable-section__content--TransitionDuration--slide: var(--pf-v6-c-expandable-section__content--TransitionDuration--collapse--slide);
17
+ --pf-v6-c-expandable-section__content--TransitionDuration--fade: var(--pf-v6-c-expandable-section__content--TransitionDuration--collapse--fade);
18
+ --pf-v6-c-expandable-section__content--TransitionTimingFunction: var(--pf-t--global--motion--timing-function--default);
19
+ --pf-v6-c-expandable-section__content--TransitionDelay--hide: var(--pf-v6-c-expandable-section__content--TransitionDuration--fade);
20
+ --pf-v6-c-expandable-section__content--Opacity: 0;
21
+ --pf-v6-c-expandable-section__content--TranslateY: 0;
22
+ --pf-v6-c-expandable-section--m-expand-top__content--TranslateY: 0;
23
+ --pf-v6-c-expandable-section--m-expand-bottom__content--TranslateY: 0;
24
+ --pf-v6-c-expandable-section--m-expanded__content--Opacity: 1;
25
+ --pf-v6-c-expandable-section--m-expanded__content--TranslateY: 0;
12
26
  --pf-v6-c-expandable-section__content--MaxWidth: auto;
13
27
  --pf-v6-c-expandable-section--m-limit-width__content--MaxWidth: 46.875rem;
14
28
  --pf-v6-c-expandable-section--m-display-lg--PaddingBlockStart: var(--pf-t--global--spacer--sm);
@@ -20,20 +34,55 @@
20
34
  --pf-v6-c-expandable-section--m-display-lg--BorderWidth: var(--pf-t--global--border--width--box--default);
21
35
  --pf-v6-c-expandable-section--m-display-lg--BorderColor: var(--pf-t--global--border--color--default);
22
36
  --pf-v6-c-expandable-section--m-display-lg--BorderRadius: var(--pf-t--global--border--radius--medium);
37
+ --pf-v6-c-expandable-section--m-display-lg--TransitionDelay: var(--pf-v6-c-expandable-section__content--TransitionDuration--collapse--fade);
23
38
  --pf-v6-c-expandable-section--m-indented__content--PaddingInlineStart: calc(var(--pf-t--global--spacer--action--horizontal--plain--default) + var(--pf-t--global--spacer--gap--text-to-element--default) + var(--pf-v6-c-expandable-section__toggle-icon--MinWidth));
24
39
  --pf-v6-c-expandable-section--m-truncate__content--LineClamp: 3;
25
40
  --pf-v6-c-expandable-section--m-truncate--Gap: var(--pf-t--global--spacer--xs);
26
41
  }
42
+ @media screen and (prefers-reduced-motion: no-preference) {
43
+ .pf-v6-c-expandable-section {
44
+ --pf-v6-c-expandable-section__content--TransitionDuration--collapse--slide: var(--pf-t--global--motion--duration--fade--short);
45
+ --pf-v6-c-expandable-section__content--TransitionDuration--expand--slide: var(--pf-t--global--motion--duration--fade--default);
46
+ --pf-v6-c-expandable-section__content--TranslateY: -.5rem;
47
+ --pf-v6-c-expandable-section--m-expand-top__content--TranslateY: .5rem;
48
+ --pf-v6-c-expandable-section--m-expand-bottom__content--TranslateY: -.5rem;
49
+ }
50
+ }
27
51
 
28
52
  .pf-v6-c-expandable-section {
29
53
  display: flex;
30
54
  flex-direction: column;
31
- gap: var(--pf-v6-c-expandable-section--Gap);
55
+ gap: 0;
56
+ transition-delay: var(--pf-v6-c-expandable-section__content--TransitionDelay--hide);
57
+ transition-duration: 0s;
58
+ transition-property: gap, padding-block-end;
32
59
  }
33
60
  .pf-v6-c-expandable-section.pf-m-expanded {
34
61
  --pf-v6-c-expandable-section__toggle-icon--Rotate: var(--pf-v6-c-expandable-section--m-expanded__toggle-icon--Rotate);
35
62
  --pf-v6-c-expandable-section__toggle-icon--m-expand-top--Rotate: var(--pf-v6-c-expandable-section--m-expanded__toggle-icon--m-expand-top--Rotate);
36
63
  --pf-v6-c-expandable-section--m-display-lg--PaddingBlockEnd: var(--pf-v6-c-expandable-section--m-display-lg--m-expanded--PaddingBlockEnd);
64
+ --pf-v6-c-expandable-section__content--TransitionDuration--slide: var(--pf-v6-c-expandable-section__content--TransitionDuration--expand--slide);
65
+ --pf-v6-c-expandable-section__content--TransitionDuration--fade: var(--pf-v6-c-expandable-section__content--TransitionDuration--expand--fade);
66
+ --pf-v6-c-expandable-section__content--Opacity: var(--pf-v6-c-expandable-section--m-expanded__content--Opacity);
67
+ --pf-v6-c-expandable-section__content--TranslateY: var(--pf-v6-c-expandable-section--m-expanded__content--TranslateY);
68
+ --pf-v6-c-expandable-section__content--Visibility: auto;
69
+ --pf-v6-c-expandable-section__content--MaxHeight: 99999px;
70
+ --pf-v6-c-expandable-section__content--TransitionDelay--hide: 0s;
71
+ gap: var(--pf-v6-c-expandable-section--Gap);
72
+ }
73
+ .pf-v6-c-expandable-section.pf-m-expand-top {
74
+ --pf-v6-c-expandable-section__toggle-icon--Rotate: var(--pf-v6-c-expandable-section__toggle-icon--m-expand-top--Rotate);
75
+ }
76
+ .pf-v6-c-expandable-section:has(.pf-v6-c-expandable-section__content:only-child):not(.pf-m-expand-top, .pf-m-expand-bottom) {
77
+ --pf-v6-c-expandable-section__content--TranslateY: 0;
78
+ --pf-v6-c-expandable-section__content--TransitionDuration--expand--fade: 0s;
79
+ --pf-v6-c-expandable-section__content--TransitionDuration--collapse--fade: 0s;
80
+ }
81
+ .pf-v6-c-expandable-section:has(.pf-v6-c-expandable-section__content:only-child).pf-m-expand-top:not(.pf-m-expanded) {
82
+ --pf-v6-c-expandable-section__content--TranslateY: var(--pf-v6-c-expandable-section--m-expand-top__content--TranslateY);
83
+ }
84
+ .pf-v6-c-expandable-section:has(.pf-v6-c-expandable-section__content:only-child).pf-m-expand-bottom:not(.pf-m-expanded) {
85
+ --pf-v6-c-expandable-section__content--TranslateY: var(--pf-v6-c-expandable-section--m-expand-bottom__content--TranslateY);
37
86
  }
38
87
  .pf-v6-c-expandable-section.pf-m-limit-width {
39
88
  --pf-v6-c-expandable-section__content--MaxWidth: var(--pf-v6-c-expandable-section--m-limit-width__content--MaxWidth);
@@ -79,4 +128,17 @@
79
128
  max-width: var(--pf-v6-c-expandable-section__content--MaxWidth);
80
129
  padding-block-end: var(--pf-v6-c-expandable-section__content--PaddingBlockEnd, 0);
81
130
  padding-inline-start: var(--pf-v6-c-expandable-section__content--PaddingInlineStart, 0);
131
+ }
132
+ .pf-v6-c-expandable-section__content:where([hidden]) {
133
+ display: revert;
134
+ }
135
+ .pf-v6-c-expandable-section:where(:not(.pf-m-truncate)) .pf-v6-c-expandable-section__content {
136
+ max-height: var(--pf-v6-c-expandable-section__content--MaxHeight, 0);
137
+ visibility: var(--pf-v6-c-expandable-section__content--Visibility, hidden);
138
+ opacity: var(--pf-v6-c-expandable-section__content--Opacity);
139
+ transition-delay: 0s, 0s, var(--pf-v6-c-expandable-section__content--TransitionDelay--hide, 0s), var(--pf-v6-c-expandable-section__content--TransitionDelay--hide, 0s);
140
+ transition-timing-function: var(--pf-v6-c-expandable-section__content--TransitionTimingFunction);
141
+ transition-duration: var(--pf-v6-c-expandable-section__content--TransitionDuration--fade), var(--pf-v6-c-expandable-section__content--TransitionDuration--slide), 0s, 0s;
142
+ transition-property: opacity, translate, visibility, max-height;
143
+ translate: 0 var(--pf-v6-c-expandable-section__content--TranslateY);
82
144
  }
@@ -13,6 +13,28 @@
13
13
  --#{$expandable-section}__toggle-icon--m-expand-top--Rotate: 0;
14
14
  --#{$expandable-section}--m-expanded__toggle-icon--Rotate: 90deg;
15
15
  --#{$expandable-section}--m-expanded__toggle-icon--m-expand-top--Rotate: -90deg;
16
+ --#{$expandable-section}__content--TransitionDuration--collapse--slide: 0s;
17
+ --#{$expandable-section}__content--TransitionDuration--collapse--fade: var(--pf-t--global--motion--duration--fade--short);
18
+ --#{$expandable-section}__content--TransitionDuration--expand--slide: 0s;
19
+ --#{$expandable-section}__content--TransitionDuration--expand--fade: var(--pf-t--global--motion--duration--fade--default);
20
+ --#{$expandable-section}__content--TransitionDuration--slide: var(--#{$expandable-section}__content--TransitionDuration--collapse--slide);
21
+ --#{$expandable-section}__content--TransitionDuration--fade: var(--#{$expandable-section}__content--TransitionDuration--collapse--fade);
22
+ --#{$expandable-section}__content--TransitionTimingFunction: var(--pf-t--global--motion--timing-function--default);
23
+ --#{$expandable-section}__content--TransitionDelay--hide: var(--#{$expandable-section}__content--TransitionDuration--fade);
24
+ --#{$expandable-section}__content--Opacity: 0;
25
+ --#{$expandable-section}__content--TranslateY: 0;
26
+ --#{$expandable-section}--m-expand-top__content--TranslateY: 0;
27
+ --#{$expandable-section}--m-expand-bottom__content--TranslateY: 0;
28
+ --#{$expandable-section}--m-expanded__content--Opacity: 1;
29
+ --#{$expandable-section}--m-expanded__content--TranslateY: 0;
30
+
31
+ @media screen and (prefers-reduced-motion: no-preference) {
32
+ --#{$expandable-section}__content--TransitionDuration--collapse--slide: var(--pf-t--global--motion--duration--fade--short);
33
+ --#{$expandable-section}__content--TransitionDuration--expand--slide: var(--pf-t--global--motion--duration--fade--default);
34
+ --#{$expandable-section}__content--TranslateY: -.5rem;
35
+ --#{$expandable-section}--m-expand-top__content--TranslateY: .5rem;
36
+ --#{$expandable-section}--m-expand-bottom__content--TranslateY: -.5rem;
37
+ }
16
38
 
17
39
  // Content
18
40
  --#{$expandable-section}__content--MaxWidth: auto;
@@ -30,6 +52,7 @@
30
52
  --#{$expandable-section}--m-display-lg--BorderWidth: var(--pf-t--global--border--width--box--default);
31
53
  --#{$expandable-section}--m-display-lg--BorderColor: var(--pf-t--global--border--color--default);
32
54
  --#{$expandable-section}--m-display-lg--BorderRadius: var(--pf-t--global--border--radius--medium);
55
+ --#{$expandable-section}--m-display-lg--TransitionDelay: var(--#{$expandable-section}__content--TransitionDuration--collapse--fade);
33
56
 
34
57
  // Indented
35
58
  --#{$expandable-section}--m-indented__content--PaddingInlineStart: calc(var(--pf-t--global--spacer--action--horizontal--plain--default) + var(--pf-t--global--spacer--gap--text-to-element--default) + var(--#{$expandable-section}__toggle-icon--MinWidth));
@@ -42,12 +65,47 @@
42
65
  .#{$expandable-section} {
43
66
  display: flex;
44
67
  flex-direction: column;
45
- gap: var(--#{$expandable-section}--Gap);
68
+ gap: 0;
69
+ transition-delay: var(--#{$expandable-section}__content--TransitionDelay--hide);
70
+ transition-duration: 0s;
71
+ transition-property: gap, padding-block-end;
46
72
 
47
73
  &.pf-m-expanded {
48
74
  --#{$expandable-section}__toggle-icon--Rotate: var(--#{$expandable-section}--m-expanded__toggle-icon--Rotate);
49
75
  --#{$expandable-section}__toggle-icon--m-expand-top--Rotate: var(--#{$expandable-section}--m-expanded__toggle-icon--m-expand-top--Rotate);
50
76
  --#{$expandable-section}--m-display-lg--PaddingBlockEnd: var(--#{$expandable-section}--m-display-lg--m-expanded--PaddingBlockEnd);
77
+ --#{$expandable-section}__content--TransitionDuration--slide: var(--#{$expandable-section}__content--TransitionDuration--expand--slide);
78
+ --#{$expandable-section}__content--TransitionDuration--fade: var(--#{$expandable-section}__content--TransitionDuration--expand--fade);
79
+ --#{$expandable-section}__content--Opacity: var(--#{$expandable-section}--m-expanded__content--Opacity);
80
+ --#{$expandable-section}__content--TranslateY: var(--#{$expandable-section}--m-expanded__content--TranslateY);
81
+ --#{$expandable-section}__content--Visibility: auto;
82
+ --#{$expandable-section}__content--MaxHeight: 99999px;
83
+ --#{$expandable-section}__content--TransitionDelay--hide: 0s;
84
+
85
+ gap: var(--pf-v6-c-expandable-section--Gap);
86
+ }
87
+
88
+ &.pf-m-expand-top {
89
+ --#{$expandable-section}__toggle-icon--Rotate: var(--#{$expandable-section}__toggle-icon--m-expand-top--Rotate);
90
+ }
91
+
92
+ // The following selector is for ensuring we target only detached expandable section contents without introducing a breaking change
93
+ // (since typically both toggle and content would both be in the expandable section wrapper)
94
+ // In a breaking change we could update this to utilize the pf-m-detached class
95
+ &:has(.#{$expandable-section}__content:only-child) {
96
+ &:not(.pf-m-expand-top, .pf-m-expand-bottom) {
97
+ --#{$expandable-section}__content--TranslateY: 0;
98
+ --#{$expandable-section}__content--TransitionDuration--expand--fade: 0s;
99
+ --#{$expandable-section}__content--TransitionDuration--collapse--fade: 0s;
100
+ }
101
+
102
+ &.pf-m-expand-top:not(.pf-m-expanded) {
103
+ --#{$expandable-section}__content--TranslateY: var(--#{$expandable-section}--m-expand-top__content--TranslateY);
104
+ }
105
+
106
+ &.pf-m-expand-bottom:not(.pf-m-expanded) {
107
+ --#{$expandable-section}__content--TranslateY: var(--#{$expandable-section}--m-expand-bottom__content--TranslateY);
108
+ }
51
109
  }
52
110
 
53
111
  &.pf-m-limit-width {
@@ -70,6 +128,7 @@
70
128
 
71
129
  &.pf-m-truncate {
72
130
  --#{$expandable-section}--Gap: var(--#{$expandable-section}--m-truncate--Gap);
131
+
73
132
  &:not(.pf-m-expanded) .#{$expandable-section}__content {
74
133
  // stylelint-disable
75
134
  display: -webkit-box;
@@ -90,7 +149,7 @@
90
149
  transition: var(--#{$expandable-section}__toggle-icon--Transition); // TODO remove shorthand in breaking change
91
150
  transform: rotate(var(--#{$expandable-section}__toggle-icon--Rotate));
92
151
 
93
- &.pf-m-expand-top {
152
+ &.pf-m-expand-top { // TODO: Remove this block in breaking change in favor of using modifier on outer expandable section wrapper
94
153
  --#{$expandable-section}__toggle-icon--Rotate: var(--#{$expandable-section}__toggle-icon--m-expand-top--Rotate);
95
154
  }
96
155
  }
@@ -99,4 +158,19 @@
99
158
  max-width: var(--#{$expandable-section}__content--MaxWidth);
100
159
  padding-block-end: var(--#{$expandable-section}__content--PaddingBlockEnd, 0);
101
160
  padding-inline-start: var(--#{$expandable-section}__content--PaddingInlineStart, 0);
161
+
162
+ &:where([hidden]) {
163
+ display: revert;
164
+ }
165
+
166
+ .#{$expandable-section}:where(:not(.pf-m-truncate)) & {
167
+ max-height: var(--#{$expandable-section}__content--MaxHeight, 0);
168
+ visibility: var(--#{$expandable-section}__content--Visibility, hidden);
169
+ opacity: var(--#{$expandable-section}__content--Opacity);
170
+ transition-delay: 0s, 0s, var(--#{$expandable-section}__content--TransitionDelay--hide, 0s), var(--#{$expandable-section}__content--TransitionDelay--hide, 0s);
171
+ transition-timing-function: var(--#{$expandable-section}__content--TransitionTimingFunction);
172
+ transition-duration: var(--#{$expandable-section}__content--TransitionDuration--fade), var(--#{$expandable-section}__content--TransitionDuration--slide), 0s, 0s;
173
+ transition-property: opacity, translate, visibility, max-height;
174
+ translate: 0 var(--#{$expandable-section}__content--TranslateY);
175
+ }
102
176
  }
@@ -6,9 +6,9 @@
6
6
  --pf-v6-c-file-upload--PaddingInlineEnd: var(--pf-t--global--spacer--sm);
7
7
  --pf-v6-c-file-upload--BorderRadius: var(--pf-t--global--border--radius--small);
8
8
  --pf-v6-c-file-upload--BorderWidth: var(--pf-t--global--border--width--regular);
9
- --pf-v6-c-file-upload--BorderColor: transparent;
10
- --pf-v6-c-file-upload--BorderStyle: solid;
11
- --pf-v6-c-file-upload--m-drag-hover--BorderColor: var(--pf-t--global--icon--color--brand--default);
9
+ --pf-v6-c-file-upload--BorderColor: var(--pf-t--global--border--color--default);
10
+ --pf-v6-c-file-upload--BorderStyle: dashed;
11
+ --pf-v6-c-file-upload--m-drag-hover--BorderColor: var(--pf-t--global--border--color--clicked);
12
12
  --pf-v6-c-file-upload--m-drag-hover--BorderStyle: dashed;
13
13
  --pf-v6-c-file-upload__file-select__c-button--m-control--OutlineOffset: calc(-1 * var(--pf-t--global--spacer--xs));
14
14
  --pf-v6-c-file-upload__file-details__c-form-control--MinHeight: calc(var(--pf-t--global--spacer--3xl) * 2);
@@ -8,11 +8,11 @@
8
8
  --#{$file-upload}--PaddingInlineEnd: var(--pf-t--global--spacer--sm);
9
9
  --#{$file-upload}--BorderRadius: var(--pf-t--global--border--radius--small);
10
10
  --#{$file-upload}--BorderWidth: var(--pf-t--global--border--width--regular);
11
- --#{$file-upload}--BorderColor: transparent;
12
- --#{$file-upload}--BorderStyle: solid;
11
+ --#{$file-upload}--BorderColor: var(--pf-t--global--border--color--default);
12
+ --#{$file-upload}--BorderStyle: dashed;
13
13
 
14
14
  // pf-m-drag-hover
15
- --#{$file-upload}--m-drag-hover--BorderColor: var(--pf-t--global--icon--color--brand--default);
15
+ --#{$file-upload}--m-drag-hover--BorderColor: var(--pf-t--global--border--color--clicked);
16
16
  --#{$file-upload}--m-drag-hover--BorderStyle: dashed;
17
17
 
18
18
  // File select > Button
@@ -51,7 +51,7 @@
51
51
  --pf-v6-c-form__field-group--GridTemplateColumns--toggle: calc(var(--pf-t--global--spacer--md) * 2 + var(--pf-v6-c-form__field-group-toggle-icon--MinWidth) + var(--pf-t--global--spacer--xs));
52
52
  --pf-v6-c-form__field-group-toggle--PaddingBlockStart: var(--pf-v6-c-form__field-group-header--PaddingBlockStart);
53
53
  --pf-v6-c-form__field-group-toggle--PaddingInlineEnd: var(--pf-t--global--spacer--xs);
54
- --pf-v6-c-form__field-group__field-group__field-group-toggle--PaddingBlockStart: var(--pf-t--global--spacer--md);
54
+ --pf-v6-c-form__field-group__field-group__field-group-toggle--PaddingBlockStart: var(--pf-t--global--spacer--lg);
55
55
  --pf-v6-c-form__field-group-header-toggle--BorderWidth--base: var(--pf-t--global--border--width--divider--default);
56
56
  --pf-v6-c-form__field-group__field-group--field-group__field-group-toggle--after--BorderBlockStartWidth: var(--pf-v6-c-form__field-group-header-toggle--BorderWidth--base);
57
57
  --pf-v6-c-form__field-group-toggle-button--MarginBlockStart: calc(var(--pf-t--global--spacer--control--vertical--plain) * -1);
@@ -71,6 +71,8 @@
71
71
  --pf-v6-c-form__field-group-header-description--MarginBlockStart: var(--pf-t--global--spacer--xs);
72
72
  --pf-v6-c-form__field-group-header-description--Color: var(--pf-t--global--text--color--subtle);
73
73
  --pf-v6-c-form__field-group-header-actions--MarginInlineStart: var(--pf-t--global--spacer--sm);
74
+ --pf-v6-c-form__field-group-header-actions--MarginBlockStart: calc(var(--pf-t--global--spacer--control--vertical--plain) * -1);
75
+ --pf-v6-c-form__field-group-header-actions--MarginBlockEnd: calc(var(--pf-t--global--spacer--control--vertical--plain) * -1);
74
76
  --pf-v6-c-form__field-group-body--PaddingBlockStart: var(--pf-t--global--spacer--lg);
75
77
  --pf-v6-c-form__field-group-body--PaddingBlockEnd: var(--pf-t--global--spacer--lg);
76
78
  --pf-v6-c-form__field-group-body--Gap: var(--pf-v6-c-form--GridGap);
@@ -78,6 +80,19 @@
78
80
  --pf-v6-c-form__field-group__field-group__field-group-body--GridColumn: 1 / 3;
79
81
  --pf-v6-c-form__field-group__field-group__field-group-toggle--field-group-body--GridColumn: 2 / 3;
80
82
  --pf-v6-c-form__field-group-body__field-group--last-child--MarginBlockEnd: calc(var(--pf-v6-c-form__field-group-body--PaddingBlockEnd) * -1);
83
+ --pf-v6-c-form__field-group-body--TranslateY: 0;
84
+ --pf-v6-c-form__field-group--m-expanded__field-group-body--TranslateY: 0;
85
+ --pf-v6-c-form__field-group-body--TransitionDuration--expand--slide: 0s;
86
+ --pf-v6-c-form__field-group-body--TransitionDuration--expand--fade: var(--pf-t--global--motion--duration--fade--default);
87
+ --pf-v6-c-form__field-group-body--TransitionDuration--collapse--slide: 0s;
88
+ --pf-v6-c-form__field-group-body--TransitionDuration--collapse--fade: var(--pf-t--global--motion--duration--fade--short);
89
+ }
90
+ @media screen and (prefers-reduced-motion: no-preference) {
91
+ .pf-v6-c-form {
92
+ --pf-v6-c-form__field-group-body--TransitionDuration--expand--slide: var(--pf-t--global--motion--duration--fade--default);
93
+ --pf-v6-c-form__field-group-body--TransitionDuration--collapse--slide: var(--pf-t--global--motion--duration--fade--short);
94
+ --pf-v6-c-form__field-group-body--TranslateY: -.5rem;
95
+ }
81
96
  }
82
97
 
83
98
  .pf-v6-c-form {
@@ -434,6 +449,16 @@
434
449
  .pf-v6-c-form__field-group.pf-m-expanded > .pf-v6-c-form__field-group-toggle {
435
450
  --pf-v6-c-form__field-group-toggle-icon--Rotate: var(--pf-v6-c-form__field-group--m-expanded__toggle-icon--Rotate);
436
451
  }
452
+ .pf-v6-c-form__field-group.pf-m-expanded.pf-m-expandable > .pf-v6-c-form__field-group-body {
453
+ max-height: 99999px;
454
+ padding-block-start: var(--pf-v6-c-form__field-group-body--PaddingBlockStart);
455
+ padding-block-end: var(--pf-v6-c-form__field-group-body--PaddingBlockEnd);
456
+ visibility: visible;
457
+ opacity: 1;
458
+ transition-delay: 0s;
459
+ transition-duration: var(--pf-v6-c-form__field-group-body--TransitionDuration--expand--fade), var(--pf-v6-c-form__field-group-body--TransitionDuration--expand--slide), 0s, 0s, 0s, 0s;
460
+ translate: 0 var(--pf-v6-c-form__field-group--m-expanded__field-group-body--TranslateY);
461
+ }
437
462
 
438
463
  .pf-v6-c-form__field-group-toggle {
439
464
  grid-row: 1/2;
@@ -492,6 +517,8 @@
492
517
  }
493
518
 
494
519
  .pf-v6-c-form__field-group-header-actions {
520
+ margin-block-start: var(--pf-v6-c-form__field-group-header-actions--MarginBlockStart);
521
+ margin-block-end: var(--pf-v6-c-form__field-group-header-actions--MarginBlockEnd);
495
522
  margin-inline-start: var(--pf-v6-c-form__field-group-header-actions--MarginInlineStart);
496
523
  white-space: nowrap;
497
524
  }
@@ -503,6 +530,18 @@
503
530
  padding-block-start: var(--pf-v6-c-form__field-group-body--PaddingBlockStart);
504
531
  padding-block-end: var(--pf-v6-c-form__field-group-body--PaddingBlockEnd);
505
532
  }
533
+ .pf-v6-c-form__field-group.pf-m-expandable > .pf-v6-c-form__field-group-body {
534
+ max-height: 0;
535
+ padding-block-start: 0;
536
+ padding-block-end: 0;
537
+ visibility: hidden;
538
+ opacity: 0;
539
+ transition-delay: 0s, 0s, var(--pf-v6-c-form__field-group-body--TransitionDuration--collapse--fade), var(--pf-v6-c-form__field-group-body--TransitionDuration--collapse--fade), var(--pf-v6-c-form__field-group-body--TransitionDuration--collapse--fade), var(--pf-v6-c-form__field-group-body--TransitionDuration--collapse--fade);
540
+ transition-duration: var(--pf-v6-c-form__field-group-body--TransitionDuration--collapse--fade), var(--pf-v6-c-form__field-group-body--TransitionDuration--collapse--slide), 0s, 0s, 0s, 0s;
541
+ transition-property: opacity, translate, visibility, max-height, padding-block-start, padding-block-end;
542
+ translate: 0 var(--pf-v6-c-form__field-group-body--TranslateY);
543
+ }
544
+
506
545
  .pf-v6-c-form__field-group-body > .pf-v6-c-form__field-group:first-child {
507
546
  --pf-v6-c-form__field-group-toggle--PaddingBlockStart: 0;
508
547
  --pf-v6-c-form__field-group-header--PaddingBlockStart: 0;
@@ -125,10 +125,12 @@ $pf-v6-c-form--m-horizontal--breakpoint-map: build-breakpoint-map("sm", "md", "l
125
125
  --#{$form}__field-group--BorderBlockEndWidth: var(--#{$form}__field-group--border-width-base);
126
126
  --#{$form}__field-group--BorderBlockEndColor: var(--pf-t--global--border--color--default);
127
127
  --#{$form}__field-group--field-group--MarginBlockStart: calc(var(--#{$form}--GridGap) * -1);
128
+
129
+ // Field group toggle
128
130
  --#{$form}__field-group--GridTemplateColumns--toggle: calc(var(--pf-t--global--spacer--md) * 2 + var(--#{$form}__field-group-toggle-icon--MinWidth) + var(--pf-t--global--spacer--xs)); // based off of the expected width of the group toggle, for use to define a column when the toggle is not present
129
131
  --#{$form}__field-group-toggle--PaddingBlockStart: var(--#{$form}__field-group-header--PaddingBlockStart);
130
132
  --#{$form}__field-group-toggle--PaddingInlineEnd: var(--pf-t--global--spacer--xs);
131
- --#{$form}__field-group__field-group__field-group-toggle--PaddingBlockStart: var(--pf-t--global--spacer--md);
133
+ --#{$form}__field-group__field-group__field-group-toggle--PaddingBlockStart: var(--pf-t--global--spacer--lg); // remove in breaking change
132
134
  --#{$form}__field-group-header-toggle--BorderWidth--base: var(--pf-t--global--border--width--divider--default);
133
135
  --#{$form}__field-group__field-group--field-group__field-group-toggle--after--BorderBlockStartWidth: var(--#{$form}__field-group-header-toggle--BorderWidth--base);
134
136
  --#{$form}__field-group-toggle-button--MarginBlockStart: calc(var(--pf-t--global--spacer--control--vertical--plain) * -1);
@@ -138,6 +140,8 @@ $pf-v6-c-form--m-horizontal--breakpoint-map: build-breakpoint-map("sm", "md", "l
138
140
  --#{$form}__field-group-toggle-icon--MinWidth: var(--pf-t--global--font--size--body--default);
139
141
  --#{$form}__field-group-toggle-icon--Rotate: 0;
140
142
  --#{$form}__field-group--m-expanded__toggle-icon--Rotate: 90deg;
143
+
144
+ // Field group header
141
145
  --#{$form}__field-group-header--PaddingBlockStart: var(--pf-t--global--spacer--md);
142
146
  --#{$form}__field-group-header--PaddingBlockEnd: var(--pf-t--global--spacer--md);
143
147
  --#{$form}__field-group-header--GridColumn: 1 / 3;
@@ -148,6 +152,11 @@ $pf-v6-c-form--m-horizontal--breakpoint-map: build-breakpoint-map("sm", "md", "l
148
152
  --#{$form}__field-group-header-description--MarginBlockStart: var(--pf-t--global--spacer--xs);
149
153
  --#{$form}__field-group-header-description--Color: var(--pf-t--global--text--color--subtle);
150
154
  --#{$form}__field-group-header-actions--MarginInlineStart: var(--pf-t--global--spacer--sm);
155
+ --#{$form}__field-group-header-actions--MarginBlockStart: calc(var(--pf-t--global--spacer--control--vertical--plain) * -1);
156
+ --#{$form}__field-group-header-actions--MarginBlockEnd: calc(var(--pf-t--global--spacer--control--vertical--plain) * -1);
157
+
158
+
159
+ // Field group body
151
160
  --#{$form}__field-group-body--PaddingBlockStart: var(--pf-t--global--spacer--lg);
152
161
  --#{$form}__field-group-body--PaddingBlockEnd: var(--pf-t--global--spacer--lg);
153
162
  --#{$form}__field-group-body--Gap: var(--#{$form}--GridGap);
@@ -155,6 +164,18 @@ $pf-v6-c-form--m-horizontal--breakpoint-map: build-breakpoint-map("sm", "md", "l
155
164
  --#{$form}__field-group__field-group__field-group-body--GridColumn: 1 / 3;
156
165
  --#{$form}__field-group__field-group__field-group-toggle--field-group-body--GridColumn: 2 / 3;
157
166
  --#{$form}__field-group-body__field-group--last-child--MarginBlockEnd: calc(var(--#{$form}__field-group-body--PaddingBlockEnd) * -1);
167
+ --#{$form}__field-group-body--TranslateY: 0;
168
+ --#{$form}__field-group--m-expanded__field-group-body--TranslateY: 0;
169
+ --#{$form}__field-group-body--TransitionDuration--expand--slide: 0s;
170
+ --#{$form}__field-group-body--TransitionDuration--expand--fade: var(--pf-t--global--motion--duration--fade--default);
171
+ --#{$form}__field-group-body--TransitionDuration--collapse--slide: 0s;
172
+ --#{$form}__field-group-body--TransitionDuration--collapse--fade: var(--pf-t--global--motion--duration--fade--short);
173
+
174
+ @media screen and (prefers-reduced-motion: no-preference) {
175
+ --#{$form}__field-group-body--TransitionDuration--expand--slide: var(--pf-t--global--motion--duration--fade--default);
176
+ --#{$form}__field-group-body--TransitionDuration--collapse--slide: var(--pf-t--global--motion--duration--fade--short);
177
+ --#{$form}__field-group-body--TranslateY: -.5rem;
178
+ }
158
179
  }
159
180
 
160
181
  .#{$form} {
@@ -385,6 +406,17 @@ $pf-v6-c-form--m-horizontal--breakpoint-map: build-breakpoint-map("sm", "md", "l
385
406
  > .#{$form}__field-group-toggle {
386
407
  --#{$form}__field-group-toggle-icon--Rotate: var(--#{$form}__field-group--m-expanded__toggle-icon--Rotate);
387
408
  }
409
+
410
+ &.pf-m-expandable > .#{$form}__field-group-body { // TODO - remove .pf-m-expandable in a breaking change, it shouldn't be needed. Only needed now so that these styles are an opt-in behind .pf-m-expandable
411
+ max-height: 99999px;
412
+ padding-block-start: var(--#{$form}__field-group-body--PaddingBlockStart);
413
+ padding-block-end: var(--#{$form}__field-group-body--PaddingBlockEnd);
414
+ visibility: visible;
415
+ opacity: 1;
416
+ transition-delay: 0s;
417
+ transition-duration: var(--#{$form}__field-group-body--TransitionDuration--expand--fade), var(--#{$form}__field-group-body--TransitionDuration--expand--slide), 0s, 0s, 0s, 0s;
418
+ translate: 0 var(--#{$form}__field-group--m-expanded__field-group-body--TranslateY);
419
+ }
388
420
  }
389
421
  }
390
422
 
@@ -445,6 +477,8 @@ $pf-v6-c-form--m-horizontal--breakpoint-map: build-breakpoint-map("sm", "md", "l
445
477
  }
446
478
 
447
479
  .#{$form}__field-group-header-actions {
480
+ margin-block-start: var(--#{$form}__field-group-header-actions--MarginBlockStart);
481
+ margin-block-end: var(--#{$form}__field-group-header-actions--MarginBlockEnd);
448
482
  margin-inline-start: var(--#{$form}__field-group-header-actions--MarginInlineStart);
449
483
  white-space: nowrap;
450
484
  }
@@ -456,6 +490,18 @@ $pf-v6-c-form--m-horizontal--breakpoint-map: build-breakpoint-map("sm", "md", "l
456
490
  padding-block-start: var(--#{$form}__field-group-body--PaddingBlockStart);
457
491
  padding-block-end: var(--#{$form}__field-group-body--PaddingBlockEnd);
458
492
 
493
+ @at-root .#{$form}__field-group.pf-m-expandable > & {
494
+ max-height: 0;
495
+ padding-block-start: 0;
496
+ padding-block-end: 0;
497
+ visibility: hidden;
498
+ opacity: 0;
499
+ transition-delay: 0s, 0s, var(--#{$form}__field-group-body--TransitionDuration--collapse--fade), var(--#{$form}__field-group-body--TransitionDuration--collapse--fade), var(--#{$form}__field-group-body--TransitionDuration--collapse--fade), var(--#{$form}__field-group-body--TransitionDuration--collapse--fade);
500
+ transition-duration: var(--#{$form}__field-group-body--TransitionDuration--collapse--fade), var(--#{$form}__field-group-body--TransitionDuration--collapse--slide), 0s, 0s, 0s, 0s;
501
+ transition-property: opacity, translate, visibility, max-height, padding-block-start, padding-block-end;
502
+ translate: 0 var(--#{$form}__field-group-body--TranslateY);
503
+ }
504
+
459
505
  > .#{$form}__field-group {
460
506
  &:first-child {
461
507
  --#{$form}__field-group-toggle--PaddingBlockStart: 0;
@@ -226,6 +226,22 @@
226
226
  --pf-v6-c-form-control__icon--m-status--Color: var(--pf-v6-c-form-control--m-error__icon--m-status--Color);
227
227
  --pf-v6-c-form-control--after--BorderWidth: var(--pf-v6-c-form-control--m-error--after--BorderWidth);
228
228
  }
229
+ @media (prefers-reduced-motion: no-preference) {
230
+ .pf-v6-c-form-control.pf-m-error {
231
+ translate: var(--pf-v6-global--danger-jiggle--TranslateX, 0);
232
+ animation-name: pf-v6-global-danger-jiggle-motion;
233
+ animation-duration: var(--pf-v6-global--danger-jiggle--AnimationDuration--Transform);
234
+ animation-timing-function: var(--pf-v6-global--danger-jiggle--AnimationTimingFunction--Transform);
235
+ animation-fill-mode: both;
236
+ }
237
+ }
238
+ .pf-v6-c-form-control.pf-m-error .pf-v6-c-form-control__icon.pf-m-status {
239
+ --pf-v6-c-form-control--TransitionDuration--Opacity: var(--pf-t--global--motion--duration--fade--default);
240
+ --pf-v6-c-form-control--TransitionTimingFunction--Opacity: var(--pf-t--global--motion--timing-function--default);
241
+ animation-name: pf-v6-global-fade-in;
242
+ animation-duration: var(--pf-v6-c-form-control--TransitionDuration--Opacity);
243
+ animation-timing-function: var(--pf-v6-c-form-control--TransitionTimingFunction--Opacity);
244
+ }
229
245
  .pf-v6-c-form-control.pf-m-error > textarea {
230
246
  padding-inline-end: var(--pf-v6-c-form-control--m-error--PaddingInlineEnd, var(--pf-v6-c-form-control__textarea--m-error--PaddingInlineEnd));
231
247
  }
@@ -290,6 +290,14 @@
290
290
  --#{$form-control}__icon--m-status--Color: var(--#{$form-control}--m-error__icon--m-status--Color);
291
291
  --#{$form-control}--after--BorderWidth: var(--#{$form-control}--m-error--after--BorderWidth);
292
292
 
293
+ @media (prefers-reduced-motion: no-preference) {
294
+ @include pf-v6-animate-danger-jiggle;
295
+ }
296
+
297
+ .#{$form-control}__icon.pf-m-status {
298
+ @include pf-v6-fade-default(#{$form-control});
299
+ }
300
+
293
301
  > textarea {
294
302
  padding-inline-end: var(--#{$form-control}--m-error--PaddingInlineEnd, var(--#{$form-control}__textarea--m-error--PaddingInlineEnd));
295
303
  }
@@ -438,6 +446,7 @@
438
446
 
439
447
  &.pf-m-status {
440
448
  --#{$form-control}__icon--Color: var(--#{$form-control}__icon--m-status--Color);
449
+
441
450
  }
442
451
  }
443
452