details.css

Same filename in this branch
  1. 9 core/profiles/demo_umami/themes/umami/css/classy/components/details.css
  2. 9 core/themes/olivero/css/components/details.css
  3. 9 core/themes/seven/css/components/details.css
  4. 9 core/themes/bartik/css/classy/components/details.css
  5. 9 core/themes/starterkit_theme/css/components/details.css
  6. 9 core/themes/classy/css/components/details.css
Same filename and directory in other branches
  1. 8.9.x core/profiles/demo_umami/themes/umami/css/classy/components/details.css
  2. 8.9.x core/themes/seven/css/components/details.css
  3. 8.9.x core/themes/claro/css/components/details.css
  4. 8.9.x core/themes/bartik/css/classy/components/details.css
  5. 8.9.x core/themes/classy/css/components/details.css
  6. 10 core/profiles/demo_umami/themes/umami/css/classy/components/details.css
  7. 10 core/misc/dialog/off-canvas/css/details.css
  8. 10 core/themes/olivero/css/components/details.css
  9. 10 core/themes/claro/css/components/details.css
  10. 10 core/themes/starterkit_theme/css/components/details.css
  11. 11.x core/profiles/demo_umami/themes/umami/css/classy/components/details.css
  12. 11.x core/misc/dialog/off-canvas/css/details.css
  13. 11.x core/themes/olivero/css/components/details.css
  14. 11.x core/themes/claro/css/components/details.css
  15. 11.x core/themes/starterkit_theme/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. .claro-details {
  36. display: block;
  37. margin-top: 1rem;
  38. margin-bottom: 1rem;
  39. color: #232429;
  40. border: 1px solid #dedfe4;
  41. border-radius: 2px;
  42. background-color: #fff;
  43. box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  44. /*
  45. * The following width and min-width values ensure that the
    element
  46. * does not shift widths when opening, in the event that a parent table
  47. * element constrains the width. This can happen when toggling the
  48. * "lazy-load" option within an image field.
  49. */
  50. }
  51. td .claro-details {
  52. width: min-content;
  53. min-width: 100%;
  54. }
  55. .claro-details--accordion-item,
  56. .claro-details--vertical-tabs-item {
  57. margin-top: 0;
  58. margin-bottom: 0;
  59. border-radius: 0;
  60. box-shadow: none;
  61. }
  62. .claro-details--accordion-item:first-of-type {
  63. border-top-left-radius: 2px;
  64. border-top-right-radius: 2px;
  65. }
  66. .claro-details--accordion-item:last-of-type {
  67. border-bottom-right-radius: 2px;
  68. border-bottom-left-radius: 2px;
  69. }
  70. /**
  71. * Details summary styles.
  72. */
  73. .claro-details__summary {
  74. position: relative;
  75. box-sizing: border-box;
  76. padding: 1rem 1rem 1rem 2.25rem; /* LTR */
  77. list-style: none;
  78. cursor: pointer;
  79. transition: background-color 0.12s ease-in-out;
  80. word-wrap: break-word;
  81. -webkit-hyphens: auto;
  82. -ms-hyphens: auto;
  83. hyphens: auto;
  84. color: #55565b;
  85. border-radius: 1px;
  86. background-color: transparent;
  87. line-height: 1rem;
  88. }
  89. [dir="rtl"] .claro-details__summary {
  90. padding-right: 2.25rem;
  91. padding-left: 1rem;
  92. }
  93. /* Modifiers */
  94. .claro-details__summary--accordion,
  95. .claro-details__summary--accordion-item,
  96. .claro-details__summary--vertical-tabs-item {
  97. padding: 1.25rem 1.5rem 1.25rem 2.25rem; /* LTR */
  98. background: #fff;
  99. line-height: 1.5rem;
  100. }
  101. [dir="rtl"] .claro-details__summary--accordion,
  102. [dir="rtl"] .claro-details__summary--accordion-item,
  103. [dir="rtl"] .claro-details__summary--vertical-tabs-item {
  104. padding-right: 2.25rem;
  105. padding-left: 1.5rem;
  106. }
  107. /**
  108. * Accordion list items must not have border radius except they are the first
  109. * or the last ones.
  110. */
  111. .claro-details__summary--accordion-item {
  112. border-radius: 0;
  113. }
  114. .claro-details--accordion-item:first-child .claro-details__summary--accordion-item {
  115. border-top-left-radius: 2px;
  116. border-top-right-radius: 2px;
  117. }
  118. .claro-details--accordion-item:last-child .claro-details__summary--accordion-item {
  119. border-bottom-right-radius: 2px;
  120. border-bottom-left-radius: 2px;
  121. }
  122. /**
  123. * Details marker styles.
  124. */
  125. /* Remove the marker on Chrome */
  126. .claro-details__summary::-webkit-details-marker {
  127. display: none;
  128. }
  129. .claro-details__summary::before {
  130. position: absolute;
  131. top: 50%;
  132. left: 0.75rem; /* LTR */
  133. display: inline-block;
  134. width: 1rem;
  135. height: 1rem;
  136. margin-top: -0.5rem;
  137. content: "";
  138. transition: transform 0.12s ease-in 0s;
  139. transform: rotate(90deg); /* LTR */
  140. text-align: center;
  141. 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");
  142. background-size: contain;
  143. }
  144. [dir="rtl"] .claro-details__summary::before {
  145. right: 0.75rem;
  146. left: auto;
  147. transform: rotate(-270deg);
  148. }
  149. @media (prefers-reduced-motion: reduce) {
  150. .claro-details__summary::before {
  151. transition: none;
  152. }
  153. }
  154. @media (-ms-high-contrast: active), (forced-colors: active) {
  155. .claro-details__summary::before {
  156. width: 0.5625rem;
  157. height: 0.5625rem;
  158. transition: transform 0.12s ease-in 0s, margin 0.12s ease-in 0s;
  159. transform: rotate(135deg); /* LTR */
  160. border-top: 0.125rem solid;
  161. border-right: 0.125rem solid;
  162. background: none;
  163. }
  164. [dir="rtl"] .claro-details__summary::before {
  165. transform: rotate(-225deg);
  166. }
  167. }
  168. /**
  169. * Safari (at least version 12.1) cannot handle our details marker
  170. * transition properly.
  171. *
  172. * Every additional pointer triggered toggle event freezes the transition,
  173. * and the transition is continued and finished after the pointer leaves
  174. * the Detail elements' summary.
  175. *
  176. * Even that it is possible to provide a JavaScript workaround for it (by
  177. * adding/removing a helper class with JavaScript if the Details is
  178. * toggled), that hack will make RTL details worse than without the hack.
  179. *
  180. * This weird query was found in
  181. * https://stackoverflow.com/questions/16348489#25975282 (based on the
  182. * answer it works for Safari 10.1+)
  183. */
  184. /* stylelint-disable-next-line unit-allowed-list */
  185. @media not all and (-webkit-min-device-pixel-ratio: 0), not all and (min-resolution: 0.001dpcm) {
  186. @supports (-webkit-appearance: none) {
  187. .claro-details__summary::before {
  188. transition: none;
  189. }
  190. }
  191. }
  192. /**
  193. * Details summary focus.
  194. */
  195. .claro-details__summary::after {
  196. position: absolute;
  197. top: -1px;
  198. right: -1px;
  199. bottom: -1px;
  200. left: -1px;
  201. content: "";
  202. transition: opacity 0.2s ease-in-out;
  203. pointer-events: none;
  204. opacity: 0;
  205. border-radius: 2px;
  206. box-shadow: inset 0 0 0 3px #26a769;
  207. }
  208. .claro-details > .claro-details__summary--accordion-item::after,
  209. .vertical-tabs__item > .claro-details__summary--vertical-tabs-item::after {
  210. border-radius: 0;
  211. }
  212. .claro-details:first-child > .claro-details__summary--accordion-item::after,
  213. .vertical-tabs__item--first > .claro-details__summary--vertical-tabs-item::after {
  214. border-top-left-radius: 2px;
  215. border-top-right-radius: 2px;
  216. }
  217. .claro-details:last-child > .claro-details__summary--accordion-item::after,
  218. .vertical-tabs__item--last > .claro-details__summary--vertical-tabs-item::after {
  219. border-bottom-right-radius: 2px;
  220. border-bottom-left-radius: 2px;
  221. }
  222. /**
  223. * Focus box of accordions and accordion items must not have bottom border
  224. * radius if their accordion is expanded.
  225. */
  226. .claro-details[open] > .claro-details__summary--accordion::after,
  227. .claro-details[open] > .claro-details__summary--accordion-item::after,
  228. .vertical-tabs__item--last[open] > .claro-details__summary--vertical-tabs-item::after {
  229. border-bottom-right-radius: 0;
  230. border-bottom-left-radius: 0;
  231. }
  232. /**
  233. * Details summary states.
  234. */
  235. .claro-details__summary:focus {
  236. box-shadow: none;
  237. }
  238. [open] .claro-details__summary--accordion,
  239. [open] .claro-details__summary--accordion-item,
  240. [open] .claro-details__summary--vertical-tabs-item {
  241. color: #003ecc;
  242. }
  243. .claro-details__summary:hover::before,
  244. .claro-details__summary:hover:focus::before,
  245. .claro-details[open] > .claro-details__summary:focus::before,
  246. .claro-details[open] > .claro-details__summary--accordion::before,
  247. .claro-details[open] > .claro-details__summary--accordion-item::before,
  248. .claro-details[open] > .claro-details__summary--vertical-tabs-item::before {
  249. 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");
  250. }
  251. .claro-details[open] > .claro-details__summary {
  252. border-radius: 1px 1px 0 0;
  253. }
  254. .claro-details[open] > .claro-details__summary::before {
  255. transform: rotate(-90deg); /* for LTR and RTL */
  256. }
  257. @media (-ms-high-contrast: active), (forced-colors: active) {
  258. .claro-details__summary:hover::before,
  259. .claro-details__summary:hover:focus::before {
  260. background: none;
  261. }
  262. .claro-details[open] > .claro-details__summary::before,
  263. [dir="rtl"] .claro-details[open] > .claro-details__summary::before {
  264. margin-top: -0.0625rem;
  265. margin-right: 0.125rem;
  266. transform: rotate(-45deg); /* for LTR and RTL */
  267. background: none;
  268. }
  269. }
  270. .claro-details[open] > .claro-details__summary--accordion,
  271. .claro-details[open] > .claro-details__summary--accordion-item,
  272. .claro-details[open] > .claro-details__summary--vertical-tabs-item {
  273. box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  274. }
  275. .claro-details__summary:hover {
  276. color: #003ecc;
  277. background-color: #f5f8ff;
  278. }
  279. /**
  280. * Focus styles.
  281. */
  282. /**
  283. * Active has to be here for Firefox.
  284. * Merges standard collapse-processed selectors.
  285. */
  286. [open] > .claro-details__summary--accordion:not(:focus):not(:active)::after,
  287. [open] > .claro-details__summary--accordion-item:not(:focus):not(:active)::after,
  288. .collapse-processed[open] > .claro-details__summary--accordion .details-title:not(:focus)::after,
  289. .collapse-processed[open] > .claro-details__summary--accordion-item .details-title:not(:focus)::after,
  290. [open] > .claro-details__summary--vertical-tabs-item:not(:focus):not(:active)::after,
  291. .collapse-processed[open] > .claro-details__summary--vertical-tabs-item .details-title:not(:focus)::after {
  292. opacity: 1;
  293. border: 3px solid #003ecc;
  294. border-width: 0 0 0 3px; /* LTR */
  295. box-shadow: none;
  296. }
  297. [dir="rtl"] [open] > .claro-details__summary--accordion:not(:focus)::after,
  298. [dir="rtl"] [open] > .claro-details__summary--accordion-item:not(:focus)::after,
  299. [dir="rtl"] .collapse-processed[open] > .claro-details__summary--accordion .details-title:not(:focus)::after,
  300. [dir="rtl"] .collapse-processed[open] > .claro-details__summary--accordion-item .details-title:not(:focus)::after,
  301. [dir="rtl"] [open] > .claro-details__summary--vertical-tabs-item:not(:focus)::after,
  302. [dir="rtl"] .collapse-processed[open] > .claro-details__summary--vertical-tabs-item .details-title:not(:focus)::after {
  303. border-width: 0 3px 0 0;
  304. }
  305. .claro-details__summary:focus::after,
  306. .claro-details__summary:active::after,
  307. .collapse-processed > .claro-details__summary .details-title:focus::after {
  308. opacity: 1;
  309. }
  310. /**
  311. * Safari workaround.
  312. */
  313. /* stylelint-disable-next-line unit-allowed-list */
  314. @media not all and (-webkit-min-device-pixel-ratio: 0), not all and (min-resolution: 0.001dpcm) {
  315. @supports (-webkit-appearance: none) {
  316. .claro-details__summary::after {
  317. transition: none;
  318. }
  319. }
  320. }
  321. .claro-details[open] > .claro-details__summary:focus {
  322. color: #003ecc;
  323. }
  324. /**
  325. * Details wrapper and content.
  326. *
  327. * Accordion and accordion-item variants should have an extra background.
  328. * In that case, we render an additional wrapper 'claro-details__content' that
  329. * creates the visual margins around the content, and use the original
  330. * wrapper for setting the background color.
  331. *
  332. * If there is no border or padding defined, margins of parent-child elements
  333. * collapse to the highest value. We want to take benefit of this behavior,
  334. * because the elements inside the details content won't cause too big
  335. * vertical spacing.
  336. */
  337. .claro-details__wrapper,
  338. .claro-details__content {
  339. margin: 1rem;
  340. }
  341. .claro-details__wrapper--accordion,
  342. .claro-details__wrapper--accordion-item,
  343. .claro-details__wrapper--vertical-tabs-item {
  344. margin: 0;
  345. }
  346. .claro-details__wrapper--accordion::before,
  347. .claro-details__wrapper--accordion::after,
  348. .claro-details__wrapper--accordion-item::before,
  349. .claro-details__wrapper--accordion-item::after,
  350. .claro-details__wrapper--vertical-tabs-item::before,
  351. .claro-details__wrapper--vertical-tabs-item::after {
  352. display: table;
  353. clear: both;
  354. content: "";
  355. }
  356. .claro-details__wrapper--accordion,
  357. .claro-details__wrapper--accordion-item,
  358. .claro-details__wrapper--vertical-tabs-item {
  359. border-top: 1px solid #dedfe4;
  360. background-color: rgba(243, 244, 249, 0.4);
  361. }
  362. @media screen and (min-width: 48em) {
  363. .claro-details__wrapper {
  364. margin: 1.5rem 2.25rem;
  365. }
  366. .claro-details__wrapper--accordion,
  367. .claro-details__wrapper--accordion-item,
  368. .claro-details__wrapper--vertical-tabs-item {
  369. margin: 0;
  370. }
  371. }
  372. @media screen and (min-width: 85em) {
  373. .js .claro-details__wrapper--vertical-tabs-item {
  374. margin: 0;
  375. border-top: 0;
  376. background-color: transparent;
  377. }
  378. }
  379. .claro-details__content--accordion,
  380. .claro-details__content--accordion-item,
  381. .claro-details__content--vertical-tabs-item {
  382. margin: 1rem 1rem 1.5rem;
  383. }
  384. @media screen and (min-width: 85em) {
  385. .vertical-tabs .claro-details__content--vertical-tabs-item {
  386. margin: 1.5rem;
  387. }
  388. }
  389. /* Description. */
  390. .claro-details__description {
  391. margin-bottom: 1rem;
  392. color: #55565b;
  393. font-size: 0.79rem; /* ~13px */
  394. line-height: 1.0625rem; /* 17px */
  395. }
  396. .claro-details__description.is-disabled {
  397. color: #828388;
  398. }
  399. /**
  400. * Collapse processed for non-supporting browsers like IE or Edge.
  401. */
  402. .collapse-processed > .claro-details__summary {
  403. padding: 0;
  404. }
  405. .collapse-processed > .claro-details__summary::after {
  406. content: none;
  407. }
  408. .collapse-processed > .claro-details__summary .details-title {
  409. position: relative;
  410. display: block;
  411. padding: 1rem 1rem 1rem 2.25rem; /* LTR */
  412. text-decoration: none;
  413. color: inherit;
  414. border-radius: 1px;
  415. }
  416. [dir="rtl"] .collapse-processed > .claro-details__summary .details-title {
  417. padding-right: 2.25rem;
  418. padding-left: 1rem;
  419. }
  420. .collapse-processed > .claro-details__summary--accordion .details-title,
  421. .collapse-processed > .claro-details__summary--accordion-item .details-title,
  422. .collapse-processed > .claro-details__summary--vertical-tabs-item .details-title {
  423. padding: 1.25rem 1.5rem 1.25rem 2.25rem; /* LTR */
  424. }
  425. [dir="rtl"] .collapse-processed > .claro-details__summary--accordion .details-title,
  426. [dir="rtl"] .collapse-processed > .claro-details__summary--accordion-item .details-title,
  427. [dir="rtl"] .collapse-processed > .claro-details__summary--vertical-tabs-item .details-title {
  428. padding-right: 2.25rem;
  429. padding-left: 1.5rem;
  430. }
  431. /* Focus and hover states. */
  432. .collapse-processed > .claro-details__summary .details-title:focus,
  433. .collapse-processed > .claro-details__summary .details-title:hover {
  434. z-index: 1;
  435. text-decoration: none;
  436. outline: none;
  437. box-shadow: none;
  438. }
  439. .collapse-processed > .claro-details__summary .details-title::after {
  440. position: absolute;
  441. top: -1px;
  442. right: -1px;
  443. bottom: -1px;
  444. left: -1px;
  445. content: "";
  446. transition: opacity 0.2s ease-in-out;
  447. pointer-events: none;
  448. opacity: 0;
  449. border: 3px solid #26a769;
  450. border-radius: 2px;
  451. }
  452. .collapse-processed > .claro-details__summary .details-title:focus::after {
  453. opacity: 1;
  454. }
  455. /* Accordion item modifiers for the focus box. */
  456. .collapse-processed > .claro-details__summary--accordion-item .details-title::after,
  457. .vertical-tabs__item > .claro-details__summary--vertical-tabs-item .details-title::after {
  458. border-radius: 0;
  459. }
  460. .collapse-processed:first-child > .claro-details__summary--accordion-item .details-title::after,
  461. .vertical-tabs__item--first > .claro-details__summary--vertical-tabs-item .details-title::after {
  462. border-top-left-radius: 2px;
  463. border-top-right-radius: 2px;
  464. }
  465. .collapse-processed:last-child > .claro-details__summary--accordion-item .details-title::after,
  466. .vertical-tabs__item--last > .claro-details__summary--vertical-tabs-item .details-title::after {
  467. border-bottom-right-radius: 2px;
  468. border-bottom-left-radius: 2px;
  469. }
  470. .collapse-processed[open] > .claro-details__summary--accordion .details-title::after,
  471. .collapse-processed[open] > .claro-details__summary--accordion-item .details-title::after,
  472. .vertical-tabs__item[open] > .claro-details__summary--vertical-tabs-item .details-title::after {
  473. border-bottom-right-radius: 0;
  474. border-bottom-left-radius: 0;
  475. }
  476. .claro-details__summary-summary {
  477. display: block;
  478. color: #55565b;
  479. font-size: 0.889rem;
  480. font-weight: normal;
  481. }
  482. @media (-ms-high-contrast: active), (forced-colors: active) {
  483. .collapse-processed[open] > .claro-details__summary--accordion .details-title:not(:focus)::after,
  484. .collapse-processed[open] > .claro-details__summary--accordion-item .details-title:not(:focus)::after,
  485. .collapse-processed[open] > .claro-details__summary--vertical-tabs-item .details-title:not(:focus)::after {
  486. top: -1px;
  487. right: -1px;
  488. bottom: -1px;
  489. left: -1px;
  490. }
  491. .collapse-processed > .claro-details__summary .details-title::after {
  492. top: -0.3125rem;
  493. right: -0.3125rem;
  494. bottom: -0.3125rem;
  495. left: -0.3125rem;
  496. border: 2px dotted;
  497. }
  498. }
  499. .required-mark::after {
  500. display: inline-block;
  501. width: 0.4375rem;
  502. height: 0.4375rem;
  503. margin-right: 0.3em;
  504. margin-left: 0.3em;
  505. content: "";
  506. vertical-align: super;
  507. 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");
  508. background-repeat: no-repeat;
  509. background-size: 0.4375rem 0.4375rem;
  510. }

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