details.css 16 KB

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