dropbutton.css

Same filename in this branch
  1. main core/profiles/demo_umami/themes/umami/css/classy/components/dropbutton.css
  2. main core/misc/dialog/off-canvas/css/dropbutton.css
  3. main core/misc/dropbutton/dropbutton.css
  4. main core/themes/olivero/css/components/dropbutton.css
  5. main core/themes/stable9/css/core/dropbutton/dropbutton.css
  6. main core/themes/claro/css/components/dropbutton.css
  7. main core/themes/starterkit_theme/css/components/dropbutton.css
  8. main core/themes/admin/css/components/dropbutton.css
Same filename and directory in other branches
  1. 10 core/profiles/demo_umami/themes/umami/css/classy/components/dropbutton.css
  2. 10 core/misc/dialog/off-canvas/css/dropbutton.css
  3. 10 core/misc/dropbutton/dropbutton.css
  4. 10 core/themes/olivero/css/components/dropbutton.css
  5. 10 core/themes/stable9/css/core/dropbutton/dropbutton.css
  6. 10 core/themes/claro/css/components/dropbutton.css
  7. 10 core/themes/starterkit_theme/css/components/dropbutton.css
  8. 11.x core/profiles/demo_umami/themes/umami/css/classy/components/dropbutton.css
  9. 11.x core/misc/dialog/off-canvas/css/dropbutton.css
  10. 11.x core/misc/dropbutton/dropbutton.css
  11. 11.x core/themes/olivero/css/components/dropbutton.css
  12. 11.x core/themes/stable9/css/core/dropbutton/dropbutton.css
  13. 11.x core/themes/claro/css/components/dropbutton.css
  14. 11.x core/themes/starterkit_theme/css/components/dropbutton.css
  15. 9 core/profiles/demo_umami/themes/umami/css/classy/components/dropbutton.css
  16. 9 core/misc/dropbutton/dropbutton.css
  17. 9 core/themes/olivero/css/components/dropbutton.css
  18. 9 core/themes/stable9/css/core/dropbutton/dropbutton.css
  19. 9 core/themes/seven/css/classy/components/dropbutton.css
  20. 9 core/themes/claro/css/components/dropbutton.css
  21. 9 core/themes/bartik/css/classy/components/dropbutton.css
  22. 9 core/themes/stable/css/core/dropbutton/dropbutton.css
  23. 9 core/themes/starterkit_theme/css/components/dropbutton.css
  24. 9 core/themes/classy/css/components/dropbutton.css
  25. 8.9.x core/profiles/demo_umami/themes/umami/css/classy/components/dropbutton.css
  26. 8.9.x core/misc/dropbutton/dropbutton.css
  27. 8.9.x core/themes/seven/css/classy/components/dropbutton.css
  28. 8.9.x core/themes/claro/css/components/dropbutton.css
  29. 8.9.x core/themes/bartik/css/classy/components/dropbutton.css
  30. 8.9.x core/themes/stable/css/core/dropbutton/dropbutton.css
  31. 8.9.x core/themes/classy/css/components/dropbutton.css
  32. 11.x core/themes/admin/css/components/dropbutton.css
  33. 11.x core/themes/default_admin/css/components/dropbutton.css

Dropbutton styles.

Transparent border is needed for high contrast mode. The border-width has to be set with !important to render borders with the defined width in high contrast mode Firefox.

@todo This file is overcomplicated and needs to be refactored.

File

core/themes/default_admin/css/components/dropbutton.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. * Dropbutton styles.
  10. *
  11. * Transparent border is needed for high contrast mode. The border-width has to
  12. * be set with !important to render borders with the defined width in high
  13. * contrast mode Firefox.
  14. *
  15. * @todo This file is overcomplicated and needs to be refactored.
  16. */
  17. :root {
  18. /**
  19. * Dropbutton
  20. */
  21. --dropbutton-spacing-size: var(--space-m);
  22. --dropbutton-font-size: var(--font-size-base);
  23. --dropbutton-line-height: var(--space-m);
  24. --dropbutton-toggle-size: 3rem;
  25. --dropbutton-border-size: 1px;
  26. --dropbutton-toggle-size-spacing: var(--dropbutton-border-size);
  27. --dropbutton-border-radius-size: 2px;
  28. --dropbutton-item-max-width: 12.5rem;
  29. /* Variant variables: small. */
  30. --dropbutton-small-spacing-size: 0.625rem;
  31. --dropbutton-small-font-size: var(--font-size-xs);
  32. --dropbutton-small-line-height: 0.75rem;
  33. --dropbutton-small-toggle-size: calc((2 * var(--dropbutton-small-spacing-size)) + var(--dropbutton-small-line-height));
  34. /* Variant variables: extra small. */
  35. --dropbutton-extrasmall-spacing-size: 0.375rem;
  36. --dropbutton-extrasmall-font-size: var(--font-size-xs);
  37. --dropbutton-extrasmall-line-height: 0.75rem;
  38. --dropbutton-extrasmall-toggle-size: calc((2 * var(--dropbutton-extrasmall-spacing-size)) + var(--dropbutton-extrasmall-line-height));
  39. }
  40. .dropbutton-wrapper {
  41. display: inline-flex;
  42. border-radius: var(--button-border-radius-size);
  43. box-shadow: none;
  44. }
  45. .form-actions .dropbutton-wrapper,
  46. .field-actions .dropbutton-wrapper {
  47. margin-block: var(--space-xs);
  48. margin-inline: 0 var(--space-m);
  49. }
  50. .dropbutton-widget {
  51. position: relative;
  52. flex: 1 1 auto;
  53. border-radius: var(--button-border-radius-size);
  54. background-color: transparent;
  55. .js .dropbutton-wrapper.open
  56. }
  57. /**
  58. * Dropbutton list.
  59. */
  60. .dropbutton {
  61. display: block;
  62. overflow: visible;
  63. min-width: 6rem;
  64. /* Help mitigate long dropbutton text from obscuring other dropbuttons. */
  65. height: var(--dropbutton-toggle-size);
  66. margin: 0;
  67. list-style: none;
  68. border: 2px solid var(--gin-color-primary);
  69. border-radius: var(--gin-border-m);
  70. box-shadow: 0 1px 2px var(--gin-color-primary-light);
  71. .gin--dark-mode
  72. &:hover {
  73. border-color: var(--gin-color-primary);
  74. }
  75. &:active {
  76. border-color: var(--gin-color-primary-active);
  77. }
  78. .dropbutton__items {
  79. position: absolute;
  80. min-width: 7.5rem;
  81. margin: 0;
  82. padding: 0.5em;
  83. list-style: none;
  84. border-radius: var(--gin-border-l);
  85. background: var(--gin-bg-layer3);
  86. box-shadow: var(--gin-shadow-l2);
  87. inset-inline-end: 0;
  88. .node-form
  89. @media (forced-colors: active) {
  90. border: 1px solid linktext;
  91. }
  92. }
  93. > .dropbutton__items > .dropbutton__item:first-of-type {
  94. > a,
  95. > input,
  96. > .button {
  97. border-radius: var(--gin-border-s) var(--gin-border-s) 0 0;
  98. }
  99. }
  100. /* Drupal 10.2.x fix */
  101. &.dropbutton--gin .dropbutton-action > .button {
  102. border: var(--dropbutton-border-size) solid transparent !important;
  103. }
  104. /* The ugly part: make it work for all different dropbutton versions out there */
  105. &:not(.dropbutton--gin) > .dropbutton__item ~ .dropbutton__item,
  106. .dropbutton__items > .dropbutton__item,
  107. .dropbutton__items > .dropbutton__item ~ .dropbutton__item {
  108. border: 0 none;
  109. background-color: var(--gin-bg-app);
  110. box-shadow: none;
  111. &:first-of-type {
  112. margin-inline-end: 0;
  113. }
  114. /* Multiple Dropbutton only has one item */
  115. &:first-of-type:last-of-type > * {
  116. .js .dropbutton--multiple
  117. }
  118. > a,
  119. > input,
  120. > .button {
  121. display: block;
  122. overflow: hidden;
  123. box-sizing: border-box;
  124. width: 100%;
  125. max-width: 20rem;
  126. margin: 0;
  127. text-align: start;
  128. white-space: nowrap;
  129. text-overflow: ellipsis;
  130. color: var(--gin-color-primary);
  131. border: 0 none !important;
  132. border-radius: 0;
  133. background: var(--gin-bg-layer3);
  134. box-shadow: none;
  135. font-weight: var(--gin-font-weight-heavy);
  136. &:focus {
  137. outline-offset: -2px;
  138. }
  139. &:hover,
  140. &:active {
  141. color: var(--gin-color-button-text);
  142. border-radius: var(--gin-border-s);
  143. background: var(--gin-color-primary);
  144. }
  145. }
  146. }
  147. & > .dropbutton__item:first-of-type {
  148. > a,
  149. > input,
  150. > .button {
  151. &:hover,
  152. &:active {
  153. color: var(--gin-color-button-text);
  154. background: var(--gin-color-primary);
  155. }
  156. }
  157. }
  158. .dropbutton__items > .dropbutton__item {
  159. border-radius: var(--gin-border-s);
  160. }
  161. /* Shadow for pseudo dropdown on views page */
  162. &:not(.dropbutton--gin) > .dropbutton__item.secondary-action {
  163. box-shadow: var(--gin-shadow-l2);
  164. }
  165. &:not(.dropbutton--gin) > .dropbutton__item:not(:first-of-type),
  166. .dropbutton__items > .dropbutton__item,
  167. > .dropbutton__items > .dropbutton__item ~ .dropbutton__item {
  168. > a,
  169. > input,
  170. > .button {
  171. padding: 0.75em 1em !important;
  172. font-size: var(--gin-font-size-s) !important;
  173. }
  174. }
  175. }
  176. /* Variants. */
  177. .dropbutton--small {
  178. height: var(--dropbutton-small-toggle-size);
  179. }
  180. .dropbutton--extrasmall {
  181. height: var(--dropbutton-extrasmall-toggle-size);
  182. }
  183. /**
  184. * First dropbutton list item.
  185. */
  186. .dropbutton--multiple .dropbutton__item:first-of-type {
  187. height: 100%;
  188. margin-right: calc(var(--dropbutton-toggle-size) + var(--dropbutton-toggle-size-spacing));
  189. white-space: nowrap;
  190. border-inline-end: 1px solid var(--gin-color-primary-light-active);
  191. input {
  192. height: 100%;
  193. color: var(--gin-color-primary);
  194. border: 0 none !important;
  195. border-radius: 0 !important;
  196. background-color: transparent;
  197. }
  198. /* LTR */
  199. [dir="rtl"]
  200. }
  201. /* First dropbutton list item variants */
  202. .no-touchevents .dropbutton--multiple.dropbutton--small .dropbutton__item:first-of-type {
  203. margin-right: calc(var(--dropbutton-small-toggle-size) + var(--dropbutton-toggle-size-spacing));
  204. /* LTR */
  205. white-space: nowrap;
  206. [dir="rtl"]
  207. }
  208. .no-touchevents .dropbutton--multiple.dropbutton--extrasmall .dropbutton__item:first-of-type {
  209. margin-right: calc(var(--dropbutton-extrasmall-toggle-size) + var(--dropbutton-toggle-size-spacing));
  210. /* LTR */
  211. white-space: nowrap;
  212. [dir="rtl"]
  213. }
  214. /**
  215. * Dropbutton toggler.
  216. */
  217. .dropbutton__toggle {
  218. position: absolute;
  219. z-index: 3;
  220. top: 0;
  221. right: 0;
  222. inset-block-start: 2px;
  223. inset-inline-end: 2px;
  224. bottom: 0;
  225. width: calc(var(--gin-spacing-xxl) + 1px);
  226. height: 2.75rem;
  227. white-space: nowrap;
  228. border: var(--dropbutton-border-size) solid transparent !important;
  229. /* 1 */
  230. border-inline-start: var(--dropbutton-border-size, 1px) solid var(--gin-color-primary) !important;
  231. border-radius: 0 var(--button-border-radius-size) var(--button-border-radius-size) 0;
  232. /* LTR */
  233. background: none;
  234. box-shadow: none;
  235. font-size: var(--gin-font-size-s);
  236. font-weight: var(--gin-font-weight-semibold);
  237. appearance: none;
  238. [dir="rtl"]
  239. &::before {
  240. position: absolute;
  241. top: 50%;
  242. right: 50%;
  243. width: 0.875rem;
  244. height: 0.5625rem;
  245. content: "";
  246. transform: translate(50%, -50%) rotate(0);
  247. background: url("data:image/svg+xml,%3csvg width='14' height='9' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M.238 1.938L1.647.517 7 5.819 12.354.517l1.408 1.421L7 8.636z' fill='%23000f33'/%3e%3c/svg%3e") no-repeat center;
  248. background-size: contain;
  249. }
  250. /* Toggler states. */
  251. &:hover {
  252. color: var(--gin-color-button-text);
  253. background-color: var(--gin-color-primary);
  254. box-shadow: 0 2px 4px rgb(0, 0, 0, 0.25);
  255. }
  256. &:focus {
  257. z-index: 2;
  258. }
  259. &:active {
  260. color: var(--gin-color-button-text);
  261. background-color: var(--button--active-bg-color);
  262. }
  263. @media (prefers-reduced-motion: no-preference) {
  264. transition: var(--gin-transition);
  265. }
  266. @media (--admin-wide) {
  267. font-size: var(--gin-font-size);
  268. }
  269. @media (forced-colors: active) {
  270. border-width: 0 !important;
  271. }
  272. @media not (forced-colors: active) {
  273. &::before {
  274. background-color: var(--gin-color-primary);
  275. background-image: none;
  276. mask-image: var(--admin-icon-drop);
  277. mask-repeat: no-repeat;
  278. mask-position: center center;
  279. mask-size: 0.75rem 0.75rem;
  280. }
  281. &:hover::before,
  282. &:active::before {
  283. background-color: var(--gin-color-button-text);
  284. }
  285. }
  286. }
  287. .dropbutton-wrapper.open .dropbutton__toggle::before {
  288. transform: translate(50%, -50%) rotate(180deg);
  289. [dir="rtl"]
  290. }
  291. /* Toggler variants */
  292. .no-touchevents .dropbutton--small .dropbutton__toggle {
  293. width: var(--dropbutton-small-toggle-size);
  294. height: var(--dropbutton-small-toggle-size);
  295. }
  296. .no-touchevents .dropbutton--extrasmall .dropbutton__toggle {
  297. width: var(--dropbutton-extrasmall-toggle-size);
  298. height: var(--dropbutton-extrasmall-toggle-size);
  299. }
  300. .no-touchevents .dropbutton--small .dropbutton__toggle::before,
  301. .no-touchevents .dropbutton--extrasmall .dropbutton__toggle::before {
  302. width: 0.75rem;
  303. /* 12px */
  304. }
  305. /* High contrast. */
  306. @media (forced-colors: active) {
  307. /* Default. */
  308. .dropbutton__toggle::before {
  309. width: 0.5625rem;
  310. height: 0.5625rem;
  311. margin-top: calc(0.5625rem / (2 * -1.41429));
  312. transform: translate(50%, -50%) rotate(135deg);
  313. /* LTR */
  314. border-width: 0.125rem 0.125rem 0 0;
  315. border-style: solid;
  316. background: none;
  317. .dropbutton-wrapper.open
  318. [dir="rtl"] .dropbutton-wrapper.open
  319. }
  320. /* Variants */
  321. .no-touchevents .dropbutton--small .dropbutton__toggle::before,
  322. .no-touchevents .dropbutton--extrasmall .dropbutton__toggle::before {
  323. width: 0.4375rem;
  324. height: 0.4375rem;
  325. margin-top: calc(0.4375rem / (2 * -1.41429));
  326. }
  327. .dropbutton-wrapper.open .dropbutton__toggle::before {
  328. margin-top: calc(0.4375rem / (2 * 1.41429));
  329. }
  330. }
  331. /**
  332. * Item in the first dropbutton list item (that looks like a button).
  333. *
  334. * Duplicates base button styles.
  335. */
  336. .dropbutton__item:first-of-type {
  337. & > * {
  338. display: inline-flex;
  339. align-items: center;
  340. box-sizing: border-box;
  341. margin: 0;
  342. padding: calc(0.875rem - 1px) calc(var(--gin-spacing-l) - 1px);
  343. cursor: pointer;
  344. text-align: center;
  345. white-space: nowrap;
  346. -webkit-text-decoration: none;
  347. text-decoration: none;
  348. color: var(--gin-color-primary);
  349. border: var(--dropbutton-border-size) solid transparent !important;
  350. /* 1 */
  351. border-radius: var(--button-border-radius-size);
  352. background: none;
  353. box-shadow: none;
  354. font-size: var(--gin-font-size-s);
  355. font-weight: var(--gin-font-weight-semibold);
  356. line-height: var(--dropbutton-line-height);
  357. appearance: none;
  358. -webkit-font-smoothing: antialiased;
  359. /* This is a fix for when an is the first item within a dropdown.
  360. This can be replicated using the theming_tools development contrib module. */
  361. &:not(:is(:hover)) {
  362. color: var(--gin-color-primary) !important;
  363. }
  364. &:hover {
  365. background-color: var(--gin-color-primary-hover);
  366. }
  367. &:active {
  368. background-color: var(--gin-color-primary-active);
  369. }
  370. &:hover,
  371. &:active {
  372. color: var(--gin-color-button-text);
  373. }
  374. @media (prefers-reduced-motion: no-preference) {
  375. transition: var(--gin-transition);
  376. }
  377. @media (--admin-wide) {
  378. font-size: var(--gin-font-size);
  379. }
  380. @media (forced-colors: active) {
  381. border-width: 0 !important;
  382. }
  383. }
  384. .dropbutton--multiple & > * {
  385. padding-inline: calc(var(--dropbutton-spacing-size) - var(--dropbutton-border-size));
  386. }
  387. /* Variants */
  388. .no-touchevents .dropbutton--small & > * {
  389. padding-block: calc(var(--dropbutton-small-spacing-size) - var(--dropbutton-border-size));
  390. font-size: var(--dropbutton-small-font-size);
  391. line-height: var(--dropbutton-small-line-height);
  392. }
  393. .no-touchevents .dropbutton--extrasmall & > * {
  394. padding-top: calc(var(--dropbutton-extrasmall-spacing-size) - var(--dropbutton-border-size));
  395. padding-bottom: calc(var(--dropbutton-extrasmall-spacing-size) - var(--dropbutton-border-size));
  396. font-size: var(--dropbutton-extrasmall-font-size);
  397. line-height: var(--dropbutton-extrasmall-line-height);
  398. }
  399. & > *:hover,
  400. & > .button:hover {
  401. -webkit-text-decoration: none;
  402. text-decoration: none;
  403. color: var(--button-fg-color);
  404. background-color: var(--button--hover-bg-color);
  405. box-shadow: 0 2px 4px rgb(0, 0, 0, 0.25);
  406. }
  407. & > *:active {
  408. color: var(--button-fg-color);
  409. background-color: var(--button--active-bg-color);
  410. }
  411. .dropbutton--multiple & > * {
  412. position: relative;
  413. z-index: 3;
  414. }
  415. .dropbutton--multiple & > *:focus {
  416. z-index: 2;
  417. }
  418. .dropbutton--multiple & > * {
  419. border-radius: var(--button-border-radius-size) 0 0 var(--button-border-radius-size);
  420. /* LTR */
  421. }
  422. & ~ .dropbutton__item__item ~ .dropbutton__item:last-child {
  423. border-color: var(--gin-color-primary);
  424. }
  425. [dir="rtl"] .dropbutton--multiple & > * {
  426. border-radius: 0 var(--button-border-radius-size) var(--button-border-radius-size) 0;
  427. }
  428. }
  429. .dropbutton > .dropbutton__item > a,
  430. .dropbutton > .dropbutton__item > .button {
  431. display: block;
  432. box-sizing: border-box;
  433. width: 100%;
  434. margin: 0;
  435. text-align: left;
  436. /* LTR */
  437. }
  438. [dir="rtl"] .dropbutton > .dropbutton__item > a,
  439. [dir="rtl"] .dropbutton > .dropbutton__item > .button {
  440. text-align: right;
  441. }
  442. .dropbutton-wrapper:not(.open) .dropbutton__item:first-of-type ~ .dropbutton__item {
  443. visibility: hidden;
  444. /**
  445. * By setting a height of 1px, the dropbutton items are hidden
  446. * from view while still occupying minimal space, ensuring the layout remains intact.
  447. */
  448. height: 1px;
  449. }
  450. /**
  451. * Non-first dropbutton list elements.
  452. */
  453. .dropbutton__item:first-of-type ~ .dropbutton__item {
  454. max-width: unset;
  455. border: var(--dropbutton-border-size) solid var(--gin-color-primary);
  456. border-bottom: 0;
  457. box-shadow: 0 2px 10px rgb(0, 0, 0, 0.15);
  458. & ~ .dropbutton__item {
  459. border-top: 0;
  460. }
  461. & > *:hover {
  462. background-color: var(--gin-bg-layer3);
  463. }
  464. }
  465. .dropbutton__item ~ .dropbutton__item:last-child {
  466. border-bottom: var(--dropbutton-border-size) solid var(--color-gray-200);
  467. border-radius: 0 0 var(--dropbutton-border-radius-size) var(--dropbutton-border-radius-size);
  468. }
  469. /**
  470. * Dropbutton items of non-first dropbutton list elements.
  471. */
  472. .dropbutton__item:first-of-type ~ .dropbutton__item {
  473. max-width: var(--dropbutton-item-max-width);
  474. }
  475. .dropbutton__item:first-of-type ~ .dropbutton__item > a,
  476. .dropbutton__item:first-of-type ~ .dropbutton__item > .button {
  477. position: relative;
  478. padding: calc(var(--dropbutton-spacing-size) - var(--dropbutton-border-size));
  479. white-space: normal;
  480. -webkit-text-decoration: none;
  481. text-decoration: none;
  482. color: var(--color-gray-800);
  483. border: var(--dropbutton-border-size) solid transparent !important;
  484. /* 1 */
  485. border-radius: var(--dropbutton-border-radius-size);
  486. background: var(--color-white);
  487. box-shadow: none;
  488. font-size: var(--dropbutton-font-size);
  489. font-weight: normal;
  490. line-height: var(--dropbutton-line-height);
  491. -webkit-font-smoothing: antialiased;
  492. }
  493. .dropbutton__item:first-of-type ~ .dropbutton__item > a:not(:focus),
  494. .dropbutton__item:first-of-type ~ .dropbutton__item > .button:not(:focus) {
  495. z-index: 1;
  496. }
  497. /* Variants. */
  498. .no-touchevents .dropbutton--small .dropbutton__item:first-of-type ~ .dropbutton__item > a,
  499. .no-touchevents .dropbutton--small .dropbutton__item:first-of-type ~ .dropbutton__item > .button {
  500. padding-top: var(--dropbutton-small-spacing-size);
  501. padding-bottom: var(--dropbutton-small-spacing-size);
  502. font-size: var(--dropbutton-small-font-size);
  503. line-height: var(--dropbutton-small-line-height);
  504. }
  505. .no-touchevents .dropbutton--extrasmall .dropbutton__item:first-of-type ~ .dropbutton__item > a,
  506. .no-touchevents .dropbutton--extrasmall .dropbutton__item:first-of-type ~ .dropbutton__item > .button {
  507. padding-top: var(--dropbutton-extrasmall-spacing-size);
  508. padding-bottom: var(--dropbutton-extrasmall-spacing-size);
  509. font-size: var(--dropbutton-extrasmall-font-size);
  510. line-height: var(--dropbutton-extrasmall-line-height);
  511. }
  512. /* States. */
  513. .dropbutton__item {
  514. & > *:focus {
  515. position: relative;
  516. z-index: 3;
  517. }
  518. &:first-of-type ~ & > *:hover {
  519. color: var(--color-text);
  520. background: var(--color-gray-050);
  521. }
  522. & > .button:not(:focus) {
  523. box-shadow: none;
  524. }
  525. &:first-of-type ~ & > *:focus {
  526. border-color: var(--color-focus) !important;
  527. /* 1 */
  528. box-shadow:
  529. inset 0 0 0 1px var(--color-focus),
  530. 0 0 0 1px var(--color-focus);
  531. }
  532. }
  533. /* Overlay the dropdown button on top of the sticky header and main toolbar */
  534. html.js {
  535. .dropbutton-wrapper.open {
  536. .dropbutton-widget {
  537. z-index: 502;
  538. /* Above toolbar and sticky header */
  539. }
  540. .dropbutton {
  541. background: var(--gin-bg-layer3);
  542. }
  543. }
  544. .dropbutton {
  545. box-sizing: border-box;
  546. height: 3rem;
  547. min-height: 3rem;
  548. }
  549. .dropbutton-wrapper:not(.open) .dropbutton__items {
  550. visibility: hidden;
  551. opacity: 0;
  552. }
  553. .dropbutton-wrapper .dropbutton__items {
  554. visibility: visible;
  555. overflow: auto;
  556. max-height: 30vh;
  557. opacity: 1;
  558. }
  559. .dropbutton-wrapper:not(.open) .dropbutton__item:first-of-type ~ .dropbutton__items {
  560. display: none;
  561. }
  562. .dropbutton-wrapper:not(.open) .dropbutton__items .dropbutton__item:first-of-type ~ .dropbutton__item {
  563. display: block;
  564. height: auto;
  565. }
  566. }
  567. html.js.no-touchevents {
  568. .dropbutton--multiple.dropbutton--small .dropbutton__item:first-of-type {
  569. margin-inline-end: 0;
  570. }
  571. .dropbutton--multiple.dropbutton--small > .dropbutton__item:first-of-type {
  572. margin-inline-end: var(--gin-spacing-xl);
  573. }
  574. .dropbutton--multiple.dropbutton--extrasmall > .dropbutton__item:first-of-type {
  575. margin-inline-end: var(--gin-spacing-l);
  576. }
  577. .dropbutton--small {
  578. min-width: 0;
  579. height: 2.25rem;
  580. min-height: 2.25rem;
  581. border-radius: var(--gin-border-s);
  582. .dropbutton__toggle {
  583. width: calc(var(--dropbutton-small-toggle-size, 2rem) + 1px);
  584. }
  585. }
  586. .dropbutton--extrasmall {
  587. min-width: 0;
  588. height: 1.75rem;
  589. min-height: 1.75rem;
  590. border-radius: var(--gin-border-s);
  591. .dropbutton__toggle {
  592. width: calc(var(--dropbutton-extrasmall-toggle-size, 1.5rem) + 1px);
  593. }
  594. .dropbutton__item:first-of-type > * {
  595. padding-inline: var(--gin-spacing-s);
  596. }
  597. }
  598. .dropbutton--multiple.dropbutton--extrasmall .dropbutton__items .dropbutton__item {
  599. margin-inline-end: 0;
  600. }
  601. }

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