apps.scss 14 KB

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