details.css

Same filename in this branch
  1. 11.x core/profiles/demo_umami/themes/umami/css/classy/components/details.css
  2. 11.x core/misc/dialog/off-canvas/css/details.css
  3. 11.x core/themes/olivero/css/components/details.css
  4. 11.x core/themes/starterkit_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. 9 core/profiles/demo_umami/themes/umami/css/classy/components/details.css
  7. 9 core/themes/olivero/css/components/details.css
  8. 9 core/themes/seven/css/components/details.css
  9. 9 core/themes/claro/css/components/details.css
  10. 9 core/themes/bartik/css/classy/components/details.css
  11. 9 core/themes/starterkit_theme/css/components/details.css
  12. 9 core/themes/classy/css/components/details.css
  13. 8.9.x core/profiles/demo_umami/themes/umami/css/classy/components/details.css
  14. 8.9.x core/themes/seven/css/components/details.css
  15. 8.9.x core/themes/claro/css/components/details.css
  16. 8.9.x core/themes/bartik/css/classy/components/details.css
  17. 8.9.x core/themes/classy/css/components/details.css

Collapsible details.

See also

collapse.js

File

core/themes/claro/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. * - .claro-details--accordion
  16. * - .claro-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. *
  28. * 'Accordion item' is used for the details of the node edit sidebar. For
  29. * creating accordion item list from a set of details, set the surrounding
  30. * Container render element's '#accordion' key to TRUE.
  31. *
  32. * 'Vertical tabs item' is used for the children of the VerticalTabs render
  33. * element.
  34. */
  35. :root {
  36. --size-summary-border-radius: calc(var(--details-border-size-radius) - var(--details-border-size));
  37. --summary-accordion-padding-vertical: calc(var(--space-l) + ((var(--space-m) - var(--space-l)) / 2));
  38. --summary-accordion-line-height: var(--space-l);
  39. }
  40. .claro-details {
  41. display: block;
  42. margin-block: var(--space-m);
  43. color: var(--color-text);
  44. border: var(--details-border-size) solid var(--details-border-color);
  45. border-radius: var(--details-border-size-radius);
  46. background-color: var(--color-white);
  47. box-shadow: var(--details-box-shadow);
  48. /*
  49. * The following width and min-width values ensure that the
    element
  50. * does not shift widths when opening, in the event that a parent table
  51. * element constrains the width. This can happen when toggling the
  52. * "lazy-load" option within an image field.
  53. */
  54. td
  55. }
  56. .claro-details--accordion-item,
  57. .claro-details--vertical-tabs-item {
  58. margin-block: 0;
  59. border-radius: 0;
  60. box-shadow: none;
  61. }
  62. .claro-details--accordion-item:first-of-type {
  63. border-top-left-radius: var(--details-border-size-radius);
  64. border-top-right-radius: var(--details-border-size-radius);
  65. }
  66. .claro-details--accordion-item:last-of-type {
  67. border-bottom-right-radius: var(--details-border-size-radius);
  68. border-bottom-left-radius: var(--details-border-size-radius);
  69. }
  70. /**
  71. * Details summary styles.
  72. */
  73. .claro-details__summary {
  74. position: relative;
  75. box-sizing: border-box;
  76. padding-block: var(--space-m);
  77. padding-inline: var(--details-desktop-wrapper-padding-start) var(--space-m);
  78. list-style: none;
  79. cursor: pointer;
  80. transition: background-color var(--details-bg-color-transition-duration) ease-in-out;
  81. color: var(--color-gray-800);
  82. border-radius: var(--size-summary-border-radius);
  83. background-color: transparent;
  84. line-height: var(--space-m);
  85. }
  86. /* Modifiers */
  87. .claro-details__summary--accordion,
  88. .claro-details__summary--accordion-item,
  89. .claro-details__summary--vertical-tabs-item {
  90. padding-block: var(--summary-accordion-padding-vertical);
  91. padding-inline: var(--details-desktop-wrapper-padding-start) var(--space-l);
  92. background: var(--color-white);
  93. line-height: var(--summary-accordion-line-height);
  94. }
  95. /**
  96. * Accordion list items must not have border radius except they are the first
  97. * or the last ones.
  98. */
  99. .claro-details__summary--accordion-item {
  100. border-radius: 0;
  101. }
  102. .claro-details--accordion-item:first-child .claro-details__summary--accordion-item {
  103. border-top-left-radius: var(--details-border-size-radius);
  104. border-top-right-radius: var(--details-border-size-radius);
  105. }
  106. .claro-details--accordion-item:last-child .claro-details__summary--accordion-item {
  107. border-bottom-right-radius: var(--details-border-size-radius);
  108. border-bottom-left-radius: var(--details-border-size-radius);
  109. }
  110. /**
  111. * Details marker styles.
  112. */
  113. /* Remove the marker on Chrome */
  114. .claro-details__summary::-webkit-details-marker {
  115. display: none;
  116. }
  117. .claro-details__summary::before {
  118. position: absolute;
  119. inset-block-start: 50%;
  120. inset-inline-start: var(--space-s);
  121. display: inline-block;
  122. width: var(--space-m);
  123. height: var(--space-m);
  124. margin-block-start: calc(var(--space-m) / -2);
  125. content: "";
  126. transition: transform var(--details-transform-transition-duration) ease-in 0s;
  127. transform: rotate(90deg);
  128. text-align: center;
  129. 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");
  130. background-size: contain;
  131. [dir="rtl"]
  132. }
  133. @media (prefers-reduced-motion: reduce) {
  134. .claro-details__summary::before {
  135. transition: none;
  136. }
  137. }
  138. @media (forced-colors: active) {
  139. .claro-details__summary::before {
  140. width: 0.5625rem;
  141. height: 0.5625rem;
  142. transition:
  143. transform var(--details-transform-transition-duration) ease-in 0s,
  144. margin var(--details-transform-transition-duration) ease-in 0s;
  145. transform: rotate(135deg); /* LTR */
  146. border-block-start: 0.125rem solid;
  147. border-inline-end: 0.125rem solid;
  148. background: none;
  149. [dir="rtl"]
  150. }
  151. }
  152. /**
  153. * Details summary focus.
  154. */
  155. .claro-details__summary::after {
  156. position: absolute;
  157. inset: -1px;
  158. content: "";
  159. transition: opacity var(--details-box-shadow-transition-duration) ease-in-out;
  160. pointer-events: none;
  161. opacity: 0;
  162. border-radius: var(--details-border-size-radius);
  163. box-shadow: inset 0 0 0 var(--details-summary-focus-border-size) var(--details-summary-shadow-color);
  164. }
  165. .claro-details > .claro-details__summary--accordion-item::after,
  166. .vertical-tabs__item > .claro-details__summary--vertical-tabs-item::after {
  167. border-radius: 0;
  168. }
  169. .claro-details:first-child > .claro-details__summary--accordion-item::after,
  170. .vertical-tabs__item--first > .claro-details__summary--vertical-tabs-item::after {
  171. border-top-left-radius: var(--details-border-size-radius);
  172. border-top-right-radius: var(--details-border-size-radius);
  173. }
  174. .claro-details:last-child > .claro-details__summary--accordion-item::after,
  175. .vertical-tabs__item--last > .claro-details__summary--vertical-tabs-item::after {
  176. border-bottom-right-radius: var(--details-border-size-radius);
  177. border-bottom-left-radius: var(--details-border-size-radius);
  178. }
  179. /**
  180. * Focus box of accordions and accordion items must not have bottom border
  181. * radius if their accordion is expanded.
  182. */
  183. .claro-details[open] > .claro-details__summary--accordion::after,
  184. .claro-details[open] > .claro-details__summary--accordion-item::after,
  185. .vertical-tabs__item--last[open] > .claro-details__summary--vertical-tabs-item::after {
  186. border-bottom-right-radius: 0;
  187. border-bottom-left-radius: 0;
  188. }
  189. /**
  190. * Details summary states.
  191. */
  192. .claro-details__summary:focus {
  193. box-shadow: none;
  194. }
  195. [open] .claro-details__summary--accordion,
  196. [open] .claro-details__summary--accordion-item,
  197. [open] .claro-details__summary--vertical-tabs-item {
  198. color: var(--color-absolutezero);
  199. }
  200. .claro-details__summary:hover::before,
  201. .claro-details__summary:hover:focus::before,
  202. .claro-details[open] > .claro-details__summary:focus::before,
  203. .claro-details[open] > .claro-details__summary--accordion::before,
  204. .claro-details[open] > .claro-details__summary--accordion-item::before,
  205. .claro-details[open] > .claro-details__summary--vertical-tabs-item::before {
  206. 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");
  207. }
  208. .claro-details[open] > .claro-details__summary {
  209. border-radius: var(--size-summary-border-radius) var(--size-summary-border-radius) 0 0;
  210. }
  211. .claro-details[open] > .claro-details__summary::before {
  212. transform: rotate(-90deg); /* for LTR and RTL */
  213. }
  214. @media (forced-colors: active) {
  215. .claro-details__summary:hover::before,
  216. .claro-details__summary:hover:focus::before,
  217. .claro-details[open] > .claro-details__summary:focus::before {
  218. background: none;
  219. }
  220. .claro-details[open] > .claro-details__summary::before,
  221. [dir="rtl"] .claro-details[open] > .claro-details__summary::before {
  222. margin-block-start: -0.125rem;
  223. margin-inline-end: 0.125rem;
  224. transform: rotate(-45deg); /* for LTR and RTL */
  225. background: none;
  226. }
  227. }
  228. .claro-details[open] > .claro-details__summary--accordion,
  229. .claro-details[open] > .claro-details__summary--accordion-item,
  230. .claro-details[open] > .claro-details__summary--vertical-tabs-item {
  231. box-shadow: var(--details-box-shadow);
  232. }
  233. .claro-details__summary:hover {
  234. color: var(--color-absolutezero);
  235. background-color: var(--color-bgblue-hover);
  236. }
  237. /**
  238. * Focus styles.
  239. */
  240. /**
  241. * Active has to be here for Firefox.
  242. */
  243. [open] > .claro-details__summary--accordion:not(:focus, :active)::after,
  244. [open] > .claro-details__summary--accordion-item:not(:focus, :active)::after,
  245. [open] > .claro-details__summary--vertical-tabs-item:not(:focus, :active)::after {
  246. opacity: 1;
  247. border: var(--details-summary-focus-border-size) solid var(--color-absolutezero);
  248. border-width: 0 0 0 var(--details-summary-focus-border-size); /* LTR */
  249. box-shadow: none;
  250. [dir="rtl"]
  251. }
  252. .claro-details__summary:focus::after,
  253. .claro-details__summary:active::after {
  254. opacity: 1;
  255. }
  256. .claro-details[open] > .claro-details__summary:focus {
  257. color: var(--color-absolutezero);
  258. }
  259. /**
  260. * Details wrapper and content.
  261. *
  262. * Accordion and accordion-item variants should have an extra background.
  263. * In that case, we render an additional wrapper 'claro-details__content' that
  264. * creates the visual margins around the content, and use the original
  265. * wrapper for setting the background color.
  266. *
  267. * If there is no border or padding defined, margins of parent-child elements
  268. * collapse to the highest value. We want to take benefit of this behavior,
  269. * because the elements inside the details content won't cause too big
  270. * vertical spacing.
  271. */
  272. .claro-details__wrapper,
  273. .claro-details__content {
  274. margin: var(--space-m);
  275. }
  276. .claro-details__wrapper--accordion,
  277. .claro-details__wrapper--accordion-item,
  278. .claro-details__wrapper--vertical-tabs-item {
  279. margin: 0;
  280. }
  281. .claro-details__wrapper--accordion::before,
  282. .claro-details__wrapper--accordion::after,
  283. .claro-details__wrapper--accordion-item::before,
  284. .claro-details__wrapper--accordion-item::after,
  285. .claro-details__wrapper--vertical-tabs-item::before,
  286. .claro-details__wrapper--vertical-tabs-item::after {
  287. display: table;
  288. clear: both;
  289. content: "";
  290. }
  291. .claro-details__wrapper--accordion,
  292. .claro-details__wrapper--accordion-item,
  293. .claro-details__wrapper--vertical-tabs-item {
  294. border-top: var(--details-border-size) solid var(--details-border-color);
  295. background-color: var(--color-gray-050-o-40);
  296. }
  297. /* @see Drupal.behaviors.verticalTabs */
  298. @media screen and (min-width: 40.0625rem) {
  299. .claro-details__wrapper {
  300. margin: var(--space-l) var(--details-desktop-wrapper-padding-start);
  301. }
  302. .claro-details__wrapper--accordion,
  303. .claro-details__wrapper--accordion-item,
  304. .claro-details__wrapper--vertical-tabs-item {
  305. margin: 0;
  306. }
  307. .js .claro-details__wrapper--vertical-tabs-item {
  308. margin: 0;
  309. border-top: 0;
  310. background-color: transparent;
  311. }
  312. }
  313. .claro-details__content--accordion,
  314. .claro-details__content--accordion-item,
  315. .claro-details__content--vertical-tabs-item {
  316. margin: var(--space-m) var(--space-m) var(--space-l);
  317. }
  318. @media screen and (min-width: 85em) {
  319. .vertical-tabs .claro-details__content--vertical-tabs-item {
  320. margin: var(--space-l);
  321. }
  322. }
  323. /* Description. */
  324. .claro-details__description {
  325. margin-block-end: var(--space-m);
  326. color: var(--input-fg-color--description);
  327. font-size: var(--font-size-xs); /* ~13px */
  328. line-height: calc(17rem / 16); /* 17px */
  329. }
  330. .claro-details__description.is-disabled {
  331. color: var(--input--disabled-fg-color);
  332. }
  333. .claro-details__summary-summary {
  334. display: block;
  335. color: var(--color-gray-800);
  336. font-size: var(--font-size-s);
  337. font-weight: normal;
  338. }
  339. .required-mark::after {
  340. display: inline-block;
  341. width: 0.4375rem;
  342. height: 0.4375rem;
  343. margin-inline: 0.3em;
  344. content: "";
  345. vertical-align: super;
  346. 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");
  347. background-repeat: no-repeat;
  348. background-size: 0.4375rem 0.4375rem;
  349. }

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