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.

apps.scss 15KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706
  1. /**
  2. * @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>
  3. * @copyright Copyright (c) 2016, Julius Haertl <jus@bitgrid.net>
  4. * @copyright Copyright (c) 2016, Morris Jobke <hey@morrisjobke.de>
  5. * @copyright Copyright (c) 2016, pgys <info@pexlab.space>
  6. * @copyright Copyright (c) 2016, Lukas Reschke <lukas@statuscode.ch>
  7. * @copyright Copyright (c) 2016, Stefan Weil <sw@weilnetz.de>
  8. * @copyright Copyright (c) 2016, Roeland Jago Douma <rullzer@owncloud.com>
  9. * @copyright Copyright (c) 2016, jowi <sjw@gmx.ch>
  10. * @copyright Copyright (c) 2015, Hendrik Leppelsack <hendrik@leppelsack.de>
  11. * @copyright Copyright (c) 2015, Thomas Müller <thomas.mueller@tmit.eu>
  12. * @copyright Copyright (c) 2015, Vincent Petry <pvince81@owncloud.com>
  13. * @copyright Copyright (c) 2014-2017, Jan-Christoph Borchardt <hey@jancborchardt.net>
  14. *
  15. * @license GNU AGPL version 3 or any later version
  16. *
  17. */
  18. /* BASE STYLING ---------------------------------------------------------- */
  19. h2 {
  20. font-size: 20px;
  21. font-weight: 300;
  22. margin-bottom: 12px;
  23. line-height: 140%;
  24. }
  25. h3 {
  26. font-size: 15px;
  27. font-weight: 300;
  28. margin: 12px 0;
  29. }
  30. /* do not use italic typeface style, instead lighter color */
  31. em {
  32. font-style: normal;
  33. -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=50)';
  34. opacity: .5;
  35. }
  36. dl {
  37. padding: 12px 0;
  38. }
  39. dt,
  40. dd {
  41. display: inline-block;
  42. padding: 12px;
  43. padding-left: 0;
  44. }
  45. dt {
  46. width: 130px;
  47. white-space: nowrap;
  48. text-align: right;
  49. }
  50. kbd {
  51. padding: 4px 10px;
  52. border: 1px solid #ccc;
  53. box-shadow: 0 1px 0 rgba(0, 0, 0, .2);
  54. border-radius: 3px;
  55. display: inline-block;
  56. white-space: nowrap;
  57. }
  58. /* APP STYLING -------------------------------------------------------------- */
  59. #app {
  60. height: 100%;
  61. width: 100%;
  62. * {
  63. box-sizing: border-box;
  64. }
  65. }
  66. /* APP-NAVIGATION ------------------------------------------------------------*/
  67. /* Navigation: folder like structure */
  68. #app-navigation {
  69. width: 250px;
  70. height: 100%;
  71. float: left;
  72. box-sizing: border-box;
  73. background-color: $color-main-background;
  74. padding-bottom: 44px;
  75. -webkit-user-select: none;
  76. -moz-user-select: none;
  77. -ms-user-select: none;
  78. user-select: none;
  79. border-right: 1px solid nc-darken($color-main-background, 8%);
  80. display: flex;
  81. flex-direction: column;
  82. > ul {
  83. position: relative;
  84. height: 100%;
  85. width: inherit;
  86. overflow: auto;
  87. box-sizing: border-box;
  88. > li {
  89. display: inline-flex;
  90. justify-content: space-between;
  91. &:focus,
  92. &:hover,
  93. &.active,
  94. a.selected {
  95. &,
  96. > a {
  97. opacity: 1;
  98. box-shadow: inset 2px 0 $color-primary;
  99. }
  100. }
  101. }
  102. }
  103. li {
  104. position: relative;
  105. width: 100%;
  106. box-sizing: border-box;
  107. > a {
  108. background-size: 16px 16px;
  109. background-position: 14px center;
  110. background-repeat: no-repeat;
  111. display: block;
  112. width: 100%;
  113. line-height: 44px;
  114. min-height: 44px;
  115. padding: 0 12px;
  116. overflow: hidden;
  117. box-sizing: border-box;
  118. white-space: nowrap;
  119. text-overflow: ellipsis;
  120. color: $color-main-text;
  121. opacity: .57;
  122. &:first-child img {
  123. margin-bottom: -3px;
  124. margin-right: 11px;
  125. width: 16px;
  126. margin-left: 2px;
  127. }
  128. }
  129. }
  130. &.hidden {
  131. display: none;
  132. }
  133. &.without-app-settings {
  134. padding-bottom: 0;
  135. }
  136. .with-icon a,
  137. .app-navigation-entry-loading a {
  138. padding-left: 44px;
  139. background-size: 16px 16px;
  140. background-position: 14px center;
  141. background-repeat: no-repeat;
  142. }
  143. .collapse {
  144. display: none;
  145. /* hide collapse button initially */
  146. }
  147. .collapsible {
  148. > .collapse {
  149. position: absolute;
  150. height: 44px;
  151. width: 44px;
  152. margin: 0;
  153. padding: 0;
  154. background: none;
  155. background-image: url('../img/actions/triangle-s.svg?v=1');
  156. background-size: 16px;
  157. background-repeat: no-repeat;
  158. background-position: center;
  159. border: none;
  160. border-radius: 0;
  161. outline: none !important;
  162. box-shadow: none;
  163. }
  164. &:hover > a,
  165. &:focus > a {
  166. background-image: none;
  167. }
  168. &:hover,
  169. &:focus {
  170. > .collapse {
  171. display: block;
  172. }
  173. }
  174. .collapse {
  175. -webkit-transform: rotate(-90deg);
  176. -ms-transform: rotate(-90deg);
  177. transform: rotate(-90deg);
  178. }
  179. &.open {
  180. .collapse {
  181. -webkit-transform: rotate(0);
  182. -ms-transform: rotate(0);
  183. transform: rotate(0);
  184. }
  185. background-image: linear-gradient(top, nc-darken($color-main-background, 8%) 0%, nc-darken($color-main-background, 3%) 100%);
  186. background-image: -webkit-linear-gradient(top, nc-darken($color-main-background, 8%) 0%, nc-darken($color-main-background, 3%) 100%);
  187. background-image: -ms-linear-gradient(top, nc-darken($color-main-background, 8%) 0%, nc-darken($color-main-background, 3%) 100%);
  188. }
  189. }
  190. > {
  191. /* Second level nesting for lists */
  192. ul ul {
  193. display: none;
  194. li > a {
  195. padding-left: 32px;
  196. }
  197. }
  198. .with-icon ul li {
  199. > a,
  200. &.app-navigation-entry-loading > a {
  201. padding-left: 68px;
  202. background-position: 44px center;
  203. }
  204. }
  205. }
  206. > ul .collapsible.open {
  207. &:hover,
  208. &:focus {
  209. box-shadow: inset 0 0 3px $color-box-shadow;
  210. }
  211. ul {
  212. display: block;
  213. }
  214. }
  215. /* Deleted entries with undo button */
  216. .app-navigation-entry-deleted {
  217. display: inline-block;
  218. height: 44px;
  219. width: 100%;
  220. }
  221. .app-navigation-entry-deleted-description {
  222. padding-left: 12px;
  223. position: relative;
  224. white-space: nowrap;
  225. text-overflow: ellipsis;
  226. overflow: hidden;
  227. display: inline-block;
  228. width: calc(100% - 49px);
  229. line-height: 44px;
  230. float: left;
  231. }
  232. .app-navigation-entry-deleted-button {
  233. margin: 0;
  234. height: 44px;
  235. width: 44px;
  236. line-height: 44px;
  237. border: 0;
  238. display: inline-block;
  239. background-color: transparent;
  240. opacity: .5;
  241. &:hover, &:focus {
  242. opacity: 1;
  243. }
  244. }
  245. /* counter and actions, legacy code TO BE DELETED */
  246. .utils {
  247. position: absolute;
  248. padding: 7px 7px 0 0;
  249. right: 0;
  250. top: 0;
  251. bottom: 0;
  252. font-size: 12px;
  253. button,
  254. .counter {
  255. width: 44px;
  256. height: 44px;
  257. padding-top: 12px;
  258. }
  259. }
  260. /* drag and drop */
  261. .drag-and-drop {
  262. -webkit-transition: padding-bottom 500ms ease 0s;
  263. transition: padding-bottom 500ms ease 0s;
  264. padding-bottom: 40px;
  265. }
  266. .error {
  267. color: $color-error;
  268. }
  269. .app-navigation-separator {
  270. border-bottom: 1px solid nc-lighten($color-main-text, 86%);
  271. }
  272. /**
  273. * App navigation utils, buttons and counters for drop down menu
  274. */
  275. .app-navigation-entry-utils {
  276. flex-shrink: 0;
  277. ul {
  278. display: flex !important;
  279. align-items: center;
  280. justify-content: flex-end;
  281. }
  282. li {
  283. width: 44px !important;
  284. height: 44px;
  285. }
  286. }
  287. .app-navigation-entry-utils button {
  288. height: 100%;
  289. width: 100%;
  290. margin: 0;
  291. box-shadow: none;
  292. }
  293. .app-navigation-entry-utils-menu-button {
  294. button {
  295. border: 0;
  296. opacity: .5;
  297. background-color: transparent;
  298. background-repeat: no-repeat;
  299. background-position: center;
  300. background-image: url('../img/actions/more.svg?v=1');
  301. }
  302. &:hover button,
  303. &:focus button {
  304. background-color: transparent;
  305. opacity: 1;
  306. }
  307. }
  308. .app-navigation-entry-utils-counter {
  309. overflow: hidden;
  310. text-overflow: hidden;
  311. text-align: right;
  312. font-size: 9pt;
  313. width: 38px;
  314. line-height: 44px;
  315. padding: 0 10px;
  316. }
  317. .app-navigation-entry-utils ul, .app-navigation-entry-menu ul {
  318. list-style-type: none;
  319. }
  320. /* editing an entry */
  321. .app-navigation-entry-edit {
  322. padding-left: 5px;
  323. padding-right: 5px;
  324. display: inline-block;
  325. height: 39px;
  326. width: 100%;
  327. input {
  328. border-bottom-right-radius: 0;
  329. border-top-right-radius: 0;
  330. width: calc(100% - 36px);
  331. padding: 5px;
  332. margin-right: 0;
  333. height: 38px;
  334. float: left;
  335. border: 1px solid rgba(nc-lighten($color-main-text, 73%), 0.9);
  336. }
  337. button,
  338. input[type='submit'] {
  339. width: 36px;
  340. height: 38px;
  341. float: left;
  342. }
  343. .icon-checkmark {
  344. border-bottom-left-radius: 0;
  345. border-top-left-radius: 0;
  346. border-left: 0;
  347. margin-right: 0;
  348. }
  349. }
  350. }
  351. /* APP-CONTENT ---------------------------------------------------------------*/
  352. /* Part where the content will be loaded into */
  353. #app-content {
  354. position: relative;
  355. height: 100%;
  356. overflow-y: auto;
  357. /* no top border for first settings item */
  358. > .section:first-child {
  359. border-top: none;
  360. }
  361. &.with-app-sidebar {
  362. margin-right: 27%;
  363. }
  364. }
  365. #app-content-wrapper {
  366. min-width: 100%;
  367. min-height: 100%;
  368. }
  369. /* APP-SIDEBAR ----------------------------------------------------------------*/
  370. /*
  371. Sidebar: a sidebar to be used within #app-content
  372. have it as first element within app-content in order to shrink other
  373. sibling containers properly. Compare Files app for example.
  374. */
  375. #app-sidebar {
  376. position: fixed;
  377. top: 45px;
  378. right: 0;
  379. left: auto;
  380. bottom: 0;
  381. width: 27%;
  382. min-width: 300px;
  383. display: block;
  384. background: $color-main-background;
  385. border-left: 1px solid nc-darken($color-main-background, 8%);
  386. -webkit-transition: margin-right 300ms;
  387. transition: margin-right 300ms;
  388. overflow-x: hidden;
  389. overflow-y: auto;
  390. visibility: visible;
  391. z-index: 500;
  392. &.disappear {
  393. visibility: hidden;
  394. }
  395. }
  396. /* APP-SETTINGS ---------------------------------------------------------------*/
  397. /* settings area */
  398. #app-settings {
  399. position: fixed;
  400. width: 250px;
  401. /* change to 100% when layout positions are absolute */
  402. bottom: 0;
  403. z-index: 140;
  404. &.open #app-settings-content,
  405. &.opened #app-settings-content {
  406. display: block;
  407. }
  408. }
  409. #app-settings-content {
  410. display: none;
  411. padding: 10px;
  412. background-color: $color-main-background;
  413. /* restrict height of settings and make scrollable */
  414. max-height: 300px;
  415. overflow-y: auto;
  416. border-right: 1px solid nc-darken($color-main-background, 8%);
  417. width: 250px;
  418. box-sizing: border-box;
  419. /* display input fields at full width */
  420. input[type='text'] {
  421. width: 93%;
  422. }
  423. .info-text {
  424. padding: 5px 0 7px 22px;
  425. color: rgba($color-main-text, .4);
  426. }
  427. }
  428. #app-settings-header {
  429. border-right: 1px solid nc-darken($color-main-background, 8%);
  430. width: 250px;
  431. box-sizing: border-box;
  432. }
  433. .settings-button {
  434. display: block;
  435. height: 44px;
  436. width: 100%;
  437. padding: 0;
  438. margin: 0;
  439. background-color: $color-main-background;
  440. background-image: url('../img/actions/settings.svg?v=1');
  441. background-position: 14px center;
  442. background-repeat: no-repeat;
  443. box-shadow: none;
  444. border: 0;
  445. border-radius: 0;
  446. text-align: left;
  447. padding-left: 42px;
  448. font-weight: 400;
  449. &:hover,
  450. &:focus {
  451. background-color: $color-main-background;
  452. }
  453. &.opened {
  454. &:hover, &:focus {
  455. background-color: $color-main-background;
  456. }
  457. }
  458. }
  459. /* GENERAL SECTION ---------------------------------------------------------- */
  460. .section {
  461. display: block;
  462. padding: 30px;
  463. color: nc-lighten($color-main-text, 33%);
  464. margin-bottom: 24px;
  465. &.hidden {
  466. display: none !important;
  467. }
  468. /* slight position correction of checkboxes and radio buttons */
  469. input {
  470. &[type='checkbox'],
  471. &[type='radio'] {
  472. vertical-align: -2px;
  473. margin-right: 4px;
  474. }
  475. }
  476. }
  477. .sub-section {
  478. position: relative;
  479. margin-top: 10px;
  480. margin-left: 27px;
  481. margin-bottom: 10px;
  482. }
  483. .appear {
  484. opacity: 1;
  485. -webkit-transition: opacity 500ms ease 0s;
  486. -moz-transition: opacity 500ms ease 0s;
  487. -ms-transition: opacity 500ms ease 0s;
  488. -o-transition: opacity 500ms ease 0s;
  489. transition: opacity 500ms ease 0s;
  490. &.transparent {
  491. opacity: 0;
  492. }
  493. }
  494. /* DROPDOWN ----------------------------------------------------------------- */
  495. .dropdown {
  496. background: nc-darken($color-main-background, 8%);
  497. border-bottom-left-radius: 5px;
  498. border-bottom-right-radius: 5px;
  499. box-shadow: 0 1px 1px $color-box-shadow;
  500. display: block;
  501. margin-right: 0;
  502. position: absolute;
  503. right: 0;
  504. width: 420px;
  505. z-index: 500;
  506. padding: 16px;
  507. }
  508. /* TABS --------------------------------------------------------------------- */
  509. .tabHeaders {
  510. display: inline-block;
  511. margin: 15px;
  512. .tabHeader {
  513. float: left;
  514. padding: 5px;
  515. cursor: pointer;
  516. color: nc-lighten($color-main-text, 33%);
  517. margin-bottom: 1px;
  518. a {
  519. color: nc-lighten($color-main-text, 33%);
  520. margin-bottom: 1px;
  521. }
  522. &.selected {
  523. font-weight: 600;
  524. border-bottom: 1px solid nc-lighten($color-main-text, 20%);
  525. }
  526. &:hover {
  527. border-bottom: 1px solid nc-lighten($color-main-text, 20%);
  528. }
  529. &.selected, &:hover {
  530. margin-bottom: 0px;
  531. color: $color-main-text;
  532. a {
  533. margin-bottom: 0px;
  534. color: $color-main-text;
  535. }
  536. }
  537. }
  538. }
  539. .tabsContainer {
  540. clear: left;
  541. .tab {
  542. padding: 0 15px 15px;
  543. }
  544. }
  545. /* POPOVER MENU ------------------------------------------------------------- */
  546. .ie,
  547. .edge {
  548. .bubble, .bubble:after,
  549. .popovermenu, .popovermenu:after,
  550. #app-navigation .app-navigation-entry-menu,
  551. #app-navigation .app-navigation-entry-menu:after {
  552. border: 1px solid nc-darken($color-main-background, 8%);
  553. }
  554. }
  555. .bubble,
  556. .app-navigation-entry-menu,
  557. .popovermenu {
  558. position: absolute;
  559. background-color: $color-main-background;
  560. color: $color-main-text;
  561. border-radius: 3px;
  562. z-index: 110;
  563. margin: 5px;
  564. margin-top: -5px;
  565. right: 0;
  566. box-shadow: 0 1px 10px $color-box-shadow;
  567. display: none;
  568. &:after {
  569. bottom: 100%;
  570. /* Min-width of popover is 36px and arrow width is 20px
  571. wich leaves us 8px right and 8px left */
  572. right: 8px;
  573. /* change this to adjust the arrow position */
  574. border: solid transparent;
  575. content: ' ';
  576. height: 0;
  577. width: 0;
  578. position: absolute;
  579. pointer-events: none;
  580. border-bottom-color: $color-main-background;
  581. border-width: 10px;
  582. }
  583. /* Center the popover */
  584. &.menu-center {
  585. transform: translateX(50%);
  586. right: 50%;
  587. margin-right: 0;
  588. &:after {
  589. right: 50%;
  590. transform: translateX(50%);
  591. }
  592. }
  593. /* Align the popover to the left */
  594. &.menu-left {
  595. right: auto;
  596. left: 0;
  597. margin-right: 0;
  598. &:after {
  599. left: 6px;
  600. right: auto;
  601. }
  602. }
  603. &.open {
  604. display: block;
  605. }
  606. ul {
  607. /* Overwrite #app-navigation > ul ul */
  608. display: flex !important;
  609. flex-direction: column;
  610. }
  611. li {
  612. display: flex;
  613. > button,
  614. > a,
  615. > .menuitem {
  616. cursor: pointer;
  617. line-height: 36px;
  618. border: 0;
  619. background-color: transparent;
  620. display: flex;
  621. align-items: center;
  622. width: auto;
  623. height: auto;
  624. margin: 0;
  625. font-weight: 300;
  626. box-shadow: none;
  627. width: 100%;
  628. /* Override the app-navigation li opacity */
  629. -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=70)' !important;
  630. filter: alpha(opacity = 70) !important;
  631. opacity: .7 !important;
  632. &:hover, &:focus, &.active {
  633. -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=100)' !important;
  634. filter: alpha(opacity = 100) !important;
  635. opacity: 1 !important;
  636. }
  637. /* prevent .action class to break the design */
  638. &.action {
  639. padding: inherit !important;
  640. }
  641. > span {
  642. cursor: pointer;
  643. white-space: nowrap;
  644. }
  645. > p {
  646. width: 150px;
  647. line-height: 1.6em;
  648. padding: 8px 0;
  649. }
  650. /* Add padding if contains icon+text */
  651. &:not(:empty) {
  652. padding: 0 !important;
  653. padding-right: 10px !important;
  654. }
  655. > img {
  656. width: 16px;
  657. padding: 0 10px;
  658. }
  659. }
  660. [class^='icon-'],
  661. [class*=' icon-']{
  662. /* Keep padding to define the width to
  663. assure correct position of a possible text */
  664. padding: 18px 0 18px 36px;
  665. min-width: 0; /* Overwrite icons*/
  666. min-height: 0;
  667. background-position: 10px center;
  668. }
  669. }
  670. }