mirror of
https://github.com/wekan/wekan.git
synced 2025-12-15 23:10:13 +01:00
colors: add per list color
Hamburger menu only. Note that I am definitively not responsible for the resulting Christmas tree. fixes #328
This commit is contained in:
parent
78c779faaf
commit
d0a9d8c581
5 changed files with 166 additions and 1 deletions
|
|
@ -197,3 +197,84 @@
|
||||||
.search-card-results
|
.search-card-results
|
||||||
max-height: 250px
|
max-height: 250px
|
||||||
overflow: hidden
|
overflow: hidden
|
||||||
|
|
||||||
|
list-header-color(background, color...)
|
||||||
|
background: background !important
|
||||||
|
if color
|
||||||
|
color: color !important //overwrite text for better visibility
|
||||||
|
|
||||||
|
.list-header-white
|
||||||
|
list-header-color(#ffffff, #4d4d4d) //Black text for better visibility
|
||||||
|
border: 1px solid #eee
|
||||||
|
|
||||||
|
.list-header-green
|
||||||
|
list-header-color(#3cb500, #ffffff) //White text for better visibility
|
||||||
|
|
||||||
|
.list-header-yellow
|
||||||
|
list-header-color(#fad900, #4d4d4d) //Black text for better visibility
|
||||||
|
|
||||||
|
.list-header-orange
|
||||||
|
list-header-color(#ff9f19, #4d4d4d) //Black text for better visibility
|
||||||
|
|
||||||
|
.list-header-red
|
||||||
|
list-header-color(#eb4646, #ffffff) //White text for better visibility
|
||||||
|
|
||||||
|
.list-header-purple
|
||||||
|
list-header-color(#a632db, #ffffff) //White text for better visibility
|
||||||
|
|
||||||
|
.list-header-blue
|
||||||
|
list-header-color(#0079bf, #ffffff) //White text for better visibility
|
||||||
|
|
||||||
|
.list-header-pink
|
||||||
|
list-header-color(#ff78cb, #4d4d4d) //Black text for better visibility
|
||||||
|
|
||||||
|
.list-header-sky
|
||||||
|
list-header-color(#00c2e0, #ffffff) //White text for better visibility
|
||||||
|
|
||||||
|
.list-header-black
|
||||||
|
list-header-color(#4d4d4d, #ffffff) //White text for better visibility
|
||||||
|
|
||||||
|
.list-header-lime
|
||||||
|
list-header-color(#51e898, #4d4d4d) //Black text for better visibility
|
||||||
|
|
||||||
|
.list-header-silver
|
||||||
|
list-header-color(unset, #4d4d4d) //Black text for better visibility
|
||||||
|
|
||||||
|
.list-header-peachpuff
|
||||||
|
list-header-color(#ffdab9, #4d4d4d) //Black text for better visibility
|
||||||
|
|
||||||
|
.list-header-crimson
|
||||||
|
list-header-color(#dc143c, #ffffff) //White text for better visibility
|
||||||
|
|
||||||
|
.list-header-plum
|
||||||
|
list-header-color(#dda0dd, #4d4d4d) //Black text for better visibility
|
||||||
|
|
||||||
|
.list-header-darkgreen
|
||||||
|
list-header-color(#006400, #ffffff) //White text for better visibility
|
||||||
|
|
||||||
|
.list-header-slateblue
|
||||||
|
list-header-color(#6a5acd, #ffffff) //White text for better visibility
|
||||||
|
|
||||||
|
.list-header-magenta
|
||||||
|
list-header-color(#ff00ff, #ffffff) //White text for better visibility
|
||||||
|
|
||||||
|
.list-header-gold
|
||||||
|
list-header-color(#ffd700, #4d4d4d) //Black text for better visibility
|
||||||
|
|
||||||
|
.list-header-navy
|
||||||
|
list-header-color(#000080, #ffffff) //White text for better visibility
|
||||||
|
|
||||||
|
.list-header-gray
|
||||||
|
list-header-color(#808080, #ffffff) //White text for better visibility
|
||||||
|
|
||||||
|
.list-header-saddlebrown
|
||||||
|
list-header-color(#8b4513, #ffffff) //White text for better visibility
|
||||||
|
|
||||||
|
.list-header-paleturquoise
|
||||||
|
list-header-color(#afeeee, #4d4d4d) //Black text for better visibility
|
||||||
|
|
||||||
|
.list-header-mistyrose
|
||||||
|
list-header-color(#ffe4e1, #4d4d4d) //Black text for better visibility
|
||||||
|
|
||||||
|
.list-header-indigo
|
||||||
|
list-header-color(#4b0082, #ffffff) //White text for better visibility
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
template(name="listHeader")
|
template(name="listHeader")
|
||||||
.list-header.js-list-header
|
.list-header.js-list-header(
|
||||||
|
class="{{#if colorClass}}list-header-{{colorClass}}{{/if}}")
|
||||||
+inlinedForm
|
+inlinedForm
|
||||||
+editListTitleForm
|
+editListTitleForm
|
||||||
else
|
else
|
||||||
|
|
@ -49,6 +50,9 @@ template(name="listActionPopup")
|
||||||
li: a.js-toggle-watch-list {{#if isWatching}}{{_ 'unwatch'}}{{else}}{{_ 'watch'}}{{/if}}
|
li: a.js-toggle-watch-list {{#if isWatching}}{{_ 'unwatch'}}{{else}}{{_ 'watch'}}{{/if}}
|
||||||
unless currentUser.isCommentOnly
|
unless currentUser.isCommentOnly
|
||||||
hr
|
hr
|
||||||
|
ul.pop-over-list
|
||||||
|
li: a.js-set-color-list {{_ 'set-color-list'}}
|
||||||
|
hr
|
||||||
ul.pop-over-list
|
ul.pop-over-list
|
||||||
if cards.count
|
if cards.count
|
||||||
li: a.js-select-cards {{_ 'list-select-cards'}}
|
li: a.js-select-cards {{_ 'list-select-cards'}}
|
||||||
|
|
@ -111,3 +115,12 @@ template(name="wipLimitErrorPopup")
|
||||||
p {{_ 'wipLimitErrorPopup-dialog-pt1'}}
|
p {{_ 'wipLimitErrorPopup-dialog-pt1'}}
|
||||||
p {{_ 'wipLimitErrorPopup-dialog-pt2'}}
|
p {{_ 'wipLimitErrorPopup-dialog-pt2'}}
|
||||||
button.full.js-back-view(type="submit") {{_ 'cancel'}}
|
button.full.js-back-view(type="submit") {{_ 'cancel'}}
|
||||||
|
|
||||||
|
template(name="setListColorPopup")
|
||||||
|
form.edit-label
|
||||||
|
.palette-colors: each colors
|
||||||
|
span.card-label.palette-color.js-palette-color(class="list-header-{{color}}")
|
||||||
|
if(isSelected color)
|
||||||
|
i.fa.fa-check
|
||||||
|
button.primary.confirm.js-submit {{_ 'save'}}
|
||||||
|
button.js-remove-color.negate.wide.right {{_ 'unset-color'}}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
let listsColors;
|
||||||
|
Meteor.startup(() => {
|
||||||
|
listsColors = Lists.simpleSchema()._schema.color.allowedValues;
|
||||||
|
});
|
||||||
|
|
||||||
BlazeComponent.extendComponent({
|
BlazeComponent.extendComponent({
|
||||||
canSeeAddCard() {
|
canSeeAddCard() {
|
||||||
const list = Template.currentData();
|
const list = Template.currentData();
|
||||||
|
|
@ -72,6 +77,7 @@ Template.listActionPopup.helpers({
|
||||||
|
|
||||||
Template.listActionPopup.events({
|
Template.listActionPopup.events({
|
||||||
'click .js-list-subscribe' () {},
|
'click .js-list-subscribe' () {},
|
||||||
|
'click .js-set-color-list': Popup.open('setListColor'),
|
||||||
'click .js-select-cards' () {
|
'click .js-select-cards' () {
|
||||||
const cardIds = this.allCards().map((card) => card._id);
|
const cardIds = this.allCards().map((card) => card._id);
|
||||||
MultiSelection.add(cardIds);
|
MultiSelection.add(cardIds);
|
||||||
|
|
@ -154,3 +160,34 @@ Template.listMorePopup.events({
|
||||||
Utils.goBoardId(this.boardId);
|
Utils.goBoardId(this.boardId);
|
||||||
}),
|
}),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
BlazeComponent.extendComponent({
|
||||||
|
onCreated() {
|
||||||
|
this.currentList = this.currentData();
|
||||||
|
this.currentColor = new ReactiveVar(this.currentList.color);
|
||||||
|
},
|
||||||
|
|
||||||
|
colors() {
|
||||||
|
return listsColors.map((color) => ({ color, name: '' }));
|
||||||
|
},
|
||||||
|
|
||||||
|
isSelected(color) {
|
||||||
|
return this.currentColor.get() === color;
|
||||||
|
},
|
||||||
|
|
||||||
|
events() {
|
||||||
|
return [{
|
||||||
|
'click .js-palette-color'() {
|
||||||
|
this.currentColor.set(this.currentData().color);
|
||||||
|
},
|
||||||
|
'click .js-submit' () {
|
||||||
|
this.currentList.setColor(this.currentColor.get());
|
||||||
|
Popup.close();
|
||||||
|
},
|
||||||
|
'click .js-remove-color'() {
|
||||||
|
this.currentList.setColor(null);
|
||||||
|
Popup.close();
|
||||||
|
},
|
||||||
|
}];
|
||||||
|
},
|
||||||
|
}).register('setListColorPopup');
|
||||||
|
|
|
||||||
|
|
@ -335,6 +335,7 @@
|
||||||
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
|
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view cards in Archive and bring them back to the board, click “Menu” > “Archive”.",
|
||||||
"list-move-cards": "Move all cards in this list",
|
"list-move-cards": "Move all cards in this list",
|
||||||
"list-select-cards": "Select all cards in this list",
|
"list-select-cards": "Select all cards in this list",
|
||||||
|
"set-color-list": "Set Color",
|
||||||
"listActionPopup-title": "List Actions",
|
"listActionPopup-title": "List Actions",
|
||||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||||
|
|
@ -521,6 +522,7 @@
|
||||||
"setCardColorPopup-title": "Set color",
|
"setCardColorPopup-title": "Set color",
|
||||||
"setCardActionsColorPopup-title": "Choose a color",
|
"setCardActionsColorPopup-title": "Choose a color",
|
||||||
"setSwimlaneColorPopup-title": "Choose a color",
|
"setSwimlaneColorPopup-title": "Choose a color",
|
||||||
|
"setListColorPopup-title": "Choose a color",
|
||||||
"assigned-by": "Assigned By",
|
"assigned-by": "Assigned By",
|
||||||
"requested-by": "Requested By",
|
"requested-by": "Requested By",
|
||||||
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
|
"board-delete-notice": "Deleting is permanent. You will lose all lists, cards and actions associated with this board.",
|
||||||
|
|
|
||||||
|
|
@ -92,6 +92,21 @@ Lists.attachSchema(new SimpleSchema({
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
defaultValue: false,
|
defaultValue: false,
|
||||||
},
|
},
|
||||||
|
color: {
|
||||||
|
/**
|
||||||
|
* the color of the list
|
||||||
|
*/
|
||||||
|
type: String,
|
||||||
|
optional: true,
|
||||||
|
// silver is the default, so it is left out
|
||||||
|
allowedValues: [
|
||||||
|
'white', 'green', 'yellow', 'orange', 'red', 'purple',
|
||||||
|
'blue', 'sky', 'lime', 'pink', 'black',
|
||||||
|
'peachpuff', 'crimson', 'plum', 'darkgreen',
|
||||||
|
'slateblue', 'magenta', 'gold', 'navy', 'gray',
|
||||||
|
'saddlebrown', 'paleturquoise', 'mistyrose', 'indigo',
|
||||||
|
],
|
||||||
|
},
|
||||||
}));
|
}));
|
||||||
|
|
||||||
Lists.allow({
|
Lists.allow({
|
||||||
|
|
@ -148,6 +163,12 @@ Lists.helpers({
|
||||||
return list.wipLimit[option] ? list.wipLimit[option] : 0; // Necessary check to avoid exceptions for the case where the doc doesn't have the wipLimit field yet set
|
return list.wipLimit[option] ? list.wipLimit[option] : 0; // Necessary check to avoid exceptions for the case where the doc doesn't have the wipLimit field yet set
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
colorClass() {
|
||||||
|
if (this.color)
|
||||||
|
return this.color;
|
||||||
|
return '';
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
Lists.mutations({
|
Lists.mutations({
|
||||||
|
|
@ -174,6 +195,17 @@ Lists.mutations({
|
||||||
setWipLimit(limit) {
|
setWipLimit(limit) {
|
||||||
return { $set: { 'wipLimit.value': limit } };
|
return { $set: { 'wipLimit.value': limit } };
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setColor(newColor) {
|
||||||
|
if (newColor === 'silver') {
|
||||||
|
newColor = null;
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
$set: {
|
||||||
|
color: newColor,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
Meteor.methods({
|
Meteor.methods({
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue