diff --git a/packages/web/src/datagrid/TableDataGrid.js b/packages/web/src/datagrid/TableDataGrid.js index 14438645a..e226c7559 100644 --- a/packages/web/src/datagrid/TableDataGrid.js +++ b/packages/web/src/datagrid/TableDataGrid.js @@ -99,7 +99,7 @@ export default function TableDataGrid({ ..._.fromPairs( reference.columns.map((col) => [ col.refName, - selectedRows.map((x) => getFilterValueExpression(x[col.baseName])).join(','), + selectedRows.map((x) => getFilterValueExpression(x[col.baseName])).join(', '), ]) ), }; diff --git a/packages/web/src/index.css b/packages/web/src/index.css index 809b4ae2a..76a498a89 100644 --- a/packages/web/src/index.css +++ b/packages/web/src/index.css @@ -1,5 +1,6 @@ body { - font-family: -apple-system,BlinkMacSystemFont,Segoe WPC,Segoe UI,HelveticaNeue-Light,Ubuntu,Droid Sans,sans-serif; + font-family: -apple-system, BlinkMacSystemFont, Segoe WPC, Segoe UI, HelveticaNeue-Light, Ubuntu, Droid Sans, + sans-serif; font-size: 14px; /* font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', @@ -10,6 +11,14 @@ body { } code { - font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', - monospace; + font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; +} + +.RactModalOverlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #00000080; } diff --git a/packages/web/src/modals/ConfirmModal.js b/packages/web/src/modals/ConfirmModal.js index 07f37fcf3..a4cd33c13 100644 --- a/packages/web/src/modals/ConfirmModal.js +++ b/packages/web/src/modals/ConfirmModal.js @@ -1,19 +1,15 @@ import React from 'react'; import ModalBase from './ModalBase'; -import { FormButtonRow } from '../utility/forms'; import FormStyledButton from '../widgets/FormStyledButton'; -import styled from 'styled-components'; - -const MessageWrapper = styled.div` - margin: 20px; -`; +import ModalFooter from './ModalFooter'; +import ModalContent from './ModalContent'; export default function ConfirmModal({ message, modalState, onConfirm }) { return ( - {message} + {message} - + { @@ -22,7 +18,7 @@ export default function ConfirmModal({ message, modalState, onConfirm }) { }} /> - + ); } diff --git a/packages/web/src/modals/ConfirmSqlModal.js b/packages/web/src/modals/ConfirmSqlModal.js index ba80c1700..1c996debd 100644 --- a/packages/web/src/modals/ConfirmSqlModal.js +++ b/packages/web/src/modals/ConfirmSqlModal.js @@ -5,6 +5,9 @@ import FormStyledButton from '../widgets/FormStyledButton'; import SqlEditor from '../sqleditor/SqlEditor'; import styled from 'styled-components'; import keycodes from '../utility/keycodes'; +import ModalHeader from './ModalHeader'; +import ModalContent from './ModalContent'; +import ModalFooter from './ModalFooter'; const SqlWrapper = styled.div` position: relative; @@ -22,12 +25,14 @@ export default function ConfirmSqlModal({ modalState, sql, engine, onConfirm }) }; return ( - Save changes - - - + Save changes + + + + + - + { @@ -36,7 +41,7 @@ export default function ConfirmSqlModal({ modalState, sql, engine, onConfirm }) }} /> - + ); } diff --git a/packages/web/src/modals/ConnectionModal.js b/packages/web/src/modals/ConnectionModal.js index 827d87477..4a2558258 100644 --- a/packages/web/src/modals/ConnectionModal.js +++ b/packages/web/src/modals/ConnectionModal.js @@ -4,46 +4,51 @@ import ModalBase from './ModalBase'; import { FormButtonRow, FormButton, FormTextField, FormSelectField, FormSubmit } from '../utility/forms'; import { TextField } from '../utility/inputs'; import { Formik, Form } from 'formik'; +import ModalHeader from './ModalHeader'; +import ModalFooter from './ModalFooter'; +import ModalContent from './ModalContent'; // import FormikForm from '../utility/FormikForm'; export default function ConnectionModal({ modalState, connection = undefined }) { const [sqlConnectResult, setSqlConnectResult] = React.useState('Not connected'); - const handleTest = async values => { + const handleTest = async (values) => { const resp = await axios.post('connections/test', values); const { error, version } = resp.data; setSqlConnectResult(error || version); }; - const handleSubmit = async values => { + const handleSubmit = async (values) => { const resp = await axios.post('connections/save', values); modalState.close(); }; return ( - {connection ? 'Edit connection' : 'Add connection'} + {connection ? 'Edit connection' : 'Add connection'} - - Microsoft SQL Server - MySQL - Postgre SQL - - - - - - + + + Microsoft SQL Server + MySQL + Postgre SQL + + + + + + + Connect result: {sqlConnectResult} + - + - + - Connect result: {sqlConnectResult} ); } diff --git a/packages/web/src/modals/ErrorMessageModal.js b/packages/web/src/modals/ErrorMessageModal.js index 105f4b428..39e18bb30 100644 --- a/packages/web/src/modals/ErrorMessageModal.js +++ b/packages/web/src/modals/ErrorMessageModal.js @@ -4,6 +4,9 @@ import FormStyledButton from '../widgets/FormStyledButton'; import styled from 'styled-components'; import { FontIcon } from '../icons'; import { FormButtonRow } from '../utility/forms'; +import ModalHeader from './ModalHeader'; +import ModalFooter from './ModalFooter'; +import ModalContent from './ModalContent'; const Wrapper = styled.div` display:flex @@ -18,16 +21,18 @@ const IconWrapper = styled.div` export default function ErrorMessageModal({ modalState, title = 'Error', message }) { return ( - {title} - - - - - {message} - - + {title} + + + + + + {message} + + + - + ); } diff --git a/packages/web/src/modals/FilterMultipleValuesModal.js b/packages/web/src/modals/FilterMultipleValuesModal.js new file mode 100644 index 000000000..e69de29bb diff --git a/packages/web/src/modals/ModalBase.js b/packages/web/src/modals/ModalBase.js index 00f3b09fb..2c554ab79 100644 --- a/packages/web/src/modals/ModalBase.js +++ b/packages/web/src/modals/ModalBase.js @@ -24,17 +24,34 @@ const StyledModal = styled(Modal)` webkitoverflowscrolling: touch; borderradius: 4px; outline: none; - padding: 20px; width: 50%; max-width: 900px; margin: auto; margin-top: 15vh; + + // z-index:1200; +`; + +const ModalContent = styled.div` + padding: 20px; `; export default function ModalBase({ modalState, children }) { return ( - + {children} ); diff --git a/packages/web/src/modals/ModalContent.js b/packages/web/src/modals/ModalContent.js new file mode 100644 index 000000000..815c28ba0 --- /dev/null +++ b/packages/web/src/modals/ModalContent.js @@ -0,0 +1,12 @@ +import React from 'react'; +import styled from 'styled-components'; + +const Wrapper = styled.div` + border-bottom: 1px solid #ccc; + border-top: 1px solid #ccc; + padding: 15px; +`; + +export default function ModalContent({ children }) { + return {children}; +} diff --git a/packages/web/src/modals/ModalFooter.js b/packages/web/src/modals/ModalFooter.js new file mode 100644 index 000000000..2fc99d512 --- /dev/null +++ b/packages/web/src/modals/ModalFooter.js @@ -0,0 +1,11 @@ +import React from 'react'; +import styled from 'styled-components'; + +const Wrapper = styled.div` + border-bottom: 1px solid #ccc; + padding: 15px; +`; + +export default function ModalFooter({ children }) { + return {children}; +} diff --git a/packages/web/src/modals/ModalHeader.js b/packages/web/src/modals/ModalHeader.js new file mode 100644 index 000000000..222d0443a --- /dev/null +++ b/packages/web/src/modals/ModalHeader.js @@ -0,0 +1,27 @@ +import React from 'react'; +import styled from 'styled-components'; + +const Wrapper = styled.div` + font-size: 15pt; + padding: 15px; + display: flex; + justify-content: space-between; +`; + +const CloseWrapper = styled.div` + font-size: 12pt; + &:hover { + background-color: #blue; + } +`; + +export default function ModalHeader({ children, modalState }) { + return ( + + {children} + + + + + ); +} diff --git a/packages/web/src/modals/SaveSqlFileModal.js b/packages/web/src/modals/SaveSqlFileModal.js index af23a5195..935d732ff 100644 --- a/packages/web/src/modals/SaveSqlFileModal.js +++ b/packages/web/src/modals/SaveSqlFileModal.js @@ -5,6 +5,9 @@ import { FormButtonRow, FormButton, FormTextField, FormSelectField, FormSubmit } import { TextField } from '../utility/inputs'; import { Formik, Form } from 'formik'; import { useSetSavedSqlFiles } from '../utility/globalState'; +import ModalHeader from './ModalHeader'; +import ModalContent from './ModalContent'; +import ModalFooter from './ModalFooter'; // import FormikForm from '../utility/FormikForm'; export default function SaveSqlFileModal({ storageKey, modalState, name, onSave = undefined }) { @@ -23,14 +26,15 @@ export default function SaveSqlFileModal({ storageKey, modalState, name, onSave }; return ( - Save SQL file + Save SQL file - - - + + + + - +