From 0d6d623d1e34cdbff2d46229165b49289a9a0619 Mon Sep 17 00:00:00 2001 From: Bennett Date: Sun, 21 Jun 2020 09:19:59 +0200 Subject: Add FAB to service dashboard (#824) * Implement #387 * Fix lint * Upgrade to Electron 9 * Remove dependency on electron-spellchecker * Allow multiple languages to be selected * Fix lint * Don't show spellchecker language chooser for macOS * Fix _requireAuthenticatedUser throwing error on startup * Add FAB --- src/components/ui/FAB.js | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/components/ui/FAB.js (limited to 'src/components/ui/FAB.js') diff --git a/src/components/ui/FAB.js b/src/components/ui/FAB.js new file mode 100644 index 000000000..9359a3c6c --- /dev/null +++ b/src/components/ui/FAB.js @@ -0,0 +1,72 @@ +/** + * Floating Action Button (FAB) + */ +import React, { Component } from 'react'; +import PropTypes from 'prop-types'; +import { observer, inject } from 'mobx-react'; +import classnames from 'classnames'; + +export default @inject('stores') @observer class Button extends Component { + static propTypes = { + className: PropTypes.string, + disabled: PropTypes.bool, + onClick: PropTypes.func, + type: PropTypes.string, + htmlForm: PropTypes.string, + stores: PropTypes.shape({ + settings: PropTypes.shape({ + app: PropTypes.shape({ + accentColor: PropTypes.string.isRequired, + }).isRequired, + }).isRequired, + }).isRequired, + }; + + static defaultProps = { + className: null, + disabled: false, + onClick: () => { }, + type: 'button', + htmlForm: '', + }; + + element = null; + + render() { + const { + className, + disabled, + onClick, + type, + children, + htmlForm, + } = this.props; + + const buttonProps = { + className: classnames({ + ferdi__fab: true, + [`${className}`]: className, + }), + type, + }; + + if (disabled) { + buttonProps.disabled = true; + } + + if (onClick) { + buttonProps.onClick = onClick; + } + + if (htmlForm) { + buttonProps.form = htmlForm; + } + + return ( + // disabling rule as button has type defined in `buttonProps` + + ); + } +} -- cgit v1.2.3-54-g00ecf