_conversation.scss 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593
  1. .conversation-title {
  2. display: block;
  3. line-height: 36px;
  4. white-space: nowrap;
  5. overflow: hidden;
  6. text-overflow: ellipsis;
  7. padding: 0 36px;
  8. -webkit-user-select: text;
  9. }
  10. .conversation-name + .conversation-number {
  11. &:before {
  12. content:"\00b7"; // &middot
  13. font-weight: bold;
  14. padding: 0 5px 0 4px;
  15. }
  16. }
  17. .conversation {
  18. background-color: #ffffff;
  19. height: 100%;
  20. .panel {
  21. height: calc(100% - #{$header-height});
  22. overflow-y: scroll;
  23. .container {
  24. padding-top: 20px;
  25. max-width: 950px;
  26. margin: 0 auto;
  27. padding: 20px;
  28. }
  29. }
  30. .main.panel {
  31. display: flex;
  32. flex-direction: column;
  33. overflow: initial;
  34. .discussion-container {
  35. flex-grow: 1;
  36. position: relative;
  37. max-width: 100%;
  38. margin: 0;
  39. .bar-container {
  40. height: 5px;
  41. }
  42. .message-list {
  43. position: absolute;
  44. top: 0;
  45. height: 100%;
  46. width: 100%;
  47. margin: 0;
  48. padding: 2em 20px 0;
  49. overflow-y: auto;
  50. }
  51. }
  52. }
  53. }
  54. .key-verification {
  55. label {
  56. display: block;
  57. margin-bottom: 10px;
  58. font-size: small;
  59. }
  60. .key, .placeholder {
  61. padding: 0 1em;
  62. -webkit-user-select: text;
  63. }
  64. .key {
  65. display: inline-block;
  66. font-family: monospace;
  67. padding: 10px;
  68. margin-bottom: 20px;
  69. background: $grey_l;
  70. border: solid 1px $grey_l2;
  71. border-radius: $border-radius;
  72. }
  73. .placeholder {
  74. font-weight: bold;
  75. }
  76. }
  77. .message-detail {
  78. .key-conflict-dialogue {
  79. border-radius: $border-radius;
  80. margin: 20px 0;
  81. .header {
  82. border-radius: $border-radius $border-radius 0 0;
  83. background: #F3F3A7;
  84. margin: 0;
  85. padding: 10px 20px
  86. }
  87. .content {
  88. padding: 20px;
  89. border: 2px solid #F3F3A7;
  90. }
  91. button.resolve {
  92. outline: none;
  93. border: none;
  94. border-radius: $border-radius;
  95. color: white;
  96. font-weight: bold;
  97. line-height: 36px;
  98. padding: 0 20px;
  99. float: right;
  100. background: $blue;
  101. margin-left: 20px;
  102. }
  103. .hideKeys, .showKeys {
  104. float: right;
  105. line-height: 36px;
  106. }
  107. }
  108. .message-container {
  109. background: white;
  110. padding: 20px 0;
  111. .sender {
  112. display: none;
  113. }
  114. }
  115. .info {
  116. padding: 1em;
  117. .label {
  118. font-weight: bold;
  119. padding-right: 1em;
  120. vertical-align: top;
  121. }
  122. button {
  123. border: none;
  124. border-radius: $border-radius;
  125. color: white;
  126. padding: 0.5em;
  127. font-weight: bold;
  128. span {
  129. vertical-align: middle;
  130. }
  131. }
  132. }
  133. .contacts .contact-detail {
  134. padding: 0 36px;
  135. margin-bottom: 5px;
  136. .error-icon-container {
  137. float: right;
  138. }
  139. .error-message {
  140. margin: 6px 0 0;
  141. font-size: small;
  142. font-weight: bold;
  143. color: red;
  144. }
  145. }
  146. h3 {
  147. font-size: 1em;
  148. padding: 5px;
  149. }
  150. button.conflict {
  151. float: right;
  152. background: #d00;
  153. }
  154. button.cancel {
  155. float: right;
  156. color: $grey_d;
  157. border: solid 1px #ccc;
  158. }
  159. }
  160. li.entry .error-icon-container {
  161. position: absolute;
  162. top: 0;
  163. left: calc(100% + 5px);
  164. height: 100%;
  165. .error-icon {
  166. cursor: pointer;
  167. display: block;
  168. height: 100%;
  169. }
  170. .error-message {
  171. display: none;
  172. position: absolute;
  173. background: black;
  174. color: white;
  175. border-radius: $border-radius;
  176. padding: 0.5em;
  177. font-weight: normal;
  178. bottom: calc(50% + 18px);
  179. left: -84px;
  180. width: 180px;
  181. z-index: 10;
  182. &:before {
  183. display: block;
  184. content: '';
  185. position: absolute;
  186. bottom: -16px;
  187. left: 50%;
  188. border: 6px solid transparent;
  189. border-top: 10px solid #000000;
  190. }
  191. }
  192. &:hover .error-message { display: inline-block; }
  193. }
  194. .error-icon {
  195. display: inline-block;
  196. width: $error-icon-size;
  197. height: $error-icon-size;
  198. position: relative;
  199. @include color-svg('/images/warning.svg', red);
  200. }
  201. .group-update {
  202. font-size: smaller;
  203. }
  204. .private .entry .avatar,
  205. .private .sender,
  206. .outgoing .sender {
  207. display: none;
  208. }
  209. .sender {
  210. font-size: smaller;
  211. opacity: 0.8;
  212. margin-bottom: 5px;
  213. font-weight: bold;
  214. }
  215. .timestamp {
  216. margin-right: 3px;
  217. white-space: nowrap;
  218. }
  219. .message-container,
  220. .message-list {
  221. list-style: none;
  222. li {
  223. max-width: 800px;
  224. margin: 0 auto 10px;
  225. &::after {
  226. visibility: hidden;
  227. display: block;
  228. font-size: 0;
  229. content: " ";
  230. clear: both;
  231. height: 0;
  232. }
  233. }
  234. .bubble {
  235. position: relative;
  236. left: -2px;
  237. display: inline-block;
  238. vertical-align: top;
  239. padding: 9px 12px;
  240. border-radius: $border-radius;
  241. box-shadow: 0 3px 3px -4px black;
  242. word-wrap: break-word;
  243. margin-left: 8px;
  244. max-width: 30em;
  245. @media(max-width: $big-avatar-min-width - 1px) {
  246. max-width: calc(100% - 45px - #{$error-icon-size}); // avatar size + padding + error-icon size
  247. }
  248. .content {
  249. -webkit-user-select: text;
  250. white-space: pre-wrap;
  251. a {
  252. word-break: break-all
  253. }
  254. }
  255. p {
  256. margin: 0;
  257. }
  258. }
  259. .meta {
  260. font-size: smaller;
  261. margin-top: 3px;
  262. float: right;
  263. text-align: right;
  264. line-height: 18px;
  265. .hasRetry + .timestamp {
  266. &:before {
  267. content:"\00b7"; // &middot
  268. font-weight: bold;
  269. padding: 0 5px 0 4px;
  270. text-decoration: none;
  271. opacity: 0.5;
  272. }
  273. }
  274. .retry {
  275. text-decoration: underline;
  276. cursor: pointer;
  277. }
  278. .hasRetry, .timestamp, .status {
  279. float: left;
  280. }
  281. .timestamp, .status {
  282. cursor: pointer;
  283. opacity: 0.5;
  284. &:hover {
  285. opacity: 1.0;
  286. }
  287. }
  288. }
  289. .status {
  290. width: 18px;
  291. height: 18px;
  292. }
  293. .sent .status {
  294. display: inline-block;
  295. @include color-svg('/images/check.svg', black);
  296. }
  297. .delivered .status {
  298. display: inline-block;
  299. @include color-svg('/images/double-check.svg', black);
  300. }
  301. .pending .status {
  302. display: inline-block;
  303. background: none;
  304. &:before { content: '...'; }
  305. }
  306. .error .status {
  307. position: relative;
  308. display: inline-block;
  309. width: 18px;
  310. height: 18px;
  311. opacity: 1 !important;
  312. background: url('/images/error_red.png') center no-repeat;
  313. cursor: pointer;
  314. -webkit-mask: none;
  315. }
  316. .incoming {
  317. .avatar, .bubble {
  318. float: left;
  319. }
  320. .bubble {
  321. color: white;
  322. background-color: $blue;
  323. .meta {
  324. color: white;
  325. }
  326. .content {
  327. &::selection, a::selection {
  328. color: $grey_d;
  329. background: white;
  330. }
  331. &::-moz-selection, a::-moz-selection {
  332. color: $grey_d;
  333. background: white;
  334. }
  335. }
  336. .attachments, .content {
  337. a {
  338. color: $grey_l;
  339. }
  340. }
  341. }
  342. }
  343. .outgoing {
  344. .error-icon-container {
  345. left: auto;
  346. right: calc(100% + 5px);
  347. }
  348. .avatar, .bubble {
  349. float: right;
  350. }
  351. .bubble {
  352. background-color: $grey_l;
  353. clear: left;
  354. }
  355. }
  356. .control {
  357. .bubble {
  358. .content {
  359. font-style: italic;
  360. }
  361. &::before, &::after {
  362. display: none;
  363. }
  364. }
  365. }
  366. .attachments {
  367. a {
  368. font-style: italic;
  369. display: block;
  370. padding: 1em;
  371. background-color: #ccc;
  372. }
  373. img, audio, video {
  374. max-width: 100%;
  375. max-height: 300px;
  376. }
  377. video {
  378. background: black;
  379. min-height: 300px;
  380. }
  381. img {
  382. cursor: pointer;
  383. }
  384. }
  385. .outgoing .avatar {
  386. display: none;
  387. }
  388. .end-session {
  389. font: small;
  390. font-style: italic;
  391. opacity: 0.8;
  392. }
  393. .bubble .content.error-message {
  394. font-style: italic;
  395. }
  396. .key-conflict {
  397. padding: 15px 10px;
  398. button {
  399. margin-top: 5px;
  400. }
  401. }
  402. }
  403. .message-list,
  404. .message-container,
  405. .key-conflict-dialogue {
  406. .avatar {
  407. height: 36px;
  408. width: 36px;
  409. line-height: 36px;
  410. }
  411. }
  412. .bottom-bar {
  413. box-sizing: content-box;
  414. $button-width: 36px;
  415. padding: 5px 5px 5px 0;
  416. background: $grey_l;
  417. form.active {
  418. outline: solid 1px $blue;
  419. }
  420. form.send {
  421. background: #ffffff;
  422. padding-bottom: 1px;
  423. }
  424. input, textarea {
  425. color: $grey_d;
  426. }
  427. .attachment-previews {
  428. padding: 0 36px;
  429. .attachment-preview {
  430. padding: 13px 10px 0;
  431. }
  432. img {
  433. border: 2px solid #ddd;
  434. border-radius: $border-radius;
  435. max-height: 100px;
  436. }
  437. .close {
  438. position: absolute;
  439. top: 5px;
  440. right: 2px;
  441. background: #999;
  442. &:hover {
  443. background: $grey;
  444. }
  445. }
  446. }
  447. .choose-file {
  448. float: left;
  449. height: 36px;
  450. }
  451. .send-message {
  452. display: block;
  453. width: calc(100% - #{$button-width});
  454. max-height: 100px;
  455. padding: 10px;
  456. border: 0;
  457. outline: 0;
  458. z-index: 5;
  459. resize: none;
  460. font-size: 1em;
  461. font-family: inherit;
  462. }
  463. }
  464. .toast {
  465. position: absolute;
  466. bottom: 0;
  467. margin: 0 2em 3em;
  468. padding: 0.5em 1.5em;
  469. background: rgba(0, 0, 0, 0.75);
  470. color: white;
  471. box-shadow: 0 0 5px 0 black;
  472. border-radius: $border-radius;
  473. font-size: small;
  474. }
  475. .confirmation-dialog {
  476. .content {
  477. max-width: 350px;
  478. margin: 100px auto;
  479. padding: 1em;
  480. background: white;
  481. border-radius: $border-radius;
  482. overflow: auto;
  483. box-shadow: 0px 3px 5px 0px rgba(0,0,0,0.2);
  484. .message {
  485. text-align: center;
  486. }
  487. .buttons {
  488. margin-top: 10px;
  489. button {
  490. float: right;
  491. margin-left: 10px;
  492. background-color: $grey_l;
  493. border-radius: $border-radius;
  494. outline: none;
  495. padding: 5px 8px;
  496. border: 1px solid $grey_l2;
  497. &:focus {
  498. border-color: $grey_l4;
  499. }
  500. &:hover {
  501. background-color: $grey_l2;
  502. border-color: $grey_l3;
  503. }
  504. }
  505. }
  506. }
  507. }