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 22KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095
  1. /**
  2. * @copyright Copyright (c) 2016-2017, 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. opacity: .5;
  34. }
  35. dl {
  36. padding: 12px 0;
  37. }
  38. dt,
  39. dd {
  40. display: inline-block;
  41. padding: 12px;
  42. padding-left: 0;
  43. }
  44. dt {
  45. width: 130px;
  46. white-space: nowrap;
  47. text-align: right;
  48. }
  49. kbd {
  50. padding: 4px 10px;
  51. border: 1px solid #ccc;
  52. box-shadow: 0 1px 0 rgba(0, 0, 0, .2);
  53. border-radius: $border-radius;
  54. display: inline-block;
  55. white-space: nowrap;
  56. }
  57. /* APP STYLING -------------------------------------------------------------- */
  58. #app {
  59. height: 100%;
  60. width: 100%;
  61. * {
  62. box-sizing: border-box;
  63. }
  64. }
  65. /* APP-NAVIGATION ------------------------------------------------------------*/
  66. /* Navigation: folder like structure */
  67. #app-navigation {
  68. width: 250px;
  69. height: 100%;
  70. float: left;
  71. box-sizing: border-box;
  72. background-color: $color-main-background;
  73. padding-bottom: 44px;
  74. -webkit-user-select: none;
  75. -moz-user-select: none;
  76. -ms-user-select: none;
  77. user-select: none;
  78. border-right: 1px solid $color-border;
  79. display: flex;
  80. flex-direction: column;
  81. li {
  82. position: relative;
  83. }
  84. > ul {
  85. position: relative;
  86. height: 100%;
  87. width: inherit;
  88. overflow-x: hidden;
  89. overflow-y: auto;
  90. box-sizing: border-box;
  91. display: flex;
  92. flex-direction: column;
  93. > li {
  94. display: inline-flex;
  95. flex-wrap: wrap;
  96. order: 1;
  97. flex-shrink: 0;
  98. /* Pinned-to-bottom entries */
  99. &.pinned {
  100. order: 2;
  101. &.first-pinned {
  102. margin-top: auto !important;
  103. }
  104. }
  105. > .app-navigation-entry-deleted {
  106. /* Ugly hack for overriding the main entry link */
  107. padding-left: 44px !important;
  108. }
  109. > .app-navigation-entry-edit {
  110. /* Ugly hack for overriding the main entry link */
  111. /* align the input correctly with the link text
  112. 44px-6px padding for the input */
  113. padding-left: 38px !important;
  114. }
  115. &:focus,
  116. &:hover,
  117. &.active,
  118. a.selected {
  119. &,
  120. > a {
  121. opacity: 1;
  122. box-shadow: inset 2px 0 $color-primary;
  123. }
  124. }
  125. /* align loader */
  126. &.icon-loading-small:after {
  127. left: 22px;
  128. top: 22px;
  129. }
  130. /* hide and animate deletion/collapse of subitems */
  131. &.deleted,
  132. &.collapsible:not(.open) {
  133. > ul {
  134. opacity: 0;
  135. max-height: 0;
  136. /* bezier override the hide/slow effect due to the 2000 max-height */
  137. transition: max-height 1000ms cubic-bezier(0, 1, 0, 1),
  138. opacity 250ms ease-in-out;
  139. }
  140. }
  141. /* Second level nesting for lists */
  142. > ul {
  143. flex: 0 1 auto;
  144. padding-left: 44px;
  145. width: 100%;
  146. transition: max-height 2000ms ease-in-out,
  147. opacity 250ms ease-in-out;
  148. max-height: 9999px;
  149. opacity: 1;
  150. position: relative;
  151. > li {
  152. display: inline-flex;
  153. flex-wrap: wrap;
  154. &:focus,
  155. &:hover,
  156. &.active,
  157. a.selected {
  158. &,
  159. > a {
  160. opacity: 1;
  161. }
  162. }
  163. /* align loader */
  164. &.icon-loading-small:after {
  165. left: 22px; /* 44px / 2 */
  166. }
  167. }
  168. }
  169. }
  170. /* Menu and submenu */
  171. > li,
  172. > li > ul > li {
  173. position: relative;
  174. width: 100%;
  175. box-sizing: border-box;
  176. /* hide icons if loading */
  177. &.icon-loading-small {
  178. > a,
  179. > .app-navigation-entry-bullet {
  180. /* hide icon or bullet if loading state*/
  181. background: none !important;
  182. }
  183. }
  184. /* Main entry link */
  185. > a {
  186. background-size: 16px 16px;
  187. background-position: 14px center;
  188. background-repeat: no-repeat;
  189. display: block;
  190. justify-content: space-between;
  191. line-height: 44px;
  192. min-height: 44px;
  193. padding: 0 12px 0 44px;
  194. overflow: hidden;
  195. box-sizing: border-box;
  196. white-space: nowrap;
  197. text-overflow: ellipsis;
  198. color: $color-main-text;
  199. opacity: .57;
  200. flex: 1 1 0;
  201. z-index: 100; /* above the bullet to allow click*/
  202. /* TODO: forbid using img as icon in menu? */
  203. &:first-child img {
  204. margin-right: 11px;
  205. width: 16px;
  206. height: 16px;
  207. margin-left: -30px;
  208. }
  209. /* counter can also be inside the link */
  210. > .app-navigation-entry-utils {
  211. display: inline-block;
  212. float: right;
  213. .app-navigation-entry-utils-counter {
  214. padding-right: 0 !important;
  215. }
  216. }
  217. }
  218. /* Bullet icon */
  219. > .app-navigation-entry-bullet {
  220. position: absolute;
  221. display: block;
  222. margin: 16px;
  223. width: 12px;
  224. height: 12px;
  225. border: none;
  226. border-radius: 50%;
  227. cursor: pointer;
  228. }
  229. /* popover fix the flex positionning of the li parent */
  230. > .app-navigation-entry-menu {
  231. top: 44px;
  232. }
  233. /* show edit/undo field if editing/deleted */
  234. &.editing .app-navigation-entry-edit {
  235. opacity: 1;
  236. z-index: 250;
  237. }
  238. &.deleted .app-navigation-entry-deleted {
  239. transform: translateX(0);
  240. z-index: 250;
  241. }
  242. }
  243. }
  244. &.hidden {
  245. display: none;
  246. }
  247. &.without-app-settings {
  248. padding-bottom: 0;
  249. }
  250. /**
  251. * Button styling for menu, edit and undo
  252. */
  253. .app-navigation-entry-utils .app-navigation-entry-utils-menu-button > button,
  254. .app-navigation-entry-deleted .app-navigation-entry-deleted-button {
  255. border: 0;
  256. opacity: 0.5;
  257. background-color: transparent;
  258. background-repeat: no-repeat;
  259. background-position: center;
  260. &:hover,
  261. &:focus {
  262. background-color: transparent;
  263. opacity: 1;
  264. }
  265. }
  266. /**
  267. * Collapsible menus
  268. */
  269. .collapsible {
  270. /* Fallback for old collapse button.
  271. TODO: to be removed. Leaved here for retro compatibility */
  272. .collapse {
  273. opacity: 0;
  274. position: absolute;
  275. width: 44px;
  276. height: 44px;
  277. margin: 0;
  278. z-index: 110;
  279. }
  280. &:after {
  281. position: absolute;
  282. height: 44px;
  283. width: 44px;
  284. margin: 0;
  285. padding: 0;
  286. background: none;
  287. background-image: url('../img/actions/triangle-s.svg?v=1');
  288. background-size: 16px;
  289. background-repeat: no-repeat;
  290. background-position: center;
  291. border: none;
  292. border-radius: 0;
  293. outline: none !important;
  294. box-shadow: none;
  295. content: ' ';
  296. opacity: 0;
  297. -webkit-transform: rotate(-90deg);
  298. -ms-transform: rotate(-90deg);
  299. transform: rotate(-90deg);
  300. }
  301. /* force padding on link no matter if 'a' has an icon class */
  302. > a:first-child {
  303. padding-left: 44px;
  304. }
  305. &:after,
  306. > a {
  307. transition: background 100ms ease-in-out,
  308. transform 250ms ease-in-out,
  309. opacity 100ms ease-in-out;
  310. }
  311. &:hover > a,
  312. &:focus > a {
  313. background-position-x: -50px;
  314. }
  315. &:hover,
  316. &:focus {
  317. &:after {
  318. opacity: 1;
  319. }
  320. }
  321. &.open {
  322. &:after {
  323. -webkit-transform: rotate(0);
  324. -ms-transform: rotate(0);
  325. transform: rotate(0);
  326. }
  327. }
  328. }
  329. /**
  330. * App navigation utils, buttons and counters for drop down menu
  331. */
  332. .app-navigation-entry-utils {
  333. flex: 0 1 auto;
  334. ul {
  335. display: flex !important;
  336. align-items: center;
  337. justify-content: flex-end;
  338. }
  339. li {
  340. width: 44px !important;
  341. height: 44px;
  342. }
  343. button {
  344. height: 100%;
  345. width: 100%;
  346. margin: 0;
  347. box-shadow: none;
  348. }
  349. .app-navigation-entry-utils-menu-button {
  350. /* Prevent bg img override if an icon class is set */
  351. button:not([class^='icon-']):not([class*=' icon-']) {
  352. background-image: url('../img/actions/more.svg?v=1');
  353. }
  354. &:hover button,
  355. &:focus button {
  356. background-color: transparent;
  357. opacity: 1;
  358. }
  359. }
  360. .app-navigation-entry-utils-counter {
  361. overflow: hidden;
  362. text-align: right;
  363. font-size: 9pt;
  364. line-height: 44px;
  365. padding: 0 12px; /* Same padding as all li > a in the app-navigation */
  366. }
  367. }
  368. /**
  369. * Editable entries
  370. */
  371. .app-navigation-entry-edit {
  372. padding-left: 5px;
  373. padding-right: 5px;
  374. display: block;
  375. width: calc(100% - 1px); /* Avoid border overlapping */
  376. transition: opacity 250ms ease-in-out;
  377. opacity: 0;
  378. position: absolute;
  379. background-color: $color-main-background;
  380. z-index: -1;
  381. form,
  382. div {
  383. display: inline-flex;
  384. width: 100%;
  385. }
  386. input {
  387. padding: 5px;
  388. margin-right: 0;
  389. height: 38px;
  390. &:hover {
  391. /* overlapp borders */
  392. z-index: 1;
  393. }
  394. }
  395. input[type='text'] {
  396. width: 100%;
  397. min-width: 0; /* firefox hack: override auto */
  398. border-bottom-right-radius: 0;
  399. border-top-right-radius: 0;
  400. }
  401. button,
  402. input:not([type='text']) {
  403. width: 36px;
  404. height: 38px;
  405. flex: 0 0 36px;
  406. &:not(:last-child) {
  407. border-radius: 0;
  408. }
  409. &:not(:first-child) {
  410. margin-left: -1px;
  411. }
  412. &:last-child {
  413. border-bottom-left-radius: 0;
  414. border-top-left-radius: 0;
  415. }
  416. }
  417. }
  418. /**
  419. * Deleted entries with undo button
  420. */
  421. .app-navigation-entry-deleted {
  422. display: inline-flex;
  423. padding-left: 44px;
  424. transform: translateX(250px);
  425. .app-navigation-entry-deleted-description {
  426. position: relative;
  427. white-space: nowrap;
  428. text-overflow: ellipsis;
  429. overflow: hidden;
  430. flex: 1 1 0;
  431. line-height: 44px;
  432. }
  433. .app-navigation-entry-deleted-button {
  434. margin: 0;
  435. height: 44px;
  436. width: 44px;
  437. line-height: 44px;
  438. &:hover, &:focus {
  439. opacity: 1;
  440. }
  441. }
  442. }
  443. /**
  444. * Common rules for animation of undo and edit entries
  445. */
  446. .app-navigation-entry-edit,
  447. .app-navigation-entry-deleted {
  448. width: calc(100% - 1px); /* Avoid border overlapping */
  449. transition: transform 250ms ease-in-out,
  450. opacity 250ms ease-in-out,
  451. z-index 250ms ease-in-out;
  452. position: absolute;
  453. background-color: $color-main-background;
  454. box-sizing: border-box;
  455. }
  456. /**
  457. * drag and drop
  458. */
  459. .drag-and-drop {
  460. -webkit-transition: padding-bottom 500ms ease 0s;
  461. transition: padding-bottom 500ms ease 0s;
  462. padding-bottom: 40px;
  463. }
  464. .error {
  465. color: $color-error;
  466. }
  467. .app-navigation-separator {
  468. border-bottom: 1px solid nc-lighten($color-main-text, 86%);
  469. }
  470. .app-navigation-entry-utils ul,
  471. .app-navigation-entry-menu ul {
  472. list-style-type: none;
  473. }
  474. }
  475. /* APP-CONTENT ---------------------------------------------------------------*/
  476. /* Part where the content will be loaded into */
  477. #app-content {
  478. position: relative;
  479. height: 100%;
  480. overflow-y: auto;
  481. /* no top border for first settings item */
  482. > .section:first-child {
  483. border-top: none;
  484. }
  485. &.with-app-sidebar {
  486. margin-right: 27%;
  487. }
  488. }
  489. #app-content-wrapper {
  490. min-width: 100%;
  491. min-height: 100%;
  492. }
  493. /* APP-SIDEBAR ----------------------------------------------------------------*/
  494. /*
  495. Sidebar: a sidebar to be used within #app-content
  496. have it as first element within app-content in order to shrink other
  497. sibling containers properly. Compare Files app for example.
  498. */
  499. #app-sidebar {
  500. position: fixed;
  501. top: 45px;
  502. right: 0;
  503. left: auto;
  504. bottom: 0;
  505. width: 27%;
  506. min-width: 300px;
  507. display: block;
  508. background: $color-main-background;
  509. border-left: 1px solid $color-border;
  510. -webkit-transition: margin-right 300ms;
  511. transition: margin-right 300ms;
  512. overflow-x: hidden;
  513. overflow-y: auto;
  514. visibility: visible;
  515. z-index: 500;
  516. &.disappear {
  517. visibility: hidden;
  518. }
  519. }
  520. /* APP-SETTINGS ---------------------------------------------------------------*/
  521. /* settings area */
  522. #app-settings {
  523. position: fixed;
  524. width: 250px;
  525. /* change to 100% when layout positions are absolute */
  526. bottom: 0;
  527. z-index: 140;
  528. &.open,
  529. &.opened {
  530. #app-settings-content {
  531. display: block;
  532. }
  533. }
  534. }
  535. #app-settings-content {
  536. display: none;
  537. padding: 10px;
  538. background-color: $color-main-background;
  539. /* restrict height of settings and make scrollable */
  540. max-height: 300px;
  541. overflow-y: auto;
  542. border-right: 1px solid $color-border;
  543. width: 250px;
  544. box-sizing: border-box;
  545. /* display input fields at full width */
  546. input[type='text'] {
  547. width: 93%;
  548. }
  549. .info-text {
  550. padding: 5px 0 7px 22px;
  551. color: rgba($color-main-text, .4);
  552. }
  553. input {
  554. &[type='checkbox'],
  555. &[type='radio'] {
  556. &.radio,
  557. &.checkbox {
  558. + label {
  559. display: inline-block;
  560. width: 100%;
  561. padding: 5px 0;
  562. }
  563. }
  564. }
  565. }
  566. }
  567. #app-settings-header {
  568. border-right: 1px solid $color-border;
  569. width: 250px;
  570. box-sizing: border-box;
  571. background-color: $color-main-background;
  572. }
  573. .settings-button {
  574. display: block;
  575. height: 44px;
  576. width: 100%;
  577. padding: 0;
  578. margin: 0;
  579. background-color: $color-main-background;
  580. background-image: url('../img/actions/settings-dark.svg?v=1');
  581. background-position: 14px center;
  582. background-repeat: no-repeat;
  583. box-shadow: none;
  584. border: 0;
  585. border-radius: 0;
  586. text-align: left;
  587. padding-left: 42px;
  588. font-weight: 400;
  589. /* like app-navigation a */
  590. color: $color-main-text;
  591. opacity: .57;
  592. &.opened,
  593. &:hover {
  594. background-color: $color-main-background;
  595. opacity: 1;
  596. box-shadow: inset 2px 0 $color-primary;
  597. }
  598. }
  599. /* GENERAL SECTION ---------------------------------------------------------- */
  600. .section {
  601. display: block;
  602. padding: 30px;
  603. color: nc-lighten($color-main-text, 33%);
  604. margin-bottom: 24px;
  605. &.hidden {
  606. display: none !important;
  607. }
  608. /* slight position correction of checkboxes and radio buttons */
  609. input {
  610. &[type='checkbox'],
  611. &[type='radio'] {
  612. vertical-align: -2px;
  613. margin-right: 4px;
  614. }
  615. }
  616. }
  617. .sub-section {
  618. position: relative;
  619. margin-top: 10px;
  620. margin-left: 27px;
  621. margin-bottom: 10px;
  622. }
  623. .appear {
  624. opacity: 1;
  625. -webkit-transition: opacity 500ms ease 0s;
  626. -moz-transition: opacity 500ms ease 0s;
  627. -ms-transition: opacity 500ms ease 0s;
  628. -o-transition: opacity 500ms ease 0s;
  629. transition: opacity 500ms ease 0s;
  630. &.transparent {
  631. opacity: 0;
  632. }
  633. }
  634. /* TABS --------------------------------------------------------------------- */
  635. .tabHeaders {
  636. display: inline-block;
  637. margin: 15px;
  638. .tabHeader {
  639. float: left;
  640. padding: 5px;
  641. cursor: pointer;
  642. color: nc-lighten($color-main-text, 33%);
  643. margin-bottom: 1px;
  644. a {
  645. color: nc-lighten($color-main-text, 33%);
  646. margin-bottom: 1px;
  647. }
  648. &.selected {
  649. font-weight: 600;
  650. border-bottom: 1px solid nc-lighten($color-main-text, 20%);
  651. }
  652. &:hover {
  653. border-bottom: 1px solid nc-lighten($color-main-text, 20%);
  654. }
  655. &.selected, &:hover {
  656. margin-bottom: 0px;
  657. color: $color-main-text;
  658. a {
  659. margin-bottom: 0px;
  660. color: $color-main-text;
  661. }
  662. }
  663. }
  664. }
  665. .tabsContainer {
  666. clear: left;
  667. .tab {
  668. padding: 0 15px 15px;
  669. }
  670. }
  671. /* POPOVER MENU ------------------------------------------------------------- */
  672. .ie,
  673. .edge {
  674. .bubble, .bubble:after,
  675. .popovermenu, .popovermenu:after,
  676. #app-navigation .app-navigation-entry-menu,
  677. #app-navigation .app-navigation-entry-menu:after {
  678. border: 1px solid $color-border;
  679. }
  680. }
  681. .bubble,
  682. .app-navigation-entry-menu,
  683. .popovermenu {
  684. position: absolute;
  685. background-color: $color-main-background;
  686. color: $color-main-text;
  687. border-radius: $border-radius;
  688. z-index: 110;
  689. margin: 5px;
  690. margin-top: -5px;
  691. right: 0;
  692. filter: drop-shadow(0 1px 3px $color-box-shadow);
  693. display: none;
  694. &:after {
  695. bottom: 100%;
  696. /* Min-width of popover is 36px and arrow width is 20px
  697. wich leaves us 8px right and 8px left */
  698. right: 8px;
  699. /* change this to adjust the arrow position */
  700. border: solid transparent;
  701. content: ' ';
  702. height: 0;
  703. width: 0;
  704. position: absolute;
  705. pointer-events: none;
  706. border-bottom-color: $color-main-background;
  707. border-width: 10px;
  708. }
  709. /* Center the popover */
  710. &.menu-center {
  711. transform: translateX(50%);
  712. right: 50%;
  713. margin-right: 0;
  714. &:after {
  715. right: 50%;
  716. transform: translateX(50%);
  717. }
  718. }
  719. /* Align the popover to the left */
  720. &.menu-left {
  721. right: auto;
  722. left: 0;
  723. margin-right: 0;
  724. &:after {
  725. left: 6px;
  726. right: auto;
  727. }
  728. }
  729. &.open {
  730. display: block;
  731. }
  732. ul {
  733. /* Overwrite #app-navigation > ul ul */
  734. display: flex !important;
  735. flex-direction: column;
  736. }
  737. li {
  738. display: flex;
  739. flex: 0 0 auto;
  740. > button,
  741. > a,
  742. > .menuitem {
  743. cursor: pointer;
  744. line-height: 36px;
  745. border: 0;
  746. background-color: transparent;
  747. display: flex;
  748. align-items: center;
  749. width: auto;
  750. height: auto;
  751. margin: 0;
  752. font-weight: 300;
  753. box-shadow: none;
  754. width: 100%;
  755. color: $color-main-text;
  756. /* Override the app-navigation li opacity */
  757. opacity: .7 !important;
  758. [class^='icon-'],
  759. [class*=' icon-'],
  760. &[class^='icon-'],
  761. &[class*=' icon-'] {
  762. min-width: 0; /* Overwrite icons*/
  763. min-height: 0;
  764. background-position: 10px center;
  765. background-size: 16px;
  766. }
  767. [class^='icon-'],
  768. [class*=' icon-'] {
  769. /* Keep padding to define the width to
  770. assure correct position of a possible text */
  771. padding: 18px 0 18px 36px;
  772. }
  773. &[class^='icon-'],
  774. &[class*=' icon-'] {
  775. padding: 0 10px 0 36px !important;
  776. }
  777. &:hover, &:focus, &.active {
  778. opacity: 1 !important;
  779. }
  780. /* prevent .action class to break the design */
  781. &.action {
  782. padding: inherit !important;
  783. }
  784. > span {
  785. cursor: pointer;
  786. white-space: nowrap;
  787. }
  788. > p {
  789. width: 150px;
  790. line-height: 1.6em;
  791. padding: 8px 0;
  792. }
  793. /* Add padding if contains icon+text */
  794. &:not(:empty) {
  795. padding-right: 10px !important;
  796. }
  797. > img {
  798. width: 16px;
  799. padding: 0 10px;
  800. }
  801. > input.checkbox + label {
  802. padding: 0 !important;
  803. &::before {
  804. margin: -2px 12px 0;
  805. }
  806. }
  807. > input.radio + label {
  808. padding: 0 !important;
  809. &::before {
  810. margin: -2px 11px 0;
  811. }
  812. }
  813. }
  814. > button {
  815. padding: 0;
  816. span {
  817. opacity: 1;
  818. }
  819. }
  820. }
  821. }
  822. #app-content-wrapper {
  823. display: flex;
  824. position: relative;
  825. align-items: start;
  826. height: 100%;
  827. width: 100%;
  828. .app-content-list,
  829. .app-content-detail {
  830. min-height: 100%;
  831. max-height: 100%;
  832. overflow-x: hidden;
  833. overflow-y: auto;
  834. }
  835. }
  836. .app-content-list {
  837. width: 300px;
  838. border-right: 1px solid nc-darken($color-main-background, 8%);
  839. display: flex;
  840. flex-direction: column;
  841. transition: transform 250ms ease-in-out;
  842. /* Default item */
  843. .app-content-list-item {
  844. position: relative;
  845. height: 68px;
  846. border-top: 1px solid nc-darken($color-main-background, 8%);
  847. cursor: pointer;
  848. padding: 10px 7px;
  849. display: flex;
  850. flex-wrap: wrap;
  851. align-items: center;
  852. flex: 0 0 auto;
  853. /* Icon fixes */
  854. &,
  855. > .app-content-list-item-menu {
  856. > [class^='icon-'],
  857. > [class*=' icon-'] {
  858. order: 4;
  859. width: 24px;
  860. height: 24px;
  861. margin: -10px;
  862. padding: 22px;
  863. opacity: .3;
  864. cursor: pointer;
  865. &:hover, &:focus {
  866. opacity: .7;
  867. }
  868. &[class^='icon-star'],
  869. &[class*=' icon-star'] {
  870. opacity: .7;
  871. &:hover, &:focus {
  872. opacity: 1 ;
  873. }
  874. }
  875. &.icon-starred {
  876. opacity: 1 ;
  877. }
  878. }
  879. }
  880. &:hover, &:focus,
  881. &.active {
  882. background-color: nc-darken($color-main-background, 6%);
  883. }
  884. .app-content-list-item-checkbox.checkbox + label,
  885. .app-content-list-item-star {
  886. position: absolute;
  887. height: 40px;
  888. width: 40px;
  889. display: flex;
  890. z-index: 50;
  891. + .app-content-list-item-icon {
  892. opacity: .7;
  893. }
  894. }
  895. .app-content-list-item-checkbox.checkbox + label {
  896. top: 14px;
  897. left: 7px;
  898. &::before {
  899. margin: 0;
  900. }
  901. /* Hide the star, priority to the checkbox */
  902. ~ .app-content-list-item-star {
  903. display: none;
  904. }
  905. }
  906. .app-content-list-item-star {
  907. top: 10px;
  908. left: 32px;
  909. background-size: 16px;
  910. height: 20px;
  911. width: 20px;
  912. margin: 0;
  913. padding: 0;
  914. }
  915. .app-content-list-item-icon {
  916. position: absolute;
  917. display: inline-block;
  918. height: 40px;
  919. width: 40px;
  920. line-height: 40px;
  921. border-radius: 50%;
  922. vertical-align: middle;
  923. margin-right: 10px;
  924. color: #fff;
  925. text-align: center;
  926. font-size: 1.5em;
  927. text-transform: capitalize;
  928. object-fit: cover;
  929. user-select: none;
  930. cursor: pointer;
  931. }
  932. .app-content-list-item-line-one,
  933. .app-content-list-item-line-two {
  934. display: block;
  935. padding-left: 50px;
  936. white-space: nowrap;
  937. overflow: hidden;
  938. text-overflow: ellipsis;
  939. order: 1;
  940. flex: 1 1 0;
  941. padding-right: 10px;
  942. cursor: pointer;
  943. }
  944. .app-content-list-item-line-two {
  945. opacity: .5;
  946. order: 3;
  947. flex: 1 0 calc(100% - 24px);
  948. }
  949. .app-content-list-item-details {
  950. order: 2;
  951. white-space: nowrap;
  952. overflow: hidden;
  953. text-overflow: ellipsis;
  954. max-width: 100px;
  955. opacity: .5;
  956. font-size: 80%;
  957. user-select: none;
  958. }
  959. .app-content-list-item-menu {
  960. order: 4;
  961. position: relative;
  962. .popovermenu {
  963. margin: 0;
  964. right: -5px;
  965. }
  966. }
  967. }
  968. }
  969. /* App content */
  970. .app-content-detail {
  971. /* grow full width */
  972. flex-grow: 1;
  973. #app-navigation-toggle-back {
  974. display: none;
  975. }
  976. }
  977. /* Mobile width < 768px */
  978. @media only screen and (max-width: 768px) {
  979. /* full width for message list on mobile */
  980. .app-content-list {
  981. width: 100%;
  982. background: $color-main-background;
  983. position: relative;
  984. z-index: 100;
  985. }
  986. /* overlay message detail on top of message list */
  987. .app-content-detail {
  988. background: $color-main-background;
  989. width: 100%;
  990. left: 0;
  991. height: 100%;
  992. top: 0;
  993. box-shadow: 0 0 100px rgba(100, 100, 100, .9);
  994. position: absolute;
  995. }
  996. /* Show app details page */
  997. #app-content.showdetails {
  998. #app-navigation-toggle {
  999. transform: translateX(-44px);
  1000. }
  1001. #app-navigation-toggle-back {
  1002. position: fixed;
  1003. display: inline-block !important;
  1004. top: 45px;
  1005. left: 0;
  1006. width: 44px;
  1007. height: 44px;
  1008. z-index: 149;
  1009. background-color: rgba(255, 255, 255, .7);
  1010. cursor: pointer;
  1011. opacity: .6;
  1012. transform: rotate(90deg);
  1013. }
  1014. .app-content-list {
  1015. transform: translateX(-100%);
  1016. }
  1017. }
  1018. /* end of media query */
  1019. }