media-library.pcss.css

Same filename in this branch
  1. 11.x core/themes/claro/css/theme/media-library.pcss.css
  2. 11.x core/themes/admin/css/theme/media-library.pcss.css
  3. 11.x core/themes/default_admin/css/theme/media-library.pcss.css
Same filename and directory in other branches
  1. 10 core/themes/claro/css/theme/media-library.pcss.css
  2. 9 core/themes/claro/css/theme/media-library.pcss.css
  3. 8.9.x core/themes/claro/css/theme/media-library.pcss.css
/*
 * @file
 *
 * Styling for Media Library.
 */

@import "../base/media-queries.pcss.css";

/*
 * The field widget shown on the entity create page.
 */
.field--widget-media-library-widget {
  .media-library-item__preview {
    cursor: move;

    img {
      border-start-start-radius: 2px;
      border-start-end-radius: 2px;
    }
  }

  .js-media-library-item:only-child .media-library-item__preview {
    cursor: inherit;
  }
}

/**
 * Negative margins compensate for modal dialog padding and compensate for
 * positioning that would otherwise hide the active tab indicator on the start.
 */
#media-library-wrapper {
  display: flex;
  margin-inline: calc(-1 * var(--space-l));

  .messages-list,
  .messages {
    margin-block: 0 var(--space-l);
  }

  /* "Grid" and "Table" buttons. */
  .views-display-link {
    position: relative;
    margin: 0;
    padding-inline-start: 22px;
    white-space: nowrap;
    text-decoration: none;
    color: var(--gin-color-text);
    background-image: none;
    font-size: 15px;
    line-height: 16px;

    &::before {
      position: absolute;
      display: inline-block;
      width: 16px;
      height: 16px;
      content: "";
      background-color: var(--gin-color-text);
      inset-block-start: 1px;
      inset-inline-start: 0;
    }

    &.is-active {
      color: var(--gin-color-primary);
      font-weight: bold;

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

  .views-display-link-widget::before {
    mask-image: url("../../migration/media/icons/media-library/grid.svg");
  }

  .views-display-link-widget_table::before {
    mask-image: url("../../migration/media/icons/media-library/list.svg");
  }
}

#media-library-content {
  width: 100%;
  padding: 1em;
  border-color: var(--gin-border-color);
  border-inline-start: 0 none;
  outline: none;

  .media-library-menu + & {
    z-index: var(--vertical-tabs-menu--z-index);
    border-inline-start: var(--vertical-tabs-border);
    box-shadow: var(--vertical-tabs-shadow);
  }
}

/* Generic media add form styles. */
.media-library-add-form--without-input .form-item {
  margin-inline-end: 1rem;
}

.media-library-add-form__input-wrapper {
  .form-item--upload {
    margin-block-start: 0;
    margin-inline-end: 0;
  }

  .dropzone-enable .button {
    margin: 0;
  }
}

/* Form within media library that allows you to upload additional media. */
.media-library-add-form {
  .messages-list:has(.messages) {
    margin-block: var(--space-m);
  }

  .file-upload-help {
    margin: 8px 0 0;
  }
}

/* Style the media add oEmbed form. */
.media-library-add-form--oembed {
  .media-library-add-form__input-wrapper {
    display: flex;
    align-items: center;

    @media screen and (max-width: 37.5em) {
      display: block;
    }
  }

  &.media-library-add-form--without-input .form-item-url {
    margin-block-end: 0;
  }
}

.media-library-add-form-oembed-url {
  width: 100%;
}

.media-library-select-all {
  flex-basis: 100%;
  box-sizing: border-box;
  width: 100%;
  color: var(--gin-color-title);
  border-block-end: 1px solid var(--gin-border-color-table-header);
  border-radius: 0;
  background: var(--gin-bg-layer);
  margin-block: 0 10px;
  margin-inline: 0 8px;
  padding-block: 0 var(--space-m);
  padding-inline: var(--space-m);

  input {
    margin-inline-end: 10px;
  }
}

.media-library-add-form__selected-media .details-wrapper,
.media-library-view .form--inline {
  display: flex;
  flex-wrap: wrap;
}

.media-library-views-form__header {
  flex-basis: 100%;

  .form-item {
    margin-inline-end: 8px;
  }
}

.media-library-views-form__rows {
  display: grid;
  gap: 10px;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
}

.media-library-widget-modal {
  /* By default, the dialog is too narrow to be usable. @see Drupal.ckeditor5.openDialog() */
  &.ui-dialog--narrow {
    min-width: min(75%, 1500px);
  }

  .ui-dialog-buttonpane {
    display: flex;
    flex-direction: column;
    align-items: center;

    .form-actions,
    .field-actions {
      flex: 1;
    }

    .form-actions {
      display: flex;
      flex-direction: row;
      justify-content: flex-end;
      margin-block-start: 0;
      white-space: nowrap;

      .button:not(:last-child) {
        margin-inline-end: var(--space-xs);
      }
    }

    .media-library-selected-count {
      flex-grow: 1;
      margin-block-end: var(--space-s);

      /* cspell:disable-next-line */
      @media (--admin-xsmall) {
        margin-block-end: 0;
        margin-inline-start: 0;
      }
    }

    /* cspell:disable-next-line */
    @media (--admin-xsmall) {
      flex-direction: row;
    }
  }
}

/*
 * Selection widget area shown on the parent form after items are
 * inserted.
 */
.media-library-selection {
  display: grid;
  gap: 10px;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
}

/* Media library widget styles. */
.media-library-widget {
  position: relative;
}

fieldset.media-library-widget {
  .media-library-edit__link {
    margin: var(--space-xs);
  }
}

.media-library-widget__toggle-weight {
  position: absolute;
  inset-block-start: var(--space-s);
  inset-inline-end: var(--space-m);
  text-decoration: none;

  .fieldset.media-library-widget & {
    padding: var(--space-xs);
    font-size: var(--font-size-xxs);
    line-height: 1;
  }
}

/* The <li> that is shown after a media item has been uploaded */
.media-library-add-form__media {
  position: relative;
  display: flex;
  gap: 20px;
  padding: 10px;
  border-block-end: 1px solid #c0c0c0;

  /* Do not show the bottom border and padding for the last item. */
  &:last-child {
    padding-block-end: 0;
    border-block-end: 0;
  }
}

/*
 * Only renders after a file is uploaded via the add-form. Coverage matrix never
 * completed an upload.
 */
.media-library-add-form__preview {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 220px;
  background: var(--gin-bg-app);
}

.media-library-add-form__fields {
  display: grid;
  flex-grow: 1;
  gap: 10px;

  .form-item,
  .form-managed-file__meta {
    margin-block: 0;
  }
}

.media-library-add-form__remove-button {
  position: absolute;
  inset-inline-end: 0;

  &.button--extrasmall {
    margin: var(--space-xs) 0;
  }
}

.media-library-selected-count {
  margin: 0 var(--space-l);
  color: var(--gin-color-text-light);
}

.media-library-widget-empty-text {
  margin-inline: 0;
  color: var(--gin-color-text-light);
}

.media-library-open-button {
  margin-block-start: 0;
}

.media-library-view {
  display: grid;
  gap: var(--space-l);

  .view-header {
    display: flex;
    flex-wrap: wrap;
    gap: 15px;
    padding: var(--space-m);
    text-decoration: none;
    color: var(--gin-color-text);
    border-radius: var(--gin-border-m);
    background: var(--gin-bg-layer3);
    box-shadow: var(--gin-shadow-l1);
  }

  .views-exposed-form {
    margin-block: 0;
  }
}

File

core/themes/default_admin/css/components/media-library.pcss.css

View source
  1. /*
  2. * @file
  3. *
  4. * Styling for Media Library.
  5. */
  6. @import "../base/media-queries.pcss.css";
  7. /*
  8. * The field widget shown on the entity create page.
  9. */
  10. .field--widget-media-library-widget {
  11. .media-library-item__preview {
  12. cursor: move;
  13. img {
  14. border-start-start-radius: 2px;
  15. border-start-end-radius: 2px;
  16. }
  17. }
  18. .js-media-library-item:only-child .media-library-item__preview {
  19. cursor: inherit;
  20. }
  21. }
  22. /**
  23. * Negative margins compensate for modal dialog padding and compensate for
  24. * positioning that would otherwise hide the active tab indicator on the start.
  25. */
  26. #media-library-wrapper {
  27. display: flex;
  28. margin-inline: calc(-1 * var(--space-l));
  29. .messages-list,
  30. .messages {
  31. margin-block: 0 var(--space-l);
  32. }
  33. /* "Grid" and "Table" buttons. */
  34. .views-display-link {
  35. position: relative;
  36. margin: 0;
  37. padding-inline-start: 22px;
  38. white-space: nowrap;
  39. text-decoration: none;
  40. color: var(--gin-color-text);
  41. background-image: none;
  42. font-size: 15px;
  43. line-height: 16px;
  44. &::before {
  45. position: absolute;
  46. display: inline-block;
  47. width: 16px;
  48. height: 16px;
  49. content: "";
  50. background-color: var(--gin-color-text);
  51. inset-block-start: 1px;
  52. inset-inline-start: 0;
  53. }
  54. &.is-active {
  55. color: var(--gin-color-primary);
  56. font-weight: bold;
  57. &::before {
  58. background-color: var(--gin-color-primary);
  59. }
  60. }
  61. }
  62. .views-display-link-widget::before {
  63. mask-image: url("../../migration/media/icons/media-library/grid.svg");
  64. }
  65. .views-display-link-widget_table::before {
  66. mask-image: url("../../migration/media/icons/media-library/list.svg");
  67. }
  68. }
  69. #media-library-content {
  70. width: 100%;
  71. padding: 1em;
  72. border-color: var(--gin-border-color);
  73. border-inline-start: 0 none;
  74. outline: none;
  75. .media-library-menu +
  76. }
  77. /* Generic media add form styles. */
  78. .media-library-add-form--without-input .form-item {
  79. margin-inline-end: 1rem;
  80. }
  81. .media-library-add-form__input-wrapper {
  82. .form-item--upload {
  83. margin-block-start: 0;
  84. margin-inline-end: 0;
  85. }
  86. .dropzone-enable .button {
  87. margin: 0;
  88. }
  89. }
  90. /* Form within media library that allows you to upload additional media. */
  91. .media-library-add-form {
  92. .messages-list:has(.messages) {
  93. margin-block: var(--space-m);
  94. }
  95. .file-upload-help {
  96. margin: 8px 0 0;
  97. }
  98. }
  99. /* Style the media add oEmbed form. */
  100. .media-library-add-form--oembed {
  101. .media-library-add-form__input-wrapper {
  102. display: flex;
  103. align-items: center;
  104. @media screen and (max-width: 37.5em) {
  105. display: block;
  106. }
  107. }
  108. &.media-library-add-form--without-input .form-item-url {
  109. margin-block-end: 0;
  110. }
  111. }
  112. .media-library-add-form-oembed-url {
  113. width: 100%;
  114. }
  115. .media-library-select-all {
  116. flex-basis: 100%;
  117. box-sizing: border-box;
  118. width: 100%;
  119. color: var(--gin-color-title);
  120. border-block-end: 1px solid var(--gin-border-color-table-header);
  121. border-radius: 0;
  122. background: var(--gin-bg-layer);
  123. margin-block: 0 10px;
  124. margin-inline: 0 8px;
  125. padding-block: 0 var(--space-m);
  126. padding-inline: var(--space-m);
  127. input {
  128. margin-inline-end: 10px;
  129. }
  130. }
  131. .media-library-add-form__selected-media .details-wrapper,
  132. .media-library-view .form--inline {
  133. display: flex;
  134. flex-wrap: wrap;
  135. }
  136. .media-library-views-form__header {
  137. flex-basis: 100%;
  138. .form-item {
  139. margin-inline-end: 8px;
  140. }
  141. }
  142. .media-library-views-form__rows {
  143. display: grid;
  144. gap: 10px;
  145. grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  146. }
  147. .media-library-widget-modal {
  148. /* By default, the dialog is too narrow to be usable. @see Drupal.ckeditor5.openDialog() */
  149. &.ui-dialog--narrow {
  150. min-width: min(75%, 1500px);
  151. }
  152. .ui-dialog-buttonpane {
  153. display: flex;
  154. flex-direction: column;
  155. align-items: center;
  156. .form-actions,
  157. .field-actions {
  158. flex: 1;
  159. }
  160. .form-actions {
  161. display: flex;
  162. flex-direction: row;
  163. justify-content: flex-end;
  164. margin-block-start: 0;
  165. white-space: nowrap;
  166. .button:not(:last-child) {
  167. margin-inline-end: var(--space-xs);
  168. }
  169. }
  170. .media-library-selected-count {
  171. flex-grow: 1;
  172. margin-block-end: var(--space-s);
  173. /* cspell:disable-next-line */
  174. @media (--admin-xsmall) {
  175. margin-block-end: 0;
  176. margin-inline-start: 0;
  177. }
  178. }
  179. /* cspell:disable-next-line */
  180. @media (--admin-xsmall) {
  181. flex-direction: row;
  182. }
  183. }
  184. }
  185. /*
  186. * Selection widget area shown on the parent form after items are
  187. * inserted.
  188. */
  189. .media-library-selection {
  190. display: grid;
  191. gap: 10px;
  192. grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  193. }
  194. /* Media library widget styles. */
  195. .media-library-widget {
  196. position: relative;
  197. }
  198. fieldset.media-library-widget {
  199. .media-library-edit__link {
  200. margin: var(--space-xs);
  201. }
  202. }
  203. .media-library-widget__toggle-weight {
  204. position: absolute;
  205. inset-block-start: var(--space-s);
  206. inset-inline-end: var(--space-m);
  207. text-decoration: none;
  208. .fieldset.media-library-widget
  209. }
  210. /* The
  211. that is shown after a media item has been uploaded */
  212. .media-library-add-form__media {
  213. position: relative;
  214. display: flex;
  215. gap: 20px;
  216. padding: 10px;
  217. border-block-end: 1px solid #c0c0c0;
  218. /* Do not show the bottom border and padding for the last item. */
  219. &:last-child {
  220. padding-block-end: 0;
  221. border-block-end: 0;
  222. }
  223. }
  224. /*
  225. * Only renders after a file is uploaded via the add-form. Coverage matrix never
  226. * completed an upload.
  227. */
  228. .media-library-add-form__preview {
  229. display: flex;
  230. align-items: center;
  231. justify-content: center;
  232. width: 220px;
  233. background: var(--gin-bg-app);
  234. }
  235. .media-library-add-form__fields {
  236. display: grid;
  237. flex-grow: 1;
  238. gap: 10px;
  239. .form-item,
  240. .form-managed-file__meta {
  241. margin-block: 0;
  242. }
  243. }
  244. .media-library-add-form__remove-button {
  245. position: absolute;
  246. inset-inline-end: 0;
  247. &.button--extrasmall {
  248. margin: var(--space-xs) 0;
  249. }
  250. }
  251. .media-library-selected-count {
  252. margin: 0 var(--space-l);
  253. color: var(--gin-color-text-light);
  254. }
  255. .media-library-widget-empty-text {
  256. margin-inline: 0;
  257. color: var(--gin-color-text-light);
  258. }
  259. .media-library-open-button {
  260. margin-block-start: 0;
  261. }
  262. .media-library-view {
  263. display: grid;
  264. gap: var(--space-l);
  265. .view-header {
  266. display: flex;
  267. flex-wrap: wrap;
  268. gap: 15px;
  269. padding: var(--space-m);
  270. text-decoration: none;
  271. color: var(--gin-color-text);
  272. border-radius: var(--gin-border-m);
  273. background: var(--gin-bg-layer3);
  274. box-shadow: var(--gin-shadow-l1);
  275. }
  276. .views-exposed-form {
  277. margin-block: 0;
  278. }
  279. }

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