From 3550f0ee37ee12179404f721b5a55be37992603f Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Sun, 7 Jun 2020 15:56:32 +0200 Subject: set link on tile form --- frontend/common/form.component.js | 6 +++- frontend/views/page/components/tile.form.js | 53 +++++++++++++++++++++++++---- frontend/views/page/page.css | 2 +- 3 files changed, 53 insertions(+), 8 deletions(-) diff --git a/frontend/common/form.component.js b/frontend/common/form.component.js index cc0607d..f3775a2 100644 --- a/frontend/common/form.component.js +++ b/frontend/common/form.component.js @@ -125,7 +125,11 @@ export class Select extends Component { > {!selected && defaultOption && } {options.map((option, i) => ( - + ))} diff --git a/frontend/views/page/components/tile.form.js b/frontend/views/page/components/tile.form.js index c3d509d..d4913fe 100644 --- a/frontend/views/page/components/tile.form.js +++ b/frontend/views/page/components/tile.form.js @@ -42,6 +42,14 @@ const TEXT_FONT_STYLES = [ 'normal', 'bold', 'italic', 'bold-italic', ].map(style => ({ name: style, label: style })) +const NO_LINK = 0 +const EXTERNAL_LINK = -1 +const PAGE_LIST_TOP_OPTIONS = [ + { name: NO_LINK, label: 'No link' }, + { name: EXTERNAL_LINK, label: 'External link' }, + { name: -2, label: '──────────', disabled: true }, +] + // target_page_id = Column(Integer, ForeignKey('page.id'), nullable=True) // https://s3.amazonaws.com/i.asdf.us/im/1c/gradient_gold1-SpringGreen1_1321159749.jpg @@ -93,6 +101,7 @@ class TileForm extends Component { submitTitle: "", errorFields: new Set([]), modified: false, + pageList: [], } componentDidMount() { @@ -104,6 +113,12 @@ class TileForm extends Component { submitTitle, errorFields: new Set([]), }) + const { pages } = graph.show.res + let pageList = [ + ...PAGE_LIST_TOP_OPTIONS, + ...pages.map(page => ({ name: page.id, label: page.title })) + ] + this.setState({ pageList }) if (isNew) { const newTile = newImage({ id: "new", @@ -172,6 +187,9 @@ class TileForm extends Component { if (name === 'type') { return this.handleTypeChange(value) } + if (name === 'target_page_id') { + value = parseInt(value) + } this.props.tileActions.updateTemporaryTile({ ...this.props.temporaryTile, [name]: value, @@ -305,6 +323,8 @@ class TileForm extends Component { ? this.renderTextForm() : ""} + {this.renderLinkForm()} +
+