popup.css 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654
  1. .pop-over {
  2. background: #fff;
  3. border-radius: 0.4vw;
  4. border: 1px solid #dbdbdb;
  5. border-bottom-color: #c2c2c2;
  6. box-shadow: 0 0.2vh 0.8vh rgba(0,0,0,0.3);
  7. position: absolute;
  8. /* Wider default to fit full color palette */
  9. width: min(380px, 55vw);
  10. z-index: 99999;
  11. margin-top: 0.7vh;
  12. }
  13. .pop-over hr {
  14. margin: 0.5vh 0px;
  15. }
  16. .pop-over p,
  17. .pop-over textarea,
  18. .pop-over input[type="text"],
  19. .pop-over input[type="email"],
  20. .pop-over input[type="password"],
  21. .pop-over input[type="file"] {
  22. width: 100%;
  23. }
  24. .pop-over select {
  25. width: 100%;
  26. margin-bottom: 1.8vh;
  27. }
  28. .pop-over textarea {
  29. height: 9vh;
  30. }
  31. .pop-over form a span {
  32. padding: 0 0.7vw;
  33. }
  34. .pop-over .header {
  35. height: 4.5vh;
  36. position: relative;
  37. margin-bottom: 1vh;
  38. background: #f7f7f7;
  39. border-bottom: 1px solid #dcdcdc;
  40. color: #666;
  41. }
  42. .pop-over .header .header-title {
  43. display: block;
  44. line-height: 4vh;
  45. padding-top: 0.5vh;
  46. margin: 0 1.3vw;
  47. font-weight: bold;
  48. overflow: hidden;
  49. text-overflow: ellipsis;
  50. white-space: nowrap;
  51. }
  52. .pop-over .header .back-btn {
  53. float: left;
  54. overflow: hidden;
  55. width: 4vw;
  56. transition: width 0.2s;
  57. }
  58. .pop-over .header .back-btn i.fa {
  59. margin: 1.3vw;
  60. margin-top: 1.5vh;
  61. }
  62. .pop-over .header .back-btn.is-hidden {
  63. width: 0;
  64. }
  65. .pop-over .header .close-btn {
  66. padding: 1.3vh 1.3vw 1.3vh 0.5vw;
  67. position: absolute;
  68. top: 0;
  69. right: 0;
  70. }
  71. .pop-over.no-title .header {
  72. background: none;
  73. }
  74. .pop-over .content-wrapper {
  75. width: 100%;
  76. max-height: calc(70vh + 20px);
  77. overflow-y: auto;
  78. overflow-x: hidden;
  79. }
  80. /* Allow dynamic max-height to override default constraint */
  81. .pop-over[style*="max-height"] .content-wrapper {
  82. max-height: inherit;
  83. }
  84. .pop-over .content-container {
  85. width: 100%;
  86. max-height: calc(70vh + 20px);
  87. transition: transform 0.2s;
  88. }
  89. /* Allow dynamic max-height to override default constraint for content-container */
  90. .pop-over[style*="max-height"] .content-container {
  91. max-height: inherit;
  92. }
  93. /* Admin edit popups: use full height */
  94. .pop-over[data-popup="editUser"],
  95. .pop-over[data-popup="editOrg"],
  96. .pop-over[data-popup="editTeam"] {
  97. height: calc(100vh - 20px) !important;
  98. max-height: calc(100vh - 20px) !important;
  99. }
  100. .pop-over[data-popup="editUser"] .content-wrapper,
  101. .pop-over[data-popup="editOrg"] .content-wrapper,
  102. .pop-over[data-popup="editTeam"] .content-wrapper {
  103. max-height: calc(100vh - 80px) !important; /* Subtract header height */
  104. height: calc(100vh - 80px) !important;
  105. overflow-y: auto !important;
  106. }
  107. .pop-over[data-popup="editUser"] .content-container,
  108. .pop-over[data-popup="editOrg"] .content-container,
  109. .pop-over[data-popup="editTeam"] .content-container {
  110. max-height: calc(100vh - 80px) !important; /* Subtract header height */
  111. height: calc(100vh - 80px) !important;
  112. }
  113. /* Ensure language popup list can scroll properly */
  114. .pop-over .pop-over-list {
  115. max-height: none;
  116. overflow: visible;
  117. }
  118. /* Specific styling for language popup list */
  119. .pop-over[data-popup="changeLanguage"] .pop-over-list {
  120. max-height: none;
  121. overflow: visible;
  122. height: auto;
  123. flex: 1;
  124. }
  125. /* Ensure content div in language popup contains all items */
  126. .pop-over[data-popup="changeLanguage"] .content {
  127. height: auto;
  128. min-height: 100%;
  129. display: flex;
  130. flex-direction: column;
  131. }
  132. /* Allow dynamic height for Change Language popup */
  133. .pop-over[data-popup="changeLanguage"] .content-wrapper {
  134. max-height: inherit; /* Use dynamic height from JavaScript */
  135. }
  136. .pop-over[data-popup="changeLanguage"] .content-container {
  137. max-height: inherit; /* Use dynamic height from JavaScript */
  138. }
  139. /* Make language popup extend to bottom of browser window */
  140. .pop-over[data-popup="changeLanguage"] {
  141. height: calc(100vh - 30px);
  142. min-height: 300px;
  143. /* Adjust positioning to move popup 30px higher */
  144. transform: translateY(-30px);
  145. }
  146. .pop-over[data-popup="changeLanguage"] .content-wrapper {
  147. height: calc(100% - 50px); /* Subtract header height more precisely */
  148. min-height: 250px;
  149. overflow-y: auto;
  150. max-height: none; /* Remove any max-height constraints */
  151. display: flex;
  152. flex-direction: column;
  153. }
  154. .pop-over[data-popup="changeLanguage"] .content-container {
  155. height: auto; /* Let content determine height */
  156. min-height: 250px;
  157. max-height: none; /* Remove any max-height constraints */
  158. flex: 1;
  159. display: flex;
  160. flex-direction: column;
  161. }
  162. /* Date popup sizing for native HTML inputs */
  163. .pop-over[data-popup="editCardReceivedDatePopup"],
  164. .pop-over[data-popup="editCardStartDatePopup"],
  165. .pop-over[data-popup="editCardDueDatePopup"],
  166. .pop-over[data-popup="editCardEndDatePopup"],
  167. .pop-over[data-popup*="Date"] {
  168. width: min(400px, 90vw) !important; /* Smaller width for native inputs */
  169. min-width: 350px !important;
  170. max-height: 80vh !important;
  171. }
  172. .pop-over[data-popup="editCardReceivedDatePopup"] .content-wrapper,
  173. .pop-over[data-popup="editCardStartDatePopup"] .content-wrapper,
  174. .pop-over[data-popup="editCardDueDatePopup"] .content-wrapper,
  175. .pop-over[data-popup="editCardEndDatePopup"] .content-wrapper,
  176. .pop-over[data-popup*="Date"] .content-wrapper {
  177. max-height: 60vh !important;
  178. overflow-y: auto !important;
  179. }
  180. .pop-over[data-popup="editCardReceivedDatePopup"] .content-container,
  181. .pop-over[data-popup="editCardStartDatePopup"] .content-container,
  182. .pop-over[data-popup="editCardDueDatePopup"] .content-container,
  183. .pop-over[data-popup="editCardEndDatePopup"] .content-container,
  184. .pop-over[data-popup*="Date"] .content-container {
  185. max-height: 60vh !important;
  186. }
  187. /* Native HTML input styling */
  188. .pop-over[data-popup*="Date"] .datepicker-container {
  189. width: 100% !important;
  190. padding: 15px !important;
  191. }
  192. .pop-over[data-popup*="Date"] .datepicker-container .fields {
  193. display: flex !important;
  194. gap: 15px !important;
  195. margin-bottom: 15px !important;
  196. }
  197. .pop-over[data-popup*="Date"] .datepicker-container .fields .left,
  198. .pop-over[data-popup*="Date"] .datepicker-container .fields .right {
  199. flex: 1 !important;
  200. width: auto !important;
  201. }
  202. .pop-over[data-popup*="Date"] .datepicker-container label {
  203. display: block !important;
  204. margin-bottom: 5px !important;
  205. font-weight: bold !important;
  206. }
  207. .pop-over[data-popup*="Date"] .datepicker-container input[type="date"],
  208. .pop-over[data-popup*="Date"] .datepicker-container input[type="time"] {
  209. width: 100% !important;
  210. padding: 8px !important;
  211. border: 1px solid #ccc !important;
  212. border-radius: 4px !important;
  213. font-size: 14px !important;
  214. box-sizing: border-box !important;
  215. }
  216. .pop-over[data-popup*="Date"] .datepicker-container input[type="date"]:focus,
  217. .pop-over[data-popup*="Date"] .datepicker-container input[type="time"]:focus {
  218. outline: none !important;
  219. border-color: #007cba !important;
  220. box-shadow: 0 0 0 2px rgba(0, 124, 186, 0.2) !important;
  221. }
  222. /* Ensure date popup buttons stay within popup boundaries */
  223. .pop-over[data-popup="editCardReceivedDatePopup"] .content,
  224. .pop-over[data-popup="editCardStartDatePopup"] .content,
  225. .pop-over[data-popup="editCardDueDatePopup"] .content,
  226. .pop-over[data-popup="editCardEndDatePopup"] .content,
  227. .pop-over[data-popup*="Date"] .content {
  228. max-height: 60vh !important; /* Leave space for buttons */
  229. overflow-y: auto !important;
  230. padding-bottom: 100px !important; /* More space for buttons */
  231. margin-bottom: 0 !important;
  232. }
  233. .pop-over[data-popup="editCardReceivedDatePopup"] .datepicker-container,
  234. .pop-over[data-popup="editCardStartDatePopup"] .datepicker-container,
  235. .pop-over[data-popup="editCardDueDatePopup"] .datepicker-container,
  236. .pop-over[data-popup="editCardEndDatePopup"] .datepicker-container,
  237. .pop-over[data-popup*="Date"] .datepicker-container {
  238. max-height: 50vh !important; /* Limit calendar height */
  239. overflow-y: auto !important;
  240. margin-bottom: 20px !important; /* Space before buttons */
  241. }
  242. /* Ensure buttons are properly positioned */
  243. .pop-over[data-popup="editCardReceivedDatePopup"] .edit-date,
  244. .pop-over[data-popup="editCardStartDatePopup"] .edit-date,
  245. .pop-over[data-popup="editCardDueDatePopup"] .edit-date,
  246. .pop-over[data-popup="editCardEndDatePopup"] .edit-date,
  247. .pop-over[data-popup*="Date"] .edit-date {
  248. display: flex !important;
  249. flex-direction: column !important;
  250. height: 100% !important;
  251. }
  252. .pop-over[data-popup="editCardReceivedDatePopup"] .edit-date .fields,
  253. .pop-over[data-popup="editCardStartDatePopup"] .edit-date .fields,
  254. .pop-over[data-popup="editCardDueDatePopup"] .edit-date .fields,
  255. .pop-over[data-popup="editCardEndDatePopup"] .edit-date .fields,
  256. .pop-over[data-popup*="Date"] .edit-date .fields {
  257. flex-shrink: 0 !important;
  258. margin-bottom: 15px !important;
  259. }
  260. .pop-over[data-popup="editCardReceivedDatePopup"] .edit-date .js-datepicker,
  261. .pop-over[data-popup="editCardStartDatePopup"] .edit-date .js-datepicker,
  262. .pop-over[data-popup="editCardDueDatePopup"] .edit-date .js-datepicker,
  263. .pop-over[data-popup="editCardEndDatePopup"] .edit-date .js-datepicker,
  264. .pop-over[data-popup*="Date"] .edit-date .js-datepicker {
  265. flex: 1 !important;
  266. overflow-y: auto !important;
  267. }
  268. .pop-over[data-popup="editCardReceivedDatePopup"] .edit-date button,
  269. .pop-over[data-popup="editCardStartDatePopup"] .edit-date button,
  270. .pop-over[data-popup="editCardDueDatePopup"] .edit-date button,
  271. .pop-over[data-popup="editCardEndDatePopup"] .edit-date button,
  272. .pop-over[data-popup*="Date"] .edit-date button {
  273. flex-shrink: 0 !important;
  274. margin-top: 15px !important;
  275. position: relative !important;
  276. z-index: 10 !important;
  277. }
  278. .pop-over .content-container .content {
  279. /* Match wider popover, leave padding */
  280. width: 100%;
  281. padding: 0 1.3vw 1.3vh;
  282. box-sizing: border-box;
  283. /* Ensure content is not shifted left */
  284. margin-left: 0 !important;
  285. transform: none !important;
  286. }
  287. /* Utility: remove left gutter inside specific popups */
  288. .pop-over .content .flush-left {
  289. margin-left: 0;
  290. padding-left: 0;
  291. width: 100%;
  292. }
  293. /* Swimlane popups: remove left gutter, align content fully left */
  294. .pop-over .content form.swimlane-color-popup,
  295. .pop-over .content .swimlane-height-popup {
  296. margin-left: 0;
  297. padding-left: 0;
  298. width: 100%;
  299. }
  300. /* Color selection popups: ensure proper alignment */
  301. .pop-over .content form.swimlane-color-popup .palette-colors,
  302. .pop-over .content form.edit-label .palette-colors,
  303. .pop-over .content form.create-label .palette-colors {
  304. margin-left: 0;
  305. padding-left: 0;
  306. width: 100%;
  307. }
  308. /* Color palette items: ensure proper positioning */
  309. .pop-over .content .palette-colors .palette-color {
  310. margin-left: 0;
  311. margin-right: 2px;
  312. margin-bottom: 2px;
  313. }
  314. /* Global fix for all popup content to prevent left shifting */
  315. .pop-over .content * {
  316. margin-left: 0 !important;
  317. transform: none !important;
  318. }
  319. /* Override any potential left shifting for specific elements */
  320. .pop-over .content form,
  321. .pop-over .content .palette-colors,
  322. .pop-over .content .pop-over-list,
  323. .pop-over .content .flush-left {
  324. margin-left: 0 !important;
  325. padding-left: 0 !important;
  326. transform: none !important;
  327. }
  328. /* Fix popup depth containers that cause left shifting */
  329. .pop-over .popup-container-depth-1,
  330. .pop-over .popup-container-depth-2,
  331. .pop-over .popup-container-depth-3,
  332. .pop-over .popup-container-depth-4,
  333. .pop-over .popup-container-depth-5,
  334. .pop-over .popup-container-depth-6 {
  335. transform: none !important;
  336. margin-left: 0 !important;
  337. padding-left: 0 !important;
  338. }
  339. /* Ensure buttons don’t reserve left space; align to flow */
  340. .pop-over .content form.swimlane-color-popup .primary.confirm,
  341. .pop-over .content form.swimlane-color-popup .negate.wide.right,
  342. .pop-over .content .swimlane-height-popup .primary.confirm,
  343. .pop-over .content .swimlane-height-popup .negate.wide.right {
  344. float: none;
  345. margin-left: 0;
  346. }
  347. .pop-over .content-container .content.no-height {
  348. height: 0;
  349. overflow: hidden;
  350. padding: 0;
  351. margin: 0;
  352. visibility: hidden;
  353. }
  354. .pop-over .quiet {
  355. /* padding: 6px 6px 4px;*/
  356. }
  357. .pop-over.search-over {
  358. background: #f0f0f0;
  359. min-height: 14vh;
  360. }
  361. .pop-over.search-over .header {
  362. display: none;
  363. }
  364. .pop-over.search-over .content {
  365. padding: 8px 4px 8px 10px;
  366. margin-right: 8px;
  367. }
  368. .pop-over .at-form .at-error,
  369. .pop-over .at-form .at-result {
  370. padding: 8px 12px;
  371. margin: 0 0 10px 0;
  372. }
  373. .pop-over .at-form .at-error {
  374. background: #ef9a9a;
  375. }
  376. .pop-over .at-form .at-result {
  377. background: #b2dfdb;
  378. }
  379. .pop-over .sk-spinner {
  380. margin: 40px auto;
  381. }
  382. .pop-over .popup-container-depth-1 {
  383. transform: translateX(-300px);
  384. }
  385. .pop-over .popup-container-depth-2 {
  386. transform: translateX(-600px);
  387. }
  388. .pop-over .popup-container-depth-3 {
  389. transform: translateX(-900px);
  390. }
  391. .pop-over .popup-container-depth-4 {
  392. transform: translateX(-1200px);
  393. }
  394. .pop-over .popup-container-depth-5 {
  395. transform: translateX(-1500px);
  396. }
  397. .pop-over .popup-container-depth-6 {
  398. transform: translateX(-1800px);
  399. }
  400. .select-members-list,
  401. .select-avatars-list {
  402. margin-bottom: 8px;
  403. }
  404. .pop-over-list li {
  405. display: block;
  406. clear: both;
  407. }
  408. .pop-over-list li > a {
  409. clear: both;
  410. cursor: pointer;
  411. display: block;
  412. font-weight: 700;
  413. padding: 1.5px 10px;
  414. position: relative;
  415. margin: 0;
  416. text-decoration: none;
  417. overflow: hidden;
  418. line-height: 33px;
  419. display:flex;
  420. /* flex-wrap:wrap;*/
  421. gap:5px;
  422. align-items: center;
  423. }
  424. .pop-over-list li > a > .member{
  425. align-self: flex-start;
  426. flex:0 0 auto;
  427. }
  428. .pop-over-list li > a .item-name {
  429. display: block;
  430. width: auto;
  431. padding-right: 22px;
  432. }
  433. .pop-over-list li > a:not(.disabled):hover {
  434. background-color: #005377;
  435. color: #fff;
  436. }
  437. .pop-over-list li > a:not(.disabled):hover .sub-name,
  438. .pop-over-list li > a:not(.disabled):hover .quiet {
  439. color: #eee;
  440. }
  441. .pop-over-list li > a:not(.disabled):hover .unread-indicator {
  442. background: #fff;
  443. }
  444. .pop-over-list li > a .sub-name {
  445. color: #8c8c8c;
  446. display: block;
  447. font-size: 12px;
  448. font-weight: 400;
  449. line-height: 15px;
  450. }
  451. .pop-over-list li > a.current {
  452. background-color: #e2e6e9;
  453. }
  454. .pop-over-list li > a:active {
  455. background-color: #2e85b8;
  456. }
  457. .pop-over-list li > a.disabled {
  458. color: #8c8c8c;
  459. cursor: default;
  460. }
  461. .pop-over-list li > a.disabled .vis-icon {
  462. opacity: 0.35;
  463. }
  464. .pop-over-list li > a.disabled:hover {
  465. background: none;
  466. }
  467. .pop-over-list li > a.disabled:hover .sub-name,
  468. .pop-over-list li > a.disabled:hover .quiet {
  469. color: #8c8c8c;
  470. }
  471. .pop-over-list li > a.disabled:active {
  472. background: none;
  473. }
  474. .pop-over-list.inset li > a {
  475. border-radius: 3px;
  476. margin: 0;
  477. }
  478. .pop-over-list .pop-over-list.checkable .fa-check {
  479. display: none;
  480. position: absolute;
  481. top: 6px;
  482. right: 12px;
  483. }
  484. .pop-over-list .pop-over-list.checkable li.active a {
  485. padding-right: 28px;
  486. }
  487. .pop-over-list .pop-over-list.checkable li.active a .fa-check {
  488. display: block;
  489. }
  490. .pop-over.miniprofile .header {
  491. border-bottom-color: transparent;
  492. height: 30px;
  493. position: absolute;
  494. right: 0;
  495. top: 0;
  496. width: 60px;
  497. z-index: 1;
  498. }
  499. .pop-over.miniprofile .header-title {
  500. display: none;
  501. }
  502. .pop-over.miniprofile .pop-over-list {
  503. padding-top: 8px;
  504. }
  505. .pop-over.miniprofile .miniprofile-header {
  506. margin-top: 8px;
  507. min-height: 56px;
  508. position: relative;
  509. }
  510. .pop-over.miniprofile .miniprofile-header .member,
  511. .pop-over.miniprofile .miniprofile-header .avatar {
  512. position: absolute;
  513. top: 2px;
  514. left: 2px;
  515. height: 50px;
  516. width: 50px;
  517. }
  518. .pop-over.miniprofile .miniprofile-header .info {
  519. margin: 0 0 0 64px;
  520. word-wrap: break-word;
  521. }
  522. .pop-over.miniprofile .miniprofile-header .info h3 a {
  523. text-decoration: none;
  524. }
  525. .pop-over.miniprofile .miniprofile-header .info h3 a:hover {
  526. text-decoration: underline;
  527. }
  528. @media screen and (max-width: 800px) {
  529. .pop-over {
  530. width: 100%;
  531. height: 100%;
  532. overflow: hidden;
  533. margin-top: 0px;
  534. border: 0px solid #dbdbdb;
  535. }
  536. .pop-over .header {
  537. color: #fff;
  538. background: #2980b9;
  539. height: 48px;
  540. padding: 0px 0px;
  541. border: 0px;
  542. margin: 0px 0px;
  543. width: 100%;
  544. position: absolute;
  545. top: 0px;
  546. }
  547. .pop-over .header .header-title {
  548. font-size: 20px;
  549. font-weight: normal;
  550. padding-top: 8px;
  551. }
  552. .pop-over .header .back-btn {
  553. width: 30px;
  554. padding: 8px 12px 8px 12px;
  555. }
  556. .pop-over .header .back-btn i.fa {
  557. color: #fff;
  558. }
  559. .pop-over .header .close-btn {
  560. padding: 10px 12px;
  561. }
  562. .pop-over .header .close-btn i.fa {
  563. font-size: 24px;
  564. color: #fff;
  565. }
  566. .pop-over .content-wrapper {
  567. width: 100%;
  568. height: calc(100% - 48px);
  569. overflow-y: scroll;
  570. overflow-x: hidden;
  571. margin: 48px 0px 0px 0px;
  572. }
  573. .pop-over .content-container {
  574. width: 100%;
  575. height: 100%;
  576. max-height: 100%;
  577. }
  578. .pop-over .content-container .content {
  579. width: calc(100% - 20px);
  580. height: calc(100% - 20px);
  581. padding: 10px;
  582. }
  583. .pop-over .content-container .content form {
  584. margin: 10px 10px;
  585. width: calc(100% - 20px);
  586. }
  587. .pop-over .content-container .content p,
  588. .pop-over .content-container .content textarea,
  589. .pop-over .content-container .content input[type="text"],
  590. .pop-over .content-container .content input[type="email"],
  591. .pop-over .content-container .content input[type="password"],
  592. .pop-over .content-container .content input[type="file"] {
  593. width: 100%;
  594. box-sizing: border-box;
  595. }
  596. .pop-over .pop-over-list li > a {
  597. width: calc(100% - 20px);
  598. margin: 0px 0px;
  599. }
  600. .pop-over .popup-container-depth-1 {
  601. transform: none !important;
  602. }
  603. .pop-over .popup-container-depth-2 {
  604. transform: none !important;
  605. }
  606. .pop-over .popup-container-depth-3 {
  607. transform: none !important;
  608. }
  609. .pop-over .popup-container-depth-4 {
  610. transform: none !important;
  611. }
  612. .pop-over .popup-container-depth-5 {
  613. transform: none !important;
  614. }
  615. .pop-over .popup-container-depth-6 {
  616. transform: none !important;
  617. }
  618. }