gin-dropbutton.css

Same filename and directory in other branches
  1. 11.x core/themes/default_admin/migration/css/base/gin-dropbutton.css
/*
 * DO NOT EDIT THIS FILE.
 * See the following change record for more information,
 * https://www.drupal.org/node/3084859
 * @preserve
 */

.dropbutton-widget,
html.js .dropbutton-widget {
  background-color: transparent;
}

/* Overlay the dropdown button on top of the sticky header and main toolbar */

html.js {
  .dropbutton-wrapper.open {
    .dropbutton-widget {
      z-index: 502; /* Above toolbar and sticky header */
    }

    .dropbutton {
      background: var(--gin-bg-layer3);
    }
  }
}

.dropbutton {
  border: 2px solid var(--gin-color-primary);
  border-radius: var(--gin-border-m);
  box-shadow: 0 1px 2px var(--gin-color-primary-light);

  .gin--dark-mode & {
    box-shadow: 0 4px 18px var(--gin-shadow-button);
  }

  &:hover {
    border-color: var(--gin-color-primary);
  }

  &:active,
  &:focus {
    border-color: var(--gin-color-primary-active);
  }

  .dropbutton__items {
    position: absolute;
    min-width: 7.5rem;
    margin: 0;
    padding: 0.5em;
    list-style: none;
    border-radius: var(--gin-border-l);
    background: var(--gin-bg-layer3);
    box-shadow: var(--gin-shadow-l2);
    inset-inline-end: 0;

    .node-form & {
      inset-inline-start: 0;
      inset-inline-end: auto;
    }

    @media (forced-colors: active) {
      border: 1px solid linktext;
    }
  }

  > .dropbutton__items > .dropbutton__item:first-of-type {
    > a,
    > input,
    > .button {
      border-radius: var(--gin-border-s) var(--gin-border-s) 0 0;
    }
  }

  /* Drupal 10.2.x fix */
  &.dropbutton--gin .dropbutton-action > .button {
    border: var(--dropbutton-border-size) solid transparent !important;
  }

  /* The ugly part: make it work for all different dropbutton versions out there */
  &:not(.dropbutton--gin) > .dropbutton__item ~ .dropbutton__item,
  .dropbutton__items > .dropbutton__item,
  .dropbutton__items > .dropbutton__item ~ .dropbutton__item {
    border: 0 none;
    background-color: var(--gin-bg-app);
    box-shadow: none;

    &:first-of-type {
      margin-inline-end: 0;
    }

    /* Multiple Dropbutton only has one item */
    &:first-of-type:last-of-type > * {
      .js .dropbutton--multiple & {
        border-radius: var(--gin-border-s);
      }
    }

    > a,
    > input,
    > .button {
      display: block;
      overflow: hidden;
      box-sizing: border-box;
      width: 100%;
      max-width: 20rem;
      margin: 0;
      text-align: start;
      white-space: nowrap;
      text-overflow: ellipsis;
      color: var(--gin-color-primary);
      border: 0 none !important;
      border-radius: 0;
      background: var(--gin-bg-layer3);
      box-shadow: none;
      font-weight: var(--gin-font-weight-heavy);

      &:hover,
      &:active,
      &:focus {
        color: var(--gin-color-button-text);
        border-radius: var(--gin-border-s);
        background: var(--gin-color-primary);

        @media (forced-colors: active) {
          outline: 2px solid transparent;
          outline-offset: -2px;
        }
      }

      &:focus {
        @media (forced-colors: active) {
          outline-style: dotted;
        }
      }
    }
  }

  & > .dropbutton__item:first-of-type {
    > a,
    > input,
    > .button {
      &:hover,
      &:active,
      &:focus {
        color: var(--gin-color-button-text);
        background: var(--gin-color-primary);
      }
    }
  }

  .dropbutton__items > .dropbutton__item {
    border-radius: var(--gin-border-s);
  }

  /* Shadow for pseudo dropdown on views page */
  &:not(.dropbutton--gin) > .dropbutton__item.secondary-action {
    box-shadow: var(--gin-shadow-l2);
  }

  &:not(.dropbutton--gin) > .dropbutton__item:not(:first-of-type),
  .dropbutton__items > .dropbutton__item,
  > .dropbutton__items > .dropbutton__item ~ .dropbutton__item {
    > a,
    > input,
    > .button {
      padding: 0.75em 1em !important;
      font-size: var(--gin-font-size-s) !important;
    }
  }
}

/* Offset for select button on first item */

.dropbutton--multiple > .dropbutton__item:first-of-type {
  height: 100%;
  border-inline-end: 1px solid var(--gin-color-primary-light-active);

  input {
    height: 100%;
    color: var(--gin-color-primary);
    border: 0 none !important;
    border-radius: 0 !important;
    background-color: transparent;
  }
}

.dropbutton-wrapper {
  box-shadow: none;
}

.dropbutton__item:first-of-type > *,
.dropbutton__toggle {
  white-space: nowrap;
  background: none;

  @media (forced-colors: active) {
    border-width: 0 !important;
  }
}

.dropbutton__item:first-of-type > * {
  padding: calc(0.875rem - 1px) calc(var(--gin-spacing-l) - 1px);
}

.dropbutton__toggle {
  inset-block-start: 2px;
  inset-inline-end: 2px;
  width: calc(var(--gin-spacing-xxl) + 1px);
  height: 2.75rem;
  border-inline-start: var(--dropbutton-border-size, 1px) solid var(--gin-color-primary) !important;

  &:hover {
    background-color: var(--gin-color-primary);
  }

  @media not (forced-colors: active) {
    &::before {
      background-color: var(--gin-color-primary);
      background-image: none;
      mask-image: var(--admin-icon-drop);
      mask-repeat: no-repeat;
      mask-position: center center;
      mask-size: 0.75rem 0.75rem;
    }

    &:hover::before,
    &:active::before,
    &:focus::before {
      background-color: var(--gin-color-button-text);
    }
  }
}

.dropbutton__item:first-of-type ~ .dropbutton__item {
  max-width: unset;
  border-color: var(--gin-color-primary);

  & > *:hover {
    background-color: var(--gin-bg-layer3);
  }
}

.dropbutton__item:first-of-type ~ .dropbutton__item__item ~ .dropbutton__item:last-child {
  border-color: var(--gin-color-primary);
}

html.js {
  .dropbutton {
    box-sizing: border-box;
    height: 3rem;
    min-height: 3rem;
  }

  .dropbutton-wrapper:not(.open) .dropbutton__items {
    visibility: hidden;
    opacity: 0;
  }

  .dropbutton-wrapper .dropbutton__items {
    visibility: visible;
    overflow: auto;
    max-height: 30vh;
    opacity: 1;
  }

  .dropbutton-wrapper:not(.open) .dropbutton__item:first-of-type ~ .dropbutton__items {
    display: none;
  }

  .dropbutton-wrapper:not(.open) .dropbutton__items .dropbutton__item:first-of-type ~ .dropbutton__item {
    display: block;
    height: auto;
  }
}

html.js.no-touchevents {
  .dropbutton--multiple.dropbutton--small .dropbutton__item:first-of-type {
    margin-inline-end: 0;
  }

  .dropbutton--multiple.dropbutton--small > .dropbutton__item:first-of-type {
    margin-inline-end: var(--gin-spacing-xl);
  }

  .dropbutton--multiple.dropbutton--extrasmall > .dropbutton__item:first-of-type {
    margin-inline-end: var(--gin-spacing-l);
  }

  .dropbutton--small {
    min-width: 0;
    height: 2.25rem;
    min-height: 2.25rem;
    border-radius: var(--gin-border-s);

    .dropbutton__toggle {
      width: calc(var(--dropbutton-small-toggle-size, 2rem) + 1px);
    }
  }

  .dropbutton--extrasmall {
    min-width: 0;
    height: 1.75rem;
    min-height: 1.75rem;
    border-radius: var(--gin-border-s);

    .dropbutton__toggle {
      width: calc(var(--dropbutton-extrasmall-toggle-size, 1.5rem) + 1px);
    }

    .dropbutton__item:first-of-type > * {
      padding-inline: var(--gin-spacing-s);
    }
  }

  .dropbutton--multiple.dropbutton--extrasmall .dropbutton__items .dropbutton__item {
    margin-inline-end: 0;
  }
}

File

core/themes/default_admin/migration/css/base/gin-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. .dropbutton-widget,
  8. html.js .dropbutton-widget {
  9. background-color: transparent;
  10. }
  11. /* Overlay the dropdown button on top of the sticky header and main toolbar */
  12. html.js {
  13. .dropbutton-wrapper.open {
  14. .dropbutton-widget {
  15. z-index: 502; /* Above toolbar and sticky header */
  16. }
  17. .dropbutton {
  18. background: var(--gin-bg-layer3);
  19. }
  20. }
  21. }
  22. .dropbutton {
  23. border: 2px solid var(--gin-color-primary);
  24. border-radius: var(--gin-border-m);
  25. box-shadow: 0 1px 2px var(--gin-color-primary-light);
  26. .gin--dark-mode
  27. &:hover {
  28. border-color: var(--gin-color-primary);
  29. }
  30. &:active,
  31. &:focus {
  32. border-color: var(--gin-color-primary-active);
  33. }
  34. .dropbutton__items {
  35. position: absolute;
  36. min-width: 7.5rem;
  37. margin: 0;
  38. padding: 0.5em;
  39. list-style: none;
  40. border-radius: var(--gin-border-l);
  41. background: var(--gin-bg-layer3);
  42. box-shadow: var(--gin-shadow-l2);
  43. inset-inline-end: 0;
  44. .node-form
  45. @media (forced-colors: active) {
  46. border: 1px solid linktext;
  47. }
  48. }
  49. > .dropbutton__items > .dropbutton__item:first-of-type {
  50. > a,
  51. > input,
  52. > .button {
  53. border-radius: var(--gin-border-s) var(--gin-border-s) 0 0;
  54. }
  55. }
  56. /* Drupal 10.2.x fix */
  57. &.dropbutton--gin .dropbutton-action > .button {
  58. border: var(--dropbutton-border-size) solid transparent !important;
  59. }
  60. /* The ugly part: make it work for all different dropbutton versions out there */
  61. &:not(.dropbutton--gin) > .dropbutton__item ~ .dropbutton__item,
  62. .dropbutton__items > .dropbutton__item,
  63. .dropbutton__items > .dropbutton__item ~ .dropbutton__item {
  64. border: 0 none;
  65. background-color: var(--gin-bg-app);
  66. box-shadow: none;
  67. &:first-of-type {
  68. margin-inline-end: 0;
  69. }
  70. /* Multiple Dropbutton only has one item */
  71. &:first-of-type:last-of-type > * {
  72. .js .dropbutton--multiple
  73. }
  74. > a,
  75. > input,
  76. > .button {
  77. display: block;
  78. overflow: hidden;
  79. box-sizing: border-box;
  80. width: 100%;
  81. max-width: 20rem;
  82. margin: 0;
  83. text-align: start;
  84. white-space: nowrap;
  85. text-overflow: ellipsis;
  86. color: var(--gin-color-primary);
  87. border: 0 none !important;
  88. border-radius: 0;
  89. background: var(--gin-bg-layer3);
  90. box-shadow: none;
  91. font-weight: var(--gin-font-weight-heavy);
  92. &:hover,
  93. &:active,
  94. &:focus {
  95. color: var(--gin-color-button-text);
  96. border-radius: var(--gin-border-s);
  97. background: var(--gin-color-primary);
  98. @media (forced-colors: active) {
  99. outline: 2px solid transparent;
  100. outline-offset: -2px;
  101. }
  102. }
  103. &:focus {
  104. @media (forced-colors: active) {
  105. outline-style: dotted;
  106. }
  107. }
  108. }
  109. }
  110. & > .dropbutton__item:first-of-type {
  111. > a,
  112. > input,
  113. > .button {
  114. &:hover,
  115. &:active,
  116. &:focus {
  117. color: var(--gin-color-button-text);
  118. background: var(--gin-color-primary);
  119. }
  120. }
  121. }
  122. .dropbutton__items > .dropbutton__item {
  123. border-radius: var(--gin-border-s);
  124. }
  125. /* Shadow for pseudo dropdown on views page */
  126. &:not(.dropbutton--gin) > .dropbutton__item.secondary-action {
  127. box-shadow: var(--gin-shadow-l2);
  128. }
  129. &:not(.dropbutton--gin) > .dropbutton__item:not(:first-of-type),
  130. .dropbutton__items > .dropbutton__item,
  131. > .dropbutton__items > .dropbutton__item ~ .dropbutton__item {
  132. > a,
  133. > input,
  134. > .button {
  135. padding: 0.75em 1em !important;
  136. font-size: var(--gin-font-size-s) !important;
  137. }
  138. }
  139. }
  140. /* Offset for select button on first item */
  141. .dropbutton--multiple > .dropbutton__item:first-of-type {
  142. height: 100%;
  143. border-inline-end: 1px solid var(--gin-color-primary-light-active);
  144. input {
  145. height: 100%;
  146. color: var(--gin-color-primary);
  147. border: 0 none !important;
  148. border-radius: 0 !important;
  149. background-color: transparent;
  150. }
  151. }
  152. .dropbutton-wrapper {
  153. box-shadow: none;
  154. }
  155. .dropbutton__item:first-of-type > *,
  156. .dropbutton__toggle {
  157. white-space: nowrap;
  158. background: none;
  159. @media (forced-colors: active) {
  160. border-width: 0 !important;
  161. }
  162. }
  163. .dropbutton__item:first-of-type > * {
  164. padding: calc(0.875rem - 1px) calc(var(--gin-spacing-l) - 1px);
  165. }
  166. .dropbutton__toggle {
  167. inset-block-start: 2px;
  168. inset-inline-end: 2px;
  169. width: calc(var(--gin-spacing-xxl) + 1px);
  170. height: 2.75rem;
  171. border-inline-start: var(--dropbutton-border-size, 1px) solid var(--gin-color-primary) !important;
  172. &:hover {
  173. background-color: var(--gin-color-primary);
  174. }
  175. @media not (forced-colors: active) {
  176. &::before {
  177. background-color: var(--gin-color-primary);
  178. background-image: none;
  179. mask-image: var(--admin-icon-drop);
  180. mask-repeat: no-repeat;
  181. mask-position: center center;
  182. mask-size: 0.75rem 0.75rem;
  183. }
  184. &:hover::before,
  185. &:active::before,
  186. &:focus::before {
  187. background-color: var(--gin-color-button-text);
  188. }
  189. }
  190. }
  191. .dropbutton__item:first-of-type ~ .dropbutton__item {
  192. max-width: unset;
  193. border-color: var(--gin-color-primary);
  194. & > *:hover {
  195. background-color: var(--gin-bg-layer3);
  196. }
  197. }
  198. .dropbutton__item:first-of-type ~ .dropbutton__item__item ~ .dropbutton__item:last-child {
  199. border-color: var(--gin-color-primary);
  200. }
  201. html.js {
  202. .dropbutton {
  203. box-sizing: border-box;
  204. height: 3rem;
  205. min-height: 3rem;
  206. }
  207. .dropbutton-wrapper:not(.open) .dropbutton__items {
  208. visibility: hidden;
  209. opacity: 0;
  210. }
  211. .dropbutton-wrapper .dropbutton__items {
  212. visibility: visible;
  213. overflow: auto;
  214. max-height: 30vh;
  215. opacity: 1;
  216. }
  217. .dropbutton-wrapper:not(.open) .dropbutton__item:first-of-type ~ .dropbutton__items {
  218. display: none;
  219. }
  220. .dropbutton-wrapper:not(.open) .dropbutton__items .dropbutton__item:first-of-type ~ .dropbutton__item {
  221. display: block;
  222. height: auto;
  223. }
  224. }
  225. html.js.no-touchevents {
  226. .dropbutton--multiple.dropbutton--small .dropbutton__item:first-of-type {
  227. margin-inline-end: 0;
  228. }
  229. .dropbutton--multiple.dropbutton--small > .dropbutton__item:first-of-type {
  230. margin-inline-end: var(--gin-spacing-xl);
  231. }
  232. .dropbutton--multiple.dropbutton--extrasmall > .dropbutton__item:first-of-type {
  233. margin-inline-end: var(--gin-spacing-l);
  234. }
  235. .dropbutton--small {
  236. min-width: 0;
  237. height: 2.25rem;
  238. min-height: 2.25rem;
  239. border-radius: var(--gin-border-s);
  240. .dropbutton__toggle {
  241. width: calc(var(--dropbutton-small-toggle-size, 2rem) + 1px);
  242. }
  243. }
  244. .dropbutton--extrasmall {
  245. min-width: 0;
  246. height: 1.75rem;
  247. min-height: 1.75rem;
  248. border-radius: var(--gin-border-s);
  249. .dropbutton__toggle {
  250. width: calc(var(--dropbutton-extrasmall-toggle-size, 1.5rem) + 1px);
  251. }
  252. .dropbutton__item:first-of-type > * {
  253. padding-inline: var(--gin-spacing-s);
  254. }
  255. }
  256. .dropbutton--multiple.dropbutton--extrasmall .dropbutton__items .dropbutton__item {
  257. margin-inline-end: 0;
  258. }
  259. }

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