const React = require("react"); const Component = React.Component; const { StyleSheet, Text } = require("react-native"); const Icon = require("react-native-vector-icons/Ionicons").default; const ReactNativeActionButton = require("react-native-action-button").default; const { connect } = require("react-redux"); const { globalStyle } = require("lib/components/global-style.js"); const { Log } = require("lib/log.js"); const { _ } = require("lib/locale.js"); const styles = StyleSheet.create({ actionButtonIcon: { fontSize: 20, height: 22, color: "white", }, itemText: { // fontSize: 14, // Cannot currently set fontsize since the bow surrounding the label has a fixed size }, }); class ActionButtonComponent extends React.Component { constructor() { super(); this.state = { buttonIndex: 0, }; } componentWillReceiveProps(newProps) { if ("buttonIndex" in newProps) { this.setState({ buttonIndex: newProps.buttonIndex }); } } newTodo_press() { this.props.dispatch({ type: "NAV_GO", routeName: "Note", noteId: null, folderId: this.props.parentFolderId, itemType: "todo", }); } newNote_press() { this.props.dispatch({ type: "NAV_GO", routeName: "Note", noteId: null, folderId: this.props.parentFolderId, itemType: "note", }); } newFolder_press() { this.props.dispatch({ type: "NAV_GO", routeName: "Folder", folderId: null, }); } render() { let buttons = this.props.buttons ? this.props.buttons : []; if (this.props.addFolderNoteButtons) { if (this.props.folders.length) { buttons.push({ title: _("New to-do"), onPress: () => { this.newTodo_press(); }, color: "#9b59b6", icon: "md-checkbox-outline", }); buttons.push({ title: _("New note"), onPress: () => { this.newNote_press(); }, color: "#9b59b6", icon: "md-document", }); } buttons.push({ title: _("New notebook"), onPress: () => { this.newFolder_press(); }, color: "#3498db", icon: "md-folder", }); } let buttonComps = []; for (let i = 0; i < buttons.length; i++) { let button = buttons[i]; let buttonTitle = button.title ? button.title : ""; let key = buttonTitle.replace(/\s/g, "_") + "_" + button.icon; buttonComps.push( ); } if (!buttonComps.length && !this.props.mainButton) { return ; } let mainButton = this.props.mainButton ? this.props.mainButton : {}; let mainIcon = mainButton.icon ? : ; if (this.props.multiStates) { if (!this.props.buttons || !this.props.buttons.length) throw new Error("Multi-state button requires at least one state"); if (this.state.buttonIndex < 0 || this.state.buttonIndex >= this.props.buttons.length) throw new Error("Button index out of bounds: " + this.state.buttonIndex + "/" + this.props.buttons.length); let button = this.props.buttons[this.state.buttonIndex]; let mainIcon = ; return ( { button.onPress(); }} /> ); } else { return ( {buttonComps} ); } } } const ActionButton = connect(state => { return { folders: state.folders, locale: state.settings.locale, }; })(ActionButtonComponent); module.exports = { ActionButton };