// @flow import { observable } from "mobx"; import { inject, observer } from "mobx-react"; import * as React from "react"; import { withTranslation, Trans, type TFunction } from "react-i18next"; import AuthStore from "stores/AuthStore"; import UiStore from "stores/UiStore"; import Collection from "models/Collection"; import Button from "components/Button"; import Flex from "components/Flex"; import HelpText from "components/HelpText"; import IconPicker from "components/IconPicker"; import Input from "components/Input"; import InputRich from "components/InputRich"; import InputSelect from "components/InputSelect"; import Switch from "components/Switch"; type Props = { collection: Collection, ui: UiStore, auth: AuthStore, onSubmit: () => void, t: TFunction, }; @observer class CollectionEdit extends React.Component { @observable name: string = this.props.collection.name; @observable sharing: boolean = this.props.collection.sharing; @observable description: string = this.props.collection.description; @observable icon: string = this.props.collection.icon; @observable color: string = this.props.collection.color || "#4E5C6E"; @observable private: boolean = this.props.collection.private; @observable sort: { field: string, direction: "asc" | "desc" } = this.props .collection.sort; @observable isSaving: boolean; handleSubmit = async (ev: SyntheticEvent<*>) => { ev.preventDefault(); this.isSaving = true; const { t } = this.props; try { await this.props.collection.save({ name: this.name, description: this.description, icon: this.icon, color: this.color, private: this.private, sharing: this.sharing, sort: this.sort, }); this.props.onSubmit(); this.props.ui.showToast(t("The collection was updated"), { type: "success", }); } catch (err) { this.props.ui.showToast(err.message, { type: "error" }); } finally { this.isSaving = false; } }; handleSortChange = (ev: SyntheticInputEvent) => { const [field, direction] = ev.target.value.split("."); if (direction === "asc" || direction === "desc") { this.sort = { field, direction }; } }; handleDescriptionChange = (getValue: () => string) => { this.description = getValue(); }; handleNameChange = (ev: SyntheticInputEvent<*>) => { this.name = ev.target.value; }; handleChange = (color: string, icon: string) => { this.color = color; this.icon = icon; }; handlePrivateChange = (ev: SyntheticInputEvent<*>) => { this.private = ev.target.checked; }; handleSharingChange = (ev: SyntheticInputEvent<*>) => { this.sharing = ev.target.checked; }; render() { const { auth, t } = this.props; const teamSharingEnabled = !!auth.team && auth.team.sharing; return (
You can edit the name and other details at any time, however doing so often might confuse your team mates.   A private collection will only be visible to invited team members. {teamSharingEnabled ? ( When enabled, documents can be shared publicly on the internet. ) : ( Public sharing is currently disabled in the team security settings. )}
); } } export default withTranslation()( inject("ui", "auth")(CollectionEdit) );