details.css

Same filename in this branch
  1. main core/profiles/demo_umami/themes/umami/css/classy/components/details.css
  2. main core/misc/dialog/off-canvas/css/details.css
  3. main core/themes/olivero/css/components/details.css
  4. main core/themes/claro/css/components/details.css
  5. main core/themes/starterkit_theme/css/components/details.css
  6. main core/themes/admin/css/components/details.css
  7. main core/modules/system/tests/themes/test_base_theme/css/components/details.css
Same filename and directory in other branches
  1. 10 core/profiles/demo_umami/themes/umami/css/classy/components/details.css
  2. 10 core/misc/dialog/off-canvas/css/details.css
  3. 10 core/themes/olivero/css/components/details.css
  4. 10 core/themes/claro/css/components/details.css
  5. 10 core/themes/starterkit_theme/css/components/details.css
  6. 11.x core/profiles/demo_umami/themes/umami/css/classy/components/details.css
  7. 11.x core/misc/dialog/off-canvas/css/details.css
  8. 11.x core/themes/olivero/css/components/details.css
  9. 11.x core/themes/claro/css/components/details.css
  10. 11.x core/themes/starterkit_theme/css/components/details.css
  11. 9 core/profiles/demo_umami/themes/umami/css/classy/components/details.css
  12. 9 core/themes/olivero/css/components/details.css
  13. 9 core/themes/seven/css/components/details.css
  14. 9 core/themes/claro/css/components/details.css
  15. 9 core/themes/bartik/css/classy/components/details.css
  16. 9 core/themes/starterkit_theme/css/components/details.css
  17. 9 core/themes/classy/css/components/details.css
  18. 8.9.x core/profiles/demo_umami/themes/umami/css/classy/components/details.css
  19. 8.9.x core/themes/seven/css/components/details.css
  20. 8.9.x core/themes/claro/css/components/details.css
  21. 8.9.x core/themes/bartik/css/classy/components/details.css
  22. 8.9.x core/themes/classy/css/components/details.css
  23. 11.x core/themes/admin/css/components/details.css
  24. 11.x core/modules/system/tests/themes/test_base_theme/css/components/details.css
  25. 11.x core/themes/default_admin/css/components/details.css

Collapsible details.

See also

collapse.js

File

core/themes/default_admin/css/components/details.css

View source
  1. /*
  2. * DO NOT EDIT THIS FILE.
  3. * See the following change record for more information,
  4. * https://www.drupal.org/node/3084859
  5. * @preserve
  6. */
  7. /**
  8. * @file
  9. * Collapsible details.
  10. *
  11. * @see collapse.js
  12. */
  13. /**
  14. * Available modifiers are:
  15. * - .gin-details--accordion
  16. * - .gin-details--accordion-item
  17. *
  18. * Despite the fact that 'accordion' isn't used anywhere right now, we
  19. * implemented it (since the design defines that).
  20. * This variant can be used by setting the '#accordion' to TRUE for a
  21. * Details render element:
  22. * @code
  23. * $build['detail_accordion'] = [
  24. * '#type' => 'details',
  25. * '#accordion' => TRUE,
  26. * ];
  27. * @endcode
  28. *
  29. * 'Accordion item' is used for the details of the node edit sidebar. For
  30. * creating accordion item list from a set of details, set the surrounding
  31. * Container render element's '#accordion' key to TRUE.
  32. *
  33. * 'Vertical tabs item' is used for the children of the VerticalTabs render
  34. * element.
  35. */
  36. :root {
  37. --size-summary-border-radius: calc(var(--details-border-size-radius) - var(--details-border-size));
  38. --summary-accordion-padding-vertical: calc(var(--admin-space-l) + ((var(--admin-space-m) - var(--admin-space-l)) / 2));
  39. --summary-accordion-line-height: var(--admin-space-l);
  40. }
  41. .gin-details {
  42. display: block;
  43. margin-block: var(--admin-space-m);
  44. color: var(--admin-color-text);
  45. border: var(--details-border-size) solid var(--details-border-color);
  46. border-radius: var(--admin-radius-m);
  47. background-color: var(--admin-color-bg-surface);
  48. box-shadow: var(--details-box-shadow);
  49. /*
  50. * The inline-size / min-inline-size pair keeps the
    element from
  51. * shifting widths when opening, in the event that a parent table element
  52. * constrains the width. This can happen when toggling the "lazy-load"
  53. * option within an image field.
  54. */
  55. td
  56. &.error {
  57. border: 2px solid var(--admin-color-error);
  58. }
  59. .gin--dark-mode
  60. }
  61. .gin-details--accordion-item,
  62. .gin-details--vertical-tabs-item {
  63. margin-block: 0;
  64. border-radius: 0;
  65. box-shadow: none;
  66. }
  67. .gin-details--accordion-item {
  68. &:first-of-type {
  69. border-start-start-radius: var(--details-border-size-radius);
  70. border-start-end-radius: var(--details-border-size-radius);
  71. }
  72. &:last-of-type {
  73. border-end-end-radius: var(--details-border-size-radius);
  74. border-end-start-radius: var(--details-border-size-radius);
  75. }
  76. }
  77. /**
  78. * Details summary styles.
  79. */
  80. .gin-details__summary {
  81. position: relative;
  82. box-sizing: border-box;
  83. list-style: none;
  84. cursor: pointer;
  85. transition: background-color var(--details-bg-color-transition-duration) ease-in-out;
  86. color: var(--admin-color-text);
  87. border-radius: var(--size-summary-border-radius);
  88. background-color: transparent;
  89. font-weight: var(--admin-font-weight-semibold);
  90. line-height: var(--admin-space-m);
  91. padding-block: calc(var(--admin-space-l) - var(--admin-space-2xs));
  92. padding-inline: 2.75rem var(--admin-space-m);
  93. &:not(.form-required) .required-mark {
  94. display: none;
  95. }
  96. /* Remove the marker on Chrome. */
  97. &::-webkit-details-marker {
  98. display: none;
  99. }
  100. /* Details marker. */
  101. &::before {
  102. position: absolute;
  103. inset-block-start: 50%;
  104. inset-inline-start: 1.125rem;
  105. display: inline-block;
  106. inline-size: var(--admin-space-m);
  107. block-size: var(--admin-space-m);
  108. margin-block-start: calc(var(--admin-space-m) / -2);
  109. content: "";
  110. transition: transform var(--details-transform-transition-duration) ease-in 0s;
  111. transform: rotate(90deg);
  112. text-align: center;
  113. background: var(--admin-color-text);
  114. mask-image: url("data:image/svg+xml,%3csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3e %3cg fill='none' stroke='currentColor' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3e %3cpath d='M8 20L16 12L8 4' /%3e %3c/g%3e%3c/svg%3e");
  115. mask-repeat: no-repeat;
  116. mask-position: center center;
  117. mask-size: 100% 100%;
  118. &:dir(rtl) {
  119. transform: rotate(-270deg);
  120. }
  121. @media (prefers-reduced-motion: reduce) {
  122. transition: none;
  123. }
  124. @media (forced-colors: active) {
  125. background-color: buttonBorder;
  126. }
  127. /**
  128. * Safari (at least version 12.1) cannot handle our details marker
  129. * transition properly.
  130. *
  131. * Every additional pointer triggered toggle event freezes the transition,
  132. * and the transition is continued and finished after the pointer leaves
  133. * the Detail elements' summary.
  134. *
  135. * Even that it is possible to provide a JavaScript workaround for it (by
  136. * adding/removing a helper class with JavaScript if the Details is
  137. * toggled), that hack will make RTL details worse than without the hack.
  138. *
  139. * This weird query was found in
  140. * https://stackoverflow.com/questions/16348489#25975282 (based on the
  141. * answer it works for Safari 10.1+)
  142. */
  143. /* stylelint-disable-next-line unit-allowed-list */
  144. @media not all and (min-resolution: 0.001dpcm) {
  145. @supports (-webkit-appearance: none) {
  146. transition: none;
  147. }
  148. }
  149. }
  150. &:hover {
  151. color: var(--admin-color-primary-hover);
  152. background-color: var(--admin-color-bg-item-hover);
  153. }
  154. &:hover::before,
  155. &:hover:focus::before {
  156. background: currentColor;
  157. @media (forced-colors: active) {
  158. background-color: linkText;
  159. }
  160. }
  161. }
  162. /* Modifiers */
  163. .gin-details__summary--accordion,
  164. .gin-details__summary--accordion-item,
  165. .gin-details__summary--vertical-tabs-item {
  166. padding-block: var(--summary-accordion-padding-vertical);
  167. padding-inline: 2.75rem var(--admin-space-l);
  168. background: var(--admin-color-bg-surface);
  169. line-height: var(--summary-accordion-line-height);
  170. .gin--dark-mode
  171. }
  172. /**
  173. * Accordion list items must not have border radius except they are the first
  174. * or the last ones.
  175. */
  176. .gin-details__summary--accordion-item {
  177. border-radius: 0;
  178. [open] > &:not(:focus, :active)::after {
  179. border-inline-start-width: 0.3125rem;
  180. }
  181. }
  182. .gin-details--accordion-item:first-child .gin-details__summary--accordion-item {
  183. border-start-start-radius: var(--details-border-size-radius);
  184. border-start-end-radius: var(--details-border-size-radius);
  185. }
  186. .gin-details--accordion-item:last-child .gin-details__summary--accordion-item {
  187. border-end-end-radius: var(--details-border-size-radius);
  188. border-end-start-radius: var(--details-border-size-radius);
  189. }
  190. /**
  191. * Details summary states.
  192. */
  193. [open] .gin-details__summary--accordion,
  194. [open] .gin-details__summary--accordion-item,
  195. [open] .gin-details__summary--vertical-tabs-item {
  196. color: var(--admin-color-primary);
  197. text-decoration-style: var(--admin-link-decoration-style);
  198. }
  199. .gin-details[open] > .gin-details__summary {
  200. border-start-start-radius: var(--size-summary-border-radius);
  201. border-start-end-radius: var(--size-summary-border-radius);
  202. border-end-end-radius: 0;
  203. border-end-start-radius: 0;
  204. &::before {
  205. transform: rotate(-90deg); /* for LTR and RTL */
  206. }
  207. }
  208. @media (forced-colors: active) {
  209. .gin-details__summary:hover::before,
  210. .gin-details__summary:hover:focus::before,
  211. .gin-details[open] > .gin-details__summary:focus::before {
  212. background: none;
  213. }
  214. .gin-details[open] > .gin-details__summary::before {
  215. margin-block-start: -0.125rem;
  216. margin-inline-end: 0.125rem;
  217. transform: rotate(-45deg); /* for LTR and RTL */
  218. background: none;
  219. }
  220. }
  221. .gin-details[open] > .gin-details__summary--accordion,
  222. .gin-details[open] > .gin-details__summary--accordion-item,
  223. .gin-details[open] > .gin-details__summary--vertical-tabs-item {
  224. box-shadow: var(--details-box-shadow);
  225. }
  226. /**
  227. * Details wrapper and content.
  228. *
  229. * Accordion and accordion-item variants should have an extra background. In
  230. * that case, we render an additional wrapper 'gin-details__content' that
  231. * creates the visual margins around the content, and use the original wrapper
  232. * for setting the background color.
  233. *
  234. * If there is no border or padding defined, margins of parent-child elements
  235. * collapse to the highest value. We want to take benefit of this behavior,
  236. * because the elements inside the details content won't cause too big
  237. * vertical spacing.
  238. */
  239. .gin-details__wrapper,
  240. .gin-details__content {
  241. margin-block: var(--admin-space-m);
  242. margin-inline: calc(var(--admin-space-l) - var(--admin-space-2xs));
  243. }
  244. .gin-details__wrapper--accordion,
  245. .gin-details__wrapper--accordion-item,
  246. .gin-details__wrapper--vertical-tabs-item {
  247. margin: 0;
  248. border-block-start: 1px solid var(--admin-color-border);
  249. background: var(--admin-color-bg);
  250. &::before,
  251. &::after {
  252. display: table;
  253. clear: both;
  254. content: "";
  255. }
  256. /* @see Drupal.behaviors.verticalTabs */
  257. @media screen and (min-width: 40.0625rem) {
  258. margin: 0;
  259. }
  260. }
  261. @media screen and (min-width: 40.0625rem) {
  262. .js .gin-details__wrapper--vertical-tabs-item {
  263. margin: 0;
  264. border-block-start: 0;
  265. background-color: transparent;
  266. }
  267. }
  268. .gin-details__content--accordion,
  269. .gin-details__content--accordion-item,
  270. .gin-details__content--vertical-tabs-item {
  271. margin-block: var(--admin-space-m) var(--admin-space-l);
  272. margin-inline: var(--admin-space-m);
  273. }
  274. @media screen and (min-width: 85em) {
  275. .vertical-tabs .gin-details__content--vertical-tabs-item {
  276. margin: var(--admin-space-l);
  277. }
  278. }
  279. /* Description. */
  280. .gin-details__description {
  281. margin-block-end: var(--admin-space-m);
  282. color: var(--admin-color-text-soft);
  283. font-size: var(--admin-font-size-xs); /* ~13px */
  284. line-height: calc(17rem / 16); /* 17px */
  285. max-inline-size: var(--admin-max-line-length);
  286. &.is-disabled {
  287. color: var(--input--disabled-fg-color);
  288. }
  289. }
  290. .gin-details__summary-summary {
  291. display: block;
  292. opacity: 0.8;
  293. color: var(--admin-color-text-soft);
  294. font-size: var(--admin-font-size-s);
  295. font-weight: normal;
  296. }
  297. /* @todo this probably needs to be moved. */
  298. .required-mark::after {
  299. display: inline-block;
  300. inline-size: 0.4375rem;
  301. block-size: 0.4375rem;
  302. margin-inline: 0.3em;
  303. content: "";
  304. vertical-align: super;
  305. background-image: url("data:image/svg+xml,%3csvg height='16' width='16' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='m0 7.562 1.114-3.438c2.565.906 4.43 1.688 5.59 2.35-.306-2.921-.467-4.93-.484-6.027h3.511c-.05 1.597-.234 3.6-.558 6.003 1.664-.838 3.566-1.613 5.714-2.325l1.113 3.437c-2.05.678-4.06 1.131-6.028 1.356.984.856 2.372 2.381 4.166 4.575l-2.906 2.059c-.935-1.274-2.041-3.009-3.316-5.206-1.194 2.275-2.244 4.013-3.147 5.206l-2.856-2.059c1.872-2.307 3.211-3.832 4.017-4.575-2.081-.402-4.058-.856-5.93-1.356' fill='%23e00'/%3e%3c/svg%3e");
  306. background-repeat: no-repeat;
  307. background-size: 0.4375rem 0.4375rem;
  308. }
  309. .gin-details.gin-details--package-listing,
  310. .gin-details.module-list__module-details,
  311. .system-status-report .gin-details {
  312. border: 1px solid var(--admin-color-border);
  313. border-radius: var(--admin-radius-m);
  314. }

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.