diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2020-06-07 15:56:32 +0200 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2020-06-07 15:56:32 +0200 |
| commit | 3550f0ee37ee12179404f721b5a55be37992603f (patch) | |
| tree | 69706f1f3380e59072c1a5fb1fcd237bac6a7d8a /frontend/views/page/components | |
| parent | ad1950fc060f6eb84eb571740c62f3c0e35f0ebe (diff) | |
set link on tile form
Diffstat (limited to 'frontend/views/page/components')
| -rw-r--r-- | frontend/views/page/components/tile.form.js | 53 |
1 files changed, 47 insertions, 6 deletions
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()} + <div className='row buttons'> <SubmitButton title={submitTitle} @@ -343,6 +363,33 @@ class TileForm extends Component { ) } + renderLinkForm() { + const { temporaryTile } = this.props + const { pageList } = this.state + const isExternalLink = temporaryTile.target_page_id === EXTERNAL_LINK + return ( + <div className={isExternalLink ? 'row selects' : 'row'}> + <Select + title='' + name='target_page_id' + selected={temporaryTile.target_page_id || NO_LINK} + options={pageList} + onChange={this.handleSelect.bind(this)} + /> + {isExternalLink && + <TextInput + title="" + placeholder='http://' + name="external_link_url" + data={temporaryTile.settings} + onChange={this.handleSettingsChange.bind(this)} + autoComplete="off" + /> + } + </div> + ) + } + renderImageForm() { // const { isNew } = this.props const { temporaryTile } = this.props @@ -469,12 +516,6 @@ class TileForm extends Component { ) } } - // font_family: 'sans-serif', - // font_size: 16, - // font_style: 'normal', - // font_color: '#ffffff', - // background_color: '#333333', - const mapStateToProps = state => ({ graph: state.graph, |
