media_library.pcss.css

Same filename and directory in other branches
  1. 11.x core/themes/default_admin/migration/css/components/media_library.pcss.css

Media library styles.

File

core/themes/default_admin/migration/css/components/media_library.pcss.css

View source
  1. /**
  2. * @file
  3. * Media library styles.
  4. */
  5. @import "../base/media-queries.pcss.css";
  6. .media-library-item {
  7. background: none;
  8. .media-library-edit__link,
  9. .media-library-item__edit,
  10. .media-library-item__edit.button,
  11. .media-library-item__remove,
  12. .media-library-item__remove.button {
  13. border-color: var(--gin-border-color) !important;
  14. &:link,
  15. &:hover,
  16. &:focus,
  17. &:active,
  18. &:not(:hover, :checked) {
  19. border-color: transparent !important;
  20. }
  21. &:hover,
  22. &:focus,
  23. &:active {
  24. box-shadow:
  25. 0 0 0 1px var(--gin-color-focus-border),
  26. 0 0 0 4px var(--gin-color-focus) !important;
  27. }
  28. }
  29. .media-library-edit__link,
  30. .media-library-edit__link:hover,
  31. .media-library-edit__link:focus,
  32. .media-library-edit__link:active,
  33. .media-library-item__edit,
  34. .media-library-item__edit:hover,
  35. .media-library-item__edit:focus,
  36. .media-library-item__edit:active,
  37. .media-library-item__edit.button,
  38. .media-library-item__edit.button:hover,
  39. .media-library-item__edit.button:focus,
  40. .media-library-item__edit.button:active,
  41. .media-library-item__remove,
  42. .media-library-item__remove:hover,
  43. .media-library-item__remove:focus,
  44. .media-library-item__remove:active,
  45. .media-library-item__remove.button,
  46. .media-library-item__remove.button:hover,
  47. .media-library-item__remove.button:focus,
  48. .media-library-item__remove.button:active {
  49. box-sizing: border-box;
  50. width: 32px;
  51. height: 32px;
  52. margin: var(--space-xs);
  53. border-radius: 50%;
  54. background-color: white;
  55. box-shadow: 0 2px 4px rgb(0, 0, 0, 0.15);
  56. }
  57. .media-library-edit__link,
  58. .media-library-item__edit {
  59. inset-block-start: 0.625rem;
  60. inset-inline-end: 3.125rem;
  61. background-image: url("../../media/icons/media-library/media-edit.svg");
  62. background-size: 0.75rem 0.75rem;
  63. }
  64. .media-library-item__remove,
  65. .media-library-item__remove.button {
  66. background-image: url("../../media/icons/media-library/media-remove.svg");
  67. background-size: 0.75rem 0.75rem;
  68. }
  69. svg,
  70. img {
  71. background-color: var(--gin-pattern-fallback);
  72. background-image: linear-gradient(-45deg, var(--gin-pattern) 25%, transparent 26%), linear-gradient(-45deg, var(--gin-pattern) 25%, transparent 26%), linear-gradient(135deg, var(--gin-pattern) 25%, transparent 26%), linear-gradient(135deg, var(--gin-pattern) 25%, transparent 26%);
  73. background-position:
  74. 0 0,
  75. var(--gin-pattern-square) var(--gin-pattern-square),
  76. var(--gin-pattern-square) var(--gin-pattern-square),
  77. 0 0;
  78. background-size: calc(var(--gin-pattern-square) * 2) calc(var(--gin-pattern-square) * 2);
  79. &:dir(rtl) {
  80. background-image: linear-gradient(45deg, var(--gin-pattern) 25%, transparent 26%), linear-gradient(45deg, var(--gin-pattern) 25%, transparent 26%), linear-gradient(-135deg, var(--gin-pattern) 25%, transparent 26%), linear-gradient(-135deg, var(--gin-pattern) 25%, transparent 26%);
  81. background-position:
  82. 100% 0,
  83. var(--gin-pattern-square) var(--gin-pattern-square),
  84. var(--gin-pattern-square) var(--gin-pattern-square),
  85. 100% 0;
  86. }
  87. }
  88. .form-item {
  89. margin: var(--space-xs);
  90. }
  91. .ajax-progress {
  92. transform: translateY(-50%);
  93. }
  94. .media-library-item__preview {
  95. position: relative;
  96. overflow: hidden;
  97. padding-block-end: 100%;
  98. border: 1px solid var(--gin-border-color);
  99. border-radius: var(--gin-border-xl);
  100. .field svg,
  101. .field img {
  102. position: absolute;
  103. inset-block-start: 0;
  104. inset-inline-start: 0;
  105. width: 100%;
  106. height: 100%;
  107. object-fit: cover;
  108. }
  109. }
  110. &:focus .media-library-item__preview-wrapper {
  111. box-shadow: none;
  112. }
  113. &.is-hover .media-library-item__preview {
  114. border-color: var(--gin-color-text);
  115. box-shadow: 0 0 0 2px var(--gin-color-text);
  116. }
  117. &.checked .media-library-item__preview,
  118. &.is-active .media-library-item__preview {
  119. border-color: var(--gin-color-primary);
  120. box-shadow: 0 0 0 2px var(--gin-color-primary);
  121. }
  122. }
  123. .media-library-item--grid {
  124. border-radius: var(--gin-border-xl);
  125. &::before,
  126. &.is-hover::before,
  127. &.checked::before,
  128. &.is-focus::before {
  129. display: none;
  130. }
  131. &.sortable-chosen {
  132. outline: none;
  133. background: var(--gin-bg-layer);
  134. box-shadow: 0 0 48px rgb(0, 0, 0, 0.075) !important;
  135. .media-library-item__remove {
  136. display: none;
  137. }
  138. }
  139. &.sortable-ghost {
  140. border: 2px dashed var(--gin-border-color);
  141. }
  142. }
  143. .media-library-item__content {
  144. display: flex;
  145. height: 100%;
  146. article {
  147. width: 100%;
  148. }
  149. }
  150. .media-library-item__click-to-select-trigger {
  151. overflow: inherit;
  152. }
  153. .media-library-item__name {
  154. overflow: visible;
  155. margin: 0;
  156. white-space: initial;
  157. text-overflow: initial;
  158. word-break: break-all;
  159. color: var(--gin-color-text);
  160. }
  161. .media-library-item__attributes {
  162. position: static;
  163. padding: var(--space-xs);
  164. background: none;
  165. }
  166. .media-library-item__click-to-select-checkbox .form-boolean {
  167. width: 29px;
  168. height: 29px;
  169. border-radius: var(--gin-border-xs);
  170. box-shadow: 0 2px 4px rgb(0, 0, 0, 0.15);
  171. &:not(:checked) {
  172. background-color: white;
  173. }
  174. &:not(:hover, :checked) {
  175. border-color: transparent !important;
  176. }
  177. &:focus {
  178. box-shadow:
  179. 0 0 0 1px var(--gin-color-focus-border),
  180. 0 0 0 4px var(--gin-color-focus) !important;
  181. }
  182. &:checked {
  183. border-color: var(--gin-color-primary);
  184. background-color: var(--gin-color-primary);
  185. box-shadow: none;
  186. }
  187. .gin--dark-mode
  188. &:not(:hover, :checked) {
  189. border-color: transparent !important;
  190. }
  191. &:focus {
  192. box-shadow:
  193. 0 0 0 1px var(--gin-color-focus-border),
  194. 0 0 0 4px var(--gin-color-focus) !important;
  195. }
  196. &:checked {
  197. border-color: var(--gin-color-primary);
  198. background-color: var(--gin-color-primary);
  199. box-shadow: none;
  200. }
  201. }
  202. }
  203. .media-library-views-form {
  204. flex-direction: column;
  205. flex-wrap: initial;
  206. }
  207. fieldset.media-library-widget {
  208. .media-library-widget__toggle-weight {
  209. padding: var(--space-xs);
  210. font-size: var(--font-size-xxs);
  211. line-height: 1;
  212. }
  213. .media-library-edit__link,
  214. .media-library-item .media-library-item__edit,
  215. .media-library-item .media-library-item__remove,
  216. .media-library-item .media-library-item__remove.button {
  217. margin: var(--space-xs);
  218. }
  219. }
  220. .media-library-widget-empty-text {
  221. color: var(--gin-color-text-light);
  222. margin-block: 0 calc(var(--space-xs) * -1);
  223. margin-inline: 0;
  224. }
  225. .media-library-open-button {
  226. margin-block-start: 0;
  227. }
  228. .media-library-add-form__preview {
  229. background: var(--gin-bg-app);
  230. }
  231. .media-library-add-form__input-wrapper {
  232. padding: 0;
  233. border: none;
  234. background: transparent;
  235. box-shadow: none;
  236. .form-item--upload {
  237. margin-block-start: 0;
  238. margin-inline-end: 0;
  239. }
  240. .dropzone-enable .button {
  241. margin: 0;
  242. }
  243. }
  244. .media-library-menu {
  245. border-color: var(--gin-border-color);
  246. background-color: var(--gin-bg-app);
  247. }
  248. .media-library-menu__link {
  249. color: var(--gin-color-text);
  250. border-color: var(--gin-border-color);
  251. background-color: transparent;
  252. text-shadow: none;
  253. &:active,
  254. &:hover,
  255. &:focus,
  256. &.active,
  257. &:hover:focus,
  258. &.active:hover,
  259. &.active:focus {
  260. color: var(--gin-color-primary);
  261. border-inline-end: 0 none;
  262. border-block-end: 1px solid var(--gin-border-color);
  263. background-color: var(--gin-bg-layer);
  264. box-shadow: none;
  265. text-shadow: none;
  266. }
  267. &.active::before {
  268. border-inline-start-color: var(--gin-color-primary);
  269. }
  270. &:focus::after {
  271. border: var(--gin-border-xs) solid var(--gin-color-focus);
  272. }
  273. }
  274. .media-library-view {
  275. .view-header {
  276. padding: var(--space-m);
  277. text-decoration: none;
  278. color: var(--gin-color-text);
  279. border-radius: var(--gin-border-m);
  280. background: var(--gin-bg-layer3);
  281. box-shadow: var(--gin-shadow-l1);
  282. }
  283. .views-form {
  284. background: transparent !important;
  285. }
  286. }
  287. .media-library-wrapper {
  288. margin-block-start: 0;
  289. margin-inline: calc(var(--space-m) * -1);
  290. .views-display-link {
  291. position: relative;
  292. white-space: nowrap;
  293. text-decoration: none;
  294. color: var(--gin-color-text);
  295. background-image: none;
  296. &::before {
  297. position: absolute;
  298. display: inline-block;
  299. width: 16px;
  300. height: 16px;
  301. content: "";
  302. background-color: var(--gin-color-text);
  303. inset-inline-start: 0;
  304. inset-block-start: 1px;
  305. }
  306. &.is-active {
  307. color: var(--gin-color-primary);
  308. &::before {
  309. background-color: var(--gin-color-primary);
  310. }
  311. }
  312. }
  313. .views-display-link-widget::before {
  314. mask-image: url("../../media/icons/media-library/grid.svg");
  315. }
  316. .views-display-link-widget_table::before {
  317. mask-image: url("../../media/icons/media-library/list.svg");
  318. }
  319. }
  320. .media-library-content {
  321. border-color: var(--gin-border-color);
  322. border-inline-start: 0 none;
  323. }
  324. .media-library-select-all {
  325. box-sizing: border-box;
  326. margin-block-start: 0;
  327. margin-inline-start: 0;
  328. color: var(--gin-color-title);
  329. border-block-end: 1px solid var(--gin-border-color-table-header);
  330. border-radius: 0;
  331. background: var(--gin-bg-layer);
  332. padding-block: 0 var(--space-m);
  333. padding-inline: var(--space-m);
  334. }
  335. .views-field-thumbnail__target-id img {
  336. vertical-align: middle;
  337. }
  338. .gin--dark-mode .ui-dialog {
  339. .views-exposed-form,
  340. .views-form {
  341. background: var(--gin-bg-layer2);
  342. }
  343. }
  344. .media-library-widget-modal {
  345. .media-library-item--grid {
  346. @media (--admin-widest) {
  347. width: 20%;
  348. }
  349. }
  350. .ui-dialog-buttonpane {
  351. flex-direction: column;
  352. .form-actions {
  353. display: flex;
  354. flex-direction: row;
  355. justify-content: flex-end;
  356. margin-block-start: 0;
  357. white-space: nowrap;
  358. .button:not(:last-child) {
  359. margin-inline-end: var(--space-xs);
  360. }
  361. }
  362. .media-library-selected-count {
  363. flex-grow: 1;
  364. margin-block-end: var(--space-s);
  365. /* cspell:disable-next-line */
  366. @media (--admin-xsmall) {
  367. margin-block-end: 0;
  368. margin-inline-start: 0;
  369. }
  370. }
  371. /* cspell:disable-next-line */
  372. @media (--admin-xsmall) {
  373. flex-direction: row;
  374. }
  375. }
  376. }
  377. .js-media-library-widget {
  378. .fieldset__label {
  379. margin-block-end: 0;
  380. }
  381. .media-library-selection {
  382. margin-block-start: 0;
  383. }
  384. }
  385. .media-library-selection .media-library-item--grid {
  386. @media (--admin-wide) {
  387. width: 20%;
  388. }
  389. }
  390. .layout-region--secondary .media-library-selection .media-library-item--grid {
  391. width: auto;
  392. }
  393. .field--name-field-media.field--widget-entity-reference-autocomplete fieldset.form-item {
  394. padding-block: var(--space-xl) var(--space-m);
  395. padding-inline: calc(var(--space-l) - var(--space-xxs));
  396. border: 1px solid var(--gin-border-color);
  397. > legend {
  398. position: relative;
  399. transform: translateY(50%);
  400. font-weight: var(--font-weight-heavy);
  401. inset-block-start: calc(var(--space-l) - var(--space-xxs));
  402. &::before {
  403. position: absolute;
  404. display: block;
  405. width: 100%;
  406. height: 1px;
  407. content: "";
  408. background: var(--gin-border-color);
  409. inset-block-start: calc((var(--space-l) - var(--space-xxs)) * -1);
  410. inset-inline-start: 0;
  411. }
  412. }
  413. > .form-item h4 {
  414. margin-block-end: 0;
  415. }
  416. }
  417. .media-library-selected-count {
  418. color: var(--gin-color-text-light);
  419. }
  420. .media-library-new-widget {
  421. .fieldset__label {
  422. margin-block-end: 0;
  423. }
  424. .label {
  425. margin-block-start: 0;
  426. color: var(--gin-color-title);
  427. font-size: var(--font-size-h6);
  428. font-weight: var(--font-weight-bold);
  429. }
  430. .description {
  431. color: var(--gin-color-text-light);
  432. font-size: var(--font-size-s);
  433. }
  434. .form-type--entity-autocomplete {
  435. margin-block: var(--space-s);
  436. }
  437. }

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