From e8945c800ff52b67dd066dfb8d9e01e0033112ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A2=D0=B8=D0=BC=D1=83=D1=80=20=D0=A4=D0=B0=D0=B9=D0=B7?= =?UTF-8?q?=D1=83=D0=BB=D0=BB=D0=B8=D0=BD?= Date: Sun, 17 May 2026 19:42:40 +0500 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=B0=D0=BD=D0=B1=D0=B0=D0=BD=20=D0=B1?= =?UTF-8?q?=D0=BB=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Api/wwwroot/css/kanban.css | 2693 ++---------------------------------- Api/wwwroot/js/kanban.js | 85 +- Api/wwwroot/kanban.html | 498 ++----- 3 files changed, 310 insertions(+), 2966 deletions(-) diff --git a/Api/wwwroot/css/kanban.css b/Api/wwwroot/css/kanban.css index 2856308..b4c2ab8 100644 --- a/Api/wwwroot/css/kanban.css +++ b/Api/wwwroot/css/kanban.css @@ -1,2568 +1,4 @@ -/*:root {*/ -/* --bg: #1f1f1f;*/ -/* --panel: #282828;*/ -/* --panel-soft: #333333;*/ -/* --panel-line: #3a3a3a;*/ -/* --text: #f4f4f4;*/ -/* --muted: #a7a7a7;*/ - -/* --orange: #f4864d;*/ -/* --blue: #42609f;*/ -/* --green: #407d52;*/ -/* --peach: #ffe3d8;*/ -/* --pink: #e6a0a6;*/ - -/* --serif: "Yeseva One", Georgia, serif;*/ -/* --sans: Inter, Arial, sans-serif;*/ -/* --label: Raleway, Inter, Arial, sans-serif;*/ - -/* --sidebar-width: 240px;*/ -/* --column-width: 393px;*/ -/*}*/ - -/** {*/ -/* box-sizing: border-box;*/ -/*}*/ - -/*html,*/ -/*body {*/ -/* margin: 0;*/ -/* min-height: 100%;*/ -/* background: var(--bg);*/ -/* color: var(--text);*/ -/* font-family: var(--sans);*/ -/*}*/ - -/*button {*/ -/* font: inherit;*/ -/*}*/ - -/*.sr-only {*/ -/* position: absolute;*/ -/* width: 1px;*/ -/* height: 1px;*/ -/* padding: 0;*/ -/* margin: -1px;*/ -/* overflow: hidden;*/ -/* clip: rect(0, 0, 0, 0);*/ -/* white-space: nowrap;*/ -/* border: 0;*/ -/*}*/ - -/*.kanban-app {*/ -/* min-height: 100vh;*/ -/* margin: 0;*/ -/* background: linear-gradient(180deg, #252525 0%, #1f1f1f 56%, #191919 100%);*/ -/* overflow-x: hidden;*/ -/*}*/ - -/*!* TOPBAR *!*/ - -/*.kanban-topbar {*/ -/* height: 120px;*/ -/* padding: 24px 36px;*/ -/* background: var(--panel);*/ -/* box-shadow: 0 3px 8px rgba(0, 0, 0, 0.28);*/ -/* border-bottom-right-radius: 14px;*/ -/* border-bottom-left-radius: 14px;*/ - -/* display: flex;*/ -/* align-items: center;*/ -/* justify-content: center;*/ - -/* position: sticky;*/ -/* top: 0;*/ -/* z-index: 40;*/ -/*}*/ - -/*.brand {*/ -/* font-family: var(--serif);*/ -/* font-size: clamp(72px, 7vw, 96px);*/ -/* line-height: 1;*/ -/* color: #000;*/ -/* text-shadow: 0 1px 22px var(--orange);*/ -/* user-select: none;*/ -/*}*/ - -/*!* TOP BUTTONS *!*/ - -/*.kanban-menu-btn,*/ -/*.profile-btn,*/ -/*.home-link {*/ -/* position: absolute;*/ -/* top: 42px;*/ - -/* width: 38px;*/ -/* height: 38px;*/ - -/* border: 0;*/ -/* background: transparent;*/ -/* color: var(--orange);*/ -/* cursor: pointer;*/ -/* z-index: 45;*/ -/*}*/ - -/*.kanban-menu-btn {*/ -/* left: 36px;*/ -/* display: grid;*/ -/* align-content: center;*/ -/* gap: 6px;*/ -/* padding: 0 6px;*/ -/*}*/ - -/*.kanban-menu-btn span {*/ -/* width: 28px;*/ -/* height: 4px;*/ -/* border-radius: 999px;*/ -/* background: currentColor;*/ -/*}*/ - -/*.home-link {*/ -/* left: 82px;*/ -/* text-decoration: none;*/ -/* display: grid;*/ -/* place-items: center;*/ -/* font-size: 24px;*/ -/* line-height: 1;*/ -/*}*/ - -/*.profile-btn {*/ -/* right: 36px;*/ -/* padding: 3px;*/ -/*}*/ - -/*.profile-btn svg {*/ -/* width: 100%;*/ -/* height: 100%;*/ -/* fill: none;*/ -/* stroke: currentColor;*/ -/* stroke-width: 4;*/ -/* stroke-linecap: round;*/ -/* stroke-linejoin: round;*/ -/*}*/ - -/*!* PAGE *!*/ - -/*.kanban-page {*/ -/* display: grid;*/ -/* grid-template-columns: 1fr;*/ -/* min-height: calc(100vh - 120px);*/ - -/* transition: grid-template-columns 0.28s ease;*/ -/*}*/ - -/*body.sidebar-closed .kanban-page {*/ -/* grid-template-columns: 1fr;*/ -/*}*/ - -/*!* SIDEBAR *!*/ - -/*.kanban-sidebar {*/ -/* position: relative;*/ - -/* min-width: 0;*/ -/* background: var(--panel);*/ -/* border-right: 1px solid #111;*/ -/* padding: 44px 14px 28px;*/ -/* overflow-y: auto;*/ - -/* transition:*/ -/* transform 0.28s ease,*/ -/* opacity 0.2s ease,*/ -/* padding 0.28s ease;*/ -/*}*/ - -/*body.sidebar-closed .kanban-sidebar {*/ -/* transform: translateX(-100%);*/ -/* opacity: 0;*/ -/* pointer-events: none;*/ -/* padding-left: 0;*/ -/* padding-right: 0;*/ -/* border-right: 0;*/ -/*}*/ - -/*!* SIDEBAR CLOSE *!*/ - -/*.kanban-sidebar-close {*/ -/* position: absolute;*/ -/* top: 14px;*/ -/* right: 14px;*/ - -/* width: 28px;*/ -/* height: 28px;*/ - -/* border: 0;*/ -/* background: transparent;*/ -/* cursor: pointer;*/ -/*}*/ - -/*.kanban-sidebar-close span {*/ -/* position: absolute;*/ -/* left: 4px;*/ -/* top: 13px;*/ - -/* width: 22px;*/ -/* height: 3px;*/ - -/* border-radius: 999px;*/ -/* background: var(--text);*/ - -/* transition:*/ -/* background 0.2s ease,*/ -/* transform 0.2s ease;*/ -/*}*/ - -/*.kanban-sidebar-close span:first-child {*/ -/* transform: rotate(45deg);*/ -/*}*/ - -/*.kanban-sidebar-close span:last-child {*/ -/* transform: rotate(-45deg);*/ -/*}*/ - -/*.kanban-sidebar-close:hover span {*/ -/* background: var(--orange);*/ -/*}*/ - -/*.kanban-sidebar-close:hover span:first-child {*/ -/* transform: rotate(45deg) scale(1.08);*/ -/*}*/ - -/*.kanban-sidebar-close:hover span:last-child {*/ -/* transform: rotate(-45deg) scale(1.08);*/ -/*}*/ - -/*.kanban-sidebar .sidebar-title {*/ -/* margin: 0 0 16px;*/ -/* font-family: var(--serif);*/ -/* font-size: 26px;*/ -/* font-weight: 400;*/ -/* line-height: 1;*/ -/* color: var(--text);*/ -/*}*/ - -/*.kanban-sidebar .teams-title {*/ -/* margin-top: 34px;*/ -/*}*/ - -/*!* PROJECT LIST *!*/ - -/*.kanban-sidebar .project-list {*/ -/* display: grid;*/ -/* gap: 8px;*/ -/*}*/ - -/*.kanban-sidebar .project-item {*/ -/* width: 100%;*/ -/* min-height: 36px;*/ -/* border-radius: 14px;*/ -/* padding: 0 12px;*/ -/* border: 1px solid var(--panel-line);*/ -/* background: transparent;*/ -/* color: var(--text);*/ - -/* display: grid;*/ -/* grid-template-columns: 16px 1fr auto;*/ -/* align-items: center;*/ -/* gap: 9px;*/ - -/* cursor: pointer;*/ -/* text-align: left;*/ - -/* transition:*/ -/* background 0.2s ease,*/ -/* border-color 0.2s ease,*/ -/* transform 0.2s ease,*/ -/* box-shadow 0.2s ease;*/ -/*}*/ - -/*.kanban-sidebar .project-item:hover {*/ -/* background: #3a3a3a;*/ -/* border-color: var(--orange);*/ -/* transform: translateX(3px);*/ -/* box-shadow: 0 5px 12px rgba(0, 0, 0, 0.28);*/ -/*}*/ - -/*.kanban-sidebar .project-item.active {*/ -/* min-height: 40px;*/ -/* background: var(--panel-soft);*/ -/* box-shadow: 0 6px 12px rgba(0, 0, 0, 0.32);*/ -/*}*/ - -/*.kanban-sidebar .project-color {*/ -/* width: 13px;*/ -/* height: 13px;*/ -/* border-radius: 5px;*/ -/*}*/ - -/*.kanban-sidebar .project-name {*/ -/* font-size: 12px;*/ -/* font-weight: 700;*/ -/*}*/ - -/*.kanban-sidebar .project-meta {*/ -/* color: var(--muted);*/ -/* font-size: 10px;*/ -/* white-space: nowrap;*/ -/*}*/ - -/*.kanban-sidebar .active-meta {*/ -/* color: var(--peach);*/ -/* font-weight: 800;*/ -/*}*/ - -/*!* TEAMS *!*/ - -/*.kanban-sidebar .team-grid {*/ -/* display: grid;*/ -/* grid-template-columns: 1fr 1fr;*/ -/* gap: 8px 10px;*/ -/*}*/ - -/*.kanban-sidebar .team-card {*/ -/* min-height: 36px;*/ -/* border-radius: 14px;*/ -/* padding: 0 12px;*/ -/* border: 1px solid var(--panel-line);*/ -/* background: transparent;*/ -/* color: var(--text);*/ - -/* display: flex;*/ -/* align-items: center;*/ -/* justify-content: space-between;*/ -/* gap: 8px;*/ - -/* cursor: pointer;*/ -/*}*/ - -/*.kanban-sidebar .team-card:hover {*/ -/* background: #3a3a3a;*/ -/* border-color: var(--orange);*/ -/*}*/ - -/*.kanban-sidebar .team-card span:first-child {*/ -/* font-size: 12px;*/ -/* font-weight: 700;*/ -/*}*/ - -/*.kanban-sidebar .team-dot {*/ -/* width: 11px;*/ -/* height: 11px;*/ -/* border-radius: 50%;*/ -/* flex: 0 0 auto;*/ -/*}*/ - -/*!* MAIN *!*/ - -/*.kanban-main {*/ -/* min-width: 0;*/ - -/* !* главное: убрали фиксированную высоту *!*/ -/* height: auto;*/ -/* min-height: 0;*/ - -/* padding: 70px 72px 64px 70px;*/ - -/* !* не режем контент по вертикали *!*/ -/* overflow: visible;*/ - -/* display: flex;*/ -/* flex-direction: column;*/ - -/* transition: padding 0.28s ease;*/ -/*}*/ - -/*body.sidebar-closed .kanban-main {*/ -/* padding-left: 40px;*/ -/*}*/ - -/*.kanban-head {*/ -/* width: 100%;*/ -/* max-width: 100%;*/ -/* margin-bottom: 24px;*/ -/* padding-right: 18px;*/ - -/* display: flex;*/ -/* align-items: center;*/ -/* justify-content: space-between;*/ - -/* transition: max-width 0.28s ease;*/ -/*}*/ - -/*body.sidebar-closed .kanban-head {*/ -/* max-width: calc(100vw - 80px);*/ -/*}*/ - -/*.kanban-head h1 {*/ -/* margin: 0;*/ -/* color: white;*/ -/* font-size: 58px;*/ -/* font-family: var(--label);*/ -/* font-weight: 400;*/ -/* line-height: 1;*/ -/*}*/ - -/*!* NOTIFY *!*/ - -/*.notify-btn {*/ -/* width: 46px;*/ -/* height: 46px;*/ -/* position: relative;*/ -/* border: 0;*/ -/* background: transparent;*/ -/* cursor: pointer;*/ -/* padding: 0;*/ - -/* display: grid;*/ -/* place-items: center;*/ -/*}*/ - -/*.notify-btn img {*/ -/* width: 38px;*/ -/* height: 38px;*/ -/* display: block;*/ -/*}*/ - -/*.notify-count {*/ -/* min-width: 20px;*/ -/* height: 20px;*/ -/* position: absolute;*/ -/* top: 1px;*/ -/* right: -2px;*/ - -/* padding: 0 6px;*/ -/* border: 2px solid var(--bg);*/ -/* border-radius: 999px;*/ - -/* background: var(--green);*/ -/* color: white;*/ - -/* display: none;*/ -/* align-items: center;*/ -/* justify-content: center;*/ - -/* font-family: var(--label);*/ -/* font-size: 10px;*/ -/* font-weight: 800;*/ -/* line-height: 1;*/ -/*}*/ - -/*.notify-btn.has-unread .notify-count {*/ -/* display: inline-flex;*/ -/*}*/ - -/*.notify-btn:hover img {*/ -/* filter: drop-shadow(0 0 10px rgba(57, 247, 89, 0.42));*/ -/*}*/ - -/*!* NOTIFICATIONS *!*/ - -/*.notification-overlay {*/ -/* position: fixed;*/ -/* inset: 0;*/ -/* z-index: 180;*/ - -/* display: grid;*/ -/* place-items: center;*/ - -/* padding: 24px;*/ -/* background: rgba(0, 0, 0, 0.48);*/ - -/* opacity: 0;*/ -/* pointer-events: none;*/ - -/* transition: opacity 0.22s ease;*/ -/*}*/ - -/*.notification-overlay.is-open {*/ -/* opacity: 1;*/ -/* pointer-events: auto;*/ -/*}*/ - -/*.notification-panel {*/ -/* width: min(755px, calc(100vw - 32px));*/ -/* height: min(600px, calc(100vh - 40px));*/ -/* position: relative;*/ - -/* padding: 30px 45px 32px;*/ -/* outline: none;*/ -/* border-radius: 20px;*/ -/* background: #282828;*/ -/* color: white;*/ -/* box-shadow: 0 4px 2px 7px rgba(0, 0, 0, 0.25);*/ - -/* display: flex;*/ -/* flex-direction: column;*/ - -/* transform: translateY(18px) scale(0.98);*/ -/* transition: transform 0.22s ease;*/ -/*}*/ - -/*.notification-overlay.is-open .notification-panel {*/ -/* transform: translateY(0) scale(1);*/ -/*}*/ - -/*.notification-panel-head {*/ -/* display: grid;*/ -/* grid-template-columns: minmax(0, 1fr) auto 36px;*/ -/* align-items: center;*/ -/* gap: 24px;*/ -/*}*/ - -/*.notification-panel h2 {*/ -/* margin: 0;*/ - -/* font-family: var(--serif);*/ -/* font-size: clamp(34px, 4vw, 48px);*/ -/* font-weight: 400;*/ -/* line-height: 1;*/ -/*}*/ - -/*.notification-filter {*/ -/* display: inline-flex;*/ -/* align-items: center;*/ -/* gap: 10px;*/ - -/* color: white;*/ -/* cursor: pointer;*/ -/* user-select: none;*/ - -/* font-family: var(--label);*/ -/* font-size: 16px;*/ -/* line-height: 1.1;*/ -/*}*/ - -/*.notification-filter > span:first-child {*/ -/* width: 147px;*/ -/*}*/ - -/*.notification-filter input {*/ -/* position: absolute;*/ -/* opacity: 0;*/ -/* pointer-events: none;*/ -/*}*/ - -/*.notification-switch {*/ -/* width: 64px;*/ -/* height: 28px;*/ -/* position: relative;*/ -/* border-radius: 999px;*/ -/* background: #353535;*/ -/*}*/ - -/*.notification-switch::before {*/ -/* content: "";*/ -/* position: absolute;*/ -/* left: 18px;*/ -/* top: 9px;*/ - -/* width: 1px;*/ -/* height: 10px;*/ -/* background: white;*/ -/* opacity: 0.7;*/ -/*}*/ - -/*.notification-switch::after {*/ -/* content: "";*/ -/* position: absolute;*/ -/* left: 2px;*/ -/* top: 2px;*/ - -/* width: 34px;*/ -/* height: 24px;*/ -/* border-radius: 999px;*/ -/* background: white;*/ - -/* transition: transform 0.2s ease;*/ -/*}*/ - -/*.notification-filter input:checked + .notification-switch {*/ -/* background: var(--green);*/ -/*}*/ - -/*.notification-filter input:checked + .notification-switch::after {*/ -/* transform: translateX(26px);*/ -/*}*/ - -/*.notification-close {*/ -/* width: 36px;*/ -/* height: 36px;*/ -/* position: relative;*/ - -/* border: 0;*/ -/* background: transparent;*/ -/* cursor: pointer;*/ -/*}*/ - -/*.notification-close span {*/ -/* position: absolute;*/ -/* left: 5px;*/ -/* top: 16px;*/ - -/* width: 26px;*/ -/* height: 3px;*/ -/* border-radius: 999px;*/ -/* background: white;*/ - -/* transition:*/ -/* background 0.18s ease,*/ -/* transform 0.18s ease;*/ -/*}*/ - -/*.notification-close span:first-child {*/ -/* transform: rotate(45deg);*/ -/*}*/ - -/*.notification-close span:last-child {*/ -/* transform: rotate(-45deg);*/ -/*}*/ - -/*.notification-close:hover span {*/ -/* background: var(--orange);*/ -/*}*/ - -/*.notification-line {*/ -/* width: calc(100% - 30px);*/ -/* height: 1px;*/ -/* margin: 28px auto 24px;*/ -/* background: white;*/ -/*}*/ - -/*.notification-actions {*/ -/* display: flex;*/ -/* justify-content: flex-end;*/ -/* margin-bottom: 14px;*/ -/*}*/ - -/*.notification-read-all {*/ -/* min-height: 34px;*/ -/* padding: 0 16px;*/ -/* border: 1px solid rgba(255, 255, 255, 0.82);*/ -/* border-radius: 999px;*/ - -/* background: transparent;*/ -/* color: white;*/ - -/* cursor: pointer;*/ - -/* font-family: var(--label);*/ -/* font-size: 14px;*/ -/* font-weight: 700;*/ -/*}*/ - -/*.notification-read-all:hover:not(:disabled) {*/ -/* border-color: var(--green);*/ -/* background: rgba(64, 125, 82, 0.22);*/ -/*}*/ - -/*.notification-read-all:disabled {*/ -/* opacity: 0.45;*/ -/* cursor: default;*/ -/*}*/ - -/*.notification-list {*/ -/* flex: 1;*/ -/* min-height: 0;*/ -/* padding: 20px 0;*/ -/* border: 1px solid white;*/ -/* border-radius: 20px;*/ - -/* display: flex;*/ -/* flex-direction: column;*/ -/* gap: 0;*/ - -/* overflow-y: auto;*/ -/* scrollbar-width: thin;*/ -/* scrollbar-color: var(--green) #353535;*/ -/*}*/ - -/*.notification-list::-webkit-scrollbar {*/ -/* width: 8px;*/ -/*}*/ - -/*.notification-list::-webkit-scrollbar-track {*/ -/* background: #353535;*/ -/* border-radius: 999px;*/ -/*}*/ - -/*.notification-list::-webkit-scrollbar-thumb {*/ -/* background: var(--green);*/ -/* border-radius: 999px;*/ -/*}*/ - -/*.notification-item {*/ -/* width: 100%;*/ -/* min-height: 84px;*/ -/* padding: 0 20px;*/ -/* border: 0;*/ -/* background: transparent;*/ -/* color: white;*/ -/* cursor: pointer;*/ - -/* display: grid;*/ -/* grid-template-columns: 16px minmax(0, 1fr);*/ -/* align-items: start;*/ -/* gap: 12px;*/ - -/* text-align: left;*/ -/* font-family: var(--label);*/ -/*}*/ - -/*.notification-item:hover {*/ -/* background: rgba(255, 255, 255, 0.045);*/ -/*}*/ - -/*.notification-item + .notification-item {*/ -/* margin-top: 19px;*/ -/*}*/ - -/*.notification-check {*/ -/* width: 16px;*/ -/* height: 16px;*/ -/* margin-top: 3px;*/ -/* border: 1px solid white;*/ -/* border-radius: 4px;*/ -/* background: #2c2c2c;*/ - -/* display: grid;*/ -/* place-items: center;*/ -/*}*/ - -/*.notification-check::after {*/ -/* content: "";*/ -/* width: 8px;*/ -/* height: 8px;*/ -/* border-radius: 2px;*/ -/* background: #39f759;*/ -/* opacity: 0;*/ -/*}*/ - -/*.notification-item.is-unread .notification-check::after {*/ -/* opacity: 1;*/ -/*}*/ - -/*.notification-item.is-read {*/ -/* opacity: 0.64;*/ -/*}*/ - -/*.notification-content {*/ -/* min-width: 0;*/ -/* display: grid;*/ -/* gap: 4px;*/ -/*}*/ - -/*.notification-title-row {*/ -/* min-width: 0;*/ - -/* display: flex;*/ -/* align-items: baseline;*/ -/* gap: 12px;*/ -/*}*/ - -/*.notification-name {*/ -/* min-width: 0;*/ -/* color: white;*/ -/* overflow-wrap: anywhere;*/ - -/* font-size: 20px;*/ -/* font-weight: 800;*/ -/* line-height: 1.1;*/ -/*}*/ - -/*.notification-time {*/ -/* flex: 0 0 auto;*/ -/* color: #d9d9d9;*/ - -/* font-size: 14px;*/ -/* line-height: 1.1;*/ -/*}*/ - -/*.notification-message {*/ -/* margin: 0;*/ -/* color: white;*/ -/* overflow-wrap: anywhere;*/ - -/* font-size: 16px;*/ -/* line-height: 1.25;*/ -/*}*/ - -/*.notification-empty,*/ -/*.notification-error {*/ -/* margin: auto;*/ -/* padding: 18px 22px;*/ -/* color: #d9d9d9;*/ -/* text-align: center;*/ - -/* font-family: var(--label);*/ -/* font-size: 16px;*/ -/* line-height: 1.35;*/ -/*}*/ - -/*.notification-error {*/ -/* color: var(--peach);*/ -/*}*/ - -/*.column-icon img {*/ -/* height: 24px;*/ -/* width: 24px;*/ -/*}*/ - -/*.column-icon-img,*/ -/*.task-icon-img {*/ -/* width: 22px;*/ -/* height: 22px;*/ -/* display: block;*/ -/* pointer-events: none;*/ -/*}*/ - -/*!* KANBAN SCROLL *!*/ - -/*.kanban-scroll {*/ -/* width: 100%;*/ -/* max-width: 100%;*/ - -/* display: flex;*/ -/* flex-wrap: nowrap;*/ -/* gap: 16px;*/ -/* align-items: flex-start;*/ -/* flex: 1;*/ -/* min-height: 0;*/ - -/* overflow-x: auto;*/ -/* overflow-y: hidden;*/ - -/* padding: 0 120px 20px 0;*/ - -/* scroll-snap-type: x proximity;*/ -/* scrollbar-width: thin;*/ -/* scrollbar-color: var(--orange) #2a2a2a;*/ -/*}*/ - -/*.kanban-scroll::-webkit-scrollbar {*/ -/* height: 8px;*/ -/*}*/ - -/*.kanban-scroll::-webkit-scrollbar-track {*/ -/* background: #2a2a2a;*/ -/* border-radius: 999px;*/ -/*}*/ - -/*.kanban-scroll::-webkit-scrollbar-thumb {*/ -/* background: var(--orange);*/ -/* border-radius: 999px;*/ -/*}*/ - -/*.kanban-state {*/ -/* min-width: 360px;*/ -/* padding: 36px;*/ -/* border: 1px solid #3a3a3a;*/ -/* border-radius: 24px;*/ -/* color: #a7a7a7;*/ -/* background: #282828;*/ -/* font-size: 18px;*/ -/* line-height: 1.4;*/ -/*}*/ - -/*.kanban-state-error {*/ -/* color: #ffe3d8;*/ -/* border-color: #f4864d;*/ -/*}*/ - -/*!* COLUMN *!*/ - -/*.kanban-column {*/ -/* flex: 0 0 var(--column-width);*/ - -/* width: var(--column-width);*/ -/* min-width: var(--column-width);*/ -/* min-height: 100%;*/ - -/* padding: 24px;*/ -/* background: #f7f7f7;*/ -/* box-shadow: 0 9px 20px rgba(0, 0, 0, 0.25);*/ -/* border-radius: 16px;*/ - -/* display: flex;*/ -/* flex-direction: column;*/ -/* gap: 16px;*/ - -/* scroll-snap-align: start;*/ -/*}*/ - -/*.column-head {*/ -/* display: grid;*/ -/* grid-template-columns: minmax(0, 1fr) auto auto auto;*/ -/* align-items: flex-start;*/ -/* gap: 12px;*/ -/*}*/ - -/*.column-title {*/ -/* min-width: 0;*/ -/* max-width: 100%;*/ -/* flex: 1;*/ -/* margin: 0;*/ -/* white-space: normal;*/ -/* overflow-wrap: anywhere;*/ -/* word-break: break-word;*/ -/* hyphens: auto;*/ - -/* color: #262626;*/ -/* font-size: 36px;*/ -/* font-family: Georgia, serif;*/ -/* font-weight: 700;*/ -/* line-height: 0.92;*/ -/*}*/ -/*.column-count,*/ -/*.column-icon {*/ -/* flex: 0 0 auto;*/ -/*}*/ -/*.column-count {*/ -/* min-width: 38px;*/ -/* height: 24px;*/ -/* padding: 0 12px;*/ - -/* display: inline-flex;*/ -/* align-items: center;*/ -/* justify-content: center;*/ - -/* background: #262626;*/ -/* color: white;*/ -/* border-radius: 999px;*/ - -/* font-size: 12px;*/ -/* font-weight: 700;*/ -/*}*/ - -/*.column-icon {*/ -/* width: 22px;*/ -/* height: 22px;*/ -/* border: 0;*/ -/* background: transparent;*/ -/* color: #1d1b20;*/ -/* cursor: pointer;*/ -/* font-size: 20px;*/ -/* line-height: 1;*/ -/* padding: 0;*/ -/*}*/ - -/*!* TASK *!*/ - -/*.task-card {*/ -/* width: 100%;*/ -/* min-height: 0;*/ -/* padding: 18px 14px 20px 18px;*/ -/* position: relative;*/ -/* z-index: 0;*/ - -/* background: white;*/ -/* overflow: visible;*/ -/* border-radius: 12px;*/ -/* border: 1px solid #e0e0e0;*/ - -/* display: flex;*/ -/* flex-direction: column;*/ -/* gap: 12px;*/ - -/* cursor: pointer;*/ -/* transition:*/ -/* transform 0.18s ease,*/ -/* border-color 0.18s ease,*/ -/* box-shadow 0.18s ease;*/ -/*}*/ - -/*.task-card:hover {*/ -/* transform: translateY(-2px);*/ -/* border-color: var(--task-color, var(--orange));*/ -/* box-shadow: 0 10px 24px rgba(0, 0, 0, 0.2);*/ -/*}*/ - -/*.task-card:focus-visible {*/ -/* outline: 3px solid var(--task-color, var(--orange));*/ -/* outline-offset: 3px;*/ -/*}*/ - -/*.task-card:hover,*/ -/*.task-card:focus-within {*/ -/* z-index: 30;*/ -/*}*/ - -/*.task-card::before {*/ -/* content: "";*/ -/* position: absolute;*/ -/* left: 1px;*/ -/* top: 1px;*/ -/* bottom: 1px;*/ - -/* width: 6px;*/ - -/* background: var(--task-color, var(--orange));*/ -/* border-radius: 3px;*/ -/*}*/ - -/*.task-top {*/ -/* display: grid;*/ -/* grid-template-columns: 20px 1fr 20px;*/ -/* gap: 12px;*/ -/* align-items: start;*/ -/*}*/ - -/*.task-icon-btn {*/ -/* width: 20px;*/ -/* height: 20px;*/ -/* border: 0;*/ -/* background: transparent;*/ -/* color: #1e1e1e;*/ -/* cursor: pointer;*/ -/* font-size: 17px;*/ -/* line-height: 1;*/ -/* padding: 0;*/ -/*}*/ - -/*.task-title {*/ -/* margin: 0;*/ -/* text-align: center;*/ -/* color: #262626;*/ -/* font-size: 16px;*/ -/* font-family: var(--label);*/ -/* font-weight: 700;*/ -/* line-height: 1.15;*/ -/*}*/ - -/*.task-dates {*/ -/* display: grid;*/ -/* grid-template-columns: 1fr 1fr;*/ -/* gap: 10px 26px;*/ -/*}*/ - -/*.date-label {*/ -/* color: #777;*/ -/* font-size: 10px;*/ -/* font-family: var(--label);*/ -/*}*/ - -/*.date-pills {*/ -/* display: flex;*/ -/* flex-wrap: wrap;*/ -/* gap: 2px;*/ -/*}*/ - -/*.date-pill {*/ -/* min-height: 16px;*/ -/* padding: 3px 7px;*/ -/* background: rgba(118, 118, 128, 0.12);*/ -/* border-radius: 999px;*/ -/* border-bottom: 1px solid var(--task-color, var(--orange));*/ - -/* color: black;*/ -/* font-size: 8px;*/ -/* white-space: nowrap;*/ -/*}*/ - -/*.task-description {*/ -/* color: #777;*/ -/* font-size: 13px;*/ -/* font-family: var(--label);*/ -/* line-height: 1.18;*/ -/*}*/ - -/*.task-footer {*/ -/* display: flex;*/ -/* align-items: center;*/ -/* justify-content: space-between;*/ -/* gap: 7px;*/ -/* min-width: 0;*/ -/* margin-top: 2px;*/ -/*}*/ - -/*.task-tags {*/ -/* display: flex;*/ -/* align-items: center;*/ -/* gap: 5px;*/ -/* flex-wrap: wrap;*/ -/* min-width: 0;*/ -/*}*/ - -/*.task-tag {*/ -/* padding: 5px 14px;*/ -/* background: var(--task-color, var(--orange));*/ -/* color: white;*/ -/* border-radius: 999px;*/ -/* font-size: 11px;*/ -/* font-weight: 700;*/ -/*}*/ - -/*.task-users {*/ -/* display: flex;*/ -/* align-items: center;*/ -/* gap: 7px;*/ -/* flex: 0 0 auto;*/ -/*}*/ - -/*.task-user-wrap {*/ -/* width: 20px;*/ -/* height: 20px;*/ -/* padding: 0;*/ -/* border: 0;*/ -/* border-radius: 50%;*/ -/* background: #eeeeef;*/ -/* display: grid;*/ -/* place-items: center;*/ -/* color: black;*/ -/* font-size: 12px;*/ -/* cursor: pointer;*/ -/*}*/ - -/*.task-user {*/ -/* width: 14px;*/ -/* height: 14px;*/ -/* display: block;*/ -/*}*/ - -/*!* ADD *!*/ - -/*.add-task-btn,*/ -/*.add-column-btn {*/ -/* border: 0;*/ -/* background: transparent;*/ -/* color: #262626;*/ -/* cursor: pointer;*/ - -/* display: inline-flex;*/ -/* align-items: center;*/ -/* gap: 5px;*/ - -/* font-family: var(--label);*/ -/* font-size: 18px;*/ -/* line-height: 1;*/ -/*}*/ - -/*.add-column-btn {*/ -/* flex: 0 0 90px;*/ - -/* min-width: 90px;*/ -/* align-self: stretch;*/ -/* min-height: 100%;*/ - -/* border: 0;*/ -/* background: transparent;*/ -/* color: white;*/ -/* cursor: pointer;*/ - -/* display: inline-flex;*/ -/* align-items: center;*/ -/* justify-content: center;*/ -/* gap: 5px;*/ - -/* font-family: var(--label);*/ -/* font-size: 42px;*/ -/* line-height: 1;*/ - -/* scroll-snap-align: start;*/ -/*}*/ - -/*.add-column-btn span:last-child {*/ -/* display: none;*/ -/*}*/ - -/*!* TOAST *!*/ - -/*.toast {*/ -/* position: fixed;*/ -/* left: 50%;*/ -/* bottom: 46px;*/ -/* z-index: 100;*/ - -/* transform: translateX(-50%) translateY(20px);*/ -/* opacity: 0;*/ -/* pointer-events: none;*/ - -/* min-height: 32px;*/ -/* padding: 0 12px;*/ -/* border-radius: 10px;*/ -/* background: white;*/ -/* color: #111;*/ -/* box-shadow: 0 4px 10px rgba(0, 0, 0, 0.28);*/ - -/* display: flex;*/ -/* align-items: center;*/ -/* gap: 7px;*/ - -/* font-family: var(--label);*/ -/* font-size: 13px;*/ - -/* transition:*/ -/* opacity 0.25s ease,*/ -/* transform 0.25s ease;*/ -/*}*/ - -/*.toast.is-visible {*/ -/* opacity: 1;*/ -/* transform: translateX(-50%) translateY(0);*/ -/*}*/ -/*!* USER TOOLTIP *!*/ - -/*.task-user-wrap {*/ -/* position: relative;*/ -/* transition:*/ -/* transform 0.18s ease,*/ -/* background 0.18s ease,*/ -/* box-shadow 0.18s ease;*/ -/*}*/ - -/*.task-user-wrap:hover {*/ -/* transform: translateY(-2px) scale(1.08);*/ -/* background: var(--task-color, var(--orange));*/ -/* color: white;*/ -/* box-shadow: 0 6px 14px rgba(0, 0, 0, 0.22);*/ -/*}*/ - -/*.task-user-wrap::after {*/ -/* content: attr(data-user-name);*/ -/* position: absolute;*/ -/* left: 50%;*/ -/* bottom: calc(100% + 8px);*/ - -/* transform: translateX(-50%) translateY(4px);*/ -/* opacity: 0;*/ -/* pointer-events: none;*/ - -/* width: max-content;*/ -/* max-width: none;*/ - -/* padding: 6px 10px;*/ -/* border-radius: 10px;*/ - -/* background: #262626;*/ -/* color: white;*/ - -/* font-family: var(--label);*/ -/* font-size: 11px;*/ -/* font-weight: 700;*/ -/* line-height: 1;*/ - -/* white-space: nowrap;*/ -/* box-shadow: 0 8px 18px rgba(0, 0, 0, 0.28);*/ - -/* transition:*/ -/* opacity 0.18s ease,*/ -/* transform 0.18s ease;*/ -/* z-index: 60;*/ -/*}*/ - -/*.task-user-wrap::before {*/ -/* content: "";*/ -/* position: absolute;*/ -/* left: 50%;*/ -/* bottom: calc(100% + 3px);*/ - -/* transform: translateX(-50%) translateY(4px);*/ -/* opacity: 0;*/ -/* pointer-events: none;*/ - -/* width: 8px;*/ -/* height: 8px;*/ -/* background: #262626;*/ -/* rotate: 45deg;*/ - -/* transition:*/ -/* opacity 0.18s ease,*/ -/* transform 0.18s ease;*/ -/* z-index: 59;*/ -/*}*/ - -/*.task-user-wrap:hover::after,*/ -/*.task-user-wrap:hover::before {*/ -/* opacity: 1;*/ -/* transform: translateX(-50%) translateY(0);*/ -/*}*/ - -/*!* REMINDER MODAL *!*/ - -/*.reminder-modal {*/ -/* position: fixed;*/ -/* inset: 0;*/ -/* z-index: 160;*/ - -/* display: grid;*/ -/* place-items: center;*/ - -/* padding: 24px;*/ -/* background: rgba(0, 0, 0, 0.48);*/ - -/* opacity: 0;*/ -/* pointer-events: none;*/ - -/* transition: opacity 0.22s ease;*/ -/*}*/ - -/*.reminder-modal.is-open {*/ -/* opacity: 1;*/ -/* pointer-events: auto;*/ -/*}*/ - -/*.reminder-window {*/ -/* width: min(420px, 100%);*/ -/* position: relative;*/ - -/* padding: 42px 34px 30px;*/ -/* border-radius: 28px;*/ - -/* background: #282828;*/ -/* border: 1px solid #3a3a3a;*/ -/* color: #f4f4f4;*/ - -/* box-shadow: 0 24px 60px rgba(0, 0, 0, 0.42);*/ - -/* transform: translateY(16px) scale(0.96);*/ -/* transition:*/ -/* transform 0.22s ease,*/ -/* opacity 0.22s ease;*/ -/*}*/ - -/*.reminder-modal.is-open .reminder-window {*/ -/* transform: translateY(0) scale(1);*/ -/*}*/ - -/*.reminder-close {*/ -/* position: absolute;*/ -/* top: 18px;*/ -/* right: 18px;*/ - -/* width: 34px;*/ -/* height: 34px;*/ -/* border: 0;*/ -/* background: transparent;*/ -/* cursor: pointer;*/ -/*}*/ - -/*.reminder-close span {*/ -/* position: absolute;*/ -/* left: 7px;*/ -/* top: 16px;*/ - -/* width: 22px;*/ -/* height: 3px;*/ -/* border-radius: 999px;*/ -/* background: #f4f4f4;*/ -/*}*/ - -/*.reminder-close span:first-child {*/ -/* transform: rotate(45deg);*/ -/*}*/ - -/*.reminder-close span:last-child {*/ -/* transform: rotate(-45deg);*/ -/*}*/ - -/*.reminder-close:hover span {*/ -/* background: var(--orange);*/ -/*}*/ - -/*.reminder-icon {*/ -/* width: 54px;*/ -/* height: 54px;*/ -/* margin-bottom: 18px;*/ - -/* display: grid;*/ -/* place-items: center;*/ - -/* border-radius: 18px;*/ -/* background: rgba(244, 134, 77, 0.16);*/ - -/* font-size: 28px;*/ -/*}*/ - -/*.reminder-title {*/ -/* margin: 0 0 12px;*/ - -/* font-family: var(--serif);*/ -/* font-size: 34px;*/ -/* font-weight: 400;*/ -/* line-height: 1;*/ -/*}*/ - -/*.reminder-text {*/ -/* margin: 0 0 28px;*/ - -/* color: #bdbdbd;*/ -/* font-family: var(--label);*/ -/* font-size: 16px;*/ -/* line-height: 1.35;*/ -/*}*/ - -/*.reminder-actions {*/ -/* display: flex;*/ -/* justify-content: flex-end;*/ -/* gap: 12px;*/ -/*}*/ - -/*.reminder-btn {*/ -/* min-width: 96px;*/ -/* height: 42px;*/ - -/* border: 0;*/ -/* border-radius: 999px;*/ - -/* cursor: pointer;*/ - -/* font-family: var(--label);*/ -/* font-size: 15px;*/ -/* font-weight: 800;*/ -/*}*/ - -/*.reminder-no {*/ -/* background: #3a3a3a;*/ -/* color: #f4f4f4;*/ -/*}*/ - -/*.reminder-no:hover {*/ -/* background: #464646;*/ -/*}*/ - -/*.reminder-yes {*/ -/* background: var(--orange);*/ -/* color: white;*/ -/*}*/ - -/*.reminder-yes:hover {*/ -/* background: #ff9866;*/ -/*}*/ - -/*!* CREATE TASK MODAL *!*/ - -/*.create-task-overlay {*/ -/* position: fixed;*/ -/* inset: 0;*/ -/* z-index: 170;*/ - -/* display: grid;*/ -/* place-items: center;*/ - -/* padding: 24px;*/ -/* background: rgba(0, 0, 0, 0.56);*/ - -/* opacity: 0;*/ -/* pointer-events: none;*/ - -/* transition: opacity 0.22s ease;*/ -/*}*/ - -/*.create-task-overlay.is-open {*/ -/* opacity: 1;*/ -/* pointer-events: auto;*/ -/*}*/ - -/*.create-task-modal {*/ -/* width: min(820px, calc(100vw - 40px));*/ -/* max-height: calc(100vh - 40px);*/ - -/* padding: 28px;*/ -/* border: 0;*/ -/* border-radius: 22px;*/ - -/* background: #282828;*/ -/* color: white;*/ -/* box-shadow: 0 26px 70px rgba(0, 0, 0, 0.48);*/ - -/* display: flex;*/ -/* flex-direction: column;*/ -/* gap: 28px;*/ - -/* overflow-y: auto;*/ - -/* transform: translateY(18px) scale(0.97);*/ -/* transition: transform 0.22s ease;*/ -/*}*/ - -/*.create-task-overlay.is-open .create-task-modal {*/ -/* transform: translateY(0) scale(1);*/ -/*}*/ - -/*!* HEADER *!*/ - -/*.create-task-header {*/ -/* display: grid;*/ -/* grid-template-columns: minmax(0, 1fr) 40px;*/ -/* align-items: start;*/ -/* gap: 18px;*/ -/*}*/ - -/*.create-task-name {*/ -/* width: 100%;*/ - -/* border: 0;*/ -/* outline: none;*/ -/* background: transparent;*/ - -/* color: white;*/ - -/* font-family: var(--serif);*/ -/* font-size: clamp(42px, 5vw, 64px);*/ -/* font-weight: 400;*/ -/* line-height: 0.98;*/ - -/* overflow-wrap: anywhere;*/ -/*}*/ - -/*.create-task-name::placeholder {*/ -/* color: #696868;*/ -/*}*/ - -/*.create-task-name:focus {*/ -/* text-shadow: 0 1px 18px rgba(244, 134, 77, 0.55);*/ -/*}*/ - -/*.create-task-close {*/ -/* position: relative;*/ - -/* width: 40px;*/ -/* height: 40px;*/ - -/* border: 0;*/ -/* background: transparent;*/ -/* cursor: pointer;*/ -/*}*/ - -/*.create-task-close span {*/ -/* position: absolute;*/ -/* left: 6px;*/ -/* top: 18px;*/ - -/* width: 30px;*/ -/* height: 4px;*/ - -/* border-radius: 999px;*/ -/* background: #f4f4f4;*/ - -/* transition:*/ -/* background 0.2s ease,*/ -/* transform 0.2s ease;*/ -/*}*/ - -/*.create-task-close span:first-child {*/ -/* transform: rotate(45deg);*/ -/*}*/ - -/*.create-task-close span:last-child {*/ -/* transform: rotate(-45deg);*/ -/*}*/ - -/*.create-task-close:hover span {*/ -/* background: var(--orange);*/ -/*}*/ - -/*.create-task-close:hover span:first-child {*/ -/* transform: rotate(45deg) scale(1.08);*/ -/*}*/ - -/*.create-task-close:hover span:last-child {*/ -/* transform: rotate(-45deg) scale(1.08);*/ -/*}*/ - -/*!* BODY *!*/ - -/*.create-task-body {*/ -/* display: grid;*/ -/* grid-template-columns: 1fr 0.92fr;*/ -/* gap: 24px;*/ -/*}*/ - -/*.create-task-block {*/ -/* min-height: 260px;*/ - -/* padding: 22px;*/ -/* border: 1px solid rgba(255, 255, 255, 0.78);*/ -/* border-radius: 16px;*/ - -/* background: rgba(255, 255, 255, 0.015);*/ -/*}*/ - -/*.create-task-description-block {*/ -/* display: flex;*/ -/* flex-direction: column;*/ -/* gap: 24px;*/ -/*}*/ - -/*.create-task-settings-block {*/ -/* display: flex;*/ -/* flex-direction: column;*/ -/* gap: 18px;*/ -/*}*/ - -/*.create-field {*/ -/* display: flex;*/ -/* flex-direction: column;*/ -/* gap: 12px;*/ -/*}*/ - -/*.create-label,*/ -/*.create-row-label {*/ -/* color: white;*/ -/* font-family: var(--label);*/ -/* font-size: 20px;*/ -/* font-weight: 600;*/ -/* line-height: 1;*/ -/*}*/ - -/*.create-textarea {*/ -/* width: 100%;*/ -/* min-height: 130px;*/ - -/* resize: vertical;*/ - -/* padding: 14px 16px;*/ -/* border-radius: 14px;*/ - -/* border: 1px solid rgba(255, 255, 255, 0.14);*/ -/* outline: none;*/ - -/* background: rgba(255, 255, 255, 0.045);*/ -/* color: white;*/ - -/* font-family: var(--label);*/ -/* font-size: 16px;*/ -/* line-height: 1.25;*/ -/*}*/ - -/*.create-textarea::placeholder,*/ -/*.create-input-small::placeholder,*/ -/*.create-select-like::placeholder {*/ -/* color: #8d8d8d;*/ -/*}*/ - -/*.create-textarea:focus,*/ -/*.create-input-small:focus,*/ -/*.create-select-like:focus,*/ -/*.create-select:focus,*/ -/*.create-date-time:focus {*/ -/* box-shadow: 0 0 0 2px rgba(244, 134, 77, 0.5);*/ -/*}*/ - -/*!* SETTINGS *!*/ - -/*.create-row {*/ -/* display: grid;*/ -/* grid-template-columns: 118px minmax(0, 1fr);*/ -/* align-items: center;*/ -/* gap: 18px;*/ -/*}*/ - -/*.create-assignee-row,*/ -/*.create-deadline-row {*/ -/* grid-template-columns: 1fr;*/ -/* align-items: start;*/ -/* gap: 10px;*/ -/*}*/ - -/*.create-deadline-row {*/ -/* margin-top: 6px;*/ -/*}*/ - -/*.create-select,*/ -/*.create-date-time,*/ -/*.create-select-like {*/ -/* width: 100%;*/ -/* min-width: 0;*/ -/* min-height: 38px;*/ - -/* padding: 8px 14px;*/ -/* border: 0;*/ -/* outline: none;*/ -/* border-radius: 999px;*/ - -/* background: rgba(118, 118, 128, 0.12);*/ -/* color: white;*/ - -/* font-family: var(--sans);*/ -/* font-size: 14px;*/ - -/* cursor: pointer;*/ -/*}*/ - -/*.create-select option {*/ -/* color: #1f1f1f;*/ -/* background: white;*/ -/*}*/ - -/*.create-date-time {*/ -/* border-bottom: 1px solid #ef6a35;*/ -/* color: #d8d8d8;*/ -/* color-scheme: dark;*/ -/* font-size: 13px;*/ -/*}*/ - -/*!* ASSIGNEE SEARCH *!*/ - -/*.assignee-picker {*/ -/* position: relative;*/ -/*}*/ - -/*.assignee-options {*/ -/* position: absolute;*/ -/* left: 0;*/ -/* right: 0;*/ -/* top: calc(100% + 8px);*/ -/* z-index: 15;*/ - -/* max-height: 116px;*/ -/* padding: 8px;*/ - -/* display: grid;*/ -/* gap: 6px;*/ - -/* overflow-y: auto;*/ - -/* border: 1px solid rgba(255, 255, 255, 0.14);*/ -/* border-radius: 16px;*/ -/* background: #333333;*/ -/* box-shadow: 0 14px 28px rgba(0, 0, 0, 0.32);*/ -/*}*/ - -/*.assignee-options:empty {*/ -/* display: none;*/ -/*}*/ - -/*.assignee-option {*/ -/* min-height: 34px;*/ - -/* padding: 0 12px;*/ -/* border: 1px solid #3a3a3a;*/ -/* border-radius: 999px;*/ - -/* background: rgba(255, 255, 255, 0.045);*/ -/* color: white;*/ - -/* display: flex;*/ -/* align-items: center;*/ -/* justify-content: space-between;*/ -/* gap: 10px;*/ - -/* cursor: pointer;*/ - -/* font-family: var(--label);*/ -/* font-size: 14px;*/ -/*}*/ - -/*.assignee-option:hover,*/ -/*.assignee-option.is-selected {*/ -/* border-color: var(--orange);*/ -/* background: rgba(244, 134, 77, 0.14);*/ -/*}*/ - -/*.assignee-empty {*/ -/* min-height: 34px;*/ - -/* padding: 0 12px;*/ -/* border-radius: 999px;*/ - -/* color: #a7a7a7;*/ - -/* display: flex;*/ -/* align-items: center;*/ - -/* font-family: var(--label);*/ -/* font-size: 14px;*/ -/*}*/ - -/*.assignee-dot {*/ -/* width: 12px;*/ -/* height: 12px;*/ -/* border-radius: 50%;*/ -/* flex: 0 0 auto;*/ -/*}*/ - -/*.selected-assignees {*/ -/* min-height: 76px;*/ - -/* display: flex;*/ -/* flex-wrap: wrap;*/ -/* align-content: flex-start;*/ -/* gap: 8px;*/ -/*}*/ - -/*.selected-assignee {*/ -/* max-width: 100%;*/ -/* min-height: 28px;*/ - -/* padding: 0 8px 0 10px;*/ -/* border: 1px solid rgba(244, 134, 77, 0.56);*/ -/* border-radius: 999px;*/ - -/* background: rgba(244, 134, 77, 0.12);*/ -/* color: white;*/ - -/* display: flex;*/ -/* align-items: center;*/ -/* gap: 6px;*/ - -/* font-family: var(--label);*/ -/* font-size: 12px;*/ -/* font-weight: 700;*/ -/*}*/ - -/*.selected-assignee span:first-child {*/ -/* min-width: 0;*/ -/* overflow: hidden;*/ -/* text-overflow: ellipsis;*/ -/* white-space: nowrap;*/ -/*}*/ - -/*.selected-assignee button {*/ -/* width: 16px;*/ -/* height: 16px;*/ - -/* border: 0;*/ -/* border-radius: 50%;*/ - -/* background: rgba(255, 255, 255, 0.12);*/ -/* color: white;*/ - -/* cursor: pointer;*/ - -/* line-height: 1;*/ -/*}*/ - -/*.selected-assignees-empty {*/ -/* color: #838383;*/ - -/* display: flex;*/ -/* align-items: center;*/ - -/* font-family: var(--label);*/ -/* font-size: 13px;*/ -/*}*/ - -/*!* TAGS *!*/ - -/*.create-tags-box {*/ -/* padding: 12px;*/ -/* border-radius: 14px;*/ - -/* background: rgba(255, 255, 255, 0.045);*/ -/* border: 1px solid rgba(255, 255, 255, 0.14);*/ -/*}*/ - -/*.created-tags {*/ -/* display: flex;*/ -/* flex-wrap: wrap;*/ -/* gap: 8px;*/ - -/* min-height: 28px;*/ -/* margin-bottom: 10px;*/ -/*}*/ - -/*.created-tag {*/ -/* min-height: 28px;*/ - -/* padding: 0 10px;*/ -/* border: 0;*/ -/* border-radius: 999px;*/ - -/* background: var(--orange);*/ -/* color: white;*/ - -/* display: inline-flex;*/ -/* align-items: center;*/ -/* gap: 8px;*/ - -/* cursor: pointer;*/ - -/* font-family: var(--label);*/ -/* font-size: 13px;*/ -/* font-weight: 700;*/ -/*}*/ - -/*.created-tag span:last-child {*/ -/* opacity: 0.75;*/ -/*}*/ - -/*.tag-create-row {*/ -/* display: grid;*/ -/* grid-template-columns: minmax(0, 1fr) 36px;*/ -/* gap: 8px;*/ -/*}*/ - -/*.create-input-small {*/ -/* min-height: 36px;*/ - -/* padding: 8px 12px;*/ -/* border: 0;*/ -/* outline: none;*/ -/* border-radius: 999px;*/ - -/* background: rgba(118, 118, 128, 0.12);*/ -/* color: white;*/ - -/* font-family: var(--sans);*/ -/* font-size: 14px;*/ -/*}*/ - -/*.tag-add-btn {*/ -/* width: 36px;*/ -/* height: 36px;*/ - -/* border: 0;*/ -/* border-radius: 50%;*/ - -/* background: var(--orange);*/ -/* color: white;*/ - -/* cursor: pointer;*/ - -/* font-size: 24px;*/ -/* line-height: 1;*/ -/*}*/ - -/*!* ACTIONS *!*/ - -/*.create-task-actions {*/ -/* display: flex;*/ -/* justify-content: space-between;*/ -/* align-items: center;*/ -/* gap: 16px;*/ -/*}*/ - -/*.create-action {*/ -/* min-height: 42px;*/ - -/* padding: 0 18px;*/ -/* border: 0;*/ -/* border-radius: 999px;*/ - -/* cursor: pointer;*/ - -/* display: inline-flex;*/ -/* align-items: center;*/ -/* justify-content: center;*/ - -/* font-family: var(--label);*/ -/* font-size: 17px;*/ -/* font-weight: 700;*/ -/*}*/ - -/*.create-cancel {*/ -/* background: transparent;*/ -/* color: #838383;*/ -/*}*/ - -/*.create-cancel:hover {*/ -/* color: #cfcfcf;*/ -/*}*/ - -/*.create-save {*/ -/* background: rgba(64, 125, 82, 0.16);*/ -/* color: #62b47b;*/ -/*}*/ - -/*.create-save:hover {*/ -/* background: rgba(64, 125, 82, 0.28);*/ -/*}*/ - -/*!* TASK DETAIL MODAL *!*/ - -/*.task-detail-overlay {*/ -/* position: fixed;*/ -/* inset: 0;*/ -/* z-index: -180;*/ - -/* display: grid;*/ -/* place-items: center;*/ - -/* padding: 24px;*/ -/* background: rgba(0, 0, 0, 0.58);*/ - -/* opacity: 0;*/ -/* pointer-events: none;*/ - -/* transition: opacity 0.22s ease;*/ -/*}*/ - -/*.task-detail-overlay.is-open {*/ -/* opacity: 1;*/ -/* pointer-events: auto;*/ -/*}*/ - -/*.task-detail-modal {*/ -/* width: min(1105px, calc(100vw - 32px));*/ -/* max-height: calc(100vh - 32px);*/ - -/* padding: 40px;*/ -/* border: 0;*/ -/* border-radius: 20px;*/ - -/* background: #282828;*/ -/* color: white;*/ -/* box-shadow: 0 28px 80px rgba(0, 0, 0, 0.46);*/ - -/* display: flex;*/ -/* flex-direction: column;*/ -/* gap: 36px;*/ - -/* overflow-y: auto;*/ - -/* transform: translateY(18px) scale(0.97);*/ -/* transition: transform 0.22s ease;*/ -/*}*/ - -/*.task-detail-overlay.is-open .task-detail-modal {*/ -/* transform: translateY(0) scale(1);*/ -/*}*/ - -/*.task-detail-head {*/ -/* display: grid;*/ -/* grid-template-columns: minmax(0, 1fr) 40px;*/ -/* gap: 14px 20px;*/ -/* align-items: start;*/ -/*}*/ - -/*.task-detail-title,*/ -/*.task-detail-description {*/ -/* width: 100%;*/ -/* border: 0;*/ -/* outline: none;*/ -/* background: transparent;*/ -/* color: white;*/ -/* font-family: var(--label);*/ -/*}*/ - -/*.task-detail-title {*/ -/* min-height: 42px;*/ -/* font-size: 36px;*/ -/* font-weight: 400;*/ -/* line-height: 1;*/ -/*}*/ - -/*.task-detail-description {*/ -/* grid-column: 1 / -1;*/ -/* min-height: 50px;*/ -/* resize: vertical;*/ -/* font-size: 28px;*/ -/* font-weight: 400;*/ -/* line-height: 1.18;*/ -/*}*/ - -/*.task-detail-title::placeholder,*/ -/*.task-detail-description::placeholder,*/ -/*.subtask-input::placeholder {*/ -/* color: #696868;*/ -/*}*/ - -/*.task-detail-title:focus,*/ -/*.task-detail-description:focus,*/ -/*.subtask-input:focus,*/ -/*.task-detail-select:focus,*/ -/*.task-detail-date:focus {*/ -/* box-shadow: 0 0 0 2px rgba(244, 134, 77, 0.48);*/ -/* border-radius: 10px;*/ -/*}*/ - -/*.task-detail-close {*/ -/* position: relative;*/ -/* width: 40px;*/ -/* height: 40px;*/ -/* border: 0;*/ -/* background: transparent;*/ -/* cursor: pointer;*/ -/*}*/ - -/*.task-detail-close span {*/ -/* position: absolute;*/ -/* left: 6px;*/ -/* top: 18px;*/ -/* width: 30px;*/ -/* height: 4px;*/ -/* border-radius: 999px;*/ -/* background: #f4f4f4;*/ -/* transition:*/ -/* background 0.18s ease,*/ -/* transform 0.18s ease;*/ -/*}*/ - -/*.task-detail-close span:first-child {*/ -/* transform: rotate(45deg);*/ -/*}*/ - -/*.task-detail-close span:last-child {*/ -/* transform: rotate(-45deg);*/ -/*}*/ - -/*.task-detail-close:hover span {*/ -/* background: var(--orange);*/ -/*}*/ - -/*.task-detail-close:hover span:first-child {*/ -/* transform: rotate(45deg) scale(1.08);*/ -/*}*/ - -/*.task-detail-close:hover span:last-child {*/ -/* transform: rotate(-45deg) scale(1.08);*/ -/*}*/ - -/*.task-detail-content {*/ -/* display: grid;*/ -/* grid-template-columns: minmax(0, 1fr) minmax(340px, 1fr);*/ -/* gap: 40px;*/ -/*}*/ - -/*.task-detail-panel {*/ -/* min-height: 320px;*/ -/* border: 1px solid rgba(255, 255, 255, 0.88);*/ -/* border-radius: 16px;*/ -/* background: rgba(255, 255, 255, 0.012);*/ -/*}*/ - -/*.task-detail-subtasks {*/ -/* padding: 22px 18px 18px;*/ -/* display: flex;*/ -/* flex-direction: column;*/ -/* gap: 20px;*/ -/*}*/ - -/*.task-detail-panel-head {*/ -/* display: flex;*/ -/* align-items: center;*/ -/* justify-content: space-between;*/ -/* gap: 16px;*/ -/*}*/ - -/*.task-detail-panel-head h2 {*/ -/* margin: 0;*/ -/* color: white;*/ -/* font-family: var(--label);*/ -/* font-size: 28px;*/ -/* font-weight: 400;*/ -/* line-height: 1;*/ -/*}*/ - -/*.subtask-list {*/ -/* display: grid;*/ -/* gap: 10px;*/ -/* padding-left: 10px;*/ -/*}*/ - -/*.subtask-empty {*/ -/* color: #838383;*/ -/* font-family: var(--label);*/ -/* font-size: 16px;*/ -/* line-height: 1.35;*/ -/*}*/ - -/*.subtask-item {*/ -/* display: grid;*/ -/* grid-template-columns: 20px minmax(0, 1fr) 30px;*/ -/* align-items: center;*/ -/* gap: 12px;*/ -/*}*/ - -/*.subtask-checkbox {*/ -/* width: 16px;*/ -/* height: 16px;*/ -/* accent-color: #e6e6e6;*/ -/* cursor: pointer;*/ -/*}*/ - -/*.subtask-title {*/ -/* min-width: 0;*/ -/* color: white;*/ -/* font-family: var(--sans);*/ -/* font-size: 18px;*/ -/* line-height: 1.25;*/ -/* overflow-wrap: anywhere;*/ -/*}*/ - -/*.subtask-item.is-done .subtask-title {*/ -/* color: #838383;*/ -/* text-decoration: line-through;*/ -/*}*/ - -/*.subtask-remove-btn,*/ -/*.subtask-add-btn {*/ -/* border: 0;*/ -/* cursor: pointer;*/ -/* display: grid;*/ -/* place-items: center;*/ -/*}*/ - -/*.subtask-remove-btn {*/ -/* width: 28px;*/ -/* height: 28px;*/ -/* border-radius: 50%;*/ -/* background: #eeeeef;*/ -/* color: #111;*/ -/* font-size: 18px;*/ -/* line-height: 1;*/ -/*}*/ - -/*.subtask-remove-btn:hover {*/ -/* background: var(--orange);*/ -/* color: white;*/ -/*}*/ - -/*.subtask-add-row {*/ -/* margin-top: auto;*/ -/* display: grid;*/ -/* grid-template-columns: minmax(0, 1fr) 34px;*/ -/* gap: 10px;*/ -/*}*/ - -/*.subtask-input {*/ -/* width: 100%;*/ -/* min-height: 34px;*/ -/* border: 0;*/ -/* outline: none;*/ -/* border-radius: 999px;*/ -/* background: rgba(105, 104, 104, 0.18);*/ -/* color: white;*/ -/* padding: 6px 14px;*/ -/* font-family: var(--sans);*/ -/* font-size: 16px;*/ -/*}*/ - -/*.subtask-add-btn {*/ -/* width: 34px;*/ -/* height: 34px;*/ -/* border-radius: 50%;*/ -/* background: rgba(105, 104, 104, 0.28);*/ -/* color: white;*/ -/* font-size: 24px;*/ -/* line-height: 1;*/ -/*}*/ - -/*.subtask-add-btn:hover {*/ -/* background: var(--green);*/ -/*}*/ - -/*.task-detail-fields {*/ -/* padding: 48px 34px;*/ -/* display: flex;*/ -/* flex-direction: column;*/ -/* justify-content: center;*/ -/* gap: 30px;*/ -/*}*/ - -/*.task-detail-field {*/ -/* display: grid;*/ -/* grid-template-columns: 168px minmax(0, 1fr);*/ -/* align-items: center;*/ -/* gap: 20px;*/ -/* margin: 0;*/ -/*}*/ - -/*.task-detail-label {*/ -/* color: white;*/ -/* font-family: var(--label);*/ -/* font-size: 24px;*/ -/* font-weight: 500;*/ -/* line-height: 1;*/ -/*}*/ - -/*.task-detail-assignee {*/ -/* min-width: 0;*/ -/* display: flex;*/ -/* align-items: center;*/ -/* gap: 14px;*/ -/* color: white;*/ -/* font-family: var(--label);*/ -/* font-size: 22px;*/ -/* line-height: 1.1;*/ -/*}*/ - -/*.task-detail-assignee img {*/ -/* width: 25px;*/ -/* height: 25px;*/ -/* border-radius: 50%;*/ -/* flex: 0 0 auto;*/ -/* background: #eeeeef;*/ -/*}*/ - -/*.task-detail-assignee span {*/ -/* min-width: 0;*/ -/* overflow-wrap: anywhere;*/ -/*}*/ - -/*.task-detail-select,*/ -/*.task-detail-date {*/ -/* width: 100%;*/ -/* min-height: 36px;*/ -/* border: 0;*/ -/* outline: none;*/ -/* border-radius: 999px;*/ -/* padding: 8px 18px;*/ -/* font-family: var(--sans);*/ -/* font-size: 14px;*/ -/*}*/ - -/*.task-detail-select {*/ -/* background: var(--blue);*/ -/* color: white;*/ -/* cursor: pointer;*/ -/*}*/ - -/*.task-detail-select option {*/ -/* color: #1f1f1f;*/ -/* background: white;*/ -/*}*/ - -/*.task-detail-date {*/ -/* background: rgba(118, 118, 128, 0.12);*/ -/* border-bottom: 1px solid #ef6a35;*/ -/* color: #d8d8d8;*/ -/* color-scheme: dark;*/ -/*}*/ - -/*.task-detail-actions {*/ -/* display: flex;*/ -/* align-items: center;*/ -/* justify-content: space-between;*/ -/* gap: 18px;*/ -/*}*/ - -/*.task-detail-action {*/ -/* min-height: 48px;*/ -/* border: 0;*/ -/* background: transparent;*/ -/* cursor: pointer;*/ -/* display: inline-flex;*/ -/* align-items: center;*/ -/* gap: 14px;*/ -/* font-family: var(--label);*/ -/* font-size: 22px;*/ -/* font-weight: 500;*/ -/* line-height: 1;*/ -/*}*/ - -/*.task-detail-action-icon {*/ -/* width: 40px;*/ -/* height: 40px;*/ -/* display: grid;*/ -/* place-items: center;*/ -/* font-size: 34px;*/ -/* line-height: 1;*/ -/*}*/ - -/*.task-detail-cancel {*/ -/* color: #838383;*/ -/*}*/ - -/*.task-detail-cancel:hover {*/ -/* color: #cfcfcf;*/ -/*}*/ - -/*.task-detail-save {*/ -/* color: var(--green);*/ -/*}*/ - -/*.task-detail-save:hover {*/ -/* color: #62b47b;*/ -/*}*/ - -/*!* MOBILE *!*/ - -/*@media (max-width: 780px) {*/ -/* .notification-panel {*/ -/* height: min(620px, calc(100vh - 24px));*/ -/* padding: 24px 20px;*/ -/* }*/ - -/* .notification-panel-head {*/ -/* grid-template-columns: minmax(0, 1fr) 36px;*/ -/* gap: 16px;*/ -/* }*/ - -/* .notification-filter {*/ -/* grid-column: 1 / -1;*/ -/* grid-row: 2;*/ -/* justify-self: start;*/ -/* }*/ - -/* .notification-close {*/ -/* grid-column: 2;*/ -/* grid-row: 1;*/ -/* }*/ - -/* .notification-line {*/ -/* width: 100%;*/ -/* margin: 22px 0 18px;*/ -/* }*/ - -/* .notification-list {*/ -/* padding: 16px 0;*/ -/* }*/ - -/* .notification-item {*/ -/* min-height: 76px;*/ -/* padding: 0 16px;*/ -/* }*/ - -/* .create-task-modal {*/ -/* width: calc(100vw - 24px);*/ -/* padding: 22px;*/ -/* gap: 22px;*/ -/* }*/ - -/* .create-task-body {*/ -/* grid-template-columns: 1fr;*/ -/* }*/ - -/* .create-task-block {*/ -/* min-height: auto;*/ -/* }*/ - -/* .create-row {*/ -/* grid-template-columns: 1fr;*/ -/* gap: 10px;*/ -/* }*/ - -/* .create-task-actions {*/ -/* flex-direction: column-reverse;*/ -/* align-items: stretch;*/ -/* }*/ - -/* .create-action {*/ -/* width: 100%;*/ -/* }*/ -/*}*/ - -/*@media (max-width: 920px) {*/ -/* .task-detail-modal {*/ -/* padding: 26px;*/ -/* gap: 24px;*/ -/* }*/ - -/* .task-detail-title {*/ -/* font-size: 30px;*/ -/* }*/ - -/* .task-detail-description {*/ -/* font-size: 22px;*/ -/* }*/ - -/* .task-detail-content {*/ -/* grid-template-columns: 1fr;*/ -/* gap: 22px;*/ -/* }*/ - -/* .task-detail-panel {*/ -/* min-height: auto;*/ -/* }*/ - -/* .task-detail-fields {*/ -/* padding: 28px 22px;*/ -/* gap: 22px;*/ -/* }*/ - -/* .task-detail-field {*/ -/* grid-template-columns: 1fr;*/ -/* gap: 10px;*/ -/* }*/ - -/* .task-detail-actions {*/ -/* flex-direction: column-reverse;*/ -/* align-items: stretch;*/ -/* }*/ - -/* .task-detail-action {*/ -/* width: 100%;*/ -/* justify-content: center;*/ -/* font-size: 18px;*/ -/* }*/ -/*}*/ -/*!* MOBILE *!*/ -/*.empty-tags {*/ -/* color: #838383;*/ -/* font-family: var(--label);*/ -/* font-size: 13px;*/ -/*}*/ -/*.task-custom-tag {*/ -/* background: #282828;*/ -/* color: #f4f4f4;*/ -/*}*/ -/*@media (max-width: 980px) {*/ -/* .kanban-page {*/ -/* grid-template-columns: 1fr;*/ -/* }*/ - -/* .kanban-sidebar {*/ -/* position: fixed;*/ -/* left: 0;*/ -/* top: 72px;*/ -/* z-index: 60;*/ - -/* width: 240px;*/ -/* height: calc(100vh - 72px);*/ - -/* transform: translateX(0);*/ -/* }*/ - -/* body.sidebar-closed .kanban-sidebar {*/ -/* transform: translateX(-100%);*/ -/* }*/ - -/* .kanban-main {*/ -/* height: calc(100vh - 120px);*/ -/* min-height: 640px;*/ -/* padding: 48px 28px 48px;*/ -/* }*/ - -/* .kanban-head {*/ -/* max-width: calc(100vw - 40px);*/ -/* padding-right: 20px;*/ -/* }*/ - -/* .kanban-head h1 {*/ -/* font-size: 44px;*/ -/* }*/ - -/* .brand {*/ -/* font-size: 58px;*/ -/* }*/ - -/* .kanban-topbar {*/ -/* height: 72px;*/ -/* }*/ -/*}*/ - -/*@media (max-width: 560px) {*/ -/* :root {*/ -/* --column-width: 220px;*/ -/* }*/ - -/* .notification-panel h2 {*/ -/* font-size: 34px;*/ -/* }*/ - -/* .notification-filter {*/ -/* width: 100%;*/ -/* justify-content: space-between;*/ -/* font-size: 14px;*/ -/* }*/ - -/* .notification-title-row {*/ -/* flex-direction: column;*/ -/* gap: 3px;*/ -/* }*/ - -/* .notification-name {*/ -/* font-size: 18px;*/ -/* }*/ - -/* .notification-message {*/ -/* font-size: 14px;*/ -/* }*/ - -/* .kanban-column {*/ -/* min-height: 0;*/ -/* }*/ - -/* .brand {*/ -/* font-size: 36px;*/ -/* }*/ - -/* .home-link {*/ -/* display: none;*/ -/* }*/ -/*}*/ -:root { +:root { --bg: #1f1f1f; --panel: #282828; --panel-soft: #333333; @@ -2665,6 +101,13 @@ button { cursor: pointer; z-index: 45; } +.profile-btn { + right: 90px; +} + +.topbar-notify-btn { + right: 36px; +} .kanban-menu-btn { left: 36px; @@ -3664,6 +1107,16 @@ body.sidebar-closed .kanban-head { font-size: 8px; white-space: nowrap; } +.topbar-notify-btn { + position: absolute; + top: 38px; + right: 88px; + z-index: 45; +} + +.topbar-notify-btn .notify-count { + border-color: var(--panel); +} .task-description { color: #777; @@ -5669,3 +3122,113 @@ body.sidebar-closed .kanban-head { display: none; } } +.kanban-select-dropdown { + position: relative; + min-width: 0; + z-index: 1; +} + +.kanban-select-dropdown.is-open { + z-index: 40; +} + +.kanban-select-toggle { + width: 100%; + min-height: 36px; + padding: 0 42px 0 14px; + border: 1px solid rgba(255, 255, 255, 0.22); + border-radius: 8px; + background: rgba(40, 40, 40, 0.88); + color: white; + cursor: pointer; + + position: relative; + display: flex; + align-items: center; + text-align: left; + + font-family: var(--label); + font-size: 14px; +} + +.kanban-select-toggle:hover, +.kanban-select-toggle:focus-visible, +.kanban-select-dropdown.is-open .kanban-select-toggle { + background: #333333; + border-color: var(--orange); + box-shadow: 0 10px 24px rgba(0, 0, 0, 0.24); + outline: none; +} + +.kanban-select-chevron { + position: absolute; + right: 16px; + top: 50%; + width: 9px; + height: 9px; + border-right: 2px solid currentColor; + border-bottom: 2px solid currentColor; + transform: translateY(-65%) rotate(45deg); + transition: transform 0.2s ease; +} + +.kanban-select-dropdown.is-open .kanban-select-chevron { + transform: translateY(-35%) rotate(225deg); +} + +.kanban-select-menu { + position: absolute; + top: calc(100% + 8px); + left: 0; + right: 0; + z-index: 20; + + max-height: 180px; + padding: 6px; + border: 1px solid rgba(244, 134, 77, 0.45); + border-radius: 8px; + background: #181818; + box-shadow: 0 18px 38px rgba(0, 0, 0, 0.42); + + display: grid; + gap: 4px; + + overflow-y: auto; + opacity: 0; + pointer-events: none; + transform: translateY(-6px); + transition: opacity 0.18s ease, transform 0.18s ease; +} + +.kanban-select-dropdown.is-open .kanban-select-menu { + opacity: 1; + pointer-events: auto; + transform: translateY(0); +} + +.kanban-select-option { + min-height: 34px; + padding: 0 12px; + border: 0; + border-radius: 6px; + background: transparent; + color: #f4f4f4; + + cursor: pointer; + text-align: left; + + font-family: var(--label); + font-size: 14px; +} + +.kanban-select-option:hover, +.kanban-select-option:focus-visible, +.kanban-select-option.is-selected { + background: rgba(244, 134, 77, 0.22); + color: white; + outline: none; +} + +.kanban-select-option.is-selected { + color: #ffe3d8; +} \ No newline at end of file diff --git a/Api/wwwroot/js/kanban.js b/Api/wwwroot/js/kanban.js index 1b80ccc..d3ce1a1 100644 --- a/Api/wwwroot/js/kanban.js +++ b/Api/wwwroot/js/kanban.js @@ -1072,6 +1072,8 @@ function openTaskDetailOverlay(task) { detailTaskAssignee.textContent = getTaskAssigneeName(task); detailTaskPriority.value = normalizePriorityForSelect(task.priority); detailTaskComplexity.value = task.complexity || ""; + syncKanbanSelect(detailTaskPriority); + syncKanbanSelect(detailTaskComplexity); detailTaskDeadline.value = toDateTimeLocalValueSafe(task.deadline); renderDetailSubtasks(); @@ -1083,7 +1085,35 @@ function openTaskDetailOverlay(task) { detailTaskTitle.focus(); }, 0); } +function syncKanbanSelect(input) { + if (!input) { + return; + } + + const dropdown = document.querySelector(`[data-kanban-select="${input.id}"]`); + + if (!dropdown) { + return; + } + + const label = dropdown.querySelector("[data-kanban-select-label]"); + const options = dropdown.querySelectorAll(".kanban-select-option"); + + let selectedOption = null; + + options.forEach((option) => { + const isSelected = option.dataset.value === input.value; + option.classList.toggle("is-selected", isSelected); + + if (isSelected) { + selectedOption = option; + } + }); + if (label && selectedOption) { + label.textContent = selectedOption.textContent.trim(); + } +} function closeTaskDetailOverlay() { taskDetailOverlay.classList.remove("is-open"); taskDetailOverlay.setAttribute("aria-hidden", "true"); @@ -2586,10 +2616,6 @@ newTaskAssigneeSearch?.addEventListener("focus", () => { }); document.addEventListener("click", (event) => { - if (!newTaskAssigneeSearch || !assigneeOptions) { - return; - } - if (!event.target.closest(".assignee-picker")) { assigneeOptions.innerHTML = ""; } @@ -2597,6 +2623,10 @@ document.addEventListener("click", (event) => { if (!event.target.closest(".subtask-assignee-dropdown")) { closeSubtaskAssigneeDropdowns(); } + + if (!event.target.closest(".kanban-select-dropdown")) { + closeKanbanSelects(); + } }); addTaskTagBtn?.addEventListener("click", addCustomTag); @@ -2790,7 +2820,7 @@ function handleActionError(error, fallbackMessage) { /* ========================= START ========================= */ - +initKanbanSelects(); init(); try { @@ -2805,3 +2835,48 @@ try { } catch (error) { console.error("Не удалось подключить уведомления:", error); } +function initKanbanSelects() { + document.querySelectorAll("[data-kanban-select]").forEach((dropdown) => { + const inputId = dropdown.dataset.kanbanSelect; + const input = document.getElementById(inputId); + const toggle = dropdown.querySelector(".kanban-select-toggle"); + const label = dropdown.querySelector("[data-kanban-select-label]"); + const options = dropdown.querySelectorAll(".kanban-select-option"); + + toggle?.addEventListener("click", (event) => { + event.stopPropagation(); + + const shouldOpen = !dropdown.classList.contains("is-open"); + closeKanbanSelects(dropdown); + + dropdown.classList.toggle("is-open", shouldOpen); + toggle.setAttribute("aria-expanded", String(shouldOpen)); + }); + + options.forEach((option) => { + option.addEventListener("click", (event) => { + event.stopPropagation(); + + input.value = option.dataset.value; + label.textContent = option.textContent.trim(); + + options.forEach((item) => { + item.classList.toggle("is-selected", item === option); + }); + + closeKanbanSelects(); + }); + }); + }); +} + +function closeKanbanSelects(exceptDropdown = null) { + document.querySelectorAll(".kanban-select-dropdown.is-open").forEach((dropdown) => { + if (dropdown === exceptDropdown) { + return; + } + + dropdown.classList.remove("is-open"); + dropdown.querySelector(".kanban-select-toggle")?.setAttribute("aria-expanded", "false"); + }); +} \ No newline at end of file diff --git a/Api/wwwroot/kanban.html b/Api/wwwroot/kanban.html index 65cb69a..7824ae1 100644 --- a/Api/wwwroot/kanban.html +++ b/Api/wwwroot/kanban.html @@ -1,358 +1,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -388,24 +34,24 @@ + + -
+

Kanban

- -
@@ -508,25 +154,67 @@

Создать подзадачу