diff --git a/marko/components/menu-link/component.js b/marko/components/menu-link/component.js index 1a137f0..b8dd466 100644 --- a/marko/components/menu-link/component.js +++ b/marko/components/menu-link/component.js @@ -1,7 +1,17 @@ module.exports = class { onCreate(input) { this.state = { - classes: ["menu-link", "color-menu", input.class], + classes: ["menu-link", "color-menu"], + } + + if (input.dark) { + this.state.classes.push(input) + } + + if (Array.isArray(input.class)) { + this.state.classes.push(...input.class) + } else if (input.class != null) { + this.state.classes.push(input.class) } this.state.classes.push(input.selected ? "selected" : "not-selected") diff --git a/marko/components/menu-link/style.less b/marko/components/menu-link/style.less index 899a4eb..89566de 100644 --- a/marko/components/menu-link/style.less +++ b/marko/components/menu-link/style.less @@ -26,3 +26,9 @@ div.menu-link { } } } +div.menu-link.dark { + opacity: 0.5; +} +div.menu-link.dark:hover { + opacity: 1; +} \ No newline at end of file diff --git a/marko/page/story-content/components/create-chapter-modal/component.js b/marko/page/story-content/components/create-chapter-modal/component.js new file mode 100644 index 0000000..cf7c03f --- /dev/null +++ b/marko/page/story-content/components/create-chapter-modal/component.js @@ -0,0 +1,82 @@ +const moment = require("moment") + +const {chapterApi} = require("../../../../../rpdata/api/Chapter") + +module.exports = class { + onCreate(input) { + this.state = { + error: null, + loading: false, + values: { + title: "", + source: "", + fictionalDate: "", + }, + } + + this.first = false + } + + onInput(input) { + if (input.chapter && !this.first) { + let {fictionalDate, title, source} = input.chapter + + if (fictionalDate != null) { + fictionalDate = moment.utc(fictionalDate).format("MMM D, YYYY") + } + + this.state.values = {fictionalDate, title, source} + } + } + + change(key, ev) { + this.state.values[key] = ev.target.value + } + + open() { + + } + + close() { + this.first = false + this.emit("close") + } + + save() { + const values = this.state.values + + if (values.source.length < 1) { + this.state.error = "You cannot post an empty chapter." + return + } + + let fictionalDate = new Date(values.fictionalDate + " UTC") + if (values.fictionalDate != "") { + if (Number.isNaN(fictionalDate)) { + this.state.error = `Could not parse ${values.fictionalDate} as date!` + return + } + } else { + fictionalDate = null + } + + const input = {storyId: this.input.storyId, title: values.title, source: values.source, fictionalDate} + + chapterApi.addChapter(input).then(chapter => { + this.emit("add", chapter) + this.emit("close") + + this.state.values = { + title: "", + source: "", + fictionalDate: "", + } + }).catch(errs => { + console.warn("Failed to edit:", errs) + + this.state.error = "Failed to edit: " + errs[0].message + }).then(() => { + this.state.loading = false + }) + } +} \ No newline at end of file diff --git a/marko/page/story-content/components/create-chapter-modal/index.marko b/marko/page/story-content/components/create-chapter-modal/index.marko new file mode 100644 index 0000000..74ccc13 --- /dev/null +++ b/marko/page/story-content/components/create-chapter-modal/index.marko @@ -0,0 +1,11 @@ + +

Create Chapter

+ +

${state.error}

+ + + +