views-ui.css

Same filename in this branch
  1. main core/themes/claro/css/components/views-ui.css
  2. main core/themes/admin/css/components/views-ui.css
Same filename and directory in other branches
  1. 10 core/themes/claro/css/components/views-ui.css
  2. 11.x core/themes/claro/css/components/views-ui.css
  3. 9 core/themes/seven/css/components/views-ui.css
  4. 9 core/themes/claro/css/components/views-ui.css
  5. 8.9.x core/themes/seven/css/components/views-ui.css
  6. 8.9.x core/themes/claro/css/components/views-ui.css
  7. 11.x core/themes/admin/css/components/views-ui.css
  8. 11.x core/themes/default_admin/css/components/views-ui.css

Views UI styling.

File

core/themes/default_admin/css/components/views-ui.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. * Views UI styling.
  10. */
  11. /* @group Views admin */
  12. .views-admin {
  13. a:hover {
  14. -webkit-text-decoration: none;
  15. text-decoration: none;
  16. }
  17. a.button {
  18. margin-block: 0;
  19. margin-inline-end: 0;
  20. }
  21. /* Links and lists */
  22. .links {
  23. margin: 0;
  24. list-style: none outside none;
  25. li {
  26. padding-inline-end: 0;
  27. }
  28. }
  29. .button .links li {
  30. padding-inline-end: 0.75rem;
  31. }
  32. .item-list ul {
  33. margin: 0;
  34. padding: 0;
  35. }
  36. /* Icons */
  37. .icon {
  38. width: 1rem;
  39. height: 1rem;
  40. }
  41. .icon,
  42. .icon-text {
  43. background-image: url(../../../../modules/views_ui/images/sprites.png);
  44. background-repeat: no-repeat;
  45. background-attachment: scroll;
  46. background-position: top left;
  47. &:dir(rtl) {
  48. background-position: top right;
  49. }
  50. }
  51. a.icon {
  52. border: 1px solid #ddd;
  53. border-radius: 0.25rem;
  54. background:
  55. linear-gradient(-90deg, #fff 0, #e8e8e8 100%) no-repeat,
  56. repeat-y;
  57. box-shadow: 0 0 0 rgb(0, 0, 0, 0.3333) inset;
  58. &:hover {
  59. border-color: #d0d0d0;
  60. box-shadow: 0 0 1px rgb(0, 0, 0, 0.3333) inset;
  61. }
  62. &:active {
  63. border-color: #c0c0c0;
  64. }
  65. }
  66. span.icon {
  67. position: relative;
  68. float: inline-start;
  69. }
  70. .icon.compact {
  71. display: block;
  72. overflow: hidden;
  73. text-indent: -624.9375rem;
  74. direction: ltr;
  75. }
  76. /* Targets any element with an icon -> text combo */
  77. .icon-text {
  78. padding-inline-start: 1.1875rem;
  79. }
  80. .icon.linked {
  81. background-position: center -153px;
  82. }
  83. .icon.unlinked {
  84. background-position: center -195px;
  85. }
  86. .icon.delete {
  87. background-position: center -52px;
  88. }
  89. a.icon.delete {
  90. background-position:
  91. center -52px,
  92. top left;
  93. &:dir(rtl) {
  94. background-position:
  95. center -52px,
  96. top right;
  97. }
  98. }
  99. .icon.rearrange {
  100. background-position: center -111px;
  101. }
  102. a.icon.rearrange {
  103. background-position:
  104. center -111px,
  105. top left;
  106. &:dir(rtl) {
  107. background-position:
  108. center -111px,
  109. top right;
  110. }
  111. }
  112. .icon.add {
  113. background: none;
  114. &::before {
  115. content: "+";
  116. font-size: var(--admin-font-size-m);
  117. line-height: 0.1;
  118. }
  119. }
  120. /* Details */
  121. details details {
  122. margin-bottom: 0;
  123. }
  124. details.box-padding {
  125. border: none;
  126. }
  127. /* Form items */
  128. .form-item {
  129. margin-top: 0.5625rem;
  130. padding-top: 0;
  131. padding-bottom: 0;
  132. }
  133. .container-inline .form-item {
  134. margin-block: var(--admin-space-density-s);
  135. }
  136. .form-type-checkbox {
  137. margin-top: 0.375rem;
  138. }
  139. .form-checkbox,
  140. .form-radio {
  141. vertical-align: baseline;
  142. }
  143. /* Hide 'remove' checkboxes. */
  144. .views-remove-checkbox {
  145. display: none;
  146. }
  147. .form-textarea-wrapper,
  148. .form-item-options-content {
  149. width: 100%;
  150. }
  151. /* Indent form elements so they're directly underneath the label of the checkbox that reveals them */
  152. .form-type-checkbox + .form-wrapper {
  153. margin-inline-start: 1rem;
  154. }
  155. /* Sizes the labels of checkboxes and radio buttons to the height of the text. */
  156. .form-type-checkbox label,
  157. .form-type-radio label {
  158. line-height: 2;
  159. }
  160. .unit-title {
  161. margin-top: 1.125rem;
  162. margin-bottom: 0;
  163. font-size: 0.9375rem;
  164. line-height: 1.6154;
  165. }
  166. /* View list */
  167. .view-changed {
  168. margin-bottom: 1.3125rem;
  169. }
  170. /* Display edit form actions */
  171. .form-edit {
  172. .form-actions,
  173. .field-actions {
  174. margin-top: 0;
  175. padding: var(--admin-space-s) var(--admin-space-m);
  176. border-right: 1px solid var(--admin-color-border);
  177. border-bottom: 1px solid var(--admin-color-border);
  178. border-left: 1px solid var(--admin-color-border);
  179. background-color: var(--admin-color-bg-surface-nested);
  180. }
  181. }
  182. .label--separator.label--separator {
  183. margin-inline: var(--admin-space-xs);
  184. }
  185. /* Filter rearrange grouping */
  186. .group-populated {
  187. display: none;
  188. }
  189. td.group-title {
  190. font-weight: bold;
  191. }
  192. .group-message .form-submit,
  193. .views-remove-group-link,
  194. .views-add-group {
  195. float: inline-end;
  196. clear: both;
  197. }
  198. .views-operator-label {
  199. position: absolute;
  200. z-index: 1;
  201. bottom: -0.8125rem;
  202. padding: 0.5px 0.375rem;
  203. text-transform: uppercase;
  204. border: 1px solid var(--admin-color-border);
  205. background: #fff;
  206. font-weight: bold;
  207. font-style: italic;
  208. }
  209. .grouped-description,
  210. .exposed-description {
  211. float: inline-start;
  212. padding-block-start: 0.1875rem;
  213. padding-inline-end: 0.625rem;
  214. }
  215. /* Live preview */
  216. .preview-submit-wrapper {
  217. display: inline-block;
  218. }
  219. .form-item--live-preview {
  220. vertical-align: top;
  221. }
  222. /* Messages */
  223. .messages {
  224. margin-bottom: 1.125rem;
  225. line-height: 1.4555;
  226. }
  227. /* Dropbuttons (with JS enabled) */
  228. .js & .dropbutton-wrapper .dropbutton .dropbutton-action > .ajax-progress-throbber {
  229. position: absolute;
  230. z-index: 2;
  231. top: -1px;
  232. inset-inline-end: -0.3125rem;
  233. }
  234. pre {
  235. margin-block: 0;
  236. white-space: pre-wrap;
  237. }
  238. }
  239. /* @end */
  240. .views-admin-dependent .form-item {
  241. margin-block: 0.375rem;
  242. }
  243. /* @end */
  244. /* @group View list */
  245. .views-ui-view-name h3 {
  246. margin: 0.25em 0;
  247. font-weight: bold;
  248. }
  249. .views-ui-view-displays ul {
  250. margin-inline: 0;
  251. padding-inline: 0;
  252. list-style: none;
  253. }
  254. .views-list-section {
  255. margin-bottom: 2em;
  256. }
  257. /* These header classes are ambiguous and should be scoped to th elements */
  258. .views-ui-name {
  259. width: 20%;
  260. }
  261. .views-ui-description {
  262. width: 30%;
  263. }
  264. .views-ui-machine-name {
  265. width: 15%;
  266. }
  267. .views-ui-displays {
  268. width: 25%;
  269. }
  270. .views-ui-operations {
  271. width: 10%;
  272. }
  273. .form-item-description-enable + .form-item-description {
  274. margin-top: 0;
  275. }
  276. .form-item-description-enable label {
  277. font-weight: bold;
  278. }
  279. .form-item-page-create label,
  280. .form-item-block-create label,
  281. .form-item-rest-export-create label {
  282. font-weight: bold;
  283. }
  284. /* This makes the form elements after the "Display Format" label flow underneath the label */
  285. .form-item-page-style-style-plugin > label,
  286. .form-item-block-style-style-plugin > label {
  287. display: block;
  288. }
  289. .views-attachment .options-set label {
  290. font-weight: normal;
  291. }
  292. /* @end */
  293. /* @group Views display layout */
  294. .views-displays {
  295. padding-bottom: 2.25rem;
  296. border: 1px solid var(--admin-color-border);
  297. border-radius: var(--admin-radius-l);
  298. }
  299. .views-display-top {
  300. position: relative;
  301. display: flex;
  302. flex-wrap: wrap;
  303. justify-content: space-between;
  304. padding-block: var(--admin-space-m) var(--admin-space-xs);
  305. padding-inline: var(--admin-space-s);
  306. border: 0 none;
  307. border-radius: var(--admin-radius-l);
  308. background-color: var(--admin-color-bg-header);
  309. .dropbutton-wrapper {
  310. inset-block-start: 1.25rem;
  311. inset-inline-end: var(--admin-space-l);
  312. }
  313. }
  314. .edit-display-settings {
  315. margin: var(--admin-space-l) var(--admin-space-l) 0 var(--admin-space-l);
  316. }
  317. .edit-display-settings-top.views-ui-display-tab-bucket {
  318. position: relative;
  319. display: flex;
  320. flex-wrap: wrap;
  321. justify-content: space-between;
  322. margin: 0 0 var(--admin-space-l);
  323. padding: 0;
  324. border-bottom: none;
  325. line-height: 1.25rem;
  326. .views-display-setting {
  327. padding: 0.125rem 0 0;
  328. }
  329. }
  330. .views-display-column {
  331. box-sizing: border-box;
  332. border: 1px solid var(--admin-color-border);
  333. border-radius: var(--admin-radius-2xs);
  334. box-shadow: var(--details-box-shadow);
  335. & +
  336. }
  337. .views-display-deleted {
  338. & > details > summary,
  339. & .details-wrapper > .views-ui-display-tab-bucket > *,
  340. & .views-display-columns {
  341. opacity: 0.25;
  342. }
  343. }
  344. .views-display-disabled {
  345. & > details > summary,
  346. & .details-wrapper > .views-ui-display-tab-bucket > *,
  347. & .views-display-columns {
  348. opacity: 0.5;
  349. }
  350. }
  351. .views-display-tab .details-wrapper > .views-ui-display-tab-bucket .actions {
  352. opacity: 1;
  353. }
  354. .views-edit-view {
  355. margin-bottom: 0.9375rem;
  356. .unit-title {
  357. margin-block-start: 0;
  358. margin-block-end: var(--admin-space-m);
  359. /* Duplicated from h1/h2/h3 styles in _body.scss (was @extend h2). */
  360. letter-spacing: -0.025em;
  361. font-size: var(--admin-font-size-h2);
  362. font-weight: var(--admin-font-weight-normal);
  363. }
  364. &.disabled {
  365. .views-displays {
  366. background-color: transparent;
  367. }
  368. .views-display-column {
  369. opacity: 0.75;
  370. background: transparent;
  371. }
  372. }
  373. }
  374. /* @end */
  375. /* @group Attachment buckets */
  376. .views-ui-display-tab-bucket {
  377. position: relative;
  378. margin: 0;
  379. padding-block: 0 var(--admin-space-xs);
  380. border-bottom: 1px solid var(--admin-color-border);
  381. line-height: 1.25rem;
  382. &:last-of-type {
  383. margin-bottom: 0;
  384. border-bottom: none;
  385. }
  386. & +
  387. &.access {
  388. padding-top: 0;
  389. }
  390. &.page-settings {
  391. border-bottom: medium none;
  392. }
  393. .links {
  394. padding: 2px 0.375rem 0.25rem;
  395. li + li {
  396. margin-inline-start: 0.1875rem;
  397. }
  398. }
  399. .views-ui-display-tab-bucket__title {
  400. margin: 0;
  401. padding: var(--admin-space-m);
  402. text-transform: none;
  403. color: var(--admin-color-text-loud);
  404. font-size: var(--admin-font-size-xl);
  405. font-weight: var(--admin-font-weight-semibold);
  406. }
  407. .views-display-setting {
  408. display: flex;
  409. flex-wrap: wrap;
  410. padding: var(--admin-space-xs) var(--admin-space-m);
  411. color: var(--admin-color-text);
  412. font-size: var(--admin-font-size-s);
  413. }
  414. .views-group-text {
  415. margin-block: 0.375rem;
  416. }
  417. .dropbutton-wrapper {
  418. inset-block-start: 0.875rem;
  419. inset-inline-end: var(--admin-space-m);
  420. }
  421. }
  422. /** Applies an overridden(italics) font style to overridden buckets.
  423. * The better way to implement this would be to add the overridden class
  424. * to the bucket header when the bucket is overridden and style it as a
  425. * generic icon classed element. For the moment, we'll style the bucket
  426. * header specifically with the overridden font style.
  427. */
  428. .views-ui-display-tab-setting.overridden,
  429. .views-ui-display-tab-bucket.overridden .views-ui-display-tab-bucket__title {
  430. font-style: italic;
  431. }
  432. .views-ui-display-tab-actions.views-ui-display-tab-bucket .views-display-setting {
  433. background-color: transparent;
  434. }
  435. .views-display-setting .label {
  436. margin-inline-end: var(--admin-space-xs);
  437. white-space: nowrap;
  438. }
  439. /**
  440. * Position dropbuttons with flexbox instead after the dropbuttons have been
  441. * converted to splitbuttons.
  442. *
  443. * @see https://www.drupal.org/project/drupal/issues/3134107
  444. * @see https://www.drupal.org/project/drupal/issues/1899236
  445. */
  446. .edit-display-settings-top.views-ui-display-tab-bucket .dropbutton-wrapper {
  447. top: 0.8125rem;
  448. inset-inline-end: var(--admin-space-s);
  449. }
  450. /* Styles on devices with touchevents. */
  451. html:not(.no-touchevents) {
  452. .views-ui-display-tab-bucket__header--actions {
  453. padding: var(--admin-space-l) var(--admin-space-xs);
  454. }
  455. .edit-display-settings-top.views-ui-display-tab-bucket {
  456. padding: var(--admin-space-m) var(--admin-space-xs);
  457. }
  458. }
  459. /* @end */
  460. /* @group Filter rearrange grouping */
  461. .views-ui-dialog td.group-title {
  462. height: 1px;
  463. margin: 0;
  464. padding: 0;
  465. span {
  466. display: block;
  467. overflow: hidden;
  468. height: 1px;
  469. }
  470. }
  471. /* @end */
  472. /* @group Filter form */
  473. .views-ui-rearrange-filter-form {
  474. table {
  475. border-collapse: collapse;
  476. }
  477. :is(th, td) {
  478. vertical-align: top;
  479. }
  480. tr {
  481. border-bottom: 0;
  482. &:first-of-type {
  483. border-top: 0.0625rem solid var(--admin-color-border);
  484. }
  485. &:not(.draggable):hover {
  486. background: inherit;
  487. }
  488. &[id^="views-row"] {
  489. border-inline-end: 1px solid #cdcdcd;
  490. }
  491. td:last-child {
  492. border-inline-end: medium none;
  493. }
  494. &.drag td {
  495. background-color: #fe7 !important;
  496. }
  497. &.drag-previous td {
  498. background-color: #ffb !important;
  499. }
  500. }
  501. td {
  502. & > .form-item {
  503. display: revert;
  504. }
  505. &[rowspan] {
  506. border: 1px solid var(--admin-color-border);
  507. }
  508. }
  509. [id^="views-row"] {
  510. border: medium none;
  511. }
  512. .draggable td {
  513. vertical-align: middle;
  514. border-bottom: 0.0625rem solid var(--admin-color-border);
  515. }
  516. .group-empty {
  517. border-bottom: 1px solid #cdcdcd;
  518. }
  519. .filter-group-operator-row {
  520. border-right: 1px solid transparent !important;
  521. border-left: 1px solid transparent !important;
  522. }
  523. .action-links {
  524. float: inline-start;
  525. margin: 0 0 1em;
  526. padding: 0;
  527. }
  528. .tabledrag-cell {
  529. position: relative;
  530. }
  531. }
  532. /* @end */
  533. /* @group Live preview */
  534. .view-preview-form {
  535. position: relative;
  536. .form-item--view-args,
  537. .form-actions,
  538. .field-actions {
  539. margin-top: 0.3125rem;
  540. }
  541. .form-actions,
  542. .field-actions {
  543. vertical-align: top;
  544. }
  545. .form-actions {
  546. align-items: flex-end;
  547. }
  548. .views-bulk-actions__item {
  549. margin-block-start: 0;
  550. }
  551. .arguments-preview {
  552. margin-inline-start: 0;
  553. font-size: 1em;
  554. }
  555. .form-item--view-args {
  556. margin-top: var(--admin-space-m);
  557. }
  558. .arguments-preview,
  559. .form-item--view-args {
  560. margin-inline: var(--admin-space-m);
  561. }
  562. .form-item--live-preview {
  563. position: static !important;
  564. top: 0.6875rem;
  565. inset-inline-end: var(--admin-space-s);
  566. margin-block-start: var(--admin-space-l);
  567. margin-inline-start: 2px;
  568. }
  569. .preview-section {
  570. padding: var(--admin-space-m);
  571. border: 1px dashed var(--admin-color-border);
  572. }
  573. .view-filters .preview-section {
  574. display: flex;
  575. flex-wrap: wrap;
  576. }
  577. @media screen and (min-width: 45em) {
  578. /* 720px */
  579. .form-type-textfield .description {
  580. white-space: nowrap;
  581. }
  582. }
  583. }
  584. .views-preview-wrapper {
  585. border: 1px solid #ccc;
  586. }
  587. .view-preview-form__title {
  588. margin-top: 0;
  589. padding: 0;
  590. border-block-end: 0 none;
  591. background-color: transparent;
  592. }
  593. .views-live-preview {
  594. padding: 0;
  595. .views-query-info {
  596. overflow: auto;
  597. }
  598. .section-title {
  599. display: inline-block;
  600. margin-block: 0;
  601. color: var(--admin-color-text);
  602. font-size: 0.8125rem;
  603. font-weight: normal;
  604. line-height: 1.6154;
  605. }
  606. .view > * {
  607. margin-top: var(--admin-space-m);
  608. }
  609. .preview-section {
  610. margin: 0 -0.3125rem;
  611. padding: 0.1875rem 0.3125rem;
  612. border: 1px dashed #dedede;
  613. }
  614. li.views-row + li.views-row {
  615. margin-top: 1.125rem;
  616. }
  617. /* The div.views-row is intentional and excludes li.views-row, for example */
  618. div.views-row + div.views-row {
  619. margin-top: 2.25rem;
  620. }
  621. .gin-layer-wrapper {
  622. border-color: var(--admin-color-border);
  623. }
  624. }
  625. .views-query-info {
  626. pre {
  627. margin-top: 0;
  628. margin-bottom: 0;
  629. }
  630. table {
  631. margin: 0.625rem 0;
  632. border-spacing: 1px;
  633. border-collapse: separate;
  634. /* Fills the 1px cell spacing as a subtle grid; was white (harsh in dark mode). */
  635. border-color: var(--admin-color-bg-surface);
  636. border-radius: 0.4375rem;
  637. tr {
  638. background-color: var(--admin-color-bg-surface-nested);
  639. td {
  640. color: var(--admin-color-text);
  641. &:last-child {
  642. border: 0;
  643. }
  644. }
  645. }
  646. th,
  647. td {
  648. padding: var(--admin-space-xs) var(--admin-space-l);
  649. font-size: var(--admin-font-size-s);
  650. }
  651. }
  652. }
  653. /* @end */
  654. /* @group Modal dialog box */
  655. .views-filterable-options {
  656. .form-type-checkbox {
  657. padding: 0.3125rem 0.5rem;
  658. border-top: none;
  659. .description {
  660. margin-top: 0;
  661. margin-bottom: 0;
  662. }
  663. }
  664. }
  665. .filterable-option .form-item {
  666. margin-top: 0;
  667. margin-bottom: 0;
  668. }
  669. .views-filterable-options-controls {
  670. .form-item {
  671. width: 30%;
  672. margin: 0;
  673. margin-inline-start: 2%;
  674. }
  675. input,
  676. select {
  677. width: 100%;
  678. }
  679. }
  680. .views-ui-dialog.views-ui-dialog > .ui-dialog-content {
  681. padding: 0;
  682. }
  683. .views-ui-dialog {
  684. /* Form layout */
  685. .form--flex {
  686. display: flex;
  687. overflow: hidden;
  688. flex-wrap: wrap;
  689. }
  690. .form--inline {
  691. padding-block-start: 0;
  692. }
  693. /* Form items */
  694. .form-item {
  695. margin-block: var(--admin-space-m);
  696. }
  697. .form-item-selected {
  698. margin: 0;
  699. padding: 0.375rem 1rem;
  700. }
  701. .form-item:first-of-type.description {
  702. margin: 0 0 var(--admin-space-l) 0;
  703. padding-bottom: var(--admin-space-s);
  704. border-bottom: 0.0625rem solid var(--admin-color-border);
  705. font-weight: bold;
  706. }
  707. .form-item--fields-area-text-custom-removed {
  708. display: inline-block;
  709. margin-inline-end: var(--admin-space-2xs);
  710. }
  711. /* Form fields */
  712. .form-element {
  713. min-height: calc(((var(--input-padding-vertical--small) + var(--input-border-size)) * 2) + var(--input-line-height--small)); /* iOS. */
  714. padding: var(--input-padding-vertical--small) var(--input-padding-horizontal--small);
  715. font-size: var(--input-font-size--small);
  716. line-height: var(--input-line-height--small);
  717. }
  718. .form-element--type-select {
  719. padding-inline-end: calc(2rem - var(--input-border-size));
  720. background-position-y: 56%;
  721. }
  722. textarea {
  723. width: 100%;
  724. }
  725. /* Extra specificity to override dialog CSS. */
  726. .form-item__description[class] {
  727. max-width: none;
  728. }
  729. td .form-element {
  730. width: auto;
  731. }
  732. /* Booleans */
  733. .form-type--boolean {
  734. margin-inline: 0;
  735. .form-boolean {
  736. top: 0;
  737. float: none;
  738. margin: 0;
  739. margin-inline-end: 0.25rem;
  740. transform: none;
  741. }
  742. }
  743. .form-boolean-group .form-type--boolean {
  744. margin-top: 0.4em;
  745. margin-bottom: 0.4em;
  746. }
  747. /* So "remove" link appears next to the checkbox. */
  748. .draggable .form-type--checkbox {
  749. display: inline-block;
  750. margin: 0 0.25rem;
  751. }
  752. /* Buttons */
  753. input.form-submit,
  754. a.button {
  755. margin-block: 0;
  756. margin-inline-end: 0;
  757. }
  758. /* Add form selection list */
  759. .views-add-form-selected {
  760. padding: 0 1rem;
  761. > div {
  762. display: block;
  763. margin: 0;
  764. padding: 0.3rem 0.8rem;
  765. border: 1px solid #dedfe4;
  766. border-radius: 2px 2px 0 0;
  767. box-shadow: 0 4px 20px rgb(0, 0, 0, 0.1);
  768. }
  769. .views-selected-options {
  770. display: inline;
  771. }
  772. }
  773. /* Top offset banner */
  774. .views-offset-top:not(:empty) {
  775. position: relative;
  776. padding: var(--admin-space-s) var(--admin-space-m) var(--admin-space-xs);
  777. background-color: var(--admin-color-bg-surface-nested);
  778. &::after {
  779. position: absolute;
  780. bottom: 0;
  781. left: 0;
  782. width: 100%;
  783. height: 0.1875rem;
  784. content: "";
  785. background: linear-gradient(to bottom, rgb(80, 81, 86, 0.11) 0%, rgb(18, 19, 20, 0.02) 49%, rgb(18, 19, 20, 0) 100%);
  786. }
  787. }
  788. .views-offset-top {
  789. > * {
  790. margin: 0;
  791. }
  792. .form-item {
  793. max-width: 40%;
  794. margin: 0 var(--admin-space-s) var(--admin-space-s) 0;
  795. }
  796. }
  797. /* Misc */
  798. .tabledrag-toggle-weight-wrapper {
  799. margin: 0 0 var(--admin-space-m) 0;
  800. }
  801. details .item-list {
  802. padding-inline-start: 2em;
  803. }
  804. .views-override:not(:empty) {
  805. border-block-end: 0 none;
  806. background-color: var(--admin-color-bg);
  807. }
  808. .views-filterable-options {
  809. margin-bottom: 0.625rem;
  810. }
  811. .scroll {
  812. overflow: auto;
  813. padding: 1em;
  814. }
  815. /* Don't let the messages overwhelm the modal */
  816. .views-messages {
  817. overflow: auto;
  818. max-height: 12.5rem;
  819. }
  820. }
  821. [id^="views-ui-add-handler-form"] .scroll {
  822. padding-block: 0;
  823. }
  824. .views-ui-dialog.views-ui-dialog-scroll .ui-dialog-titlebar {
  825. border: none;
  826. }
  827. /* @end */
  828. /* @group Messages */
  829. .views-messages .messages-list,
  830. .views-messages .messages-list__item {
  831. margin-block: 0;
  832. }
  833. /* @end */
  834. /* @group Forms */
  835. /**
  836. * Claro positions the summary absolutely, but does not have a way to ignore
  837. * details without a summary so we make one up.
  838. *
  839. * @todo Neither a fieldset without legend nor a details without summary is
  840. * valid HTML markup in any way. Refactor Views UI to not produce such invalid
  841. * markup.
  842. */
  843. details.fieldset-no-legend {
  844. padding-top: 0;
  845. }
  846. /* @group Dependent options */
  847. /* This is necessary to supercede the Claro .form-item
  848. * reset declaration that sets the margin to zero.
  849. */
  850. .form-item-options-expose-required,
  851. .form-item-options-expose-label,
  852. .form-item-options-expose-field-identifier,
  853. .form-item-options-expose-description {
  854. margin-block: 0.375rem;
  855. margin-inline-start: 1.5em;
  856. }
  857. .views-admin-dependent {
  858. .form-item .form-item,
  859. .form-type-checkboxes,
  860. .form-type-radios {
  861. margin-block: 0.375rem;
  862. }
  863. .form-type-radio,
  864. .form-radios .form-item {
  865. margin-block: 2px;
  866. }
  867. }
  868. .views-display-top__extra-actions-wrapper {
  869. margin: 0 var(--admin-space-xs);
  870. }
  871. /* @group Attachment details */
  872. #edit-display-settings-title {
  873. color: var(--admin-color-primary);
  874. }
  875. #edit-displays {
  876. .views-display-top {
  877. border-end-start-radius: 0;
  878. border-end-end-radius: 0;
  879. }
  880. }
  881. .edit-display-settings {
  882. margin: 0;
  883. padding: var(--admin-space-l);
  884. }
  885. /* @group Attachment details tabs
  886. *
  887. * The tabs that switch between sections
  888. *
  889. * @todo this group contains lots of duplicates from core styles because Claro
  890. * has its custom markup for views tabs. Some of these could be removed after
  891. * https://www.drupal.org/node/3051605 has been solved.
  892. */
  893. .views-tabs {
  894. display: flex;
  895. overflow: visible;
  896. flex-wrap: wrap;
  897. margin: 0;
  898. margin-inline-end: var(--admin-space-l);
  899. padding: 0;
  900. list-style: none;
  901. text-align: end;
  902. border-bottom: 0 none;
  903. .views-display-deleted-link {
  904. -webkit-text-decoration: line-through;
  905. text-decoration: line-through;
  906. }
  907. li.add ul.action-list li {
  908. margin: 0;
  909. }
  910. li {
  911. margin-block: 0 0.3125rem;
  912. margin-inline: 0.375rem 0.3125rem;
  913. &,
  914. &.is-active {
  915. width: auto;
  916. padding: 0;
  917. border: 0;
  918. background: transparent;
  919. }
  920. &:hover {
  921. padding-inline-start: 0;
  922. border: 0;
  923. }
  924. & + li {
  925. border-top: 0;
  926. }
  927. }
  928. a {
  929. display: inline-block;
  930. padding: var(--admin-space-xs) var(--admin-space-m);
  931. border: var(--input-border-size) solid #cbcbcb;
  932. border-radius: 0.4375rem;
  933. font-size: small;
  934. line-height: 1.3333;
  935. &.views-display-disabled-link {
  936. padding-inline-start: var(--admin-space-l);
  937. &::before {
  938. display: inline-block;
  939. width: var(--admin-space-l);
  940. height: var(--admin-space-s);
  941. margin-inline-start: calc(var(--admin-space-m) * -1);
  942. content: "";
  943. background-color: currentColor;
  944. mask-image: var(--admin-icon-hide);
  945. mask-repeat: no-repeat;
  946. mask-position: center left;
  947. mask-size: contain;
  948. &:dir(rtl) {
  949. mask-position: center right;
  950. }
  951. }
  952. }
  953. }
  954. /* Display a red border if the display doesn't validate. */
  955. li.is-active a.is-active.error,
  956. .error {
  957. padding: 0.5rem;
  958. border: 2px solid #ed541d;
  959. }
  960. a:focus {
  961. outline: none;
  962. }
  963. li a {
  964. padding: var(--admin-space-xs) var(--admin-space-m);
  965. color: var(--admin-color-primary);
  966. border: 2px solid var(--admin-color-primary);
  967. border-radius: var(--admin-radius-xs);
  968. background: transparent;
  969. font-size: var(--admin-font-size-xs);
  970. font-weight: var(--admin-font-weight-heavy);
  971. .icon.add {
  972. display: block;
  973. }
  974. }
  975. li a:hover,
  976. li.is-active a,
  977. li.is-active a.is-active {
  978. color: var(--admin-color-bg);
  979. border-color: transparent;
  980. background: var(--admin-color-primary);
  981. }
  982. .add {
  983. position: relative;
  984. a {
  985. padding: var(--admin-space-xs) var(--admin-space-m);
  986. color: var(--admin-color-primary);
  987. border: 2px solid var(--admin-color-primary);
  988. border-radius: var(--admin-radius-xs);
  989. background: transparent;
  990. font-size: var(--admin-font-size-xs);
  991. font-weight: var(--admin-font-weight-heavy);
  992. &:hover,
  993. &:focus {
  994. color: var(--admin-color-bg);
  995. border-color: transparent;
  996. background: var(--admin-color-primary);
  997. }
  998. &:focus {
  999. outline: none;
  1000. box-shadow:
  1001. 0 0 0 1px var(--admin-color-focus-border),
  1002. 0 0 0 4px var(--admin-color-focus);
  1003. }
  1004. }
  1005. &.open a {
  1006. color: var(--admin-color-primary);
  1007. background: var(--admin-color-bg-surface-nested);
  1008. &:hover,
  1009. &:focus,
  1010. &:active {
  1011. color: var(--admin-color-primary);
  1012. }
  1013. }
  1014. /* Hide core icon, added via JS that isn't accessible via theme function. */
  1015. .icon.add {
  1016. display: none;
  1017. }
  1018. }
  1019. .action-list {
  1020. position: absolute;
  1021. z-index: 50;
  1022. margin: 0;
  1023. background: var(--admin-color-bg-raised);
  1024. box-shadow: 0 1px 2px var(--admin-color-shadow-button);
  1025. inset-block-start: 2.25rem;
  1026. inset-inline-start: -2px;
  1027. li {
  1028. /* @todo are these styles */
  1029. display: block;
  1030. border: none;
  1031. background-color: transparent;
  1032. input.button {
  1033. width: 100%;
  1034. text-align: start;
  1035. border: none !important;
  1036. box-shadow: none;
  1037. line-height: 1.2;
  1038. }
  1039. &:hover,
  1040. &:focus,
  1041. &:active {
  1042. &,
  1043. input.button {
  1044. color: var(--admin-color-text-on-primary);
  1045. background: var(--admin-color-primary);
  1046. }
  1047. }
  1048. }
  1049. li:first-child {
  1050. border-width: 1px 1px 0;
  1051. border-radius: 0 var(--admin-radius-2xs) 0 0; /* LTR */
  1052. &:dir(rtl) {
  1053. border-radius: 0 0 0 var(--admin-radius-2xs);
  1054. }
  1055. }
  1056. }
  1057. }
  1058. .views-tabs .action-list li:last-child,
  1059. .views-displays .action-list li:last-child {
  1060. padding-bottom: 0.4rem;
  1061. border-width: 0 1px 1px;
  1062. border-bottom-right-radius: var(--admin-radius-l);
  1063. border-bottom-left-radius: var(--admin-radius-l);
  1064. }
  1065. .views-tabs__action-list-button {
  1066. width: 100%;
  1067. margin: 0;
  1068. padding: var(--admin-space-s) var(--admin-space-l);
  1069. text-align: left;
  1070. border: medium none;
  1071. border-radius: 0;
  1072. background: none repeat scroll 0 0 transparent;
  1073. font-weight: normal;
  1074. &.button:hover,
  1075. &.button:focus {
  1076. /* Fixed white: text on the blue (--admin-color-link) button fill — readable
  1077. in both modes, so not a mode-aware surface token. */
  1078. color: var(--admin-color-white);
  1079. background-color: var(--admin-color-link);
  1080. }
  1081. /* Remove outline provided by default styling */
  1082. &:not(:focus) {
  1083. box-shadow: none;
  1084. }
  1085. /* JS moves Views action buttons under a secondary tabs container, which causes
  1086. a large layout shift. We mitigate this by using animations to temporarily hide
  1087. the buttons, but they will appear after a set amount of time just in case the JS
  1088. is loaded but does not properly run. */
  1089. @media (scripting: enabled) {
  1090. &:not(.views-tabs--secondary *) {
  1091. animation-name: appear;
  1092. animation-duration: 0.1s;
  1093. /* Buttons will be hidden for the amount of time in the animation-delay if
  1094. not moved. Note this is the approximate time to download the views
  1095. aggregate CSS with slow 3G. */
  1096. animation-delay: 5s;
  1097. animation-iteration-count: 1;
  1098. animation-fill-mode: backwards;
  1099. }
  1100. }
  1101. }
  1102. @keyframes appear {
  1103. from {
  1104. display: none;
  1105. }
  1106. to {
  1107. display: unset;
  1108. }
  1109. }
  1110. /* #3186729: Drupal 9.1 fix */
  1111. .views-ui-display-tab-bucket__header {
  1112. display: inline-flex;
  1113. justify-content: space-between;
  1114. box-sizing: border-box;
  1115. width: 100%;
  1116. padding-block: var(--admin-space-m) var(--admin-space-xs);
  1117. padding-inline: 0;
  1118. .views-ui-display-tab-bucket__title {
  1119. padding: 0 var(--admin-space-m);
  1120. }
  1121. .views-ui-display-tab-bucket__actions {
  1122. margin-inline-start: var(--admin-space-xs);
  1123. margin-inline-end: var(--admin-space-m);
  1124. }
  1125. }
  1126. .views-ui-display-tab-actions {
  1127. .views-ui-display-tab-setting {
  1128. padding: var(--admin-space-m);
  1129. }
  1130. }
  1131. /* @group Add view */
  1132. .form-item-page-create,
  1133. .form-item-block-create {
  1134. margin-top: 0.8125rem;
  1135. }
  1136. /* @group Modal dialog box
  1137. *
  1138. * The contents of the popup dialog on the views edit form.
  1139. */
  1140. .filterable-option .form-item.form-type-checkbox {
  1141. padding-top: 0.25rem;
  1142. /* This selector is aggressive because Claro's reset for .form-items is aggressive. */
  1143. padding-bottom: 0.25rem;
  1144. padding-inline-start: 0.25rem;
  1145. }
  1146. /* @group Grouping styles
  1147. *
  1148. * For grouping related form elements together, mainly used with exposed
  1149. * filters.
  1150. */
  1151. .views-config-group-region {
  1152. display: table;
  1153. margin: var(--admin-space-l) 0;
  1154. border: 0.0625rem solid var(--admin-color-border);
  1155. border-collapse: collapse;
  1156. .views-group-box {
  1157. position: relative;
  1158. display: table-cell;
  1159. padding: var(--admin-space-l);
  1160. border: 0.0625rem solid var(--admin-color-border);
  1161. }
  1162. .views-group-box--operator {
  1163. padding-inline-end: var(--admin-space-2xl);
  1164. border-inline-end-width: 0;
  1165. }
  1166. .views-group-box--value {
  1167. padding: 0;
  1168. border-inline-start-width: 0;
  1169. > .form-item {
  1170. margin-inline: var(--admin-space-2xl) var(--admin-space-l);
  1171. &::before {
  1172. position: absolute;
  1173. top: 0;
  1174. left: 0;
  1175. width: 0.0625rem;
  1176. height: 100%;
  1177. content: "";
  1178. border-inline-start: 0.0625rem solid var(--admin-color-border);
  1179. }
  1180. &::after {
  1181. position: absolute;
  1182. z-index: 1;
  1183. top: 3.8rem;
  1184. inset-inline-start: calc(var(--admin-space-m) * -1);
  1185. padding-block: 0 0.3rem;
  1186. padding-inline: 0.4rem 0.3rem;
  1187. content: ">";
  1188. color: var(--admin-color-text-soft);
  1189. border: 0.0625rem solid var(--admin-color-border);
  1190. background: #fff;
  1191. font-size: var(--admin-font-size-h1);
  1192. font-weight: bold;
  1193. line-height: var(--admin-font-size-h1);
  1194. }
  1195. }
  1196. }
  1197. }
  1198. .views-display-column,
  1199. .edit-display-settings-top.views-ui-display-tab-bucket {
  1200. margin-block-end: var(--admin-space-m);
  1201. border-color: var(--admin-color-border);
  1202. border-radius: var(--admin-radius-m);
  1203. box-shadow: none;
  1204. }
  1205. a.views-field-excluded {
  1206. color: var(--admin-color-text-disabled);
  1207. }
  1208. .views-filterable-options {
  1209. border-block-start: none;
  1210. }
  1211. .view-block-content .views-table {
  1212. margin-block-start: 0;
  1213. }
  1214. .views-display-columns {
  1215. display: grid;
  1216. gap: var(--admin-space-xl);
  1217. .details-wrapper {
  1218. margin: 0;
  1219. }
  1220. @media screen and (min-width: 60rem) {
  1221. display: grid;
  1222. grid-template-columns: 1fr 1fr 1fr;
  1223. }
  1224. }
  1225. /* @todo. This was in Gin's Views file. Might could move it. */
  1226. .system-modules,
  1227. .locale-translation-status-form {
  1228. tr.even,
  1229. tr.odd {
  1230. border-block-start: 1px solid var(--admin-color-border);
  1231. border-block-end: none;
  1232. background: none;
  1233. }
  1234. }
  1235. .system-modules td {
  1236. height: auto;
  1237. padding: var(--admin-space-m);
  1238. details summary {
  1239. background-color: transparent;
  1240. }
  1241. }
  1242. .machine-name-label {
  1243. color: var(--admin-color-text);
  1244. }
  1245. .machine-name-value {
  1246. color: var(--admin-color-text-loud);
  1247. }
  1248. .view-header {
  1249. margin-block-end: var(--admin-space-l);
  1250. }
  1251. .form-item--options-value-all {
  1252. display: none;
  1253. }
  1254. .js-only {
  1255. display: none;
  1256. }
  1257. html.js {
  1258. .js-only {
  1259. display: inherit;
  1260. }
  1261. span.js-only {
  1262. display: inline;
  1263. }
  1264. }

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