views-ui.pcss.css

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

Views UI styling.

File

core/themes/default_admin/css/components/views-ui.pcss.css

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

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