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

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103
  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 0px;
  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 0px;
  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. left: 0;
  454. background-color: $color-main-background;
  455. box-sizing: border-box;
  456. }
  457. /**
  458. * drag and drop
  459. */
  460. .drag-and-drop {
  461. -webkit-transition: padding-bottom 500ms ease 0s;
  462. transition: padding-bottom 500ms ease 0s;
  463. padding-bottom: 40px;
  464. }
  465. .error {
  466. color: $color-error;
  467. }
  468. .app-navigation-separator {
  469. border-bottom: 1px solid nc-lighten($color-main-text, 86%);
  470. }
  471. .app-navigation-entry-utils ul,
  472. .app-navigation-entry-menu ul {
  473. list-style-type: none;
  474. }
  475. }
  476. /* APP-CONTENT ---------------------------------------------------------------*/
  477. /* Part where the content will be loaded into */
  478. #app-content {
  479. position: relative;
  480. height: 100%;
  481. overflow-y: auto;
  482. /* no top border for first settings item */
  483. > .section:first-child {
  484. border-top: none;
  485. }
  486. &.with-app-sidebar {
  487. margin-right: 27%;
  488. }
  489. }
  490. #app-content-wrapper {
  491. min-width: 100%;
  492. min-height: 100%;
  493. }
  494. /* APP-SIDEBAR ----------------------------------------------------------------*/
  495. /*
  496. Sidebar: a sidebar to be used within #app-content
  497. have it as first element within app-content in order to shrink other
  498. sibling containers properly. Compare Files app for example.
  499. */
  500. #app-sidebar {
  501. position: fixed;
  502. top: 45px;
  503. right: 0;
  504. left: auto;
  505. bottom: 0;
  506. width: 27%;
  507. min-width: 300px;
  508. display: block;
  509. background: $color-main-background;
  510. border-left: 1px solid $color-border;
  511. -webkit-transition: margin-right 300ms;
  512. transition: margin-right 300ms;
  513. overflow-x: hidden;
  514. overflow-y: auto;
  515. visibility: visible;
  516. z-index: 500;
  517. &.disappear {
  518. visibility: hidden;
  519. }
  520. }
  521. /* APP-SETTINGS ---------------------------------------------------------------*/
  522. /* settings area */
  523. #app-settings {
  524. position: fixed;
  525. width: 250px;
  526. /* change to 100% when layout positions are absolute */
  527. bottom: 0;
  528. z-index: 140;
  529. &.open,
  530. &.opened {
  531. #app-settings-content {
  532. display: block;
  533. }
  534. }
  535. }
  536. #app-settings-content {
  537. display: none;
  538. padding: 10px;
  539. background-color: $color-main-background;
  540. /* restrict height of settings and make scrollable */
  541. max-height: 300px;
  542. overflow-y: auto;
  543. border-right: 1px solid $color-border;
  544. width: 250px;
  545. box-sizing: border-box;
  546. /* display input fields at full width */
  547. input[type='text'] {
  548. width: 93%;
  549. }
  550. .info-text {
  551. padding: 5px 0 7px 22px;
  552. color: rgba($color-main-text, .4);
  553. }
  554. input {
  555. &[type='checkbox'],
  556. &[type='radio'] {
  557. &.radio,
  558. &.checkbox {
  559. + label {
  560. display: inline-block;
  561. width: 100%;
  562. padding: 5px 0;
  563. }
  564. }
  565. }
  566. }
  567. }
  568. #app-settings-header {
  569. border-right: 1px solid $color-border;
  570. width: 250px;
  571. box-sizing: border-box;
  572. background-color: $color-main-background;
  573. }
  574. .settings-button {
  575. display: block;
  576. height: 44px;
  577. width: 100%;
  578. padding: 0;
  579. margin: 0;
  580. background-color: $color-main-background;
  581. background-image: url('../img/actions/settings-dark.svg?v=1');
  582. background-position: 14px center;
  583. background-repeat: no-repeat;
  584. box-shadow: none;
  585. border: 0;
  586. border-radius: 0;
  587. text-align: left;
  588. padding-left: 42px;
  589. font-weight: 400;
  590. /* like app-navigation a */
  591. color: $color-main-text;
  592. opacity: .57;
  593. &.opened,
  594. &:hover {
  595. background-color: $color-main-background;
  596. opacity: 1;
  597. box-shadow: inset 2px 0 $color-primary;
  598. }
  599. }
  600. /* GENERAL SECTION ---------------------------------------------------------- */
  601. .section {
  602. display: block;
  603. padding: 30px;
  604. color: nc-lighten($color-main-text, 33%);
  605. margin-bottom: 24px;
  606. &.hidden {
  607. display: none !important;
  608. }
  609. /* slight position correction of checkboxes and radio buttons */
  610. input {
  611. &[type='checkbox'],
  612. &[type='radio'] {
  613. vertical-align: -2px;
  614. margin-right: 4px;
  615. }
  616. }
  617. }
  618. .sub-section {
  619. position: relative;
  620. margin-top: 10px;
  621. margin-left: 27px;
  622. margin-bottom: 10px;
  623. }
  624. .appear {
  625. opacity: 1;
  626. -webkit-transition: opacity 500ms ease 0s;
  627. -moz-transition: opacity 500ms ease 0s;
  628. -ms-transition: opacity 500ms ease 0s;
  629. -o-transition: opacity 500ms ease 0s;
  630. transition: opacity 500ms ease 0s;
  631. &.transparent {
  632. opacity: 0;
  633. }
  634. }
  635. /* TABS --------------------------------------------------------------------- */
  636. .tabHeaders {
  637. display: inline-block;
  638. margin: 15px;
  639. .tabHeader {
  640. float: left;
  641. padding: 5px;
  642. cursor: pointer;
  643. color: nc-lighten($color-main-text, 33%);
  644. margin-bottom: 1px;
  645. a {
  646. color: nc-lighten($color-main-text, 33%);
  647. margin-bottom: 1px;
  648. }
  649. &.selected {
  650. font-weight: 600;
  651. border-bottom: 1px solid nc-lighten($color-main-text, 20%);
  652. }
  653. &:hover {
  654. border-bottom: 1px solid nc-lighten($color-main-text, 20%);
  655. }
  656. &.selected, &:hover {
  657. margin-bottom: 0px;
  658. color: $color-main-text;
  659. a {
  660. margin-bottom: 0px;
  661. color: $color-main-text;
  662. }
  663. }
  664. }
  665. }
  666. .tabsContainer {
  667. clear: left;
  668. .tab {
  669. padding: 0 15px 15px;
  670. }
  671. }
  672. /* POPOVER MENU ------------------------------------------------------------- */
  673. .ie,
  674. .edge {
  675. .bubble, .bubble:after,
  676. .popovermenu, .popovermenu:after,
  677. #app-navigation .app-navigation-entry-menu,
  678. #app-navigation .app-navigation-entry-menu:after {
  679. border: 1px solid $color-border;
  680. }
  681. }
  682. .bubble,
  683. .app-navigation-entry-menu,
  684. .popovermenu {
  685. position: absolute;
  686. background-color: $color-main-background;
  687. color: $color-main-text;
  688. border-radius: $border-radius;
  689. z-index: 110;
  690. margin: 5px;
  691. margin-top: -5px;
  692. right: 0;
  693. filter: drop-shadow(0 1px 3px $color-box-shadow);
  694. display: none;
  695. &:after {
  696. bottom: 100%;
  697. /* Min-width of popover is 36px and arrow width is 20px
  698. wich leaves us 8px right and 8px left */
  699. right: 8px;
  700. /* change this to adjust the arrow position */
  701. border: solid transparent;
  702. content: ' ';
  703. height: 0;
  704. width: 0;
  705. position: absolute;
  706. pointer-events: none;
  707. border-bottom-color: $color-main-background;
  708. border-width: 10px;
  709. }
  710. /* Center the popover */
  711. &.menu-center {
  712. transform: translateX(50%);
  713. right: 50%;
  714. margin-right: 0;
  715. &:after {
  716. right: 50%;
  717. transform: translateX(50%);
  718. }
  719. }
  720. /* Align the popover to the left */
  721. &.menu-left {
  722. right: auto;
  723. left: 0;
  724. margin-right: 0;
  725. &:after {
  726. left: 6px;
  727. right: auto;
  728. }
  729. }
  730. &.open {
  731. display: block;
  732. }
  733. ul {
  734. /* Overwrite #app-navigation > ul ul */
  735. display: flex !important;
  736. flex-direction: column;
  737. }
  738. li {
  739. display: flex;
  740. flex: 0 0 auto;
  741. > button,
  742. > a,
  743. > .menuitem {
  744. cursor: pointer;
  745. line-height: 36px;
  746. border: 0;
  747. background-color: transparent;
  748. display: flex;
  749. align-items: center;
  750. width: auto;
  751. height: auto;
  752. margin: 0;
  753. font-weight: 300;
  754. box-shadow: none;
  755. width: 100%;
  756. color: $color-main-text;
  757. /* Override the app-navigation li opacity */
  758. opacity: .7 !important;
  759. [class^='icon-'],
  760. [class*=' icon-'],
  761. &[class^='icon-'],
  762. &[class*=' icon-'] {
  763. min-width: 0; /* Overwrite icons*/
  764. min-height: 0;
  765. background-position: 10px center;
  766. background-size: 16px;
  767. }
  768. [class^='icon-'],
  769. [class*=' icon-'] {
  770. /* Keep padding to define the width to
  771. assure correct position of a possible text */
  772. padding: 18px 0 18px 36px;
  773. }
  774. &[class^='icon-'],
  775. &[class*=' icon-'] {
  776. padding: 0 10px 0 36px !important;
  777. }
  778. &:hover, &:focus, &.active {
  779. opacity: 1 !important;
  780. }
  781. /* prevent .action class to break the design */
  782. &.action {
  783. padding: inherit !important;
  784. }
  785. > span {
  786. cursor: pointer;
  787. white-space: nowrap;
  788. }
  789. > p {
  790. width: 150px;
  791. line-height: 1.6em;
  792. padding: 8px 0;
  793. }
  794. > select {
  795. margin: 0;
  796. margin-left: 6px;
  797. }
  798. /* Add padding if contains icon+text */
  799. &:not(:empty) {
  800. padding-right: 10px !important;
  801. }
  802. > img {
  803. width: 16px;
  804. padding: 0 10px;
  805. }
  806. /* checkbox/radio fixes */
  807. > input.radio + label,
  808. > input.checkbox + label {
  809. padding: 0 !important;
  810. width: 100%;
  811. }
  812. > input.checkbox + label::before {
  813. margin: -2px 12px 0;
  814. }
  815. > input.radio + label::before {
  816. margin: -2px 11px 0;
  817. }
  818. }
  819. > button {
  820. padding: 0;
  821. span {
  822. opacity: 1;
  823. }
  824. }
  825. }
  826. }
  827. #app-content-wrapper {
  828. display: flex;
  829. position: relative;
  830. align-items: start;
  831. height: 100%;
  832. width: 100%;
  833. .app-content-list,
  834. .app-content-detail {
  835. min-height: 100%;
  836. max-height: 100%;
  837. overflow-x: hidden;
  838. overflow-y: auto;
  839. }
  840. }
  841. .app-content-list {
  842. width: 300px;
  843. border-right: 1px solid nc-darken($color-main-background, 8%);
  844. display: flex;
  845. flex-direction: column;
  846. transition: transform 250ms ease-in-out;
  847. /* Default item */
  848. .app-content-list-item {
  849. position: relative;
  850. height: 68px;
  851. border-top: 1px solid nc-darken($color-main-background, 8%);
  852. cursor: pointer;
  853. padding: 10px 7px;
  854. display: flex;
  855. flex-wrap: wrap;
  856. align-items: center;
  857. flex: 0 0 auto;
  858. /* Icon fixes */
  859. &,
  860. > .app-content-list-item-menu {
  861. > [class^='icon-'],
  862. > [class*=' icon-'] {
  863. order: 4;
  864. width: 24px;
  865. height: 24px;
  866. margin: -10px;
  867. padding: 22px;
  868. opacity: .3;
  869. cursor: pointer;
  870. &:hover, &:focus {
  871. opacity: .7;
  872. }
  873. &[class^='icon-star'],
  874. &[class*=' icon-star'] {
  875. opacity: .7;
  876. &:hover, &:focus {
  877. opacity: 1 ;
  878. }
  879. }
  880. &.icon-starred {
  881. opacity: 1 ;
  882. }
  883. }
  884. }
  885. &:hover, &:focus,
  886. &.active {
  887. background-color: nc-darken($color-main-background, 6%);
  888. }
  889. .app-content-list-item-checkbox.checkbox + label,
  890. .app-content-list-item-star {
  891. position: absolute;
  892. height: 40px;
  893. width: 40px;
  894. display: flex;
  895. z-index: 50;
  896. + .app-content-list-item-icon {
  897. opacity: .7;
  898. }
  899. }
  900. .app-content-list-item-checkbox.checkbox + label {
  901. top: 14px;
  902. left: 7px;
  903. &::before {
  904. margin: 0;
  905. }
  906. /* Hide the star, priority to the checkbox */
  907. ~ .app-content-list-item-star {
  908. display: none;
  909. }
  910. }
  911. .app-content-list-item-star {
  912. top: 10px;
  913. left: 32px;
  914. background-size: 16px;
  915. height: 20px;
  916. width: 20px;
  917. margin: 0;
  918. padding: 0;
  919. }
  920. .app-content-list-item-icon {
  921. position: absolute;
  922. display: inline-block;
  923. height: 40px;
  924. width: 40px;
  925. line-height: 40px;
  926. border-radius: 50%;
  927. vertical-align: middle;
  928. margin-right: 10px;
  929. color: #fff;
  930. text-align: center;
  931. font-size: 1.5em;
  932. text-transform: capitalize;
  933. object-fit: cover;
  934. user-select: none;
  935. cursor: pointer;
  936. top: 50%;
  937. margin-top: -20px;
  938. }
  939. .app-content-list-item-line-one,
  940. .app-content-list-item-line-two {
  941. display: block;
  942. padding-left: 50px;
  943. white-space: nowrap;
  944. overflow: hidden;
  945. text-overflow: ellipsis;
  946. order: 1;
  947. flex: 1 1 0px;
  948. padding-right: 10px;
  949. cursor: pointer;
  950. }
  951. .app-content-list-item-line-two {
  952. opacity: .5;
  953. order: 3;
  954. flex: 1 0;
  955. flex-basis: calc(100% - 24px);
  956. }
  957. .app-content-list-item-details {
  958. order: 2;
  959. white-space: nowrap;
  960. overflow: hidden;
  961. text-overflow: ellipsis;
  962. max-width: 100px;
  963. opacity: .5;
  964. font-size: 80%;
  965. user-select: none;
  966. }
  967. .app-content-list-item-menu {
  968. order: 4;
  969. position: relative;
  970. .popovermenu {
  971. margin: 0;
  972. right: -5px;
  973. }
  974. }
  975. }
  976. }
  977. /* App content */
  978. .app-content-detail {
  979. /* grow full width */
  980. flex-grow: 1;
  981. #app-navigation-toggle-back {
  982. display: none;
  983. }
  984. }
  985. /* Mobile width < 768px */
  986. @media only screen and (max-width: 768px) {
  987. /* full width for message list on mobile */
  988. .app-content-list {
  989. width: 100%;
  990. background: $color-main-background;
  991. position: relative;
  992. z-index: 100;
  993. }
  994. /* overlay message detail on top of message list */
  995. .app-content-detail {
  996. background: $color-main-background;
  997. width: 100%;
  998. left: 0;
  999. height: 100%;
  1000. top: 0;
  1001. box-shadow: 0 0 100px rgba(100, 100, 100, .9);
  1002. position: absolute;
  1003. }
  1004. /* Show app details page */
  1005. #app-content.showdetails {
  1006. #app-navigation-toggle {
  1007. transform: translateX(-44px);
  1008. }
  1009. #app-navigation-toggle-back {
  1010. position: fixed;
  1011. display: inline-block !important;
  1012. top: 45px;
  1013. left: 0;
  1014. width: 44px;
  1015. height: 44px;
  1016. z-index: 149;
  1017. background-color: rgba(255, 255, 255, .7);
  1018. cursor: pointer;
  1019. opacity: .6;
  1020. transform: rotate(90deg);
  1021. }
  1022. .app-content-list {
  1023. transform: translateX(-100%);
  1024. }
  1025. }
  1026. /* end of media query */
  1027. }