You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

styles.scss 20KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081
  1. /**
  2. * @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>
  3. * @copyright Copyright (c) 2016, Lukas Reschke <lukas@statuscode.ch>
  4. * @copyright Copyright (c) 2016, Robin Appelman <robin@icewind.nl>
  5. * @copyright Copyright (c) 2016, Julius Haertl <jus@bitgrid.net>
  6. * @copyright Copyright (c) 2016, Joas Schilling <coding@schilljs.com>
  7. * @copyright Copyright (c) 2016, Morris Jobke <hey@morrisjobke.de>
  8. * @copyright Copyright (c) 2016, Christoph Wurst <christoph@winzerhof-wurst.at>
  9. * @copyright Copyright (c) 2016, Raghu Nayyar <hey@raghunayyar.com>
  10. * @copyright Copyright (c) 2011-2017, Jan-Christoph Borchardt <hey@jancborchardt.net>
  11. * @copyright Copyright (c) 2019-2020, Gary Kim <gary@garykim.dev>
  12. *
  13. * @license GNU AGPL version 3 or any later version
  14. *
  15. */
  16. @use 'sass:math';
  17. @use 'variables';
  18. html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, dialog, figure, footer, header, hgroup, nav, section, main {
  19. margin: 0;
  20. padding: 0;
  21. border: 0;
  22. font-weight: inherit;
  23. font-size: 100%;
  24. font-family: inherit;
  25. vertical-align: baseline;
  26. cursor: default;
  27. scrollbar-color: var(--color-border-dark) transparent;
  28. scrollbar-width: thin;
  29. }
  30. .js-focus-visible :focus:not(.focus-visible) {
  31. outline: none;
  32. }
  33. /** Let vue apps handle the focus themselves */
  34. .content:not(#content-vue) :focus-visible,
  35. .app-navigation:not(#app-navigation-vue) :focus-visible {
  36. box-shadow: inset 0 0 0 2px var(--color-primary-element);
  37. outline: none;
  38. }
  39. html, body {
  40. height: 100%;
  41. }
  42. article, aside, dialog, figure, footer, header, hgroup, nav, section {
  43. display: block;
  44. }
  45. body {
  46. line-height: 1.5;
  47. }
  48. table {
  49. border-collapse: separate;
  50. border-spacing: 0;
  51. white-space: nowrap;
  52. }
  53. caption, th, td {
  54. text-align: left;
  55. font-weight: normal;
  56. }
  57. table, td, th {
  58. vertical-align: middle;
  59. }
  60. a {
  61. border: 0;
  62. color: var(--color-main-text);
  63. text-decoration: none;
  64. cursor: pointer;
  65. * {
  66. cursor: pointer;
  67. }
  68. }
  69. a.external {
  70. margin: 0 3px;
  71. text-decoration: underline;
  72. }
  73. input {
  74. cursor: pointer;
  75. * {
  76. cursor: pointer;
  77. }
  78. }
  79. select, .button span, label {
  80. cursor: pointer;
  81. }
  82. ul {
  83. list-style: none;
  84. }
  85. body {
  86. font-weight: normal;
  87. /* bring the default font size up to 15px */
  88. font-size: var(--default-font-size);
  89. line-height: var(--default-line-height);
  90. font-family: var(--font-face);
  91. color: var(--color-main-text);
  92. }
  93. .two-factor-header {
  94. text-align: center;
  95. }
  96. .two-factor-provider {
  97. text-align: center;
  98. width: 100% !important;
  99. display: inline-block;
  100. margin-bottom: 0 !important;
  101. background-color: var(--color-background-darker) !important;
  102. border: none !important;
  103. }
  104. .two-factor-link {
  105. display: inline-block;
  106. padding: 12px;
  107. color: var(--color-text-lighter);
  108. }
  109. .float-spinner {
  110. height: 32px;
  111. display: none;
  112. }
  113. #nojavascript {
  114. position: fixed;
  115. top: 0;
  116. bottom: 0;
  117. left: 0;
  118. height: 100%;
  119. width: 100%;
  120. z-index: 9000;
  121. text-align: center;
  122. background-color: var(--color-background-darker);
  123. color: var(--color-primary-element-text);
  124. line-height: 125%;
  125. font-size: 24px;
  126. div {
  127. display: block;
  128. position: relative;
  129. width: 50%;
  130. top: 35%;
  131. margin: 0px auto;
  132. }
  133. a {
  134. color: var(--color-primary-element-text);
  135. border-bottom: 2px dotted var(--color-main-background);
  136. &:hover, &:focus {
  137. color: var(--color-primary-element-text-dark);
  138. }
  139. }
  140. }
  141. /* SCROLLING */
  142. ::-webkit-scrollbar {
  143. width: 12px;
  144. height: 12px
  145. }
  146. ::-webkit-scrollbar-corner {
  147. background-color: transparent;
  148. }
  149. ::-webkit-scrollbar-track-piece {
  150. background-color: transparent;
  151. }
  152. ::-webkit-scrollbar-thumb {
  153. background: var(--color-scrollbar);
  154. border-radius: var(--border-radius-large);
  155. border: 2px solid transparent;
  156. background-clip: content-box;
  157. }
  158. /* SELECTION */
  159. ::selection {
  160. background-color: var(--color-primary-element);
  161. color: var(--color-primary-element-text);
  162. }
  163. /* CONTENT ------------------------------------------------------------------ */
  164. #app-navigation * {
  165. box-sizing: border-box;
  166. }
  167. /* EMPTY CONTENT DISPLAY ------------------------------------------------------------ */
  168. #emptycontent,
  169. .emptycontent {
  170. color: var(--color-text-maxcontrast);
  171. text-align: center;
  172. margin-top: 30vh;
  173. width: 100%;
  174. #app-sidebar & {
  175. margin-top: 10vh;
  176. }
  177. .emptycontent-search {
  178. position: static;
  179. }
  180. h2 {
  181. margin-bottom: 10px;
  182. }
  183. [class^='icon-'],
  184. [class*='icon-'] {
  185. background-size: 64px;
  186. height: 64px;
  187. width: 64px;
  188. margin: 0 auto 15px;
  189. &:not([class^='icon-loading']),
  190. &:not([class*='icon-loading']) {
  191. opacity: .4;
  192. }
  193. }
  194. }
  195. /* LOG IN & INSTALLATION ------------------------------------------------------------ */
  196. #datadirContent label {
  197. width: 100%;
  198. }
  199. /* strengthify wrapper */
  200. /* General new input field look */
  201. /* Nicely grouping input field sets */
  202. .grouptop, .groupmiddle, .groupbottom {
  203. position: relative;
  204. -webkit-user-select: none;
  205. -moz-user-select: none;
  206. -ms-user-select: none;
  207. user-select: none;
  208. }
  209. /* Show password toggle */
  210. #show, #dbpassword {
  211. position: absolute;
  212. right: 1em;
  213. top: .8em;
  214. float: right;
  215. }
  216. #show + label, #dbpassword + label {
  217. right: 21px;
  218. top: 15px !important;
  219. margin: -14px !important;
  220. padding: 14px !important;
  221. }
  222. #show:checked + label, #dbpassword:checked + label, #personal-show:checked + label {
  223. opacity: .8;
  224. }
  225. #show:focus-visible + label, #dbpassword-toggle:focus-visible + label, #personal-show:focus-visible + label {
  226. box-shadow: var(--color-primary-element) 0 0 0 2px;
  227. opacity: 1;
  228. border-radius: 9999px;
  229. }
  230. #show + label, #dbpassword + label, #personal-show + label {
  231. position: absolute !important;
  232. height: 20px;
  233. width: 24px;
  234. background-image: var(--icon-toggle-dark);
  235. background-repeat: no-repeat;
  236. background-position: center;
  237. opacity: .3;
  238. }
  239. /* Feedback for keyboard focus and mouse hover */
  240. #show,
  241. #dbpassword,
  242. #personal-show {
  243. &:focus + label {
  244. opacity: 1;
  245. }
  246. + label:hover {
  247. opacity: 1;
  248. }
  249. }
  250. #show + label:before, #dbpassword + label:before, #personal-show + label:before {
  251. display: none;
  252. }
  253. #pass2, input[name='personal-password-clone'] {
  254. padding-right: 30px;
  255. }
  256. .personal-show-container {
  257. position: relative;
  258. display: inline-block;
  259. margin-right: 6px;
  260. }
  261. #personal-show + label {
  262. display: block;
  263. right: 0;
  264. margin-top: -43px;
  265. margin-right: -4px;
  266. padding: 22px;
  267. }
  268. /* Warnings and errors are the same */
  269. #body-user .warning, #body-settings .warning {
  270. margin-top: 8px;
  271. padding: 5px;
  272. border-radius: var(--border-radius);
  273. color: var(--color-main-text);
  274. background-color: rgba(var(--color-warning-rgb), 0.2);
  275. }
  276. .warning {
  277. legend, a {
  278. font-weight: bold !important;
  279. }
  280. }
  281. .error:not(.toastify) {
  282. a {
  283. color: white !important;
  284. font-weight: bold !important;
  285. &.button {
  286. color: var(--color-text-lighter) !important;
  287. display: inline-block;
  288. text-align: center;
  289. }
  290. }
  291. pre {
  292. white-space: pre-wrap;
  293. text-align: left;
  294. }
  295. }
  296. .error-wide {
  297. width: 700px;
  298. margin-left: -200px !important;
  299. .button {
  300. color: black !important;
  301. }
  302. }
  303. .warning-input {
  304. border-color: var(--color-error) !important;
  305. }
  306. /* fixes for update page TODO should be fixed some time in a proper way */
  307. /* this is just for an error while updating the Nextcloud instance */
  308. /* Sticky footer */
  309. /* round profile photos */
  310. .avatar, .avatardiv {
  311. border-radius: 50%;
  312. flex-shrink: 0;
  313. &> img {
  314. border-radius: 50%;
  315. flex-shrink: 0;
  316. }
  317. }
  318. td.avatar {
  319. border-radius: 0;
  320. }
  321. tr .action:not(.permanent), .selectedActions > a {
  322. opacity: 0;
  323. }
  324. tr {
  325. &:hover .action:not(.menuitem),
  326. &:focus .action:not(.menuitem),
  327. .action.permanent:not(.menuitem) {
  328. opacity: .5;
  329. }
  330. }
  331. .selectedActions > a {
  332. opacity: .5;
  333. position: relative;
  334. top: 2px;
  335. &:hover, &:focus {
  336. opacity: 1;
  337. }
  338. }
  339. tr .action {
  340. width: 16px;
  341. height: 16px;
  342. }
  343. .header-action {
  344. opacity: .8;
  345. }
  346. tr {
  347. &:hover .action:hover, &:focus .action:focus {
  348. opacity: 1;
  349. }
  350. }
  351. .selectedActions a {
  352. &:hover, &:focus {
  353. opacity: 1;
  354. }
  355. }
  356. .header-action {
  357. &:hover, &:focus {
  358. opacity: 1;
  359. }
  360. }
  361. tbody tr {
  362. &:hover, &:focus, &:active {
  363. background-color: var(--color-background-dark);
  364. }
  365. }
  366. code {
  367. font-family: 'Lucida Console', 'Lucida Sans Typewriter', 'DejaVu Sans Mono', monospace;
  368. }
  369. .pager {
  370. list-style: none;
  371. float: right;
  372. display: inline;
  373. margin: .7em 13em 0 0;
  374. li {
  375. display: inline-block;
  376. }
  377. }
  378. .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default {
  379. overflow: hidden;
  380. text-overflow: ellipsis;
  381. }
  382. .ui-icon-circle-triangle-e {
  383. background-image: url('../img/actions/play-next.svg?v=1');
  384. }
  385. .ui-icon-circle-triangle-w {
  386. background-image: url('../img/actions/play-previous.svg?v=1');
  387. }
  388. /* ---- jQuery UI datepicker ---- */
  389. .ui-widget.ui-datepicker {
  390. margin-top: 10px;
  391. padding: 4px 8px;
  392. width: auto;
  393. border-radius: var(--border-radius);
  394. border: none;
  395. z-index: 1600 !important; // above sidebar
  396. .ui-state-default,
  397. .ui-widget-content .ui-state-default,
  398. .ui-widget-header .ui-state-default {
  399. border: 1px solid transparent;
  400. background: inherit;
  401. }
  402. .ui-widget-header {
  403. padding: 7px;
  404. font-size: 13px;
  405. border: none;
  406. background-color: var(--color-main-background);
  407. color: var(--color-main-text);
  408. .ui-datepicker-title {
  409. line-height: 1;
  410. font-weight: normal;
  411. }
  412. .ui-icon {
  413. opacity: .5;
  414. &.ui-icon-circle-triangle-e {
  415. background: url("../img/actions/arrow-right.svg") center center no-repeat;
  416. }
  417. &.ui-icon-circle-triangle-w {
  418. background: url("../img/actions/arrow-left.svg") center center no-repeat;
  419. }
  420. }
  421. .ui-state-hover .ui-icon {
  422. opacity: 1;
  423. }
  424. }
  425. .ui-datepicker-calendar {
  426. th {
  427. font-weight: normal;
  428. color: var(--color-text-lighter);
  429. opacity: .8;
  430. width: 26px;
  431. padding: 2px;
  432. }
  433. tr:hover {
  434. background-color: inherit;
  435. }
  436. td {
  437. &.ui-datepicker-today a:not(.ui-state-hover) {
  438. background-color: var(--color-background-darker);
  439. }
  440. &.ui-datepicker-current-day a.ui-state-active,
  441. .ui-state-hover,
  442. .ui-state-focus {
  443. background-color: var(--color-primary-element);
  444. color: var(--color-primary-element-text);
  445. font-weight: bold;
  446. }
  447. &.ui-datepicker-week-end:not(.ui-state-disabled) :not(.ui-state-hover),
  448. .ui-priority-secondary:not(.ui-state-hover) {
  449. color: var(--color-text-lighter);
  450. opacity: .8;
  451. }
  452. }
  453. }
  454. }
  455. .ui-datepicker-prev, .ui-datepicker-next {
  456. border: var(--color-border-dark);
  457. background: var(--color-main-background);
  458. }
  459. /* ---- jQuery UI timepicker ---- */
  460. .ui-widget.ui-timepicker {
  461. margin-top: 10px !important;
  462. width: auto !important;
  463. border-radius: var(--border-radius);
  464. z-index: 1600 !important;
  465. .ui-widget-content {
  466. border: none !important;
  467. }
  468. .ui-state-default,
  469. .ui-widget-content .ui-state-default,
  470. .ui-widget-header .ui-state-default {
  471. border: 1px solid transparent;
  472. background: inherit;
  473. }
  474. .ui-widget-header {
  475. padding: 7px;
  476. font-size: 13px;
  477. border: none;
  478. background-color: var(--color-main-background);
  479. color: var(--color-main-text);
  480. .ui-timepicker-title {
  481. line-height: 1;
  482. font-weight: normal;
  483. }
  484. }
  485. /* AM/PM fix */
  486. table.ui-timepicker tr .ui-timepicker-hour-cell:first-child {
  487. margin-left: 30px;
  488. }
  489. .ui-timepicker-table {
  490. th {
  491. font-weight: normal;
  492. color: var(--color-text-lighter);
  493. opacity: .8;
  494. &.periods {
  495. padding: 0;
  496. width: 30px;
  497. line-height: 30px;
  498. }
  499. }
  500. tr:hover {
  501. background-color: inherit;
  502. }
  503. td {
  504. &.ui-timepicker-hour-cell a.ui-state-active,
  505. &.ui-timepicker-minute-cell a.ui-state-active,
  506. .ui-state-hover,
  507. .ui-state-focus {
  508. background-color: var(--color-primary-element);
  509. color: var(--color-primary-element-text);
  510. font-weight: bold;
  511. }
  512. &.ui-timepicker-minutes:not(.ui-state-hover) {
  513. color: var(--color-text-lighter);
  514. }
  515. &.ui-timepicker-hours {
  516. border-right: 1px solid var(--color-border);
  517. }
  518. }
  519. }
  520. }
  521. /* ---- jQuery UI datepicker & timepicker global rules ---- */
  522. .ui-widget.ui-datepicker .ui-datepicker-calendar,
  523. .ui-widget.ui-timepicker table.ui-timepicker {
  524. tr {
  525. display: flex;
  526. flex-wrap: nowrap;
  527. justify-content: space-between;
  528. td {
  529. flex: 1 1 auto;
  530. margin: 0;
  531. padding: 2px;
  532. height: 26px;
  533. width: 26px;
  534. display: flex;
  535. align-items: center;
  536. justify-content: center;
  537. > * {
  538. border-radius: 50%;
  539. text-align: center;
  540. font-weight: normal;
  541. color: var(--color-main-text);
  542. display: block;
  543. line-height: 18px;
  544. width: 18px;
  545. height: 18px;
  546. padding: 3px;
  547. font-size: .9em;
  548. }
  549. }
  550. }
  551. }
  552. /* ---- DIALOGS ---- */
  553. #oc-dialog-filepicker-content {
  554. position: relative;
  555. display: flex;
  556. flex-direction:column;
  557. .dirtree {
  558. flex-wrap: wrap;
  559. box-sizing: border-box;
  560. padding-right: 140px;
  561. display: flex;
  562. div:first-child a {
  563. font-size: 0px;
  564. background-image: var(--icon-home-dark);
  565. background-repeat: no-repeat;
  566. background-position: left center;
  567. }
  568. span {
  569. &:not(:last-child) {
  570. cursor: pointer;
  571. }
  572. &:last-child {
  573. font-weight: bold;
  574. }
  575. &:not(:last-child)::after {
  576. content: '>';
  577. padding: 3px;
  578. }
  579. }
  580. }
  581. #picker-showgridview {
  582. position: absolute;
  583. background-color: transparent;
  584. border: none;
  585. margin: 0;
  586. padding: 22px;
  587. opacity: .5;
  588. right: 0;
  589. top: 0;
  590. &:hover,
  591. &:active,
  592. &:focus {
  593. box-shadow: 0 0 0 2px var(--color-primary-element);
  594. opacity: 1;
  595. }
  596. }
  597. .actions.creatable {
  598. flex-wrap: wrap;
  599. padding: 0px;
  600. box-sizing: border-box;
  601. display: inline-flex;
  602. float: none;
  603. max-height: 36px;
  604. max-width: 36px;
  605. background-color: var(--color-background-dark);
  606. border: 1px solid var(--color-border-dark);
  607. border-radius: var(--border-radius-pill);
  608. position: relative;
  609. left: 15px;
  610. top:3px;
  611. order:1;
  612. .icon.icon-add{
  613. background-image: var(--icon-add-dark);
  614. background-size: 16px 16px;
  615. width: 34px;
  616. height: 34px;
  617. margin: 0px;
  618. opacity: 0.5;
  619. }
  620. a {
  621. width: 36px;
  622. padding: 0px;
  623. position: static;
  624. }
  625. .menu {
  626. top: 100%;
  627. margin-top: 10px;
  628. form {
  629. display: flex;
  630. margin: 10px;
  631. }
  632. }
  633. }
  634. .filelist-container {
  635. box-sizing: border-box;
  636. display: inline-block;
  637. overflow-y: auto;
  638. flex: 1;
  639. /*height: 100%;*/
  640. /* overflow under the button row */
  641. width: 100%;
  642. overflow-x: hidden;
  643. }
  644. .emptycontent {
  645. color: var(--color-text-maxcontrast);
  646. text-align: center;
  647. margin-top: 80px;
  648. width: 100%;
  649. display: none;
  650. }
  651. .filelist {
  652. background-color: var(--color-main-background);
  653. width: 100%;
  654. }
  655. #picker-filestable.filelist {
  656. /* prevent the filepicker to overflow */
  657. min-width: initial;
  658. margin-bottom: 50px;
  659. thead {
  660. tr {
  661. border-bottom: 1px solid var(--color-border);
  662. background-color: var(--color-main-background);
  663. th {
  664. width: 80%;
  665. border: none;
  666. }
  667. }
  668. }
  669. th .columntitle {
  670. display: block;
  671. padding: 15px;
  672. height: 50px;
  673. box-sizing: border-box;
  674. -moz-box-sizing: border-box;
  675. vertical-align: middle;
  676. }
  677. th .columntitle.name {
  678. padding-left: 5px;
  679. margin-left: 50px;
  680. }
  681. th .sort-indicator {
  682. width: 10px;
  683. height: 8px;
  684. margin-left: 5px;
  685. display: inline-block;
  686. vertical-align: text-bottom;
  687. opacity: .3;
  688. }
  689. .sort-indicator.hidden,
  690. th:hover .sort-indicator.hidden,
  691. th:focus .sort-indicator.hidden {
  692. visibility: hidden;
  693. }
  694. th:hover .sort-indicator.hidden,
  695. th:focus .sort-indicator.hidden {
  696. visibility: visible;
  697. }
  698. td {
  699. padding: 14px;
  700. border-bottom: 1px solid var(--color-border);
  701. }
  702. tr:last-child td {
  703. border-bottom: none;
  704. }
  705. .filename {
  706. overflow: hidden;
  707. white-space: nowrap;
  708. text-overflow: ellipsis;
  709. background-size: 32px;
  710. background-repeat: no-repeat;
  711. padding-left: 51px;
  712. background-position: 7px 7px;
  713. cursor: pointer;
  714. // avoid taking full width
  715. max-width: 0;
  716. .filename-parts {
  717. display: flex;
  718. &__first {
  719. overflow: hidden;
  720. white-space: pre;
  721. text-overflow: ellipsis;
  722. }
  723. &__last {
  724. white-space: pre;
  725. }
  726. }
  727. }
  728. .filesize, .date {
  729. width: 80px;
  730. }
  731. .filesize {
  732. text-align: right;
  733. }
  734. &.view-grid {
  735. $grid-size: 120px;
  736. $grid-pad: 10px;
  737. $name-height: 30px;
  738. display: flex;
  739. flex-direction: column;
  740. tbody {
  741. display: grid;
  742. grid-template-columns: repeat(auto-fill, $grid-size);
  743. justify-content: space-around;
  744. row-gap: 15px;
  745. margin: 15px 0;
  746. tr {
  747. display: block;
  748. position: relative;
  749. border-radius: var(--border-radius);
  750. padding: $grid-pad;
  751. display: flex;
  752. flex-direction: column;
  753. width: $grid-size - 2 * $grid-pad;
  754. td {
  755. border: none;
  756. padding: 0;
  757. text-align: center;
  758. border-radius: var(--border-radius);
  759. &.filename {
  760. padding: #{$grid-size - 2 * $grid-pad} 0 0 0;
  761. background-position: center top;
  762. background-size: contain;
  763. line-height: $name-height;
  764. max-width: none;
  765. .filename-parts {
  766. justify-content: center;
  767. }
  768. }
  769. &.filesize {
  770. line-height: math.div($name-height, 3);
  771. width: 100%;
  772. }
  773. &.date {
  774. align-self: center;
  775. overflow: hidden;
  776. text-overflow: ellipsis;
  777. min-width: 110px;
  778. }
  779. }
  780. }
  781. }
  782. }
  783. }
  784. .filepicker_element_selected {
  785. background-color: var(--color-background-darker);
  786. }
  787. }
  788. .ui-dialog {
  789. position: fixed !important;
  790. }
  791. span.ui-icon {
  792. float: left;
  793. margin: 3px 7px 30px 0;
  794. }
  795. /* ---- TOOLTIPS ---- */
  796. .extra-data {
  797. padding-right: 5px !important;
  798. }
  799. /* ---- TAGS ---- */
  800. #tagsdialog {
  801. .content {
  802. width: 100%;
  803. height: 280px;
  804. }
  805. .scrollarea {
  806. overflow: auto;
  807. border: 1px solid var(--color-background-darker);
  808. width: 100%;
  809. height: 240px;
  810. }
  811. .bottombuttons {
  812. width: 100%;
  813. height: 30px;
  814. * {
  815. float: left;
  816. }
  817. }
  818. .taglist li {
  819. background: var(--color-background-dark);
  820. padding: .3em .8em;
  821. white-space: nowrap;
  822. overflow: hidden;
  823. text-overflow: ellipsis;
  824. -webkit-transition: background-color 500ms;
  825. transition: background-color 500ms;
  826. &:hover, &:active {
  827. background: var(--color-background-darker);
  828. }
  829. }
  830. .addinput {
  831. width: 90%;
  832. clear: both;
  833. }
  834. }
  835. /* ---- BREADCRUMB ---- */
  836. .breadcrumb {
  837. display: inline-flex;
  838. height: 50px;
  839. }
  840. li.crumb {
  841. display: inline-flex;
  842. background-image: url('../img/breadcrumb.svg?v=1');
  843. background-repeat: no-repeat;
  844. background-position: right center;
  845. height: 44px;
  846. background-size: auto 24px;
  847. flex: 0 0 auto;
  848. order: 1;
  849. padding-right: 7px;
  850. &.crumbmenu {
  851. order: 2;
  852. position: relative;
  853. a {
  854. opacity: 0.5
  855. }
  856. &.canDropChildren,
  857. &.canDrop {
  858. .popovermenu {
  859. display: block;
  860. }
  861. }
  862. // Fix because of the display flex
  863. .popovermenu {
  864. top: 100%;
  865. margin-right: 3px;
  866. ul {
  867. max-height: 345px;
  868. overflow-y: auto;
  869. overflow-x: hidden;
  870. padding-right: 5px;
  871. li.canDrop span:first-child {
  872. background-image: url('../img/filetypes/folder-drag-accept.svg?v=1') !important;
  873. }
  874. }
  875. .in-breadcrumb {
  876. display: none;
  877. }
  878. }
  879. }
  880. &.hidden {
  881. display: none;
  882. ~ .crumb {
  883. order: 3;
  884. }
  885. }
  886. > a,
  887. > span {
  888. position: relative;
  889. padding: 12px;
  890. opacity: 0.5;
  891. text-overflow: ellipsis;
  892. white-space: nowrap;
  893. overflow: hidden;
  894. flex: 0 0 auto;
  895. // Some sane max-width for each folder name
  896. max-width: 200px;
  897. &.icon-home,
  898. &.icon-delete {
  899. // Hide home text
  900. text-indent: -9999px;
  901. }
  902. }
  903. > a[class^='icon-'] {
  904. padding: 0;
  905. width: 44px;
  906. }
  907. &:not(:first-child) a {
  908. }
  909. &:last-child {
  910. font-weight: bold;
  911. margin-right: 10px;
  912. // Allow multiple span next to the main 'a'
  913. a ~ span {
  914. padding-left: 0;
  915. }
  916. }
  917. &:hover, &:focus, a:focus, &:active {
  918. opacity: 1;
  919. > a,
  920. > span {
  921. opacity: .7;
  922. }
  923. }
  924. }
  925. /* some feedback for hover/tap on breadcrumbs */
  926. .appear {
  927. opacity: 1;
  928. -webkit-transition: opacity 500ms ease 0s;
  929. -moz-transition: opacity 500ms ease 0s;
  930. -ms-transition: opacity 500ms ease 0s;
  931. -o-transition: opacity 500ms ease 0s;
  932. transition: opacity 500ms ease 0s;
  933. &.transparent {
  934. opacity: 0;
  935. }
  936. }
  937. /* LEGACY FIX only - do not use fieldsets for settings */
  938. fieldset {
  939. &.warning legend, &.update legend {
  940. top: 18px;
  941. position: relative;
  942. }
  943. &.warning legend + p, &.update legend + p {
  944. margin-top: 12px;
  945. }
  946. }
  947. /* for IE10 */
  948. @-ms-viewport {
  949. width: device-width;
  950. }
  951. /* hidden input type=file field */
  952. .hiddenuploadfield {
  953. display: none;
  954. width: 0;
  955. height: 0;
  956. opacity: 0;
  957. }