minicard.css 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679
  1. .minicard-wrapper {
  2. cursor: pointer;
  3. position: relative;
  4. display: flex;
  5. align-items: center;
  6. margin-bottom: 1.2vh;
  7. }
  8. .minicard-wrapper.placeholder {
  9. background: #ccc;
  10. border-radius: 1.2vw;
  11. }
  12. .minicard-wrapper.ui-sortable-helper {
  13. cursor: grabbing;
  14. transform: rotate(4deg);
  15. display: block !important;
  16. }
  17. .minicard-wrapper.ui-sortable-helper .and-n-other {
  18. width: 100%;
  19. height: 2.5vh;
  20. padding: 0.5vh;
  21. background-color: #f2f2f2;
  22. text-align: center;
  23. border-radius: 0.4vw;
  24. }
  25. .minicard-wrapper.ui-sortable-helper .multi-selection-checkbox {
  26. display: none;
  27. }
  28. .minicard-wrapper .multi-selection-checkbox + .minicard {
  29. margin-left: 1vw;
  30. }
  31. @media only screen {
  32. .minicard {
  33. padding: 0.8vh 1vw 0.3vh;
  34. position: relative;
  35. flex: 1;
  36. flex-wrap: wrap;
  37. background-color: #fff;
  38. min-height: 2.5vh;
  39. box-shadow: 0 0.2vh 0.3vh rgba(0,0,0,0.15);
  40. border-radius: 0.3vw;
  41. color: #4d4d4d;
  42. overflow: hidden;
  43. transition: transform 0.2s, border-radius 0.2s;
  44. }
  45. }
  46. .minicard-details-menu-with-handle {
  47. float: right;
  48. font-size: clamp(14px, 3vw, 18px);
  49. padding-right: 4vw;
  50. padding-left: 0.7vw;
  51. }
  52. .minicard-details-menu {
  53. float: right;
  54. font-size: clamp(14px, 3vw, 18px);
  55. padding-left: 0.7vw;
  56. }
  57. @media print {
  58. .minicard-details-menu,
  59. .minicard-details-menu-with-handle {
  60. display: none;
  61. }
  62. }
  63. .minicard.linked-board .linked-icon,
  64. .minicard.linked-card .linked-icon {
  65. display: inline-block;
  66. margin-right: 1.5vw;
  67. vertical-align: baseline;
  68. font-size: 0.9em;
  69. }
  70. .minicard.linked-board .linked-archived,
  71. .minicard.linked-card .linked-archived {
  72. color: #937760;
  73. }
  74. .is-selected .minicard {
  75. transform: translateX(1.5vw);
  76. border-bottom-right-radius: 0;
  77. border-top-right-radius: 0;
  78. z-index: 25;
  79. box-shadow: -0.3vw 0.2vh 0.3vh rgba(0,0,0,0.2);
  80. }
  81. .minicard:hover:not(.minicard-composer),
  82. .is-selected .minicard,
  83. .draggable-hover-card .minicard {
  84. background: #f7f7f7;
  85. }
  86. .draggable-hover-card .minicard {
  87. background: #ededed;
  88. }
  89. .minicard .minicard-cover {
  90. background-position: center;
  91. background-repeat: no-repeat;
  92. background-size: contain;
  93. height: 20vh;
  94. user-select: none;
  95. margin: 0.8vh -1vw 0.8vh -1vw;
  96. border-radius: top 0.3vw;
  97. }
  98. .minicard .minicard-labels {
  99. float: none;
  100. }
  101. .minicard .minicard-labels .minicard-label {
  102. width: clamp(12px, 1.5vw, 16px);
  103. height: clamp(12px, 1.5vw, 16px);
  104. border-radius: 0.3vw;
  105. margin-right: 0.4vw;
  106. margin-bottom: 0.4vh;
  107. }
  108. .minicard .minicard-labels-no-text {
  109. display: flex;
  110. flex-wrap: wrap;
  111. }
  112. .minicard .minicard-custom-fields {
  113. display: block;
  114. }
  115. .minicard .minicard-custom-field {
  116. display: flex;
  117. }
  118. .minicard .minicard-custom-field-item {
  119. flex-grow: 1;
  120. display: block;
  121. word-wrap: break-word;
  122. max-width: 13vw;
  123. margin-right: 0.5vw;
  124. }
  125. .minicard .minicard-custom-field-item-fullwidth {
  126. flex-grow: 1;
  127. display: block;
  128. word-wrap: break-word;
  129. max-width: 100%;
  130. margin-right: 0.5vw;
  131. }
  132. .minicard .handle {
  133. width: clamp(20px, 2.5vw, 28px);
  134. height: clamp(20px, 2.5vw, 28px);
  135. position: absolute;
  136. right: 0.7vw;
  137. top: 0.7vh;
  138. display: none;
  139. }
  140. @media only screen {
  141. .minicard .handle {
  142. display: block;
  143. }
  144. }
  145. .minicard .handle .fa-arrows {
  146. font-size: clamp(16px, 3vw, 20px);
  147. color: #ccc;
  148. }
  149. .minicard .minicard-title .card-number {
  150. color: #b3b3b3;
  151. display: inline-block;
  152. margin-right: 0.7vw;
  153. }
  154. @media only screen {
  155. .minicard .minicard-title p:last-child {
  156. margin-bottom: 0;
  157. }
  158. .minicard .minicard-title .viewer {
  159. display: block;
  160. word-wrap: break-word;
  161. }
  162. }
  163. .minicard .dates {
  164. display: flex;
  165. flex-direction: row;
  166. flex-wrap: wrap;
  167. }
  168. .minicard .date {
  169. margin-right: 0.4vw;
  170. }
  171. /* Unicode icons for minicard dates - matching cardDate.css */
  172. .minicard .card-date.end-date time::before {
  173. content: "🏁"; /* Finish flag - represents end/completion */
  174. }
  175. .minicard .card-date.due-date time::before {
  176. content: "⏰"; /* Alarm clock - represents due/deadline */
  177. }
  178. .minicard .card-date.start-date time::before {
  179. content: "🚀"; /* Rocket - represents start/launch */
  180. }
  181. .minicard .card-date.received-date time::before {
  182. content: "📥"; /* Inbox tray - represents received/incoming */
  183. }
  184. .minicard .card-date time::before {
  185. font-size: inherit;
  186. margin-right: 0.3em;
  187. display: inline-block;
  188. }
  189. /* Date type specific colors for minicards - matching cardDate.css */
  190. .minicard .card-date.received-date {
  191. background-color: #dbdbdb; /* Grey for received - same as base card-date */
  192. }
  193. .minicard .card-date.received-date:hover,
  194. .minicard .card-date.received-date.is-active {
  195. background-color: #b3b3b3;
  196. }
  197. .minicard .card-date.start-date {
  198. background-color: #90ee90; /* Light green for start */
  199. color: #000; /* Black text for start */
  200. }
  201. .minicard .card-date.start-date:hover,
  202. .minicard .card-date.start-date.is-active {
  203. background-color: #7dd87d;
  204. }
  205. .minicard .card-date.due-date {
  206. background-color: #ffd700; /* Yellow for due */
  207. color: #000; /* Black text for due */
  208. }
  209. .minicard .card-date.due-date:hover,
  210. .minicard .card-date.due-date.is-active {
  211. background-color: #e6c200;
  212. }
  213. .minicard .card-date.end-date {
  214. background-color: #ffb3b3; /* Light red for end */
  215. color: #000; /* Black text for end */
  216. }
  217. .minicard .card-date.end-date:hover,
  218. .minicard .card-date.end-date.is-active {
  219. background-color: #ff9999;
  220. }
  221. /* Font Awesome icons in minicard dates */
  222. .minicard .card-date i.fa {
  223. margin-right: 0.3vw;
  224. font-size: 0.9em;
  225. vertical-align: middle;
  226. }
  227. /* Font Awesome icons in minicard spent time */
  228. .minicard .card-time i.fa {
  229. margin-right: 0.3vw;
  230. font-size: 0.9em;
  231. vertical-align: middle;
  232. }
  233. .minicard .badges {
  234. float: left;
  235. margin-top: 1vh;
  236. color: #808080;
  237. }
  238. .minicard .badges:empty {
  239. display: none;
  240. }
  241. .minicard .badges .badge {
  242. float: left;
  243. margin-right: 1.5vw;
  244. margin-bottom: 0.4vh;
  245. font-size: 0.9em;
  246. }
  247. .minicard .badges .badge.is-finished {
  248. background: #3cb500;
  249. padding: 0 0.4vw;
  250. border-radius: 0.4vw;
  251. color: #fff;
  252. }
  253. .minicard .badges .badge:last-of-type {
  254. margin-right: 0;
  255. }
  256. .minicard .badges .badge .badge-icon,
  257. .minicard .badges .badge .badge-text {
  258. vertical-align: middle;
  259. }
  260. .minicard .badges .badge .badge-icon.badge-comment,
  261. .minicard .badges .badge .badge-text.badge-comment {
  262. margin-bottom: 0.1rem;
  263. }
  264. .minicard .badges .badge .badge-text {
  265. font-size: 0.9em;
  266. padding-left: 0.3vw;
  267. line-height: 1.2;
  268. }
  269. .minicard .badges .badge .check-list-text {
  270. padding-left: 0px;
  271. line-height: 1.1;
  272. }
  273. .minicard .minicard-members,
  274. .minicard .minicard-assignees,
  275. .minicard .minicard-creator {
  276. float: right;
  277. margin-left: 0.7vw;
  278. margin-bottom: 0.5vh;
  279. }
  280. .minicard .minicard-members .member,
  281. .minicard .minicard-assignees .member,
  282. .minicard .minicard-creator .member {
  283. float: right;
  284. border-radius: 50%;
  285. height: clamp(24px, 3.5vw, 32px);
  286. width: clamp(24px, 3.5vw, 32px);
  287. margin-bottom: 0.5vh;
  288. }
  289. .minicard .minicard-members .assignee,
  290. .minicard .minicard-assignees .assignee,
  291. .minicard .minicard-creator .assignee {
  292. float: right;
  293. border-radius: 50%;
  294. height: clamp(24px, 3.5vw, 32px);
  295. width: clamp(24px, 3.5vw, 32px);
  296. }
  297. .minicard .minicard-members + .badges,
  298. .minicard .minicard-assignees + .badges,
  299. .minicard .minicard-creator + .badges {
  300. margin-top: 0.7vh;
  301. }
  302. .minicard .minicard-assignees {
  303. border-bottom: 1px solid #f00;
  304. }
  305. .minicard .minicard-creator {
  306. border-bottom: 1px solid #008000;
  307. }
  308. .minicard .minicard-members:empty,
  309. .minicard .minicard-assignees:empty {
  310. display: none;
  311. }
  312. .minicard .minicard-description {
  313. padding: 0.8vh 0 0 1vw;
  314. color: #000;
  315. background-color: #eee;
  316. width: 100%;
  317. margin-bottom: 0.3vh;
  318. margin-left: -0.5vw;
  319. border-radius: 0.4vw;
  320. overflow: hidden;
  321. text-overflow: ellipsis;
  322. display: -webkit-box;
  323. -webkit-line-clamp: 3;
  324. -webkit-box-orient: vertical;
  325. }
  326. .minicard.minicard-composer {
  327. margin-bottom: 1.3vh;
  328. }
  329. .minicard.minicard-composer textarea.minicard-composer-textarea,
  330. .minicard.minicard-composer textarea.minicard-composer-textarea:focus {
  331. resize: none;
  332. background: none;
  333. border: none;
  334. box-shadow: none;
  335. height: auto;
  336. margin: 0;
  337. padding: 0;
  338. max-height: 22vh;
  339. min-height: 5vh;
  340. margin-bottom: 2.5vh;
  341. overflow-y: auto;
  342. }
  343. .parent-prefix {
  344. color: #b3b3b3;
  345. font-size: 0.9em;
  346. }
  347. .parent-subtext {
  348. color: #b3b3b3;
  349. font-size: 0.9em;
  350. }
  351. @media screen and (max-width: 800px) {
  352. .is-selected .minicard {
  353. transform: translateX(0px);
  354. border-bottom-right-radius: 0;
  355. border-top-right-radius: 0;
  356. z-index: 15;
  357. box-shadow: 0 1px 2px rgba(0,0,0,0.15);
  358. }
  359. }
  360. /* https://github.com/wekan/wekan/issues/4254#issuecomment-1037192960 */
  361. .minicard-green {
  362. background-color: #3cb500 !important;
  363. color: #fff !important;
  364. }
  365. .minicard-green:hover:not(.minicard-composer),
  366. .is-selected .minicard-green,
  367. .draggable-hover-card .minicard-green {
  368. background: #3ab000;
  369. }
  370. .draggable-hover-card .minicard-green {
  371. background: #38a800;
  372. }
  373. .minicard-yellow {
  374. background-color: #fad900 !important;
  375. }
  376. .minicard-yellow:hover:not(.minicard-composer),
  377. .is-selected .minicard-yellow,
  378. .draggable-hover-card .minicard-yellow {
  379. background: #f3d200;
  380. }
  381. .draggable-hover-card .minicard-yellow {
  382. background: #e9ca00;
  383. }
  384. .minicard-orange {
  385. background-color: #ff9f19 !important;
  386. }
  387. .minicard-orange:hover:not(.minicard-composer),
  388. .is-selected .minicard-orange,
  389. .draggable-hover-card .minicard-orange {
  390. background: #ff9b11;
  391. }
  392. .draggable-hover-card .minicard-orange {
  393. background: #ff9705;
  394. }
  395. .minicard-red {
  396. background-color: #eb4646 !important;
  397. color: #fff !important;
  398. }
  399. .minicard-red:hover:not(.minicard-composer),
  400. .is-selected .minicard-red,
  401. .draggable-hover-card .minicard-red {
  402. background: #ea3e3e;
  403. }
  404. .draggable-hover-card .minicard-red {
  405. background: #e93333;
  406. }
  407. .minicard-purple {
  408. background-color: #a632db !important;
  409. color: #fff !important;
  410. }
  411. .minicard-purple:hover:not(.minicard-composer),
  412. .is-selected .minicard-purple,
  413. .draggable-hover-card .minicard-purple {
  414. background: #a32bda;
  415. }
  416. .draggable-hover-card .minicard-purple {
  417. background: #9e25d5;
  418. }
  419. .minicard-blue {
  420. background-color: #0079bf !important;
  421. color: #fff !important;
  422. }
  423. .minicard-blue:hover:not(.minicard-composer),
  424. .is-selected .minicard-blue,
  425. .draggable-hover-card .minicard-blue {
  426. background: #0075b9;
  427. }
  428. .draggable-hover-card .minicard-blue {
  429. background: #0071b2;
  430. }
  431. .minicard-pink {
  432. background-color: #ff78cb !important;
  433. }
  434. .minicard-pink:hover:not(.minicard-composer),
  435. .is-selected .minicard-pink,
  436. .draggable-hover-card .minicard-pink {
  437. background: #ff6dc7;
  438. }
  439. .draggable-hover-card .minicard-pink {
  440. background: #ff5ec1;
  441. }
  442. .minicard-sky {
  443. background-color: #00c2e0 !important;
  444. color: #fff !important;
  445. }
  446. .minicard-sky:hover:not(.minicard-composer),
  447. .is-selected .minicard-sky,
  448. .draggable-hover-card .minicard-sky {
  449. background: #00bcd9;
  450. }
  451. .draggable-hover-card .minicard-sky {
  452. background: #00b4d0;
  453. }
  454. .minicard-black {
  455. background-color: #4d4d4d !important;
  456. color: #fff !important;
  457. }
  458. .minicard-black:hover:not(.minicard-composer),
  459. .is-selected .minicard-black,
  460. .draggable-hover-card .minicard-black {
  461. background: #4b4b4b;
  462. }
  463. .draggable-hover-card .minicard-black {
  464. background: #484848;
  465. }
  466. .minicard-lime {
  467. background-color: #51e898 !important;
  468. }
  469. .minicard-lime:hover:not(.minicard-composer),
  470. .is-selected .minicard-lime,
  471. .draggable-hover-card .minicard-lime {
  472. background: #49e793;
  473. }
  474. .draggable-hover-card .minicard-lime {
  475. background: #3ee58d;
  476. }
  477. .minicard-silver {
  478. background-color: #c0c0c0 !important;
  479. }
  480. .minicard-silver:hover:not(.minicard-composer),
  481. .is-selected .minicard-silver,
  482. .draggable-hover-card .minicard-silver {
  483. background: #bababa;
  484. }
  485. .draggable-hover-card .minicard-silver {
  486. background: #b3b3b3;
  487. }
  488. .minicard-peachpuff {
  489. background-color: #ffdab9 !important;
  490. }
  491. .minicard-peachpuff:hover:not(.minicard-composer),
  492. .is-selected .minicard-peachpuff,
  493. .draggable-hover-card .minicard-peachpuff {
  494. background: #ffd3ac;
  495. }
  496. .draggable-hover-card .minicard-peachpuff {
  497. background: #ffca9a;
  498. }
  499. .minicard-crimson {
  500. background-color: #dc143c !important;
  501. color: #fff !important;
  502. }
  503. .minicard-crimson:hover:not(.minicard-composer),
  504. .is-selected .minicard-crimson,
  505. .draggable-hover-card .minicard-crimson {
  506. background: #d5133a;
  507. }
  508. .draggable-hover-card .minicard-crimson {
  509. background: #cd1338;
  510. }
  511. .minicard-plum {
  512. background-color: #dda0dd !important;
  513. }
  514. .minicard-plum:hover:not(.minicard-composer),
  515. .is-selected .minicard-plum,
  516. .draggable-hover-card .minicard-plum {
  517. background: #da98da;
  518. }
  519. .draggable-hover-card .minicard-plum {
  520. background: #d68cd6;
  521. }
  522. .minicard-darkgreen {
  523. background-color: #006400 !important;
  524. color: #fff !important;
  525. }
  526. .minicard-darkgreen:hover:not(.minicard-composer),
  527. .is-selected .minicard-darkgreen,
  528. .draggable-hover-card .minicard-darkgreen {
  529. background: #006100;
  530. }
  531. .draggable-hover-card .minicard-darkgreen {
  532. background: #005d00;
  533. }
  534. .minicard-slateblue {
  535. background-color: #6a5acd !important;
  536. color: #fff !important;
  537. }
  538. .minicard-slateblue:hover:not(.minicard-composer),
  539. .is-selected .minicard-slateblue,
  540. .draggable-hover-card .minicard-slateblue {
  541. background: #6453cb;
  542. }
  543. .draggable-hover-card .minicard-slateblue {
  544. background: #5c4ac8;
  545. }
  546. .minicard-magenta {
  547. background-color: #f0f !important;
  548. color: #fff !important;
  549. }
  550. .minicard-magenta:hover:not(.minicard-composer),
  551. .is-selected .minicard-magenta,
  552. .draggable-hover-card .minicard-magenta {
  553. background: #f700f7;
  554. }
  555. .draggable-hover-card .minicard-magenta {
  556. background: #ed00ed;
  557. }
  558. .minicard-gold {
  559. background-color: #ffd700 !important;
  560. }
  561. .minicard-gold:hover:not(.minicard-composer),
  562. .is-selected .minicard-gold,
  563. .draggable-hover-card .minicard-gold {
  564. background: #f7d100;
  565. }
  566. .draggable-hover-card .minicard-gold {
  567. background: #edc800;
  568. }
  569. .minicard-navy {
  570. background-color: #000080 !important;
  571. color: #fff !important;
  572. }
  573. .minicard-navy:hover:not(.minicard-composer),
  574. .is-selected .minicard-navy,
  575. .draggable-hover-card .minicard-navy {
  576. background: #00007c;
  577. }
  578. .draggable-hover-card .minicard-navy {
  579. background: #007;
  580. }
  581. .minicard-gray {
  582. background-color: #808080 !important;
  583. color: #fff !important;
  584. }
  585. .minicard-gray:hover:not(.minicard-composer),
  586. .is-selected .minicard-gray,
  587. .draggable-hover-card .minicard-gray {
  588. background: #7c7c7c;
  589. }
  590. .draggable-hover-card .minicard-gray {
  591. background: #777;
  592. }
  593. .minicard-saddlebrown {
  594. background-color: #8b4513 !important;
  595. color: #fff !important;
  596. }
  597. .minicard-saddlebrown:hover:not(.minicard-composer),
  598. .is-selected .minicard-saddlebrown,
  599. .draggable-hover-card .minicard-saddlebrown {
  600. background: #874312;
  601. }
  602. .draggable-hover-card .minicard-saddlebrown {
  603. background: #814012;
  604. }
  605. .minicard-paleturquoise {
  606. background-color: #afeeee !important;
  607. }
  608. .minicard-paleturquoise:hover:not(.minicard-composer),
  609. .is-selected .minicard-paleturquoise,
  610. .draggable-hover-card .minicard-paleturquoise {
  611. background: #a5ecec;
  612. }
  613. .draggable-hover-card .minicard-paleturquoise {
  614. background: #97e9e9;
  615. }
  616. .minicard-mistyrose {
  617. background-color: #ffe4e1 !important;
  618. }
  619. .minicard-mistyrose:hover:not(.minicard-composer),
  620. .is-selected .minicard-mistyrose,
  621. .draggable-hover-card .minicard-mistyrose {
  622. background: #ffd7d3;
  623. }
  624. .draggable-hover-card .minicard-mistyrose {
  625. background: #ffc6bf;
  626. }
  627. .minicard-indigo {
  628. background-color: #4b0082 !important;
  629. color: #fff !important;
  630. }
  631. .minicard-indigo:hover:not(.minicard-composer),
  632. .is-selected .minicard-indigo,
  633. .draggable-hover-card .minicard-indigo {
  634. background: #49007e;
  635. }
  636. .draggable-hover-card .minicard-indigo {
  637. background: #460079;
  638. }
  639. .text-red {
  640. color: #f00;
  641. }
  642. .text-green {
  643. color: #008000;
  644. }
  645. /* Drag and drop file upload visual feedback */
  646. .minicard.is-dragging-over {
  647. border: 2px dashed #0079bf;
  648. background-color: #e3f2fd !important;
  649. transform: scale(1.02);
  650. transition: all 0.2s ease;
  651. }
  652. /* List name display on minicard */
  653. .minicard-list-name {
  654. font-size: 0.75em;
  655. color: #8c8c8c;
  656. margin-top: 0.2vh;
  657. display: flex;
  658. align-items: center;
  659. gap: 0.3vw;
  660. }
  661. .minicard-list-name i.fa {
  662. font-size: 0.8em;
  663. opacity: 0.7;
  664. }