diff --git a/webapps/src/main/resources/locale/portlet/taskManagement_en.properties b/webapps/src/main/resources/locale/portlet/taskManagement_en.properties index db8a77a62..3673cfeab 100644 --- a/webapps/src/main/resources/locale/portlet/taskManagement_en.properties +++ b/webapps/src/main/resources/locale/portlet/taskManagement_en.properties @@ -116,6 +116,7 @@ label.label.titleProject=Project title label.untitledTask=Untitled Task label.description=Description label.noDescription=No description available +label.project.card.tasksCount={0} tasks label.inviteManagers=Invite Managers label.inviteParticipant=@mention someone label.searchPlaceholder=Start typing to search @@ -395,6 +396,7 @@ label.project.filter.all=All Projects label.project.filter.managed=I manage label.project.filter.collaborated=I collaborate to label.project.filter.with_tasks=With tasks +label.project.filter.favorites=Favorites label.project.filter.hidden=Hidden #timeConvert task.timeConvert.Less_Than_A_Minute=less than a minute ago diff --git a/webapps/src/main/webapp/WEB-INF/gatein-resources.xml b/webapps/src/main/webapp/WEB-INF/gatein-resources.xml index f55e08b43..a6c54e460 100644 --- a/webapps/src/main/webapp/WEB-INF/gatein-resources.xml +++ b/webapps/src/main/webapp/WEB-INF/gatein-resources.xml @@ -260,6 +260,9 @@ taskCommentsDrawer + + applicationToolbarComponent + ExtendedDomPurify diff --git a/webapps/src/main/webapp/skin/css/tasks.less b/webapps/src/main/webapp/skin/css/tasks.less index 797985dde..90e0e7ab9 100644 --- a/webapps/src/main/webapp/skin/css/tasks.less +++ b/webapps/src/main/webapp/skin/css/tasks.less @@ -23,6 +23,99 @@ /*----------------------Tasks Management ---------------------*/ +/* The shared application-toolbar keeps a 16px .v-toolbar__content padding even + with px-0; remove it on the Projects/Tasks list toolbars so the Add button + and the right-hand controls line up with the cards' edges. */ +#projectListToolbar > .v-toolbar__content, +#tasksListToolbar > .v-toolbar__content { + /* Flush with the content on both edges. The project grid uses a symmetric + column gutter (row mx-n2 + col px-2), so cards align to the container edges + and the toolbar lines up without any extra padding. */ + padding-inline-start: 0 !important; + padding-inline-end: 0 !important; +} + +/* Redesigned project card (single face, colored initials monogram). */ +.projectCardItem { + position: relative; + height: 175px; + border-radius: 8px; + text-align: start; + overflow: hidden; + .projectCardColorBar { + position: absolute; + inset-inline-start: 0; + top: 0; + bottom: 0; + width: 4px; + border: 0 !important; + } + .projectMonogramDefault { + background: var(--allPagesPrimaryColor, #476A9C); + } + .projectCardTitle { + font-size: 18px; + font-weight: 600; + line-height: 1.3; + text-align: start; + } + .projectCardDescription { + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow: hidden; + min-height: 36px; + font-size: 13px; + color: @greyColorLighten1; + text-align: start; + } + .projectCardHeading { + text-align: start; + } + .projectCardFooter { + border-top: 1px solid @borderColor; + } + .projectCardProgress { + .projectCardProgressBar { + width: 72px; + height: 6px; + border-radius: 3px; + overflow: hidden; + background-color: #e0e0e0; + } + .projectCardProgressSegment { + height: 100%; + min-width: 2px; + } + } +} + +/* The shared user-avatars-list lifts the hovered avatar with .mt-n1 (margin-top + -4px). A negative margin reflows the flex line, so the row/card footer (and the + progress bar) shifted with it. Keep the visual lift but do it via transform + (no layout impact) so only the avatar moves, not its neighbours. */ +.v-application .taskListItemView .mt-n1, +.v-application .projectCardItem .mt-n1 { + margin-top: 0 !important; + transform: translateY(-4px) !important; +} +/* The task row's assignee cell carries Vuetify's `v-avatar` class (overflow:hidden + + rounded), which clipped the lifted/overlapping avatars. Let them overflow. */ +.v-application .taskListItemView .taskAssignee { + overflow: visible !important; +} + +/* Placeholder cards shown while the first page of projects is loading. */ +.projectCardSkeleton.v-skeleton-loader { + height: 175px; + border-radius: 8px; + overflow: hidden; + border: 1px solid @borderColor; + .v-skeleton-loader__article { + padding-top: 16px; + } +} + .addProjectDrawer { hr.my-0.v-divider.theme--light{ margin-top: 5px!important; @@ -129,91 +222,6 @@ color: @textLightColor; } .listOfManager,.listOfParticipant { - - .listOfParticipantavatar{ - margin-right: -2px ~'!important; /** orientation=lt */ '; - margin-left: -2px ~'!important; /** orientation=rt */ '; - } - .listOfManageravatar{ - a.flex-nowrap.flex-shrink-0.d-flex { - margin-right: 17px ~'; /** orientation=lt */ '; - margin-left: 17px ~'; /** orientation=rt */ '; - } - } - .listOfParticipantavatar{ - a.flex-nowrap.flex-shrink-0.d-flex { - margin-right: 10px ~'; /** orientation=lt */ '; - margin-left: 10px ~'; /** orientation=rt */ '; - } - .seeMoreAvatars{ - margin-right: 7px ~'; /** orientation=lt */ '; - margin-left: 7px ~'; /** orientation=rt */ '; - } - } - - .listOfManageravatar,.listOfParticipantavatar{ - float: left ~'; /** orientation=lt */ '; - float: right ~'; /** orientation=rt */ '; - display: flex; - margin-right: 5px ~'; /** orientation=lt */ '; - margin-left: 5px ~'; /** orientation=rt */ '; - .seeMoreAvatars { - .seeMoreItem { - position: relative; - margin-top: 5px; - &:before { - content: ""; - width: 100%; - height: 100%; - position: absolute; - background: @baseColorMedium; - border-radius: 50%; - opacity: .5; - z-index: 1; - } - .v-avatar{ - height: 30px!important; - min-width: 30px!important; - width: 30px!important; - } - .seeMoreAvatarList { - position: absolute; - top: 0; - left: 0; - right: 0; - text-align: center; - width: 30px; - height: 30px; - color: white; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - font-size: 15px; - font-weight: bold; - z-index: 1; - } - } - } - } - a.flex-nowrap.flex-shrink-0.d-flex { - .v-avatar.pull-left.my-auto { - height: 30px; - min-width: 30px; - width: 30px; - } - .peopleInfoIcon { - z-index: 9999; - background: #fff; - height: 19px; - width: 19px; - margin-top: 23px; - margin-left: -13px ~'!important; /** orientation=lt */ '; - margin-right: -14px ~'!important; /** orientation=lt */ '; - margin-right: -13px ~'!important; /** orientation=rt */ '; - margin-left: -14px ~'!important; /** orientation=rt */ '; - } - } .editManager,.editParticipant { margin-left: 10px ~'; /** orientation=lt */ '; margin-right: 10px ~'; /** orientation=rt */ '; @@ -603,470 +611,9 @@ margin-right: 19px ~'; /** orientation=rt */ '; display: block } - .tasksToolbar { - .inputTasksFilter { - max-width: 250px; - .v-input__slot { - margin-bottom: 0!important; - .v-text-field__slot { - input { - max-height: 22px!important; - } - } - } - .v-input__append-inner { - button.mdi-close { - font-size: 18px; - margin-top: 14px; - } - } - } - .taskFilterMobile { - color: @greyColorLighten1!important; - font-size: 16px!important; - margin-left: 12px ~'; /** orientation=lt */ '; - margin-right: 12px ~'; /** orientation=rt */ '; - display: none; - } - .inputTasksFilterMobile { - display: flex!important; - width: 90%; - max-width: 90%; - position: absolute; - top: 50px; - .v-input__append-outer { - margin-left: -25px ~'!important; /** orientation=lt */ '; - margin-right: -25px ~'!important; /** orientation=rt */ '; - } - } - .tasksFilterMobile { - display: none!important; - } - .selectPrimaryFilter { - width: auto; - height: 38px; - color: @greyColorLighten1; - &:focus { - outline: none; - box-shadow: none; - } - } - - #widthTmpSelectTaskFilter { - display:none; - visibility:hidden; - width: inherit!important; - } - - .selectTasksFilter { - height: 40px; - width: auto; - padding-right: 20px ~'; /** orientation=lt */ '; - padding-left: 20px ~'; /** orientation=rt */ '; - &:focus { - outline: none; - box-shadow: none; - } - } - .taskDisplay { - .uiIcon { - font-style: normal; - font-size: 16px; - padding-right: 10px ~'; /** orientation=lt */ '; - padding-left: 10px ~'; /** orientation=rt */ '; - } - .uiIconCards { - .far(); - .fa-clipboard(); - } - .uiIconList { - .fas(); - .fa-list(); - } - } - .v-tabs-slider-wrapper { - display: none; - } - .taskTabCards { - border: 1px solid @borderColor; - border-radius: 5px 0 0 5px; - height: 38px; - min-height: 38px; - } - .taskTabList { - border: 1px solid @borderColor; - border-radius: 0 5px 5px 0; - height: 38px; - min-height: 38px; - } - .v-tab.v-tab--active { - border: 1px solid @primaryColor!important; - background-color: @tabNormalLinkBackground!important; - } - .filterTasksSetting { - .uiIconFilterSetting { - .fa(); - .fa-sliders-h(); - font-style: normal; - font-size: 16px; - color: @primaryColor; - } - } - } .tasksListContainer { .projectItem { position: relative; - .taskCardFlip { - transition: 0.6s; - transform-style: preserve-3d; - position: relative; - min-height: @taskCardParentMaxHeight; - padding: 0; - .taskCardFront { - z-index: 2; - transform: rotateY(0deg); - -webkit-backface-visibility: hidden; - backface-visibility: hidden; - position: absolute; - top: 0; - left: 0 ~'; /** orientation=lt */ '; - right: 0 ~'; /** orientation=rt */ '; - height: @taskCardMaxHeight; - max-height: @taskCardMaxHeight; - width: 100%; - max-width: 100%; - .asparagus_border_bottom { - border-bottom-color: #909958 !important; - } - .laurel_green_border_bottom { - border-bottom-color: #BED67E !important; - } - .moss_green_border_bottom { - border-bottom-color: #98CC81 !important; - } - .munsell_blue_border_bottom { - border-bottom-color: #319AB3 !important; - } - .sky_blue_border_bottom { - border-bottom-color: #4DBED9 !important; - } - .powder_blue_border_bottom { - border-bottom-color: #9EE4F5 !important; - } - .baby_blue_border_bottom { - border-bottom-color: #B2E2FF !important; - } - .navy_blue_border_bottom { - border-bottom-color: #4273C8 !important; - } - .blue_gray_border_bottom { - border-bottom-color: #8EB0EA !important; - } - .light_blue_border_bottom { - border-bottom-color: #B3CFFF !important; - } - .light_gray_border_bottom { - border-bottom-color: #CDCDCD !important; - } - .purple_border_bottom { - border-bottom-color: #774EA9 !important; - } - .light_purple_border_bottom { - border-bottom-color: #BC99E7 !important; - } - .pink_border_bottom { - border-bottom-color: #FFC8F0 !important; - } - .beige_border_bottom { - border-bottom-color: #FFE1BE !important; - } - .hot_pink_border_bottom { - border-bottom-color: #F97575 !important; - } - .light_brown_border_bottom { - border-bottom-color: #C5B294 !important; - } - .gray_border_bottom { - border-bottom-color: #A39594 !important; - } - .plum_border_bottom { - border-bottom-color: #CEA6AC !important; - } - .Orange_border_bottom { - border-bottom-color: #FFA500 !important; - } - .green_border_bottom { - border-bottom-color: #4CAF50 !important; - } - .red_border_bottom { - border-bottom-color: #F44336 !important; - } - .yellow_border_bottom { - border-bottom-color: #ffeb3b !important; - } - .brown_border_bottom { - border-bottom-color: #795548 !important; - } - .tasksCardItem { - height: @taskCardMaxHeight; - max-height: @taskCardMaxHeight; - flex-direction: column; - border: 1px solid @borderColor; - background-color: transparent!important; - border-bottom-width: 5px; - border-bottom-style: solid; - .taskItemToolbar { - background-color: transparent !important; - i { - color: @greyColorLighten1!important; - } - .projectCardTitle { - color: @textColor!important; - padding-left: 8px ~'; /** orientation=lt */ '; - padding-right: 8px ~'; /** orientation=rt */ '; - } - .uiIconInformation { - font-size: 20px; - margin-top: -3px; - } - .uiIconVerticalDots { - font-size: 16px; - margin-top: -3px; - } - .projectCardTitle { - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - max-width: 75%; - width: 75%; - cursor: pointer; - } - } - .noProjectColor { - background: @lightGrey; - .toolbarNoColor { - color: @baseColorLight; - } - } - .taskItemInfo { - padding: 8px!important; - .taskItemDescription { - min-height: 70px; - display: -webkit-box; - -webkit-line-clamp: 4; - -webkit-box-orient: vertical; - overflow: hidden; - text-overflow: ellipsis; - max-height: 50%; - cursor: pointer; - p { - margin-bottom: 0; - color: @borderColorLight; - } - .noProjectDescription { - color: @borderColorLight; - font-size: @textFontSize; - } - } - .largeDescriptionArea { - margin-bottom: 0!important; - } - .ProjectSpace { - .v-list-item { - min-height: 38px!important; - .noSpaceProjectIcon { - height: 28px; - min-width: 28px; - width: 28px; - background: @greyColor; - color: white; - display: flex; - align-items: center; - justify-content: center; - } - .noSpaceLabel { - color: @greyColorLighten1; - } - } - } - } - .SpaceAdmin { - position: absolute; - bottom: 0; - width: 100%; - padding: 0 10px; - .v-list-item { - min-height: 38px!important; - } - .spaceAdminWrapper { - position: relative; - z-index: 2; - .managerAvatarsList { - .seeMoreAvatars { - .seeMoreItem { - position: relative; - &:before { - content: ""; - width: 100%; - height: 100%; - position: absolute; - background: @baseColorMedium; - border-radius: 50%; - opacity: .5; - z-index: 1; - } - .seeMoreAvatarList { - position: absolute; - top: 0; - left: 0; - right: 0; - text-align: center; - width: 30px; - height: 30px; - color: white; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - font-size: 15px; - font-weight: bold; - z-index: 1; - } - } - } - } - .AllManagerAvatar { - box-shadow: 0 0 2px 1px @greyColor; - border-radius: 25px; - z-index: 1; - background: white; - .uiIconArrowBack { - font-size: 12px; - padding-top: 6px; - padding-left: 4px ~'; /** orientation=lt */ '; - padding-right: 4px ~'; /** orientation=rt */ '; - cursor: pointer; - } - } - } - } - } - } - .tasksCardBack { - transform: rotateY(180deg); - backface-visibility: hidden; - -webkit-backface-visibility: hidden; - position: absolute; - top: 0; - left: 0 ~'; /** orientation=lt */ '; - right: 0 ~'; /** orientation=rt */ '; - height: @taskCardMaxHeight; - max-height: @taskCardMaxHeight; - width: 100%; - max-width: 100%; - .tasksCardItem { - height: @taskCardMaxHeight; - max-height: @taskCardMaxHeight; - flex-direction: column; - border: 1px solid @borderColor; - position: relative; - background-color: transparent!important; - border-bottom-width: 5px!important; - border-bottom-style: solid; - .projectDetailsReverse { - position: relative; - .reverseInfoIcon { - position: absolute; - top: 12px; - color: @greyColorLighten1; - font-size: 20px; - } - } - .noTasksProject { - height: 80%; - text-align: center; - padding-top: 50px; - padding-bottom: 24px; - - .noTasksProjectIcon { - .uiIconTask { - color: @greyColor; - font-size: 40px; - padding-bottom: 10px; - } - } - } - .echartStatsContent { - justify-content: space-evenly; - .echartAndLabel { - position: relative; - .projectTasksTotalNumber { - position: absolute; - left: 60px ~'; /** orientation=lt */ '; - right: 60px ~'; /** orientation=rt */ '; - top: 35%; - span { - display: block; - text-align: center; - } - .totalNumber { - font-size: 1.5rem; - } - } - } - .projectStatusNumber{ - width: 40%; - p { - position: relative; - &:before { - position: absolute; - content: ''; - width: 7px; - height: 7px; - border-radius: 50%; - margin-left: -15px ~'; /** orientation=lt */ '; - margin-right: -15px ~'; /** orientation=rt */ '; - top: 5px; - } - } - .blueLabel { - &:before { - background: @infoColor; - } - } - .yellowLabel { - &:before { - background: @warningColor; - } - } - .redLabel { - &:before { - background: @errorColor; - } - } - .greenLabel { - &:before { - background: @successColor; - } - } - .purpleLabel { - &:before { - background: #9834eb; - } - } - .grayLabel { - &:before { - background: @baseColorMedium; - } - } - } - } - } - } - } - .taskCardFlipped { - transform: rotateY(180deg); - } .projectActionMenu { right: 27px ~'; /** orientation=lt */ '; left: 27px ~'; /** orientation=rt */ '; @@ -1226,8 +773,15 @@ border-color: var(--allPagesPrimaryColor, #476A9C) !important; color: var(--allPagesPrimaryColor, #476A9C); border: thin solid rgba(0, 0, 0, 0.12); - width: 28px; + /* Grow with the digit count (min-width keeps the 2-digit pill shape; + padding + nowrap let 3+ digit counts like 105 fit without clipping). */ + display: inline-flex; + align-items: center; + justify-content: center; + min-width: 28px; height: 21px; + padding: 0 6px; + white-space: nowrap; margin-left: 5px ~'; /** orientation=lt */ '; margin-right: 5px ~'; /** orientation=rt */ '; text-align: center; @@ -1388,56 +942,10 @@ text-align: end; } } - .taskAssignee { - .assigneDetails { - padding-top: 2px; - padding-bottom: 2px; - padding-right: 4px ~'; /** orientation=lt */ '; - padding-left: 4px ~'; /** orientation=rt */ '; - padding-left: 0 ~'; /** orientation=lt */ '; - padding-right: 0 ~'; /** orientation=rt */ '; - } - } .hideTaskAssignee { height: 0!important; min-height: 0!important; } - .taskAssigneeAndLabels { - .taskAssignee { - height: 35px; - min-height: 35px; - .assigneDetails { - padding-top: 2px; - padding-bottom: 2px; - padding-right: 4px ~'; /** orientation=lt */ '; - padding-left: 4px ~'; /** orientation=rt */ '; - padding-left: 0 ~'; /** orientation=lt */ '; - padding-right: 0 ~'; /** orientation=rt */ '; - } - } - } - .taskActionsAndProject { - .taskProject { - max-width: 70%; - width: 70%; - .projectSpaceDetails { - align-items: center; - max-width: 80%; - display: inherit; - .taskProjectNameChip { - max-width: 100%; - width: 100%; - .v-chip.v-size--small { - height: auto!important; - } - } - } - } - } -} -.smallTaskCard { - min-height: 170px!important; - height: 170px!important; } .taskViewCard { min-height: inherit; @@ -1515,47 +1023,6 @@ .taskAssignee { //padding: 2px 4px; //padding-left: 0; - .taskWorkerAvatar { - background-position: center; - background-size: cover; - border-radius: 50%; - width: 26px; - height: 26px; - img { - display: none; - } - } - .seeMoreAvatars { - .seeMoreItem { - position: relative; - &:before { - content: ""; - width: 100%; - height: 100%; - position: absolute; - background: @baseColorMedium; - border-radius: 50%; - opacity: .5; - z-index: 1; - } - .seeMoreAvatarList { - position: absolute; - top: 0; - left: 0; - right: 0; - text-align: center; - height: 27px; - color: white; - display: flex; - align-items: center; - justify-content: center; - cursor: pointer; - font-size: 15px; - font-weight: bold; - z-index: 1; - } - } - } } .taskCard { .v-divider { @@ -1622,41 +1089,6 @@ height: 50vh; text-align: center; padding-top: 10%; - .noTasksProjectIcon { - i { - font-size: 70px; - color: @greyColor; - padding-bottom: 20px; - } - .uiIconClipboard{ - &:after { - content: '\e9d0'; - font-size: 29.5px; - position: absolute; - bottom: 12px; - right: -5px ~'; /** orientation=lt */ '; - background: -webkit-linear-gradient(-45deg, transparent 0%, transparent 46%, white 46%, white 56%,transparent 56%, transparent 100%), -webkit-linear-gradient(45deg, transparent 0%, transparent 46%, white 46%, white 56%,transparent 56%, transparent 100%); - } - } - .uiIconTask { - &:after { - content: '\e9d0'; - font-size: 29.5px; - position: absolute; - bottom: 12px; - right: -5px ~'; /** orientation=lt */ '; - background: white; - } - } - } - .noTasksProjectLabel { - font-size: 18px; - color: @greyColorLighten1; - } - .noTasksProjectLink { - font-size: 1.1rem; - padding-top: 12px; - } } .tasksCardsContainer { /* Zooming exits */ @@ -1812,6 +1244,12 @@ background-color: @tableBackgroundAccent; border: 1px solid @tableBorder; border-radius: 4px; + cursor: pointer; + transition: box-shadow .15s ease, border-color .15s ease; + &:hover { + border-color: @primaryColor; + box-shadow: 0 2px 8px rgba(0, 0, 0, .08); + } .taskCheckBox { max-width: 3%; width: 3%; @@ -1838,8 +1276,8 @@ .strikethrough{ text-decoration: line-through; } - max-width: 40%; - width: 40%; + max-width: 30%; + width: 30%; text-align: start; flex: 1 1 100%; overflow: hidden; @@ -1858,31 +1296,25 @@ } } .taskProject { - max-width: 10%; - width: 10%; + max-width: 22%; + width: 22%; text-align: start; .projectSpaceDetails { cursor: pointer; - .spaceAvatar { - //min-width: 30px; + min-width: 0; + .projectColorDot { + width: 10px; + height: 10px; + border-radius: 50%; + border: 0 !important; + /* default for projects with no colour; the project colour classes + (.red, .munsell_blue, …) override this via their !important bg. */ + background-color: @greyColorLighten1; } - .taskProjectNameChip { - max-width: 72%; - .v-chip.v-size--small { - height: auto!important; - cursor: pointer; - } + .taskProjectNameLabel { + font-size: 13px; + color: @textColor; } - .taskProjectNameChipSpace { - max-width: 47%; - .v-chip.v-size--small { - height: auto!important; - cursor: pointer; - } - } - } - .taskProjectName { - max-width: 160px; } } .taskAssignee { @@ -1915,8 +1347,8 @@ cursor: pointer; } .taskStat { - max-width: 7%; - width: 7%; + max-width: 11%; + width: 11%; cursor: pointer; text-align: start; flex: 1 1 100%; @@ -1968,9 +1400,12 @@ } } .tasksViewList { + .taskListItemView { + cursor: pointer; + } .taskTitle { - width: 59%!important; - max-width: 59%!important; + width: 55%!important; + max-width: 55%!important; } .taskAssignee { max-width: 5%!important; @@ -1989,8 +1424,8 @@ width: 6%!important; } .taskStat { - max-width: 10%!important; - width: 10%!important; + max-width: 14%!important; + width: 14%!important; } .taskDueDate { max-width: 7%!important; @@ -1998,161 +1433,12 @@ } } } - .taskProject { - .taskProjectName { - flex: 1 1 auto; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - display: inline-block; - } - .taskProjectNameCard { - width: 120px; - } - .spaceAvatar { - .spaceAvatarImg { - border-radius: 4px; - } - } - .noSpaceAvatar { - background: white; - color: white; - display: flex; - align-items: center; - justify-content: center; - .noSpaceProjectIcon { - color: @greyColor; - } - } - .noProjectColor { - background: @baseColorLight!important; - border: 2px solid @baseColorLight; - } - .beige { - background: #FFE1BE!important; - border: 2px solid #FFE1BE; - } - .asparagus { - background: #909958!important; - border: 2px solid #909958; - } - .laurel_green { - background: #BED67E!important; - border: 2px solid #BED67E; - } - .moss_green { - background: #98CC81!important; - border: 2px solid #98CC81; - } - .munsell_blue { - background: #319AB3!important; - border: 2px solid #319AB3; - } - .sky_blue { - background: #4DBED9!important; - border: 2px solid #4DBED9; - } - .powder_blue { - background: #9EE4F5!important; - border: 2px solid #9EE4F5; - } - .baby_blue { - background: #B2E2FF!important; - border: 2px solid #B2E2FF; - } - .navy_blue { - background: #4273C8!important; - border: 2px solid #4273C8; - } - .blue_gray { - background: #8EB0EA!important; - border: 2px solid #8EB0EA; - } - .light_blue { - background: #B3CFFF!important; - border: 2px solid #B3CFFF; - } - .light_gray { - background: #CDCDCD!important; - border: 2px solid #CDCDCD; - } - .purple { - background: #774EA9!important; - border: 2px solid #774EA9; - } - .light_purple { - background: #BC99E7!important; - border: 2px solid #BC99E7; - } - .pink { - background: #FFC8F0!important; - border: 2px solid #FFC8F0; - } - .hot_pink { - background: #F97575!important; - border: 2px solid #F97575; - } - .Orange { - background: #FFA500!important; - border: 2px solid #FFA500; - } - .light_brown { - background: #C5B294!important; - border: 2px solid #C5B294; - } - .gray { - background: #A39594!important; - border: 2px solid #A39594; - } - .plum { - background: #CEA6AC!important; - border: 2px solid #CEA6AC; - } - } .taskLabels { .labelText { background: @greyColor; padding: 2px 4px; cursor: pointer; } - .noLabelText { - color: @greyColorLighten1; - } - } - .AllAssigneeAvatar { - box-shadow: 0 0 2px 1px @greyColor; - border-radius: 25px; - width: auto!important; - display: inline-flex!important; - padding: 2px 4px; - padding-left: 0 ~'; /** orientation=lt */ '; - padding-right: 0 ~'; /** orientation=rt */ '; - .uiIconArrowBack { - font-size: 12px; - padding-top: 6px; - padding-left: 4px ~'; /** orientation=lt */ '; - padding-right: 4px ~'; /** orientation=rt */ '; - cursor: pointer; - } - } - #TasksListToolbar { - height: auto!important; - .v-toolbar__content { - height: auto!important; - padding: 0; - } - } - .toolbarLarge { - .v-toolbar__content { - padding-bottom: 50px!important; - } - } -} -#ProjectListToolbar { - height: auto!important; - .v-toolbar__content { - height: auto!important; - padding: 0; } } @@ -2216,21 +1502,6 @@ /*----------- Task Snapshot CSS ---------------*/ -.flexCard { - flex: 1 1 100%; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.btn-show{ - color: @primaryColor!important; - margin-block-end: 5px; - border:none!important; -} -.btn-show:hover { - color: @primaryColor!important; - background-color: #f2f2f2!important; -} .projectCard { border-radius: 15px 15px 15px 15px; margin-right: 10px ~'; /** orientation=lt */ '; @@ -2266,9 +1537,6 @@ margin-left: 25px ~'; /** orientation=rt */ '; } -.color-title { - color: @greyColorLighten1; -} .taskTitle { color: black; flex: 1 1 100%; @@ -2287,51 +1555,12 @@ margin-top: 5px; margin-block-end: 5px; } -.iconlarge { - font-size: 40px; - color:@successColorLight; -} -.noTasks { - display: flex; - height: 370px; - align-items: center; - justify-content: center; - .noTasksContent { - text-align: center; - margin: auto; - .uiNoTaskIcon { - color: #6d7d9821; - font-size: 60px; - font-style: normal; - font-weight: normal; - .fa(); - .fa-clipboard-list(); - } - .noTasksTitle { - color: #4d5466; - font-weight: normal; - font-size: 22px; - } - p { - font-weight: normal; - font-size: 15px; - color: @greyColorLighten1; - } - } -} .list-item { display: flex; width: 100%; margin-right: 10px ~'; /** orientation=lt */ '; margin-left: 10px ~'; /** orientation=rt */ '; } -.list-leave-active { - transition: all 1s; -} -.list-leave-to { - opacity: 0; - transform: translateY(30px); -} /*---------------------Responsive Style ---------------------------*/ @@ -2367,204 +1596,14 @@ } } -@media (max-width: @maxMobileWidth) { - #TasksParentContainer { - #TasksManagementPortlet { - .projectAndTasksContainer { - .tasksListContainer { - .projectItem { - .taskCardFlip { - min-height: 190px !important; - margin-bottom: 16px; - .taskCardFront { - height: auto; - max-height: inherit; - .tasksCardItem { - height: 190px!important; - max-height: 190px!important; - background-color: transparent!important; - border-bottom-width: 5px; - border-bottom-style: solid; - .taskItemToolbar { - background-color: transparent !important; - i { - color: @greyColorLighten1!important; - } - .projectCardTitle { - color: @textColor!important; - padding-left: 8px ~'; /** orientation=lt */ '; - padding-right: 8px ~'; /** orientation=rt */ '; - } - } - .taskItemInfo { - padding: 8px!important; - .descriptionDivider { - display: none!important; - } - .taskItemDescription { - min-height: inherit; - } - .largeDescriptionAreaSpace{ - -webkit-line-clamp: 2; - } - } - } - } - .tasksCardBack { - height: auto; - max-height: inherit; - .tasksCardItem { - height: auto; - max-height: inherit; - .noTasksProject { - padding-top: 24px; - padding-bottom: 24px; - .noTasksProjectIcon { - .uiIconTask { - font-size: 30px; - } - } - } - .echartStatsContent { - .echartAndLabel { - margin-left: -35px; - } - .projectStatusNumber{ - margin-left: -25px - } - .echartPieContent { - height: 130px!important; - } - } - } - } - } - } - } - } - .projectTasksDashboard { - .tasksViewBoard { - .projectTaskItem { - flex: 1 1 100%!important; - width: 100%!important; - } - } - } - } - } - .taskDisplay { - display: none!important; - } -} -@media (max-width: @maxLargeTabletWidth) { - #TasksParentContainer { - .projectAndTasksContainer { - .tasksList { - .tasksListItem { - .taskListItemView { - .taskAssignee { - width: 15%!important; - max-width: 15%!important; - padding-right: 12px; - } - .taskLabels { - .v-chip.v-size--small { - max-width: 80%; - padding: 0 4px; - margin: 0!important; - } - } - } - } - } - } - #taskCardItem { - .taskTitle { - cursor: pointer; - width: 80%; - max-width: 80%; - .strikethrough{ - text-decoration: line-through; - } - .taskCardViewTitle{ - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - overflow: hidden; - text-overflow: ellipsis; - cursor: pointer; - } - } - } - #TasksManagementPortlet { - .projectAndTasksContainer { - .projectTasksDashboard { - .tasksViewBoard { - .projectTaskItem { - flex: 1 1 50%; - width: 50%; - } - } - } - } - } - } -} -@media (max-width: 599px) { - #TasksManagementPortlet .projectAndTasksContainer .tasksToolbar{ - /*.v-input__icon.v-input__icon--prepend-inner { - display: none; - }*/ - .inputTasksFilter { - display: none; - } - .taskFilterMobile { - display: block; - } - .v-toolbar__title { - min-width: 40px!important; - margin-right: 5px; - } - button.btn.px-2.btn-primary.addNewProjectButton.v-btn.v-btn--contained.theme--light.v-size--default { - min-width: auto!important; - } - button.btn.px-2.btn-primary.filterTasksSetting.v-btn.v-btn--depressed.v-btn--flat.v-btn--outlined.theme--light.v-size--default { - min-width: auto!important; - } - } -} @media (max-width: 399px) { .taskDrawer { .drawerTitle .taskProjectName .projectName { max-width: 120px !important; } } - #TasksManagementPortlet { - .projectAndTasksContainer { - .tasksToolbar { - .selectPrimaryFilter { - width: 120px!important; - max-width: 120px!important; - text-overflow: ellipsis; - } - .selectTasksFilter { - width: 120px!important; - max-width: 120px!important; - text-overflow: ellipsis; - } - .taskFilterMobile { - margin-left: 2px; - } - .filterTasksSetting { - .uiIconFilterSetting { - padding-right: 0px !important; - } - } - } - } - } } @@ -2688,11 +1727,6 @@ .Orange { background-color: #FFA500 !important; } -.CalendarTableColor { - .Orange { - background-color: #FFA500 !important; - } -} .light_brown { background: #C5B294 !important; &:hover { @@ -2712,78 +1746,6 @@ } } -.asparagus_border { - border-color: #909958 !important; -} -.laurel_green_border { - border-color: #BED67E !important; -} -.moss_green_border { - border-color: #98CC81 !important; -} -.munsell_blue_border { - border-color: #319AB3 !important; -} -.sky_blue_border { - border-color: #4DBED9 !important; -} -.powder_blue_border { - border-color: #9EE4F5 !important; -} -.baby_blue_border { - border-color: #B2E2FF !important; -} -.navy_blue_border { - border-color: #4273C8 !important; -} -.blue_gray_border { - border-color: #8EB0EA !important; -} -.light_blue_border { - border-color: #B3CFFF !important; -} -.light_gray_border { - border-color: #CDCDCD !important; -} -.purple_border { - border-color: #774EA9 !important; -} -.light_purple_border { - border-color: #BC99E7 !important; -} -.pink_border { - border-color: #FFC8F0 !important; -} -.beige_border { - border-color: #FFE1BE !important; -} -.hot_pink_border { - border-color: #F97575 !important; -} -.light_brown_border { - border-color: #C5B294 !important; -} -.gray_border { - border-color: #A39594 !important; -} -.plum_border { - border-color: #CEA6AC !important; -} -.Orange_border { - border-color: #FFA500 !important; -} -.green_border { - border-color: #4CAF50 !important; -} -.red_border { - border-color: #F44336 !important; -} -.yellow_border { - border-color: #ffeb3b !important; -} -.brown_border { - border-color: #795548 !important; -} @keyframes beginDrag { from { @@ -2820,9 +1782,6 @@ .labelsActionMenu { max-width: 180px !important; min-width: 160px !important; - .label-edit-name{ - max-width: 136px; - } .label-btn { cursor: pointer; } @@ -2881,48 +1840,8 @@ GANTT CHART STYLE -----------------------------------------------------------*/ .gantt-wrapper { - .unscheduled-task-container { - position: absolute; - z-index: 999; - top: 50%; - left: 30px; - .unscheduled-task-btn { - background-color: @greyColor!important; - .mdi-calendar-range { - color: @baseColorLight!important; - } - .unscheduled-task-badge { - position: absolute; - display: flex; - align-items: center; - justify-content: center; - top: -5px; - right: 1px; - background: @warningColor; - font-size: 10px; - border-radius: 50%; - width: 18px; - height: 18px; - } - } - } .gantt-chart-container { padding-top: 20px; - .gantt-tasks-title { - margin-top: 60px; - min-height: calc(~"100vh - 180px"); - height: calc(~"100vh - 180px"); - overflow: hidden; - min-width: 180px; - p { - max-width: 180px; - margin-bottom: 0!important; - padding-top: 10px; - padding-right: 10px; - height: 27px; - border-bottom: 1px solid #ebeff2; - } - } } .gantt { diff --git a/webapps/src/main/webapp/vue-app/task-favorite-menu/extensions.js b/webapps/src/main/webapp/vue-app/task-favorite-menu/extensions.js index b3358ee06..251b8da8a 100644 --- a/webapps/src/main/webapp/vue-app/task-favorite-menu/extensions.js +++ b/webapps/src/main/webapp/vue-app/task-favorite-menu/extensions.js @@ -27,13 +27,6 @@ extensionRegistry.registerComponent('TaskProjectBoard', 'task-board-header', { vueComponent: Vue.options.components['project-favorite-board-header-action'], }); -// Favorite toggle as a menu row, used in the project card 3-dots menu -// (ProjectCardFront.vue) and the board header overflow 3-dots when collapsed. -extensionRegistry.registerComponent('TaskProjectMenu', 'task-project-menu', { - id: 'project-favorite', - rank: 5, - vueComponent: Vue.options.components['project-favorite-menu-action'], -}); // Add the favorite toggle inside the task drawer 3-dots menu // (consumed by TaskDrawer.vue via loadExtensions('Task', 'task-menu')). diff --git a/webapps/src/main/webapp/vue-app/tasks-management/components/Project/ProjectCard.vue b/webapps/src/main/webapp/vue-app/tasks-management/components/Project/ProjectCard.vue index 4d6b006b6..fe6140070 100644 --- a/webapps/src/main/webapp/vue-app/tasks-management/components/Project/ProjectCard.vue +++ b/webapps/src/main/webapp/vue-app/tasks-management/components/Project/ProjectCard.vue @@ -15,23 +15,12 @@ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. --> diff --git a/webapps/src/main/webapp/vue-app/tasks-management/components/Project/ProjectCardFront.vue b/webapps/src/main/webapp/vue-app/tasks-management/components/Project/ProjectCardFront.vue index 72a5fb280..d54178e97 100644 --- a/webapps/src/main/webapp/vue-app/tasks-management/components/Project/ProjectCardFront.vue +++ b/webapps/src/main/webapp/vue-app/tasks-management/components/Project/ProjectCardFront.vue @@ -15,141 +15,150 @@ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -->