settings.scss 25 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616
  1. /* Copyright (c) 2011, Jan-Christoph Borchardt, http://jancborchardt.net
  2. This file is licensed under the Affero General Public License version 3 or later.
  3. See the COPYING-README file. */
  4. input {
  5. &#openid, &#webdav {
  6. width: 20em;
  7. }
  8. }
  9. /* PERSONAL */
  10. .clear {
  11. clear: both;
  12. }
  13. /* icons for sidebar */
  14. .nav-icon-personal-settings {
  15. @include icon-color('personal', 'settings', $color-black);
  16. }
  17. .nav-icon-security {
  18. @include icon-color('toggle-filelist', 'settings', $color-black);
  19. }
  20. .nav-icon-clientsbox {
  21. @include icon-color('change', 'settings', $color-black);
  22. }
  23. .nav-icon-federated-cloud {
  24. @include icon-color('share', 'settings', $color-black);
  25. }
  26. .nav-icon-second-factor-backup-codes, .nav-icon-ssl-root-certificate {
  27. @include icon-color('password', 'settings', $color-black);
  28. }
  29. #avatarform {
  30. .avatardiv {
  31. margin: 10px auto;
  32. }
  33. .warning {
  34. width: 100%;
  35. }
  36. .jcrop-keymgr {
  37. display: none !important;
  38. }
  39. }
  40. #displayavatar {
  41. text-align: center;
  42. }
  43. #uploadavatarbutton, #selectavatar, #removeavatar {
  44. padding: 21px;
  45. }
  46. .jcrop-holder {
  47. z-index: 500;
  48. }
  49. #cropper {
  50. float: left;
  51. z-index: 500;
  52. /* float cropper above settings page to prevent unexpected flowing from dynamically sized element */
  53. position: fixed;
  54. background-color: rgba(0, 0, 0, 0.2);
  55. box-sizing: border-box;
  56. top: 45px;
  57. left: 0;
  58. width: 100%;
  59. height: calc(100% - 45px);
  60. .inner-container {
  61. z-index: 2001;
  62. /* above the top bar if needed */
  63. position: absolute;
  64. top: 50%;
  65. left: 50%;
  66. transform: translate(-50%, -50%);
  67. background: #fff;
  68. color: #333;
  69. border-radius: var(--border-radius-large);
  70. box-shadow: 0 0 10px var(--color-box-shadow);
  71. padding: 15px;
  72. .jcrop-holder,
  73. .jcrop-holder img,
  74. img.jcrop-preview {
  75. border-radius: var(--border-radius);
  76. }
  77. .button {
  78. margin-top: 15px;
  79. }
  80. .primary {
  81. float: right;
  82. }
  83. }
  84. }
  85. #personal-settings-avatar-container {
  86. display: inline-grid;
  87. grid-template-columns: 1fr;
  88. grid-template-rows: 2fr 1fr;
  89. vertical-align: top;
  90. }
  91. .profile-settings-container {
  92. display: inline-grid;
  93. grid-template-columns: 1fr;
  94. grid-template-rows: 1fr 1fr 1fr;
  95. }
  96. .personal-show-container {
  97. width: 100%;
  98. }
  99. .personal-settings-setting-box input {
  100. &[type='text'], &[type='email'], &[type='tel'], &[type='url'] {
  101. width: 100%;
  102. }
  103. }
  104. select {
  105. &#timezone,
  106. &#languageinput,
  107. &#localeinput {
  108. width: 100%;
  109. }
  110. }
  111. #personal-settings {
  112. display: grid;
  113. padding: 20px;
  114. max-width: 1500px;
  115. grid-template-columns:1fr 2fr 1fr;
  116. .section {
  117. padding: 10px 10px;
  118. border: 0;
  119. h2 {
  120. margin-bottom: 12px;
  121. }
  122. }
  123. .personal-info {
  124. margin-right: 10%;
  125. margin-bottom: 12px;
  126. margin-top: 12px;
  127. }
  128. .personal-info[class^='icon-'], .personal-info[class*=' icon-'] {
  129. background-position: 0px 2px;
  130. padding-left: 30px;
  131. opacity: 0.7;
  132. }
  133. }
  134. @media (min-width: 1200px) and (max-width: 1400px) {
  135. #personal-settings {
  136. display: grid;
  137. grid-template-columns: 1fr 2fr;
  138. #personal-settings-avatar-container {
  139. grid-template-columns: 1fr;
  140. grid-template-rows: 1fr;
  141. }
  142. .personal-settings-container {
  143. grid-template-columns: 1fr 1fr;
  144. grid-template-rows: 1fr 1fr 1fr;
  145. }
  146. .profile-settings-container {
  147. grid-template-columns: 1fr 1fr;
  148. grid-template-rows: 1fr;
  149. grid-column: 2;
  150. }
  151. }
  152. }
  153. @media (max-width: 1200px) {
  154. #personal-settings {
  155. display: grid;
  156. grid-template-columns: 1fr;
  157. #personal-settings-avatar-container {
  158. grid-template-rows: 1fr;
  159. }
  160. .personal-settings-container {
  161. grid-template-columns: 1fr 1fr;
  162. grid-template-rows: 1fr 1fr 1fr;
  163. }
  164. .profile-settings-container {
  165. grid-template-columns: 1fr 1fr;
  166. grid-template-rows: 1fr;
  167. }
  168. }
  169. }
  170. @media (max-width: 560px) {
  171. #personal-settings {
  172. display: grid;
  173. grid-template-columns: 1fr;
  174. #personal-settings-avatar-container {
  175. grid-template-rows: 1fr;
  176. }
  177. .personal-settings-container {
  178. grid-template-columns: 1fr;
  179. grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr;
  180. }
  181. .profile-settings-container {
  182. grid-template-columns: 1fr;
  183. grid-template-rows: 1fr 1fr;
  184. }
  185. }
  186. }
  187. .personal-settings-container {
  188. display: inline-grid;
  189. grid-template-columns: 1fr 1fr;
  190. grid-template-rows: 1fr 1fr 1fr;
  191. &:after {
  192. clear: both;
  193. }
  194. > div {
  195. h3 {
  196. position: relative;
  197. display: inline-flex;
  198. flex-wrap: nowrap;
  199. justify-content: flex-start;
  200. width: 100%;
  201. > label {
  202. white-space: nowrap;
  203. text-overflow: ellipsis;
  204. overflow: hidden;
  205. }
  206. }
  207. > form span {
  208. &[class^='icon-checkmark'], &[class^='icon-error'] {
  209. position: relative;
  210. right: 8px;
  211. top: -28px;
  212. pointer-events: none;
  213. float: right;
  214. }
  215. }
  216. }
  217. .verify {
  218. position: relative;
  219. left: 100%;
  220. top: 0;
  221. height: 0;
  222. img {
  223. padding: 12px 7px 6px;
  224. }
  225. }
  226. .verify-action {
  227. cursor: pointer;
  228. }
  229. input:disabled {
  230. background-color: white;
  231. color: black;
  232. border: none;
  233. opacity: 100;
  234. }
  235. }
  236. #body-settings #quota {
  237. cursor: default;
  238. position: relative;
  239. progress {
  240. height: 6px;
  241. &::-moz-progress-bar {
  242. border-radius: 3px 0 0 3px;
  243. }
  244. &::-webkit-progress-value {
  245. border-radius: 3px 0 0 3px;
  246. }
  247. }
  248. div {
  249. font-weight: normal;
  250. white-space: nowrap;
  251. }
  252. }
  253. /* verify accounts */
  254. /* only show pointer cursor when popup will be there */
  255. .verification-dialog {
  256. display: none;
  257. right: -9px;
  258. top: 40px;
  259. width: 275px;
  260. p {
  261. padding: 10px;
  262. }
  263. .verificationCode {
  264. font-family: monospace;
  265. display: block;
  266. overflow-wrap: break-word;
  267. }
  268. }
  269. .federation-menu {
  270. position: relative;
  271. cursor: pointer;
  272. margin-left: 10px;
  273. .icon-federation-menu {
  274. padding-left: 16px;
  275. background-size: 16px;
  276. background-position: left center;
  277. opacity: .3;
  278. cursor: inherit;
  279. .icon-triangle-s {
  280. display: inline-block;
  281. vertical-align: middle;
  282. cursor: inherit;
  283. }
  284. }
  285. .federationScopeMenu {
  286. top: 44px;
  287. &.popovermenu {
  288. .menuitem {
  289. // override h3 heading font size
  290. font-size: 12.8px;
  291. line-height: 1.6em;
  292. .menuitem-text-detail {
  293. opacity: .75;
  294. }
  295. &.active {
  296. box-shadow: inset 2px 0 var(--color-primary);
  297. .menuitem-text {
  298. font-weight: bold;
  299. }
  300. }
  301. }
  302. }
  303. }
  304. }
  305. #groups-groups {
  306. padding-top: 5px;
  307. }
  308. .clientsbox img {
  309. height: 60px;
  310. }
  311. #sslCertificate {
  312. tr.expired {
  313. background-color: rgba(255, 0, 0, 0.5);
  314. }
  315. td {
  316. padding: 5px;
  317. }
  318. }
  319. #displaynameerror,
  320. #displaynamechanged {
  321. display: none;
  322. }
  323. input#identity {
  324. width: 20em;
  325. }
  326. #showWizard {
  327. display: inline-block;
  328. }
  329. .msg {
  330. &.success {
  331. color: #fff;
  332. background-color: #47a447;
  333. padding: 3px;
  334. }
  335. &.error {
  336. color: #fff;
  337. background-color: #d2322d;
  338. padding: 3px;
  339. }
  340. }
  341. table.nostyle {
  342. label {
  343. margin-right: 2em;
  344. }
  345. td {
  346. padding: 0.2em 0;
  347. }
  348. }
  349. #security-password {
  350. #passwordform {
  351. display: flex;
  352. flex-wrap: wrap;
  353. #pass1, .personal-show-container, #passwordbutton {
  354. flex-shrink: 1;
  355. width: 200px;
  356. min-width: 150px;
  357. }
  358. #pass2 {
  359. width: 100%;
  360. }
  361. .password-state {
  362. display: inline-block;
  363. }
  364. .strengthify-wrapper {
  365. position: absolute;
  366. left: 0;
  367. width: 100%;
  368. border-radius: 0 0 2px 2px;
  369. margin-top: -6px;
  370. overflow: hidden;
  371. height: 3px;
  372. }
  373. }
  374. }
  375. /* Devices & sessions access & tokens */
  376. #security {
  377. table {
  378. width: 100%;
  379. min-height: 50px;
  380. padding-top: 5px;
  381. max-width: 580px;
  382. th {
  383. opacity: .5;
  384. padding: 10px 10px 10px 0;
  385. }
  386. }
  387. .token-list td {
  388. border-top: 1px solid var(--color-border);
  389. max-width: 200px;
  390. white-space: normal;
  391. vertical-align: middle;
  392. position: relative;
  393. &%icon {
  394. overflow: visible;
  395. position: relative;
  396. width: 16px;
  397. }
  398. &.token-name {
  399. padding: 10px 0;
  400. }
  401. &.more {
  402. @extend %icon;
  403. }
  404. &.client {
  405. @extend %icon;
  406. div {
  407. opacity: 0.57;
  408. width: 44px;
  409. height: 44px;
  410. }
  411. }
  412. }
  413. tr > *:nth-child(3) {
  414. text-align: right;
  415. }
  416. .token-list {
  417. td > a.icon-more {
  418. transition: opacity var(--animation-quick);
  419. }
  420. a.icon-more {
  421. padding: 14px;
  422. display: block;
  423. width: 44px;
  424. height: 44px;
  425. opacity: .5;
  426. }
  427. tr {
  428. &:hover td > a.icon,
  429. td > a.icon:focus,
  430. &.active td > a.icon {
  431. opacity: 1;
  432. }
  433. }
  434. }
  435. }
  436. /* Two-Factor Authentication (2FA) */
  437. #two-factor-auth {
  438. h3 {
  439. margin-top: 24px;
  440. }
  441. li > div {
  442. margin-left: 20px;
  443. }
  444. .two-factor-provider-settings-icon {
  445. width: 16px;
  446. height: 16px;
  447. vertical-align: sub;
  448. }
  449. }
  450. #new-app-login-name,
  451. #new-app-password {
  452. width: 245px;
  453. font-family: monospace;
  454. }
  455. .app-password-row {
  456. display: table-row;
  457. .icon {
  458. background-size: 16px 16px;
  459. display: inline-block;
  460. position: relative;
  461. top: 3px;
  462. margin-left: 5px;
  463. margin-right: 8px;
  464. }
  465. }
  466. .app-password-label {
  467. display: table-cell;
  468. padding-right: 1em;
  469. }
  470. .social-button {
  471. padding-left: 0 !important;
  472. margin-left: -10px;
  473. img {
  474. padding: 10px;
  475. }
  476. }
  477. /* USERS */
  478. .isgroup {
  479. .groupname {
  480. width: 85%;
  481. display: block;
  482. overflow: hidden;
  483. text-overflow: ellipsis;
  484. }
  485. &.active .groupname {
  486. width: 65%;
  487. }
  488. }
  489. li.active {
  490. .delete,
  491. .rename {
  492. display: block;
  493. }
  494. }
  495. .app-navigation-entry-utils {
  496. .delete,
  497. .rename {
  498. display: none;
  499. }
  500. }
  501. #usersearchform {
  502. position: absolute;
  503. top: 2px;
  504. right: 0;
  505. input {
  506. width: 150px;
  507. }
  508. label {
  509. font-weight: bold;
  510. }
  511. }
  512. /* display table at full width */
  513. table.grid {
  514. width: 100%;
  515. th {
  516. height: 2em;
  517. color: #999;
  518. border-bottom: 1px solid var(--color-border);
  519. padding: 0 .5em;
  520. padding-left: .8em;
  521. text-align: left;
  522. font-weight: normal;
  523. }
  524. td {
  525. border-bottom: 1px solid var(--color-border);
  526. padding: 0 .5em;
  527. padding-left: .8em;
  528. text-align: left;
  529. font-weight: normal;
  530. }
  531. }
  532. td, th {
  533. &.name {
  534. padding-left: .8em;
  535. min-width: 5em;
  536. max-width: 12em;
  537. text-overflow: ellipsis;
  538. overflow: hidden;
  539. }
  540. &.password {
  541. padding-left: .8em;
  542. > img {
  543. visibility: hidden;
  544. }
  545. }
  546. &.displayName > img {
  547. visibility: hidden;
  548. }
  549. &.password,
  550. &.displayName,
  551. &.mailAddress {
  552. min-width: 5em;
  553. max-width: 12em;
  554. cursor: pointer;
  555. span {
  556. width: 90%;
  557. display: inline-block;
  558. text-overflow: ellipsis;
  559. overflow: hidden;
  560. }
  561. }
  562. &.mailAddress {
  563. cursor: pointer;
  564. }
  565. &.password > span {
  566. margin-right: 1.2em;
  567. color: #C7C7C7;
  568. }
  569. }
  570. span.usersLastLoginTooltip {
  571. white-space: nowrap;
  572. }
  573. /* dropdowns will be relative to this element */
  574. #userlist {
  575. position: relative;
  576. .storageLocation, .userBackend, .lastLogin {
  577. display: none;
  578. }
  579. th.name {
  580. color: #000;
  581. }
  582. tr {
  583. height: 50px;
  584. }
  585. .mailAddress .loading-small {
  586. width: 16px;
  587. height: 16px;
  588. margin-left: -26px;
  589. position: relative;
  590. top: 3px;
  591. }
  592. .groupsListContainer.hidden {
  593. display: none;
  594. }
  595. thead th,
  596. thead tr {
  597. z-index: 100;
  598. background-color: var(--color-main-background);
  599. @include position('sticky');
  600. // positional attribute is required for position to take affect.
  601. top: 0;
  602. }
  603. }
  604. #newuser {
  605. .groupsListContainer.hidden {
  606. display: none;
  607. }
  608. .multiselect {
  609. min-width: 150px !important;
  610. position: relative;
  611. top: -1px;
  612. }
  613. input {
  614. &:not([type='submit']),
  615. &:not([type='reset']) {
  616. width: 100%;
  617. }
  618. }
  619. .userActions input {
  620. width: 44px;
  621. height: 44px;
  622. &.icon-close {
  623. border: none;
  624. background-color: initial;
  625. opacity: .5;
  626. }
  627. &:hover {
  628. opacity: 1;
  629. }
  630. }
  631. }
  632. /* used to highlight a user row in red */
  633. #userlist tr.row-warning {
  634. background-color: #FDD;
  635. }
  636. /* APPS */
  637. #app-content > svg.app-filter {
  638. float: left;
  639. height: 0;
  640. width: 0;
  641. }
  642. #app-category-app-bundles {
  643. margin-bottom: 20px;
  644. }
  645. .appinfo {
  646. margin: 1em 40px;
  647. }
  648. #app-navigation {
  649. /* Navigation icons */
  650. img {
  651. margin-bottom: -3px;
  652. margin-right: 6px;
  653. width: 16px;
  654. }
  655. li span.no-icon {
  656. padding-left: 32px;
  657. }
  658. ul li.active > span.utils {
  659. .delete, .rename {
  660. display: block;
  661. }
  662. }
  663. .appwarning {
  664. background: #fcc;
  665. }
  666. &.appwarning:hover {
  667. background: #fbb;
  668. }
  669. .app-external, .app-version {
  670. color: rgba(85, 85, 85, 0.5);
  671. }
  672. }
  673. span.version {
  674. margin-left: 1em;
  675. margin-right: 1em;
  676. color: #555;
  677. }
  678. .app-level {
  679. margin-top: 8px;
  680. span {
  681. color: #555;
  682. background-color: transparent;
  683. border: 1px solid #555;
  684. border-radius: var(--border-radius);
  685. padding: 3px 6px;
  686. }
  687. a {
  688. padding: 10px;
  689. margin: -6px;
  690. white-space: nowrap;
  691. }
  692. .official {
  693. border-color: #37ce02;
  694. background-position: left center;
  695. background-position: 5px center;
  696. padding-left: 25px;
  697. }
  698. }
  699. .app-score {
  700. position: relative;
  701. top: 4px;
  702. opacity: .5;
  703. }
  704. .app-settings-content {
  705. #searchresults {
  706. display: none;
  707. }
  708. }
  709. #apps-list.store {
  710. .section {
  711. border: 0;
  712. }
  713. .app-name {
  714. display: block;
  715. margin: 5px 0;
  716. }
  717. .app-name, .app-image * {
  718. cursor: pointer;
  719. }
  720. .app-summary {
  721. opacity: .7;
  722. }
  723. .app-image-icon .icon-settings-dark {
  724. width: 100%;
  725. height: 150px;
  726. background-size: 45px;
  727. opacity: 0.5;
  728. }
  729. .app-score-image {
  730. height: 14px;
  731. }
  732. .actions {
  733. margin-top: 10px;
  734. }
  735. }
  736. #app-sidebar #app-details-view {
  737. h2 {
  738. .icon-settings-dark,
  739. svg {
  740. display: inline-block;
  741. width: 16px;
  742. height: 16px;
  743. margin-right: 10px;
  744. opacity: .7;
  745. }
  746. }
  747. .app-level {
  748. clear: right;
  749. width: 100%;
  750. .official {
  751. vertical-align: top;
  752. }
  753. .app-score-image {
  754. float: right;
  755. }
  756. }
  757. .app-author, .app-licence {
  758. color: var(--color-text-maxcontrast);
  759. }
  760. .app-dependencies {
  761. margin: 10px 0;
  762. }
  763. .app-description p {
  764. margin: 10px 0;
  765. }
  766. .close {
  767. position: absolute;
  768. top: 0;
  769. right: 0;
  770. padding: 14px;
  771. opacity: 0.5;
  772. z-index: 1;
  773. width: 44px;
  774. height: 44px;
  775. }
  776. .actions {
  777. display: flex;
  778. align-items: center;
  779. .app-groups{
  780. padding: 5px;
  781. }
  782. }
  783. .appslink {
  784. text-decoration: underline;
  785. margin-right: 5px;
  786. }
  787. .app-level,
  788. .actions,
  789. .documentation,
  790. .app-dependencies,
  791. .app-description {
  792. margin: 20px 0;
  793. }
  794. }
  795. @media only screen and (min-width: 1601px) {
  796. .store .section {
  797. width: 25%;
  798. }
  799. .with-app-sidebar .store .section {
  800. width: 33%;
  801. }
  802. }
  803. @media only screen and (max-width: 1600px) {
  804. .store .section {
  805. width: 25%;
  806. }
  807. .with-app-sidebar .store .section {
  808. width: 33%;
  809. }
  810. }
  811. @media only screen and (max-width: 1400px) {
  812. .store .section {
  813. width: 33%;
  814. }
  815. .with-app-sidebar .store .section {
  816. width: 50%;
  817. }
  818. }
  819. @media only screen and (max-width: 900px) {
  820. .store .section {
  821. width: 50%;
  822. }
  823. .with-app-sidebar .store .section {
  824. width: 100%;
  825. }
  826. }
  827. @media only screen and (max-width: $breakpoint-mobile) {
  828. .store .section {
  829. width: 50%;
  830. }
  831. }
  832. @media only screen and (max-width: 480px) {
  833. .store .section {
  834. width: 100%;
  835. }
  836. }
  837. /* hide app version and level on narrower screens */
  838. @media only screen and (max-width: 900px) {
  839. .apps-list.installed {
  840. .app-version, .app-level {
  841. display: none !important;
  842. }
  843. }
  844. }
  845. @media only screen and (max-width: 500px) {
  846. .apps-list.installed .app-groups {
  847. display: none !important;
  848. }
  849. }
  850. .section {
  851. margin-bottom: 0;
  852. /* use 2nd child since app-navigation-toggle is the first */
  853. &:not(:nth-child(2)) {
  854. border-top: 1px solid var(--color-border);
  855. }
  856. /* correctly display help icons next to headings */
  857. h2 {
  858. margin-bottom: 22px;
  859. .icon-info {
  860. padding: 6px 20px;
  861. vertical-align: text-bottom;
  862. display: inline-block;
  863. }
  864. }
  865. }
  866. .personal-settings-setting-box .section {
  867. padding: 10px 30px;
  868. }
  869. .followupsection {
  870. display: block;
  871. padding: 0 30px 30px 30px;
  872. color: #555;
  873. }
  874. .app-image {
  875. position: relative;
  876. height: 150px;
  877. opacity: 1;
  878. overflow: hidden;
  879. }
  880. .app-name, .app-version, .app-score, .app-level {
  881. display: inline-block;
  882. }
  883. .app-description-toggle-show, .app-description-toggle-hide {
  884. clear: both;
  885. padding: 7px 0;
  886. cursor: pointer;
  887. opacity: .5;
  888. }
  889. .app-description-container {
  890. clear: both;
  891. position: relative;
  892. top: 7px;
  893. }
  894. .app-description {
  895. clear: both;
  896. }
  897. #app-category-1 {
  898. margin-bottom: 18px;
  899. }
  900. /* capitalize 'Other' category */
  901. #app-category-925 {
  902. text-transform: capitalize;
  903. }
  904. .app-dependencies {
  905. color: #ce3702;
  906. }
  907. .missing-dependencies {
  908. list-style: initial;
  909. list-style-type: initial;
  910. list-style-position: inside;
  911. }
  912. .apps-list {
  913. .section {
  914. cursor: pointer;
  915. }
  916. .app-list-move {
  917. transition: transform 1s;
  918. }
  919. &.installed {
  920. .apps-list-container {
  921. display: table;
  922. width: 100%;
  923. height: auto;
  924. }
  925. margin-bottom: 100px;
  926. .section {
  927. display: table-row;
  928. padding: 0;
  929. margin: 0;
  930. > * {
  931. display: table-cell;
  932. height: initial;
  933. vertical-align: middle;
  934. float: none;
  935. border-bottom: 1px solid var(--color-border);
  936. padding: 6px;
  937. box-sizing: border-box;
  938. }
  939. &.selected {
  940. background-color: var(--color-background-dark);
  941. }
  942. }
  943. .groups-enable {
  944. margin-top: 0;
  945. label {
  946. margin-right: 3px;
  947. }
  948. }
  949. .app-image {
  950. width: 44px;
  951. height: auto;
  952. text-align: right;
  953. }
  954. .app-image-icon svg,
  955. .app-image-icon .icon-settings-dark {
  956. margin-top: 5px;
  957. width: 20px;
  958. height: 20px;
  959. opacity: .5;
  960. background-size: cover;
  961. display: inline-block;
  962. }
  963. .actions {
  964. text-align: right;
  965. .icon-loading-small {
  966. display: inline-block;
  967. top: 4px;
  968. margin-right: 10px;
  969. }
  970. }
  971. }
  972. &:not(.installed) .app-image-icon svg {
  973. position: absolute;
  974. bottom: 43px;
  975. /* position halfway vertically */
  976. width: 64px;
  977. height: 64px;
  978. opacity: .1;
  979. }
  980. display: flex;
  981. flex-wrap: wrap;
  982. align-content: flex-start;
  983. &.hidden {
  984. display: none;
  985. }
  986. .section {
  987. position: relative;
  988. flex: 0 0 auto;
  989. h2.app-name {
  990. display: block;
  991. margin: 8px 0;
  992. }
  993. }
  994. .app-description {
  995. p {
  996. margin: 10px 0;
  997. }
  998. ul {
  999. list-style: disc;
  1000. }
  1001. ol {
  1002. list-style: decimal;
  1003. ol, ul {
  1004. padding-left: 15px;
  1005. }
  1006. }
  1007. > {
  1008. ul, ol {
  1009. margin-left: 19px;
  1010. }
  1011. }
  1012. ul {
  1013. ol, ul {
  1014. padding-left: 15px;
  1015. }
  1016. }
  1017. }
  1018. /* Bundle header */
  1019. .apps-header {
  1020. display: table-row;
  1021. position: relative;
  1022. div {
  1023. display: table-cell;
  1024. height: 70px;
  1025. }
  1026. h2 {
  1027. display: table-cell;
  1028. position: absolute;
  1029. padding-left: 6px;
  1030. padding-top: 15px;
  1031. .enable {
  1032. position: relative;
  1033. top: -1px;
  1034. margin-left: 12px;
  1035. }
  1036. + .section {
  1037. margin-top: 50px;
  1038. }
  1039. }
  1040. }
  1041. }
  1042. #apps-list-search {
  1043. .section {
  1044. h2 {
  1045. margin-bottom: 0;
  1046. }
  1047. }
  1048. }
  1049. /* LOG */
  1050. #log {
  1051. white-space: normal;
  1052. margin-bottom: 14px;
  1053. }
  1054. #lessLog {
  1055. display: none;
  1056. }
  1057. table.grid td.date {
  1058. white-space: nowrap;
  1059. }
  1060. #log-section p {
  1061. margin-top: 20px;
  1062. }
  1063. #security-warning-state-ok,
  1064. #security-warning-state-warning,
  1065. #security-warning-state-failure,
  1066. #security-warning-state-loading {
  1067. span {
  1068. vertical-align: middle;
  1069. &.message {
  1070. padding: 12px;
  1071. }
  1072. &.icon {
  1073. width: 32px;
  1074. height: 32px;
  1075. background-position: center center;
  1076. display: inline-block;
  1077. border-radius: 50%;
  1078. }
  1079. &.icon-checkmark-white {
  1080. background-color: var(--color-success);
  1081. }
  1082. &.icon-error-white {
  1083. background-color: var(--color-warning);
  1084. }
  1085. &.icon-close-white {
  1086. background-color: var(--color-error);
  1087. }
  1088. }
  1089. }
  1090. #shareAPI {
  1091. p {
  1092. padding-bottom: 0.8em;
  1093. }
  1094. input#shareapiExpireAfterNDays {
  1095. width: 40px;
  1096. }
  1097. .indent {
  1098. padding-left: 28px;
  1099. }
  1100. .double-indent {
  1101. padding-left: 56px;
  1102. }
  1103. .nocheckbox {
  1104. padding-left: 20px;
  1105. }
  1106. }
  1107. #shareApiDefaultPermissionsSection label {
  1108. margin-right: 20px;
  1109. }
  1110. #fileSharingSettings h3 {
  1111. display: inline-block;
  1112. }
  1113. #publicShareDisclaimerText {
  1114. width: calc(100% - 23px);
  1115. /* 20 px left margin, 3 px right margin */
  1116. max-width: 600px;
  1117. height: 150px;
  1118. margin-left: 20px;
  1119. box-sizing: border-box;
  1120. }
  1121. /* correctly display help icons next to headings */
  1122. .icon-info {
  1123. padding: 11px 20px;
  1124. vertical-align: super;
  1125. }
  1126. #shareAPI h2, #encryptionAPI h2, #mail_general_settings h2 {
  1127. display: inline-block;
  1128. }
  1129. #encryptionAPI li {
  1130. list-style-type: initial;
  1131. margin-left: 20px;
  1132. padding: 5px 0;
  1133. }
  1134. .mail_settings p {
  1135. label:first-child {
  1136. display: inline-block;
  1137. width: 300px;
  1138. text-align: right;
  1139. }
  1140. select:nth-child(2),
  1141. input {
  1142. width: 143px;
  1143. }
  1144. }
  1145. #mail_smtpport {
  1146. width: 40px;
  1147. }
  1148. .cronlog {
  1149. margin-left: 10px;
  1150. }
  1151. .status {
  1152. display: inline-block;
  1153. height: 16px;
  1154. width: 16px;
  1155. vertical-align: text-bottom;
  1156. &.success {
  1157. border-radius: 50%;
  1158. }
  1159. }
  1160. #selectGroups select {
  1161. box-sizing: border-box;
  1162. display: inline-block;
  1163. height: 36px;
  1164. padding: 7px 10px;
  1165. }
  1166. #log .log-message {
  1167. word-break: break-all;
  1168. min-width: 180px;
  1169. }
  1170. span {
  1171. &.success {
  1172. background-color: var(--color-success);
  1173. border-radius: var(--border-radius);
  1174. }
  1175. &.error {
  1176. background-color: var(--color-error);
  1177. }
  1178. &.indeterminate {
  1179. background-color: var(--color-warning);
  1180. border-radius: 40% 0;
  1181. }
  1182. }
  1183. /* OPERA hack for strengthify*/
  1184. doesnotexist:-o-prefocus, .strengthify-wrapper {
  1185. left: 185px;
  1186. width: 129px;
  1187. }
  1188. .trusted-domain-warning {
  1189. color: #fff;
  1190. padding: 5px;
  1191. background: #ce3702;
  1192. border-radius: 5px;
  1193. font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
  1194. }
  1195. /* HELP */
  1196. .help-includes {
  1197. overflow: hidden !important;
  1198. }
  1199. .help-iframe {
  1200. width: 100%;
  1201. height: 100%;
  1202. margin: 0;
  1203. padding: 0;
  1204. border: 0;
  1205. overflow: auto;
  1206. }
  1207. #postsetupchecks {
  1208. ul {
  1209. margin-left: 44px;
  1210. list-style: disc;
  1211. li {
  1212. margin: 10px 0;
  1213. }
  1214. ul {
  1215. list-style: circle;
  1216. }
  1217. }
  1218. .loading {
  1219. height: 50px;
  1220. background-position: left center;
  1221. }
  1222. .errors, .errors a {
  1223. color: var(--color-error);
  1224. }
  1225. .warnings, .warnings a {
  1226. color: var(--color-warning);
  1227. }
  1228. .hint {
  1229. margin: 20px 0;
  1230. }
  1231. }
  1232. #security-warning {
  1233. a {
  1234. text-decoration: underline;
  1235. }
  1236. .extra-top-margin {
  1237. margin-top: 12px;
  1238. }
  1239. }
  1240. #admin-tips li {
  1241. list-style: initial;
  1242. a {
  1243. display: inline-block;
  1244. padding: 3px 0;
  1245. }
  1246. }
  1247. #selectEncryptionModules {
  1248. margin-left: 30px;
  1249. padding: 10px;
  1250. }
  1251. #encryptionModules {
  1252. padding: 10px;
  1253. }
  1254. #warning {
  1255. color: red;
  1256. }
  1257. .settings-hint {
  1258. margin-top: -12px;
  1259. margin-bottom: 12px;
  1260. opacity: .7;
  1261. }
  1262. /* USERS LIST -------------------------------------------------------------- */
  1263. #body-settings {
  1264. $grid-row-height: 46px;
  1265. #app-content.user-list-grid {
  1266. display: grid;
  1267. grid-auto-columns: 1fr;
  1268. grid-auto-rows: $grid-row-height;
  1269. grid-column-gap: 20px;
  1270. .row {
  1271. // TODO replace with css4 subgrid when available
  1272. // fallback for ie11 no grid
  1273. display: flex;
  1274. display: grid;
  1275. grid-row-start: span 1;
  1276. grid-gap: 3px;
  1277. align-items: center;
  1278. /* let's define the column until storage path,
  1279. what follows will be manually defined */
  1280. grid-template-columns: 44px minmax(150px, 1fr) repeat(auto-fit, minmax(120px, 1fr));
  1281. border-bottom: var(--color-border) 1px solid;
  1282. &.disabled {
  1283. opacity: .5;
  1284. }
  1285. /* grid col width */
  1286. .name,
  1287. .displayName,
  1288. .password,
  1289. .mailAddress,
  1290. .groups,
  1291. .subadmins,
  1292. .quota,
  1293. .languages,
  1294. .storageLocation,
  1295. .userBackend,
  1296. .lastLogin {
  1297. min-width: 120px;
  1298. }
  1299. .obfuscated {
  1300. width: 400px;
  1301. opacity: .7;
  1302. }
  1303. .userActions {
  1304. min-width: 44px;
  1305. }
  1306. /* various */
  1307. &#grid-header,
  1308. &#new-user {
  1309. @include position('sticky');
  1310. align-self: normal;
  1311. background-color: var(--color-main-background);
  1312. z-index: 55; /* above multiselect */
  1313. top: $header-height;
  1314. &.sticky {
  1315. box-shadow: 0 -2px 10px 1px var(--color-box-shadow);
  1316. }
  1317. /* fake input for groups validation */
  1318. input#newgroups {
  1319. position: absolute;
  1320. opacity: 0;
  1321. width: 80% !important;
  1322. margin: 0 10%;
  1323. z-index: 0;
  1324. }
  1325. }
  1326. // separate prop to set initial value to top: 50px
  1327. &#new-user {
  1328. top: $header-height + $grid-row-height;
  1329. }
  1330. &#grid-header {
  1331. color: var(--color-text-maxcontrast);
  1332. z-index: 60; /* above new-user */
  1333. #headerDisplayName,
  1334. #headerPassword,
  1335. #headerAddress,
  1336. #headerGroups,
  1337. #headerSubAdmins,
  1338. #headerQuota,
  1339. #headerLanguages {
  1340. /* Line up header text with column content for when there’s inputs */
  1341. padding-left: 7px;
  1342. }
  1343. }
  1344. &:hover {
  1345. input:not([type='submit']):not(:focus):not(:active) {
  1346. border-color: var(--color-border) !important;
  1347. }
  1348. }
  1349. > div,
  1350. > form {
  1351. grid-row: 1;
  1352. display: inline-flex;
  1353. align-items: center;
  1354. color: var(--color-text);
  1355. position: relative;
  1356. > input:not(:focus):not(:active) {
  1357. border-color: transparent;
  1358. cursor: pointer;
  1359. }
  1360. > input:focus, >input:active {
  1361. + .icon-confirm {
  1362. display: block !important;
  1363. }
  1364. }
  1365. /* inputs like mail, username, password */
  1366. &:not(.userActions) > input:not([type='submit']) {
  1367. width: 100%;
  1368. min-width: 0;
  1369. }
  1370. &.name {
  1371. word-break: break-all;
  1372. }
  1373. &.displayName,
  1374. &.mailAddress {
  1375. > input {
  1376. text-overflow: ellipsis;
  1377. }
  1378. }
  1379. &.name,
  1380. &.storageLocation {
  1381. /* better multi-line visual */
  1382. line-height: 1.3em;
  1383. max-height: 100%;
  1384. overflow : hidden;
  1385. /* not supported by all browsers
  1386. so we keep the overflow hidden
  1387. as a fallback */
  1388. text-overflow: ellipsis;
  1389. display: -webkit-box;
  1390. -webkit-line-clamp: 2;
  1391. -webkit-box-orient: vertical;
  1392. }
  1393. &.quota {
  1394. .multiselect--active + progress {
  1395. display: none;
  1396. }
  1397. progress {
  1398. position: absolute;
  1399. width: calc(100% - 4px); /* minus left and right */
  1400. left: 2px;
  1401. bottom: 2px;
  1402. height: 3px;
  1403. z-index: 5; /* above multiselect */
  1404. }
  1405. }
  1406. .icon-confirm {
  1407. width: 32px;
  1408. height: 32px;
  1409. flex: 0 0 32px;
  1410. cursor: pointer;
  1411. &:not(:active) {
  1412. display: none;
  1413. }
  1414. }
  1415. &.avatar {
  1416. height: 32px;
  1417. width: 32px;
  1418. margin: 6px;
  1419. img {
  1420. display: block;
  1421. }
  1422. }
  1423. &.userActions {
  1424. #newsubmit {
  1425. width: 100%;
  1426. }
  1427. .toggleUserActions {
  1428. position: relative;
  1429. .icon-more {
  1430. width: 44px;
  1431. height: 44px;
  1432. opacity: .5;
  1433. cursor: pointer;
  1434. &:hover {
  1435. opacity: .7;
  1436. }
  1437. }
  1438. }
  1439. .feedback {
  1440. display: flex;
  1441. align-items: center;
  1442. white-space: nowrap;
  1443. transition: opacity 200ms ease-in-out;
  1444. .icon-checkmark {
  1445. opacity: .5;
  1446. margin-right: 5px;
  1447. }
  1448. }
  1449. }
  1450. /* Fill the grid cell */
  1451. .multiselect.multiselect-vue {
  1452. width: 100%;
  1453. }
  1454. }
  1455. }
  1456. .infinite-loading-container {
  1457. display: flex;
  1458. align-items: center;
  1459. justify-content: center;
  1460. grid-row-start: span 4;
  1461. }
  1462. .users-list-end {
  1463. opacity: .5;
  1464. user-select: none;
  1465. }
  1466. }
  1467. }