tables.pcss.css

Same filename in this branch
  1. main core/themes/claro/css/components/tables.pcss.css
  2. main core/themes/admin/css/components/tables.pcss.css
Same filename and directory in other branches
  1. 10 core/themes/claro/css/components/tables.pcss.css
  2. 11.x core/themes/claro/css/components/tables.pcss.css
  3. 9 core/themes/claro/css/components/tables.pcss.css
  4. 8.9.x core/themes/claro/css/components/tables.pcss.css
  5. 11.x core/themes/admin/css/components/tables.pcss.css
  6. 11.x core/themes/default_admin/css/components/tables.pcss.css

Claro styles for Tables.

File

core/themes/default_admin/css/components/tables.pcss.css

View source
  1. /**
  2. * @file
  3. * Claro styles for Tables.
  4. */
  5. @import "../base/media-queries.pcss.css";
  6. table {
  7. --cell-padding-y: var(--admin-space-density-m);
  8. --cell-padding-x: var(--admin-space-m);
  9. width: 100%;
  10. margin-block: var(--admin-space-l);
  11. border-collapse: collapse;
  12. thead {
  13. border-radius: var(--admin-radius-m);
  14. background: transparent;
  15. tr {
  16. border-block-end: 2px solid var(--admin-color-border-loud);
  17. &:hover {
  18. background: transparent;
  19. }
  20. }
  21. }
  22. th {
  23. background: var(--admin-color-bg-surface);
  24. font-size: var(--admin-font-size-s);
  25. font-weight: var(--admin-font-weight-bold);
  26. &,
  27. .form-item__label {
  28. color: var(--admin-color-text-loud);
  29. }
  30. }
  31. tbody {
  32. tr {
  33. border-block-end: 1px solid var(--admin-color-border-table);
  34. }
  35. td {
  36. height: auto;
  37. padding: var(--cell-padding-y) var(--cell-padding-x);
  38. }
  39. }
  40. tr,
  41. tr:focus-within,
  42. .draggable-table.tabledrag-disabled tr {
  43. color: var(--admin-color-text);
  44. background-color: transparent;
  45. &:hover {
  46. color: var(--admin-color-text);
  47. background: var(--admin-color-bg-item);
  48. }
  49. &.selected:hover {
  50. background: transparent;
  51. }
  52. }
  53. tr.selected {
  54. .gin--dark-mode
  55. td {
  56. background-color: var(--admin-color-bg-item-hover);
  57. }
  58. }
  59. td {
  60. a {
  61. text-decoration: none;
  62. &:hover {
  63. text-decoration: underline;
  64. text-decoration-style: var(--admin-link-decoration-style);
  65. }
  66. }
  67. .group-label {
  68. color: var(--admin-color-text-loud);
  69. }
  70. }
  71. &.gin--sticky-table-header {
  72. position: sticky;
  73. z-index: 97;
  74. visibility: hidden;
  75. overflow: hidden;
  76. width: auto !important;
  77. margin-block-start: calc(var(--admin-space-xs) * -1);
  78. inset-block-start: calc(var(--admin-theme-toolbar-y-offset) + var(--admin-theme-height-sticky) - 1px);
  79. tr {
  80. display: block;
  81. width: max-content;
  82. }
  83. }
  84. }
  85. table.sticky-header {
  86. inset-inline-start: auto !important;
  87. min-width: 100%;
  88. max-width: fit-content;
  89. background: transparent;
  90. }
  91. table.position-sticky,
  92. table.sticky-header {
  93. thead {
  94. position: static;
  95. }
  96. &.--is-processed thead {
  97. pointer-events: none;
  98. tr {
  99. border-color: transparent;
  100. .sortable-heading.is-active > a::before {
  101. display: none;
  102. }
  103. }
  104. }
  105. }
  106. caption {
  107. text-align: start;
  108. }
  109. th {
  110. position: relative;
  111. box-sizing: border-box;
  112. height: var(--admin-space-2xl);
  113. padding: var(--admin-space-xs) var(--admin-space-m);
  114. text-align: start;
  115. color: var(--admin-color-text);
  116. background: var(--admin-color-bg-surface-nested);
  117. line-height: 1.25rem;
  118. /* 20px */
  119. }
  120. table th {
  121. @media (--admin-medium) {
  122. height: auto;
  123. padding: var(--admin-space-m);
  124. }
  125. }
  126. /* The actual sort link. */
  127. .sortable-heading {
  128. padding: var(--admin-space-xs) var(--admin-space-m);
  129. & > a {
  130. display: block;
  131. padding-block: var(--admin-space-xs);
  132. padding-inline: 0 1.5rem;
  133. text-decoration: none;
  134. color: inherit;
  135. &:focus,
  136. &:hover {
  137. text-decoration: none;
  138. &::before {
  139. border-color: inherit;
  140. border-block-end-width: 3px;
  141. }
  142. &::after {
  143. opacity: 1;
  144. }
  145. }
  146. &::before {
  147. position: absolute;
  148. z-index: 0;
  149. inset-block-start: 0;
  150. inset-inline-end: 1rem;
  151. inset-block-end: -2px;
  152. inset-inline-start: 1rem;
  153. display: block;
  154. content: "";
  155. border-bottom: 0.125rem solid transparent;
  156. }
  157. &::after {
  158. position: absolute;
  159. inset-block-start: 50%;
  160. inset-inline-end: 1rem;
  161. width: 0.875rem;
  162. height: 1rem;
  163. margin-block-start: -0.5rem;
  164. content: "";
  165. opacity: 0.5;
  166. background: var(--admin-color-text-soft);
  167. background-size: contain;
  168. mask-image: var(--admin-icon-sort);
  169. mask-repeat: no-repeat;
  170. mask-position: center center;
  171. [dir="rtl"]
  172. }
  173. @media (forced-colors: active) {
  174. opacity: 1;
  175. background: linktext;
  176. mask: url(../../images/icons/000f33/sort--inactive.svg) no-repeat 50% 50%;
  177. }
  178. }
  179. }
  180. &.is-active > a {
  181. color: var(--admin-color-link);
  182. &::before {
  183. /* border-bottom: 0.1875rem solid var(--admin-color-link); */
  184. border-block-end: 0.1875rem solid var(--admin-color-primary-active);
  185. background-color: var(--admin-color-bg-item);
  186. border-start-start-radius: var(--admin-radius-s);
  187. border-start-end-radius: var(--admin-radius-s);
  188. }
  189. &::after {
  190. content: none;
  191. }
  192. &,
  193. &:hover,
  194. &:active {
  195. color: var(--admin-color-primary-active);
  196. }
  197. }
  198. &.is-active > a::before,
  199. > a:hover::before {
  200. width: 100%;
  201. inset-inline-start: 0;
  202. }
  203. }
  204. tr {
  205. border-bottom: 0.0625rem solid var(--admin-color-border);
  206. &:hover,
  207. &:focus-within {
  208. color: var(--admin-color-text);
  209. background: var(--admin-color-bg-item-hover);
  210. }
  211. &.color-warning:hover,
  212. &.color-warning:focus {
  213. color: var(--admin-color-text);
  214. background: #fdf8ed;
  215. }
  216. &.color-error:hover,
  217. &.color-error:focus {
  218. color: var(--admin-color-text);
  219. background: #fcf4f2;
  220. }
  221. }
  222. tr,
  223. .draggable-table.tabledrag-disabled tr {
  224. color: var(--admin-color-text);
  225. background: var(--admin-color-bg-disabled);
  226. }
  227. thead tr {
  228. border: 0;
  229. }
  230. td {
  231. box-sizing: border-box;
  232. height: 4rem;
  233. padding: var(--admin-space-xs) var(--admin-space-m);
  234. text-align: start;
  235. & .item-list ul {
  236. margin: 0;
  237. }
  238. &.is-active {
  239. background: none;
  240. }
  241. }
  242. /**
  243. * Target every .form-element input that parent is a form-item of a table cell.
  244. * This ignores the filter format select of the textarea editor.
  245. */
  246. td {
  247. & > .form-item {
  248. display: flex;
  249. align-items: center;
  250. }
  251. & > .form-item > .form-item__prefix {
  252. margin-inline-end: var(--admin-space-xs);
  253. white-space: nowrap;
  254. }
  255. & > .form-item > .form-item__suffix {
  256. margin-inline-start: var(--admin-space-xs);
  257. white-space: nowrap;
  258. }
  259. & > .form-item > .form-element,
  260. & > .ajax-new-content > .form-item > .form-element,
  261. & > .form-item > .claro-autocomplete,
  262. & > .form-item > .claro-autocomplete > .form-element,
  263. & > .ajax-new-content > .form-item > .claro-autocomplete,
  264. & > .ajax-new-content > .form-item > .claro-autocomplete > .form-element {
  265. width: 100%;
  266. }
  267. & > .form-item > .form-element--type-select,
  268. & > .ajax-new-content > .form-item > .form-element--type-select {
  269. width: max-content;
  270. min-width: 100%;
  271. }
  272. }
  273. /* Win over table-file-multiple-widget. */
  274. th.is-disabled.is-disabled {
  275. color: var(--admin-color-text-disabled);
  276. }
  277. /* Force browsers to calculate the width of a 'select all' element. */
  278. th.select-all {
  279. width: 1px;
  280. }
  281. /**
  282. * Captions.
  283. */
  284. .caption {
  285. margin-block-end: 1.25rem;
  286. /* 20px */
  287. }
  288. tfoot {
  289. font-weight: bold;
  290. & tr {
  291. &:last-child {
  292. border-bottom: 0;
  293. }
  294. &:first-child td {
  295. /* Intentionally a stronger divider than --admin-color-border; kept on the
  296. gray ramp so it isn't lightened to the default border tint. */
  297. border-top: 0.0625rem solid var(--admin-color-gray-500);
  298. }
  299. }
  300. }
  301. /**
  302. * Responsive table cells.
  303. */
  304. th.priority-low,
  305. th.priority-medium,
  306. td.priority-low,
  307. td.priority-medium {
  308. display: none;
  309. }
  310. @media screen and (min-width: 38em) {
  311. th.priority-medium,
  312. td.priority-medium {
  313. display: table-cell;
  314. }
  315. }
  316. @media screen and (min-width: 60em) {
  317. th.priority-low,
  318. td.priority-low {
  319. display: table-cell;
  320. }
  321. }
  322. .gin-table-scroll-wrapper {
  323. clear: both;
  324. overflow-x: auto;
  325. overflow-y: hidden;
  326. overscroll-behavior-x: contain;
  327. margin-block-start: calc(var(--admin-space-xs) * -1);
  328. }
  329. .gin-horizontal-scroll-shadow {
  330. background-color: var(--admin-color-bg-surface);
  331. background-image: linear-gradient(to right, var(--admin-color-bg-surface), var(--admin-color-bg-surface)), linear-gradient(to right, var(--admin-color-bg-surface), var(--admin-color-bg-surface)), linear-gradient(to right, rgb(0, 0, 0, 0.125), rgb(255, 255, 255, 0)), linear-gradient(to left, rgb(0, 0, 0, 0.125), rgb(255, 255, 255, 0));
  332. background-repeat: no-repeat;
  333. background-attachment: local, local, scroll, scroll;
  334. background-position:
  335. left center,
  336. right center,
  337. left center,
  338. right center;
  339. background-size:
  340. 24px 100%,
  341. 24px 100%,
  342. 12px 100%,
  343. 12px 100%;
  344. &:dir(rtl) {
  345. background-image: linear-gradient(to left, var(--admin-color-bg-surface), var(--admin-color-bg-surface)), linear-gradient(to left, var(--admin-color-bg-surface), var(--admin-color-bg-surface)), linear-gradient(to left, rgb(0, 0, 0, 0.125), rgb(255, 255, 255, 0)), linear-gradient(to right, rgb(0, 0, 0, 0.125), rgb(255, 255, 255, 0));
  346. background-position:
  347. right center,
  348. left center,
  349. right center,
  350. left center;
  351. }
  352. }
  353. .tablesort {
  354. background-color: var(--admin-color-primary-active);
  355. background-image: none;
  356. mask-image: var(--admin-icon-sort);
  357. mask-repeat: no-repeat;
  358. mask-position: 0 50%;
  359. }
  360. .tablesort--asc {
  361. mask-image: var(--admin-icon-sort-asc);
  362. @media (forced-colors: active) {
  363. background: linktext;
  364. }
  365. }
  366. .tablesort--desc {
  367. mask-image: var(--admin-icon-sort-desc);
  368. @media (forced-colors: active) {
  369. background: linktext;
  370. }
  371. }
  372. .field-plugin-settings-edit-wrapper {
  373. float: inline-end;
  374. + a {
  375. float: inline-start;
  376. }
  377. }
  378. .region-title {
  379. border-block-end: 2px solid var(--admin-color-text);
  380. }
  381. .field-multiple-table {
  382. th {
  383. padding-block: var(--admin-space-xs);
  384. padding-inline: var(--admin-space-l) var(--admin-space-m);
  385. border-block-end: 0;
  386. background: transparent;
  387. &.th__order {
  388. padding: 0;
  389. font-size: 0;
  390. }
  391. }
  392. thead {
  393. th {
  394. background: var(--admin-color-bg-header);
  395. &:first-of-type {
  396. border-start-start-radius: var(--admin-radius-m);
  397. border-end-start-radius: var(--admin-radius-m);
  398. }
  399. }
  400. &:not(:has(th:last-of-type:not([style*="display: none"]))) th:nth-last-of-type(2),
  401. th:last-of-type:not([style*="display: none"]) {
  402. border-start-end-radius: var(--admin-radius-m);
  403. border-end-end-radius: var(--admin-radius-m);
  404. }
  405. tr {
  406. border-block-end: 0;
  407. }
  408. .field-label .label,
  409. .form-item__label--multiple-value-form {
  410. display: inline-block;
  411. margin: 0;
  412. padding: var(--admin-space-xs) 0;
  413. letter-spacing: -0.025em;
  414. color: var(--admin-color-primary-active);
  415. font-size: var(--admin-font-size-l);
  416. font-weight: var(--admin-font-weight-bold);
  417. line-height: 1.33333em;
  418. }
  419. }
  420. tr .form-item:not(:last-of-type) {
  421. margin-block-end: var(--admin-space-m);
  422. }
  423. /* Fixes paragraphs extending beyond layout */
  424. .ck.ck-toolbar.ck-toolbar_grouping > .ck-toolbar__items {
  425. flex-wrap: wrap;
  426. }
  427. }
  428. .gin-layer-wrapper .views-table {
  429. margin-block-start: 0;
  430. }
  431. table td.field-plugin-summary-cell {
  432. vertical-align: middle;
  433. }
  434. table .views-field.views-field-operations {
  435. text-align: end;
  436. }

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