feat: enhanced popup
This commit is contained in:
parent
4f66e83eaa
commit
0e6e0154b4
@ -149,8 +149,7 @@ export default class Bar {
|
|||||||
y: this.gantt.options.header_height - 17,
|
y: this.gantt.options.header_height - 17,
|
||||||
width: this.width,
|
width: this.width,
|
||||||
height: this.height * 0.8,
|
height: this.height * 0.8,
|
||||||
rx: this.corner_radius * 2,
|
rx: 12,
|
||||||
ry: this.corner_radius * 2,
|
|
||||||
class: "date-highlight",
|
class: "date-highlight",
|
||||||
append_to: this.bar_group,
|
append_to: this.bar_group,
|
||||||
});
|
});
|
||||||
@ -283,7 +282,7 @@ export default class Bar {
|
|||||||
this.gantt.hide_popup();
|
this.gantt.hide_popup();
|
||||||
this.group.classList.remove("active");
|
this.group.classList.remove("active");
|
||||||
} else {
|
} else {
|
||||||
this.show_popup();
|
this.show_popup(e.offsetX);
|
||||||
this.gantt.unselect_all();
|
this.gantt.unselect_all();
|
||||||
this.group.classList.add("active");
|
this.group.classList.add("active");
|
||||||
}
|
}
|
||||||
@ -301,7 +300,7 @@ export default class Bar {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
show_popup() {
|
show_popup(x) {
|
||||||
if (this.gantt.bar_being_dragged) return;
|
if (this.gantt.bar_being_dragged) return;
|
||||||
|
|
||||||
const start_date = date_utils.format(
|
const start_date = date_utils.format(
|
||||||
@ -317,6 +316,7 @@ export default class Bar {
|
|||||||
const subtitle = start_date + " - " + end_date;
|
const subtitle = start_date + " - " + end_date;
|
||||||
|
|
||||||
this.gantt.show_popup({
|
this.gantt.show_popup({
|
||||||
|
x,
|
||||||
target_element: this.$bar,
|
target_element: this.$bar,
|
||||||
title: this.task.name,
|
title: this.task.name,
|
||||||
subtitle: subtitle,
|
subtitle: subtitle,
|
||||||
|
|||||||
@ -6,6 +6,21 @@ const MINUTE = "minute";
|
|||||||
const SECOND = "second";
|
const SECOND = "second";
|
||||||
const MILLISECOND = "millisecond";
|
const MILLISECOND = "millisecond";
|
||||||
|
|
||||||
|
const SHORTENED = {
|
||||||
|
January: "Jan",
|
||||||
|
February: "Feb",
|
||||||
|
March: "Mar",
|
||||||
|
April: "Apr",
|
||||||
|
May: "May",
|
||||||
|
June: "Jun",
|
||||||
|
July: "Jul",
|
||||||
|
August: "Aug",
|
||||||
|
September: "Sep",
|
||||||
|
October: "Oct",
|
||||||
|
November: "Nov",
|
||||||
|
December: "Dec"
|
||||||
|
};
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
parse_duration(duration) {
|
parse_duration(duration) {
|
||||||
const regex = /([0-9])+(y|m|d|h|min|s|ms)/gm;
|
const regex = /([0-9])+(y|m|d|h|min|s|ms)/gm;
|
||||||
@ -98,7 +113,7 @@ export default {
|
|||||||
SSS: values[6],
|
SSS: values[6],
|
||||||
D: values[2],
|
D: values[2],
|
||||||
MMMM: month_name_capitalized,
|
MMMM: month_name_capitalized,
|
||||||
MMM: month_name_capitalized,
|
MMM: SHORTENED[month_name_capitalized],
|
||||||
};
|
};
|
||||||
|
|
||||||
let str = format_string;
|
let str = format_string;
|
||||||
|
|||||||
@ -227,14 +227,17 @@ $light-blue: #c4c4e9 !default;
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
background: rgba(0, 0, 0, 0.8);
|
background: rgba(0, 0, 0);
|
||||||
padding: 0;
|
padding: 0;
|
||||||
color: #959da5;
|
color: #959da5;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
|
border: 1px solid rgba(0, 0, 0);
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
border-bottom: 3px solid $progress;
|
border-bottom: 1px solid $progress;
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
|
text-align: center;
|
||||||
|
color: $text-light;
|
||||||
}
|
}
|
||||||
|
|
||||||
.subtitle {
|
.subtitle {
|
||||||
@ -247,7 +250,7 @@ $light-blue: #c4c4e9 !default;
|
|||||||
height: 5px;
|
height: 5px;
|
||||||
margin: 0 0 0 -5px;
|
margin: 0 0 0 -5px;
|
||||||
border: 5px solid transparent;
|
border: 5px solid transparent;
|
||||||
border-top-color: rgba(0, 0, 0, 0.8);
|
border-bottom-color: rgba(0, 0, 0, 0.8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
15
src/popup.js
15
src/popup.js
@ -23,9 +23,6 @@ export default class Popup {
|
|||||||
if (!options.target_element) {
|
if (!options.target_element) {
|
||||||
throw new Error("target_element is required to show popup");
|
throw new Error("target_element is required to show popup");
|
||||||
}
|
}
|
||||||
if (!options.position) {
|
|
||||||
options.position = "left";
|
|
||||||
}
|
|
||||||
const target_element = options.target_element;
|
const target_element = options.target_element;
|
||||||
|
|
||||||
if (this.custom_html) {
|
if (this.custom_html) {
|
||||||
@ -48,15 +45,11 @@ export default class Popup {
|
|||||||
position_meta = options.target_element.getBBox();
|
position_meta = options.target_element.getBBox();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.position === "left") {
|
this.parent.style.left = options.x - this.parent.clientWidth / 2 + "px";
|
||||||
this.parent.style.left =
|
this.parent.style.top = position_meta.y + position_meta.height + 10 + "px";
|
||||||
position_meta.x + (position_meta.width + 10) + "px";
|
|
||||||
this.parent.style.top = position_meta.y + "px";
|
|
||||||
|
|
||||||
this.pointer.style.transform = "rotateZ(90deg)";
|
this.pointer.style.left = this.parent.clientWidth / 2 + "px";
|
||||||
this.pointer.style.left = "-7px";
|
this.pointer.style.top = "-15px";
|
||||||
this.pointer.style.top = "2px";
|
|
||||||
}
|
|
||||||
|
|
||||||
// show
|
// show
|
||||||
this.parent.style.opacity = 1;
|
this.parent.style.opacity = 1;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user