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(--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. &.error {
  57. border: 2px solid var(--gin-color-danger);
  58. }
  59. }
  60. .gin-details--accordion-item,
  61. .gin-details--vertical-tabs-item {
  62. margin-block: 0;
  63. border-radius: 0;
  64. box-shadow: none;
  65. }
  66. .gin-details--accordion-item:first-of-type {
  67. border-top-left-radius: var(--details-border-size-radius);
  68. border-top-right-radius: var(--details-border-size-radius);
  69. }
  70. .gin-details--accordion-item:last-of-type {
  71. border-bottom-right-radius: var(--details-border-size-radius);
  72. border-bottom-left-radius: var(--details-border-size-radius);
  73. }
  74. /**
  75. * Details summary styles.
  76. */
  77. .gin-details__summary {
  78. position: relative;
  79. box-sizing: border-box;
  80. padding-block: var(--space-m);
  81. padding-inline: 2.75rem var(--space-m);
  82. list-style: none;
  83. cursor: pointer;
  84. transition: background-color var(--details-bg-color-transition-duration) ease-in-out;
  85. color: var(--gin-color-text);
  86. border-radius: var(--size-summary-border-radius);
  87. background-color: transparent;
  88. line-height: var(--space-m);
  89. &:not(.form-required) {
  90. .required-mark {
  91. display: none;
  92. }
  93. }
  94. /* Remove the marker on Chrome. */
  95. &::-webkit-details-marker {
  96. display: none;
  97. }
  98. /* Details marker. */
  99. &::before {
  100. position: absolute;
  101. inset-block-start: 50%;
  102. inset-inline-start: var(--space-s);
  103. display: inline-block;
  104. width: var(--space-m);
  105. height: var(--space-m);
  106. margin-block-start: calc(var(--space-m) / -2);
  107. content: "";
  108. transition: transform var(--details-transform-transition-duration) ease-in 0s;
  109. transform: rotate(90deg);
  110. text-align: center;
  111. 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");
  112. background-size: contain;
  113. &:dir(rtl) {
  114. transform: rotate(-270deg);
  115. }
  116. @media (prefers-reduced-motion: reduce) {
  117. transition: none;
  118. }
  119. @media (forced-colors: active) {
  120. width: 0.5625rem;
  121. height: 0.5625rem;
  122. transition:
  123. transform var(--details-transform-transition-duration) ease-in 0s,
  124. margin var(--details-transform-transition-duration) ease-in 0s;
  125. transform: rotate(135deg); /* LTR */
  126. border-block-start: 0.125rem solid;
  127. border-inline-end: 0.125rem solid;
  128. background: none;
  129. &:dir(rtl) {
  130. transform: rotate(-225deg);
  131. }
  132. }
  133. /**
  134. * Safari (at least version 12.1) cannot handle our details marker
  135. * transition properly.
  136. *
  137. * Every additional pointer triggered toggle event freezes the transition,
  138. * and the transition is continued and finished after the pointer leaves
  139. * the Detail elements' summary.
  140. *
  141. * Even that it is possible to provide a JavaScript workaround for it (by
  142. * adding/removing a helper class with JavaScript if the Details is
  143. * toggled), that hack will make RTL details worse than without the hack.
  144. *
  145. * This weird query was found in
  146. * https://stackoverflow.com/questions/16348489#25975282 (based on the
  147. * answer it works for Safari 10.1+)
  148. */
  149. /* stylelint-disable-next-line unit-allowed-list */
  150. @media not all and (min-resolution: 0.001dpcm) {
  151. @supports (-webkit-appearance: none) {
  152. transition: none;
  153. }
  154. }
  155. }
  156. }
  157. /* Modifiers */
  158. .gin-details__summary--accordion,
  159. .gin-details__summary--accordion-item,
  160. .gin-details__summary--vertical-tabs-item {
  161. padding-block: var(--summary-accordion-padding-vertical);
  162. padding-inline: 2.75rem var(--space-l);
  163. background: var(--color-white);
  164. line-height: var(--summary-accordion-line-height);
  165. }
  166. /**
  167. * Accordion list items must not have border radius except they are the first
  168. * or the last ones.
  169. */
  170. .gin-details__summary--accordion-item {
  171. border-radius: 0;
  172. }
  173. .gin-details--accordion-item:first-child .gin-details__summary--accordion-item {
  174. border-top-left-radius: var(--details-border-size-radius);
  175. border-top-right-radius: var(--details-border-size-radius);
  176. }
  177. .gin-details--accordion-item:last-child .gin-details__summary--accordion-item {
  178. border-bottom-right-radius: var(--details-border-size-radius);
  179. border-bottom-left-radius: var(--details-border-size-radius);
  180. }
  181. /**
  182. * Details summary states.
  183. */
  184. [open] .gin-details__summary--accordion,
  185. [open] .gin-details__summary--accordion-item,
  186. [open] .gin-details__summary--vertical-tabs-item {
  187. color: var(--gin-color-primary);
  188. text-decoration-style: var(--gin-link-decoration-style);
  189. }
  190. .gin-details__summary:hover::before,
  191. .gin-details__summary:hover:focus::before,
  192. .gin-details[open] > .gin-details__summary:focus::before,
  193. .gin-details[open] > .gin-details__summary--accordion::before,
  194. .gin-details[open] > .gin-details__summary--accordion-item::before,
  195. .gin-details[open] > .gin-details__summary--vertical-tabs-item::before {
  196. 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");
  197. }
  198. .gin-details[open] > .gin-details__summary {
  199. border-radius: var(--size-summary-border-radius) var(--size-summary-border-radius) 0 0;
  200. &::before {
  201. transform: rotate(-90deg); /* for LTR and RTL */
  202. }
  203. }
  204. @media (forced-colors: active) {
  205. .gin-details__summary:hover::before,
  206. .gin-details__summary:hover:focus::before,
  207. .gin-details[open] > .gin-details__summary:focus::before {
  208. background: none;
  209. }
  210. .gin-details[open] > .gin-details__summary::before,
  211. [dir="rtl"] .gin-details[open] > .gin-details__summary::before {
  212. margin-block-start: -0.125rem;
  213. margin-inline-end: 0.125rem;
  214. transform: rotate(-45deg); /* for LTR and RTL */
  215. background: none;
  216. }
  217. }
  218. .gin-details[open] > .gin-details__summary--accordion,
  219. .gin-details[open] > .gin-details__summary--accordion-item,
  220. .gin-details[open] > .gin-details__summary--vertical-tabs-item {
  221. box-shadow: var(--details-box-shadow);
  222. }
  223. .gin-details__summary:hover {
  224. color: var(--gin-color-primary-hover);
  225. background-color: var(--color-bgblue-hover);
  226. }
  227. /**
  228. * Details wrapper and content.
  229. *
  230. * Accordion and accordion-item variants should have an extra background. In
  231. * that case, we render an additional wrapper 'gin-details__content' that
  232. * creates the visual margins around the content, and use the original wrapper
  233. * for setting the background color.
  234. *
  235. * If there is no border or padding defined, margins of parent-child elements
  236. * collapse to the highest value. We want to take benefit of this behavior,
  237. * because the elements inside the details content won't cause too big
  238. * vertical spacing.
  239. */
  240. .gin-details__wrapper,
  241. .gin-details__content {
  242. margin-block: var(--gin-spacing-m);
  243. margin-inline: calc(var(--gin-spacing-l) - var(--gin-spacing-xxs));
  244. }
  245. .gin-details__wrapper--accordion,
  246. .gin-details__wrapper--accordion-item,
  247. .gin-details__wrapper--vertical-tabs-item {
  248. margin: 0;
  249. }
  250. .gin-details__wrapper--accordion::before,
  251. .gin-details__wrapper--accordion::after,
  252. .gin-details__wrapper--accordion-item::before,
  253. .gin-details__wrapper--accordion-item::after,
  254. .gin-details__wrapper--vertical-tabs-item::before,
  255. .gin-details__wrapper--vertical-tabs-item::after {
  256. display: table;
  257. clear: both;
  258. content: "";
  259. }
  260. .gin-details__wrapper--accordion,
  261. .gin-details__wrapper--accordion-item,
  262. .gin-details__wrapper--vertical-tabs-item {
  263. border-top: var(--details-border-size) solid var(--details-border-color);
  264. background-color: var(--color-gray-050-o-40);
  265. }
  266. /* @see Drupal.behaviors.verticalTabs */
  267. @media screen and (min-width: 40.0625rem) {
  268. .gin-details__wrapper--accordion,
  269. .gin-details__wrapper--accordion-item,
  270. .gin-details__wrapper--vertical-tabs-item {
  271. margin: 0;
  272. }
  273. .js .gin-details__wrapper--vertical-tabs-item {
  274. margin: 0;
  275. border-top: 0;
  276. background-color: transparent;
  277. }
  278. }
  279. .gin-details__content--accordion,
  280. .gin-details__content--accordion-item,
  281. .gin-details__content--vertical-tabs-item {
  282. margin: var(--space-m) var(--space-m) var(--space-l);
  283. }
  284. @media screen and (min-width: 85em) {
  285. .vertical-tabs .gin-details__content--vertical-tabs-item {
  286. margin: var(--space-l);
  287. }
  288. }
  289. /* Description. */
  290. .gin-details__description {
  291. margin-block-end: var(--space-m);
  292. color: var(--input-fg-color--description);
  293. font-size: var(--font-size-xs); /* ~13px */
  294. line-height: calc(17rem / 16); /* 17px */
  295. &.is-disabled {
  296. color: var(--input--disabled-fg-color);
  297. }
  298. }
  299. .gin-details__summary-summary {
  300. display: block;
  301. opacity: 0.8;
  302. color: var(--gin-color-text-light);
  303. font-size: var(--font-size-s);
  304. font-weight: normal;
  305. }
  306. .required-mark::after {
  307. display: inline-block;
  308. width: 0.4375rem;
  309. height: 0.4375rem;
  310. margin-inline: 0.3em;
  311. content: "";
  312. vertical-align: super;
  313. 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");
  314. background-repeat: no-repeat;
  315. background-size: 0.4375rem 0.4375rem;
  316. }
  317. .gin-details.gin-details--package-listing,
  318. .gin-details.module-list__module-details,
  319. .system-status-report .gin-details {
  320. border: 1px solid var(--gin-border-color);
  321. border-radius: var(--gin-border-m);
  322. }

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