-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
113 lines (106 loc) · 2.1 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
editor.block("timeline", {
label: "Timeline",
icon: "check",
props: {
content: String,
attrs: [Array, Object]
},
computed: {
fields() {
return {
title: {
label: "Title",
type: "text",
icon: "text"
},
css: {
label: this.$t("editor.blocks.image.css.label"),
type: "text",
icon: "code"
},
iconCode: {
label: "Icon Code",
type: "text",
icon: "code"
}
};
}
},
methods: {
focus(cursor) {
this.$refs.input.focus(cursor);
},
onBack(event) {
this.$emit("back", event);
},
onCheck() {
this.$emit("input", {
attrs: {
done: !this.attrs.done
}
});
},
onEnter() {
if (this.content.length === 0) {
this.$emit("convert", "paragraph");
} else {
this.$emit("append", {
type: "timeline"
});
}
},
onInput(html) {
this.$emit("input", {
content: html
});
},
onNext(cursor) {
this.$emit("next", cursor);
},
onPrev(cursor) {
this.$emit("prev", cursor);
},
onSplit(data) {
this.$emit("split", data);
},
saveSettings() {
this.$refs.settings.close();
this.input(this.attrs);
},
input(data) {
this.$emit("input", {
attrs: {
...this.attrs,
...data
}
});
},
menu() {
return [
{
icon: "cog",
label: "Timeline Settings",
click: this.$refs.settings.open
}
];
}
},
template: `
<p>
<span style="font-weight: bold">{{ attrs.title }}</span>
<k-editable
ref="input"
:content="content"
@back="onBack"
@enter="onEnter"
@input="onInput"
@next="onNext"
@prev="onPrev"
@split="onSplit"
/>
<k-dialog ref="settings" @submit="saveSettings" size="medium">
<k-form :fields="fields" v-model="attrs" @submit="saveSettings" />
</k-dialog>
</p>
`
});