vertical-tabs.pcss.css

Same filename in this branch
  1. 9 core/themes/olivero/css/components/vertical-tabs.pcss.css
Same filename and directory in other branches
  1. 11.x core/themes/olivero/css/components/vertical-tabs.pcss.css
  2. 11.x core/themes/claro/css/components/vertical-tabs.pcss.css
  3. 10 core/themes/olivero/css/components/vertical-tabs.pcss.css
  4. 10 core/themes/claro/css/components/vertical-tabs.pcss.css
  5. 8.9.x core/themes/claro/css/components/vertical-tabs.pcss.css

Vertical tabs module.

Replaces /core/misc/vertical-tabs.css.

File

core/themes/claro/css/components/vertical-tabs.pcss.css

View source
  1. /**
  2. * @file
  3. * Vertical tabs module.
  4. *
  5. * Replaces /core/misc/vertical-tabs.css.
  6. */
  7. @import "../base/variables.pcss.css";
  8. /**
  9. * Main wrapper of vertical tabs.
  10. * This wrapper div is added by JavaScript.
  11. */
  12. .vertical-tabs {
  13. margin-top: var(--vertical-tabs-margin-vertical);
  14. margin-bottom: var(--vertical-tabs-margin-vertical);
  15. border-top: 1px solid transparent; /* Need to hide the pane wrapper clearfix's height */
  16. }
  17. @media screen and (-ms-high-contrast: active) {
  18. .vertical-tabs {
  19. border-color: transparent;
  20. }
  21. }
  22. /**
  23. * Vertical tabs menu.
  24. */
  25. .vertical-tabs__menu {
  26. position: relative;
  27. display: block;
  28. float: left; /* LTR */
  29. width: var(--vertical-tabs-menu-width);
  30. margin: 0;
  31. padding-top: var(--vertical-tabs-menu-item-shadow-extraspace);
  32. list-style: none;
  33. color: var(--color-text);
  34. }
  35. [dir="rtl"] .vertical-tabs__menu {
  36. float: right;
  37. margin: 0;
  38. }
  39. /**
  40. * Vertical tabs menu item.
  41. */
  42. .vertical-tabs__menu-item {
  43. overflow: hidden;
  44. margin: var(--vertical-tabs-menu-item--top-margin) var(--vertical-tabs-menu-item--right-margin) var(--vertical-tabs-menu-item--bottom-margin) var(--vertical-tabs-menu-item--left-margin); /* LTR */
  45. padding: var(--vertical-tabs-menu-item-shadow-extraspace) 0 var(--vertical-tabs-menu-item-shadow-extraspace) var(--vertical-tabs-menu-item-shadow-extraspace); /* LTR */
  46. }
  47. [dir="rtl"] .vertical-tabs__menu-item {
  48. margin-right: var(--vertical-tabs-menu-item--left-margin);
  49. margin-left: var(--vertical-tabs-menu-item--right-margin);
  50. padding-right: var(--vertical-tabs-menu-item-shadow-extraspace);
  51. padding-left: 0;
  52. }
  53. /**
  54. * These are the (gray) lines that are visually separating the vertical tab menu
  55. * items.
  56. */
  57. .vertical-tabs__menu-item::before,
  58. .vertical-tabs__menu-item::after {
  59. position: absolute;
  60. z-index: 1; /* The line should be kept above the vertical tabs menu link to keep it visible even if the link is hovered and gets the 'hover' background color. */
  61. display: block;
  62. width: 100%;
  63. margin-top: calc(var(--vertical-tabs-menu-separator-size) * -1);
  64. border-top: var(--vertical-tabs-menu-separator-size) solid var(--vertical-tabs-menu-separator-color);
  65. }
  66. /**
  67. * This pseudo element covers the gray separator line of the vertical tab menu
  68. * item that follows the active one.
  69. *
  70. * Without this, we would have a lightgray line at the bottom-left (LTR) corner
  71. * of the active vertical tab menu item.
  72. *
  73. * Let's call this 'masking' line.
  74. */
  75. .vertical-tabs__menu-item::after {
  76. z-index: 2;
  77. border-color: var(--color-white);
  78. }
  79. /**
  80. * Making the separator line visible only if it follows an unhidden menu item.
  81. */
  82. .vertical-tabs__menu-item:not(.vertical-tab--hidden) ~ .vertical-tabs__menu-item::before {
  83. content: "";
  84. }
  85. /* Menu item states. */
  86. .vertical-tabs__menu-item:focus {
  87. outline: 0;
  88. box-shadow: none;
  89. }
  90. .vertical-tabs__menu-item.is-selected::before,
  91. .vertical-tabs__menu-item:not(.vertical-tab--hidden) ~ .vertical-tabs__menu-item.is-selected::before {
  92. content: normal;
  93. }
  94. /* Make the white masking line displayed for the selected menu item. */
  95. .vertical-tabs__menu-item.is-selected::after {
  96. content: "";
  97. }
  98. /**
  99. * Anchor link inside the vertical tabs menu item.
  100. */
  101. .vertical-tabs__menu-link {
  102. position: relative;
  103. display: block;
  104. margin-top: calc(var(--vertical-tabs-border-size) * -1);
  105. padding: var(--space-s) var(--space-s) var(--space-s) calc(var(--space-l) - var(--vertical-tabs-menu-link--active-border-size)); /* LTR */
  106. text-decoration: none;
  107. word-wrap: break-word;
  108. hyphens: auto;
  109. color: var(--color-text);
  110. border: var(--vertical-tabs-border-size) solid transparent;
  111. border-width: var(--vertical-tabs-border-size) 0 var(--vertical-tabs-border-size) var(--vertical-tabs-menu-link--active-border-size); /* LTR */
  112. border-radius: var(--vertical-tabs-border-radius) 0 0 var(--vertical-tabs-border-radius); /* LTR */
  113. }
  114. [dir="rtl"] .vertical-tabs__menu-link {
  115. padding-right: calc(var(--space-l) - var(--vertical-tabs-menu-link--active-border-size));
  116. padding-left: var(--space-s);
  117. border-width: var(--vertical-tabs-border-size) var(--vertical-tabs-menu-link--active-border-size) var(--vertical-tabs-border-size) 0;
  118. border-radius: 0 var(--vertical-tabs-border-radius) var(--vertical-tabs-border-radius) 0;
  119. }
  120. @media screen and (-ms-high-contrast: active) {
  121. .vertical-tabs__menu-link {
  122. border-color: transparent;
  123. }
  124. }
  125. /* Menu link states. */
  126. .vertical-tabs__menu-link:focus {
  127. z-index: 4; /* Focus state should be on the highest level to make the focus effect be fully visible. This also means that it should have bigger z-index than the selected link. */
  128. text-decoration: none;
  129. box-shadow: none;
  130. }
  131. .vertical-tabs__menu-link:hover {
  132. text-decoration: none;
  133. color: var(--color-absolutezero);
  134. }
  135. /* This pseudo element provides the background for the hover state. */
  136. .vertical-tabs__menu-link::before {
  137. position: absolute;
  138. z-index: 0; /* This should be on a lower level than the menu-item separator lines. */
  139. top: calc(var(--vertical-tabs-border-size) * -1);
  140. right: 0; /* LTR */
  141. bottom: calc(var(--vertical-tabs-border-size) * -1);
  142. left: calc(var(--vertical-tabs-menu-link--active-border-size) * -1); /* LTR */
  143. content: "";
  144. pointer-events: none;
  145. background-clip: padding-box;
  146. }
  147. [dir="rtl"] .vertical-tabs__menu-link::before {
  148. right: calc(var(--vertical-tabs-menu-link--active-border-size) * -1);
  149. left: 0;
  150. }
  151. .vertical-tabs__menu-link:hover::before {
  152. background: var(--color-bgblue-hover);
  153. }
  154. .vertical-tabs__menu-link:focus::after {
  155. position: absolute;
  156. top: 0;
  157. right: 0;
  158. bottom: 0;
  159. left: 0;
  160. margin: calc(var(--vertical-tabs-border-size) * -1) calc(var(--vertical-tabs-menu-link--active-border-size) * -1);
  161. content: "";
  162. pointer-events: none;
  163. border: var(--vertical-tabs-menu-link-focus-border-size) solid var(--color-focus);
  164. border-radius: var(--vertical-tabs-border-radius);
  165. }
  166. .vertical-tabs__menu-item.is-selected .vertical-tabs__menu-link {
  167. z-index: 3; /* The selected menu link should be on a higher level than the white masking line that hides the gray separator. */
  168. color: var(--color-absolutezero);
  169. border-color: var(--vertical-tabs-border-color) transparent;
  170. background-color: var(--color-white);
  171. box-shadow: var(--vertical-tabs-shadow);
  172. }
  173. .vertical-tabs__menu-item.is-selected .vertical-tabs__menu-link:hover {
  174. color: var(--color-absolutezero-hover);
  175. background-color: var(--color-bgblue-hover);
  176. }
  177. .vertical-tabs__menu-item.is-selected .vertical-tabs__menu-link::before {
  178. z-index: 1; /* The blue active-tab indication should be on a higher level than the green focus border. */
  179. border-left: var(--vertical-tabs-menu-link--active-border-size) solid var(--vertical-tabs-menu-link--active-border-color); /* LTR */
  180. border-radius: var(--base-border-radius) 0 0 var(--base-border-radius); /* LTR */
  181. }
  182. [dir=rtl] .vertical-tabs__menu-item.is-selected .vertical-tabs__menu-link::before {
  183. border-right: var(--vertical-tabs-menu-link--active-border-size) solid var(--vertical-tabs-menu-link--active-border-color);
  184. border-left: 0;
  185. border-radius: 0 var(--base-border-radius) var(--base-border-radius) 0;
  186. }
  187. .vertical-tabs__menu-item.is-selected .vertical-tabs__menu-link:hover::before {
  188. background: none;
  189. }
  190. @media screen and (-ms-high-contrast: active) {
  191. .vertical-tabs__menu-item.is-selected .vertical-tabs__menu-link {
  192. border-color: windowText transparent;
  193. }
  194. .vertical-tabs__menu-link:focus::after {
  195. border-color: transparent;
  196. }
  197. .vertical-tabs__menu-item.is-selected .vertical-tabs__menu-link::before {
  198. border-color: windowText;
  199. }
  200. }
  201. .vertical-tabs__menu-link-content {
  202. position: relative;
  203. z-index: 1; /* We are using a pseudo element for displaying the hover state's background, and we have to keep the link content above that pseudo element. Without this, the text would be covered by the background. */
  204. }
  205. /**
  206. * Details summary in vertical tabs menu link and in the summary of the details.
  207. */
  208. .vertical-tabs__menu-link-summary {
  209. display: block;
  210. color: var(--color-gray-800);
  211. font-size: var(--font-size-s);
  212. font-weight: normal;
  213. }
  214. /**
  215. * Wrapper of vertical tabs panes.
  216. */
  217. .vertical-tabs__items {
  218. box-sizing: border-box;
  219. margin-top: var(--vertical-tabs-margin-vertical);
  220. margin-bottom: var(--vertical-tabs-margin-vertical);
  221. color: var(--color-text);
  222. border: var(--vertical-tabs-border);
  223. border-radius: var(--vertical-tabs-border-radius);
  224. background-color: var(--color-white);
  225. box-shadow: var(--vertical-tabs-shadow);
  226. }
  227. /* This modifier is added by JavaScript (this is inherited from Drupal core). */
  228. .vertical-tabs__panes {
  229. position: relative;
  230. z-index: 1; /* The wrapper of the details of the vertical tabs should be on a higher level than the vertical tabs menu */
  231. top: -1px;
  232. margin-top: 0;
  233. margin-bottom: 0;
  234. }
  235. /* This clearfix makes the pane wrapper at least as tall as the menu. */
  236. .vertical-tabs__panes::after {
  237. display: block;
  238. clear: both;
  239. content: "";
  240. }
  241. .vertical-tabs .vertical-tabs__panes {
  242. margin-left: var(--vertical-tabs-menu-width); /* LTR */
  243. border-top-left-radius: 0; /* LTR */
  244. }
  245. [dir="rtl"] .vertical-tabs .vertical-tabs__panes {
  246. margin-right: var(--vertical-tabs-menu-width);
  247. margin-left: 0;
  248. border-top-left-radius: var(--vertical-tabs-border-radius);
  249. border-top-right-radius: 0;
  250. }
  251. /**
  252. * The actual vertical tabs pane.
  253. *
  254. * This is a claro-details element which in this case is also
  255. * vertical-tabs__item.
  256. */
  257. .vertical-tabs__item {
  258. /* Render on top of the border of vertical-tabs__items. */
  259. margin: calc(var(--vertical-tabs-border-size) * -1) calc(var(--vertical-tabs-border-size) * -1) 0;
  260. border-radius: 0;
  261. }
  262. .vertical-tabs__item.first {
  263. border-top-left-radius: var(--details-accordion-border-size-radius);
  264. border-top-right-radius: var(--details-accordion-border-size-radius);
  265. }
  266. .vertical-tabs__item.last {
  267. margin-bottom: calc(var(--vertical-tabs-border-size) * -1);
  268. border-bottom-right-radius: var(--details-accordion-border-size-radius);
  269. border-bottom-left-radius: var(--details-accordion-border-size-radius);
  270. }
  271. .js .vertical-tabs .vertical-tabs__item {
  272. overflow: hidden;
  273. margin: 0;
  274. border: 0;
  275. }
  276. .js .vertical-tabs .vertical-tabs__item.first,
  277. .js .vertical-tabs .vertical-tabs__item.last {
  278. border-radius: 0;
  279. }
  280. .js .vertical-tabs .vertical-tabs__item > summary {
  281. display: none;
  282. }

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