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/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

Collapsible details.

See also

collapse.js

File

core/themes/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(--space-l) + ((var(--space-m) - var(--space-l)) / 2));
  39. --summary-accordion-line-height: var(--space-l);
  40. }
  41. .gin-details {
  42. display: block;
  43. margin-block: var(--space-m);
  44. color: var(--color-text);
  45. border: var(--details-border-size) solid var(--details-border-color);
  46. border-radius: var(--details-border-size-radius);
  47. background-color: var(--color-white);
  48. box-shadow: var(--details-box-shadow);
  49. /*
  50. * The following width and min-width values ensure that the
    element
  51. * does not shift widths when opening, in the event that a parent table
  52. * element constrains the width. This can happen when toggling the
  53. * "lazy-load" option within an image field.
  54. */
  55. td
  56. }
  57. .gin-details--accordion-item,
  58. .gin-details--vertical-tabs-item {
  59. margin-block: 0;
  60. border-radius: 0;
  61. box-shadow: none;
  62. }
  63. .gin-details--accordion-item:first-of-type {
  64. border-top-left-radius: var(--details-border-size-radius);
  65. border-top-right-radius: var(--details-border-size-radius);
  66. }
  67. .gin-details--accordion-item:last-of-type {
  68. border-bottom-right-radius: var(--details-border-size-radius);
  69. border-bottom-left-radius: var(--details-border-size-radius);
  70. }
  71. /**
  72. * Details summary styles.
  73. */
  74. .gin-details__summary {
  75. position: relative;
  76. box-sizing: border-box;
  77. padding-block: var(--space-m);
  78. padding-inline: var(--details-desktop-wrapper-padding-start) var(--space-m);
  79. list-style: none;
  80. cursor: pointer;
  81. transition: background-color var(--details-bg-color-transition-duration) ease-in-out;
  82. color: var(--color-gray-800);
  83. border-radius: var(--size-summary-border-radius);
  84. background-color: transparent;
  85. line-height: var(--space-m);
  86. }
  87. /* Modifiers */
  88. .gin-details__summary--accordion,
  89. .gin-details__summary--accordion-item,
  90. .gin-details__summary--vertical-tabs-item {
  91. padding-block: var(--summary-accordion-padding-vertical);
  92. padding-inline: var(--details-desktop-wrapper-padding-start) var(--space-l);
  93. background: var(--color-white);
  94. line-height: var(--summary-accordion-line-height);
  95. }
  96. /**
  97. * Accordion list items must not have border radius except they are the first
  98. * or the last ones.
  99. */
  100. .gin-details__summary--accordion-item {
  101. border-radius: 0;
  102. }
  103. .gin-details--accordion-item:first-child .gin-details__summary--accordion-item {
  104. border-top-left-radius: var(--details-border-size-radius);
  105. border-top-right-radius: var(--details-border-size-radius);
  106. }
  107. .gin-details--accordion-item:last-child .gin-details__summary--accordion-item {
  108. border-bottom-right-radius: var(--details-border-size-radius);
  109. border-bottom-left-radius: var(--details-border-size-radius);
  110. }
  111. /**
  112. * Details marker styles.
  113. */
  114. /* Remove the marker on Chrome */
  115. .gin-details__summary::-webkit-details-marker {
  116. display: none;
  117. }
  118. .gin-details__summary::before {
  119. position: absolute;
  120. inset-block-start: 50%;
  121. inset-inline-start: var(--space-s);
  122. display: inline-block;
  123. width: var(--space-m);
  124. height: var(--space-m);
  125. margin-block-start: calc(var(--space-m) / -2);
  126. content: "";
  127. transition: transform var(--details-transform-transition-duration) ease-in 0s;
  128. transform: rotate(90deg);
  129. text-align: center;
  130. background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3e%3cpath d='M5.21 1.314L3.79 2.723l5.302 5.353-5.303 5.354 1.422 1.408 6.697-6.762z' fill='%23545560'/%3e%3c/svg%3e");
  131. background-size: contain;
  132. [dir="rtl"]
  133. }
  134. @media (prefers-reduced-motion: reduce) {
  135. .gin-details__summary::before {
  136. transition: none;
  137. }
  138. }
  139. @media (forced-colors: active) {
  140. .gin-details__summary::before {
  141. width: 0.5625rem;
  142. height: 0.5625rem;
  143. transition:
  144. transform var(--details-transform-transition-duration) ease-in 0s,
  145. margin var(--details-transform-transition-duration) ease-in 0s;
  146. transform: rotate(135deg); /* LTR */
  147. border-block-start: 0.125rem solid;
  148. border-inline-end: 0.125rem solid;
  149. background: none;
  150. [dir="rtl"]
  151. }
  152. }
  153. /**
  154. * Safari (at least version 12.1) cannot handle our details marker
  155. * transition properly.
  156. *
  157. * Every additional pointer triggered toggle event freezes the transition,
  158. * and the transition is continued and finished after the pointer leaves
  159. * the Detail elements' summary.
  160. *
  161. * Even that it is possible to provide a JavaScript workaround for it (by
  162. * adding/removing a helper class with JavaScript if the Details is
  163. * toggled), that hack will make RTL details worse than without the hack.
  164. *
  165. * This weird query was found in
  166. * https://stackoverflow.com/questions/16348489#25975282 (based on the
  167. * answer it works for Safari 10.1+)
  168. */
  169. /* stylelint-disable-next-line unit-allowed-list */
  170. @media not all and (min-resolution: 0.001dpcm) {
  171. @supports (-webkit-appearance: none) {
  172. .gin-details__summary::before {
  173. transition: none;
  174. }
  175. }
  176. }
  177. /**
  178. * Details summary focus.
  179. */
  180. .gin-details__summary::after {
  181. position: absolute;
  182. inset: -1px;
  183. content: "";
  184. transition: opacity var(--details-box-shadow-transition-duration) ease-in-out;
  185. pointer-events: none;
  186. opacity: 0;
  187. border-radius: var(--details-border-size-radius);
  188. box-shadow: inset 0 0 0 var(--details-summary-focus-border-size) var(--details-summary-shadow-color);
  189. }
  190. .gin-details > .gin-details__summary--accordion-item::after,
  191. .vertical-tabs__item > .gin-details__summary--vertical-tabs-item::after {
  192. border-radius: 0;
  193. }
  194. .gin-details:first-child > .gin-details__summary--accordion-item::after,
  195. .vertical-tabs__item--first > .gin-details__summary--vertical-tabs-item::after {
  196. border-top-left-radius: var(--details-border-size-radius);
  197. border-top-right-radius: var(--details-border-size-radius);
  198. }
  199. .gin-details:last-child > .gin-details__summary--accordion-item::after,
  200. .vertical-tabs__item--last > .gin-details__summary--vertical-tabs-item::after {
  201. border-bottom-right-radius: var(--details-border-size-radius);
  202. border-bottom-left-radius: var(--details-border-size-radius);
  203. }
  204. /**
  205. * Focus box of accordions and accordion items must not have bottom border
  206. * radius if their accordion is expanded.
  207. */
  208. .gin-details[open] > .gin-details__summary--accordion::after,
  209. .gin-details[open] > .gin-details__summary--accordion-item::after,
  210. .vertical-tabs__item--last[open] > .gin-details__summary--vertical-tabs-item::after {
  211. border-bottom-right-radius: 0;
  212. border-bottom-left-radius: 0;
  213. }
  214. /**
  215. * Details summary states.
  216. */
  217. .gin-details__summary:focus {
  218. box-shadow: none;
  219. }
  220. [open] .gin-details__summary--accordion,
  221. [open] .gin-details__summary--accordion-item,
  222. [open] .gin-details__summary--vertical-tabs-item {
  223. color: var(--color-absolutezero);
  224. }
  225. .gin-details__summary:hover::before,
  226. .gin-details__summary:hover:focus::before,
  227. .gin-details[open] > .gin-details__summary:focus::before,
  228. .gin-details[open] > .gin-details__summary--accordion::before,
  229. .gin-details[open] > .gin-details__summary--accordion-item::before,
  230. .gin-details[open] > .gin-details__summary--vertical-tabs-item::before {
  231. background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16'%3e%3cpath d='M5.21 1.314L3.79 2.723l5.302 5.353-5.303 5.354 1.422 1.408 6.697-6.762z' fill='%230036B1'/%3e%3c/svg%3e");
  232. }
  233. .gin-details[open] > .gin-details__summary {
  234. border-radius: var(--size-summary-border-radius) var(--size-summary-border-radius) 0 0;
  235. }
  236. .gin-details[open] > .gin-details__summary::before {
  237. transform: rotate(-90deg); /* for LTR and RTL */
  238. }
  239. @media (forced-colors: active) {
  240. .gin-details__summary:hover::before,
  241. .gin-details__summary:hover:focus::before,
  242. .gin-details[open] > .gin-details__summary:focus::before {
  243. background: none;
  244. }
  245. .gin-details[open] > .gin-details__summary::before,
  246. [dir="rtl"] .gin-details[open] > .gin-details__summary::before {
  247. margin-block-start: -0.125rem;
  248. margin-inline-end: 0.125rem;
  249. transform: rotate(-45deg); /* for LTR and RTL */
  250. background: none;
  251. }
  252. }
  253. .gin-details[open] > .gin-details__summary--accordion,
  254. .gin-details[open] > .gin-details__summary--accordion-item,
  255. .gin-details[open] > .gin-details__summary--vertical-tabs-item {
  256. box-shadow: var(--details-box-shadow);
  257. }
  258. .gin-details__summary:hover {
  259. color: var(--color-absolutezero);
  260. background-color: var(--color-bgblue-hover);
  261. }
  262. /**
  263. * Focus styles.
  264. */
  265. /**
  266. * Active has to be here for Firefox.
  267. */
  268. [open] > .gin-details__summary--accordion:not(:focus, :active)::after,
  269. [open] > .gin-details__summary--accordion-item:not(:focus, :active)::after,
  270. [open] > .gin-details__summary--vertical-tabs-item:not(:focus, :active)::after {
  271. opacity: 1;
  272. border: var(--details-summary-focus-border-size) solid var(--color-absolutezero);
  273. border-width: 0 0 0 var(--details-summary-focus-border-size); /* LTR */
  274. box-shadow: none;
  275. [dir="rtl"]
  276. }
  277. .gin-details__summary:focus::after,
  278. .gin-details__summary:active::after {
  279. opacity: 1;
  280. }
  281. /**
  282. * Safari workaround.
  283. */
  284. /* stylelint-disable-next-line unit-allowed-list */
  285. @media not all and (min-resolution: 0.001dpcm) {
  286. @supports (-webkit-appearance: none) {
  287. .gin-details__summary::after {
  288. transition: none;
  289. }
  290. }
  291. }
  292. .gin-details[open] > .gin-details__summary:focus {
  293. color: var(--color-absolutezero);
  294. }
  295. /**
  296. * Details wrapper and content.
  297. *
  298. * Accordion and accordion-item variants should have an extra background.
  299. * In that case, we render an additional wrapper 'gin-details__content' that
  300. * creates the visual margins around the content, and use the original
  301. * wrapper for setting the background color.
  302. *
  303. * If there is no border or padding defined, margins of parent-child elements
  304. * collapse to the highest value. We want to take benefit of this behavior,
  305. * because the elements inside the details content won't cause too big
  306. * vertical spacing.
  307. */
  308. .gin-details__wrapper,
  309. .gin-details__content {
  310. margin: var(--space-m);
  311. }
  312. .gin-details__wrapper--accordion,
  313. .gin-details__wrapper--accordion-item,
  314. .gin-details__wrapper--vertical-tabs-item {
  315. margin: 0;
  316. }
  317. .gin-details__wrapper--accordion::before,
  318. .gin-details__wrapper--accordion::after,
  319. .gin-details__wrapper--accordion-item::before,
  320. .gin-details__wrapper--accordion-item::after,
  321. .gin-details__wrapper--vertical-tabs-item::before,
  322. .gin-details__wrapper--vertical-tabs-item::after {
  323. display: table;
  324. clear: both;
  325. content: "";
  326. }
  327. .gin-details__wrapper--accordion,
  328. .gin-details__wrapper--accordion-item,
  329. .gin-details__wrapper--vertical-tabs-item {
  330. border-top: var(--details-border-size) solid var(--details-border-color);
  331. background-color: var(--color-gray-050-o-40);
  332. }
  333. /* @see Drupal.behaviors.verticalTabs */
  334. @media screen and (min-width: 40.0625rem) {
  335. .gin-details__wrapper {
  336. margin: var(--space-l) var(--details-desktop-wrapper-padding-start);
  337. }
  338. .gin-details__wrapper--accordion,
  339. .gin-details__wrapper--accordion-item,
  340. .gin-details__wrapper--vertical-tabs-item {
  341. margin: 0;
  342. }
  343. .js .gin-details__wrapper--vertical-tabs-item {
  344. margin: 0;
  345. border-top: 0;
  346. background-color: transparent;
  347. }
  348. }
  349. .gin-details__content--accordion,
  350. .gin-details__content--accordion-item,
  351. .gin-details__content--vertical-tabs-item {
  352. margin: var(--space-m) var(--space-m) var(--space-l);
  353. }
  354. @media screen and (min-width: 85em) {
  355. .vertical-tabs .gin-details__content--vertical-tabs-item {
  356. margin: var(--space-l);
  357. }
  358. }
  359. /* Description. */
  360. .gin-details__description {
  361. margin-block-end: var(--space-m);
  362. color: var(--input-fg-color--description);
  363. font-size: var(--font-size-xs); /* ~13px */
  364. line-height: calc(17rem / 16); /* 17px */
  365. }
  366. .gin-details__description.is-disabled {
  367. color: var(--input--disabled-fg-color);
  368. }
  369. .gin-details__summary-summary {
  370. display: block;
  371. color: var(--color-gray-800);
  372. font-size: var(--font-size-s);
  373. font-weight: normal;
  374. }
  375. .required-mark::after {
  376. display: inline-block;
  377. width: 0.4375rem;
  378. height: 0.4375rem;
  379. margin-inline: 0.3em;
  380. content: "";
  381. vertical-align: super;
  382. 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");
  383. background-repeat: no-repeat;
  384. background-size: 0.4375rem 0.4375rem;
  385. }

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