// @flow import React, { Component } from 'react'; import { observable } from 'mobx'; import { observer } from 'mobx-react'; import { Link } from 'react-router-dom'; import styled from 'styled-components'; import ApiKeyRow from './components/ApiKeyRow'; import SettingsStore from './SettingsStore'; import { color } from 'shared/styles/constants'; import Flex from 'shared/components/Flex'; import Button from 'components/Button'; import Input from 'components/Input'; import HelpText from 'components/HelpText'; import { Label } from 'components/Labeled'; import SlackAuthLink from 'components/SlackAuthLink'; @observer class Settings extends Component { store: SettingsStore; constructor() { super(); this.store = new SettingsStore(); } render() { const showSlackSettings = DEPLOYMENT === 'hosted'; return ( {showSlackSettings && (
Slack Connect Outline to your Slack to instantly search for your documents using /outline command. Add to Slack
)}
API Access Create API tokens to hack on your Outline. Learn more in{' '} API documentation. {this.store.apiKeys && ( {this.store.apiKeys && this.store.apiKeys.map(key => ( ))}
)}
); } } @observer class InlineForm extends Component { props: { placeholder: string, buttonLabel: string, name: string, value: ?string, onChange: Function, onSubmit: Function, disabled?: ?boolean, }; @observable validationError: boolean = false; validationTimeout: number; componentWillUnmount() { clearTimeout(this.validationTimeout); } handleSubmit = event => { event.preventDefault(); if (this.props.value) { this.props.onSubmit(); } else { this.validationError = true; this.validationTimeout = setTimeout( () => (this.validationError = false), 2500 ); } }; render() { const { placeholder, value, onChange, buttonLabel } = this.props; return (