From d922376d57d0cae31b01b470eeffc43abef09638 Mon Sep 17 00:00:00 2001 From: "Donus(ADA)" Date: Wed, 11 Oct 2023 09:20:35 +0700 Subject: [PATCH] feat(documentation): move function to the request pane --- .../Documentation/StyledContentWrapper.js | 3 +- .../StyledMarkdownBodyWrapper.js | 26 ++++---- .../components/Documentation/StyledWrapper.js | 4 +- .../src/components/Documentation/index.js | 63 ++++--------------- .../RequestPane/GraphQLRequestPane/index.js | 7 +++ .../RequestPane/HttpRequestPane/index.js | 7 +++ .../components/RequestPane/QueryUrl/index.js | 11 ---- .../StyledTextarea.js} | 8 +-- .../src/components/TextareaEditor/index.js | 7 +++ .../src/pageComponents/Index/index.js | 6 -- .../src/providers/ReduxStore/index.js | 4 +- .../src/providers/ReduxStore/slices/docs.js | 22 ------- 12 files changed, 52 insertions(+), 116 deletions(-) rename packages/bruno-app/src/components/{Documentation/DocumentationEditor.js => TextareaEditor/StyledTextarea.js} (78%) create mode 100644 packages/bruno-app/src/components/TextareaEditor/index.js delete mode 100644 packages/bruno-app/src/providers/ReduxStore/slices/docs.js diff --git a/packages/bruno-app/src/components/Documentation/StyledContentWrapper.js b/packages/bruno-app/src/components/Documentation/StyledContentWrapper.js index 68223dbd3..fccfa73e5 100644 --- a/packages/bruno-app/src/components/Documentation/StyledContentWrapper.js +++ b/packages/bruno-app/src/components/Documentation/StyledContentWrapper.js @@ -1,9 +1,10 @@ import styled from 'styled-components'; const StyledContentWrapper = styled.div` - height: calc(100vh - 100px); + height: calc(100vh - 280px); margin-right: 5px; margin-left: 5px; + margin-bottom: -4em; background-color: ${(props) => props.theme.rightPane.bg}; diff --git a/packages/bruno-app/src/components/Documentation/StyledMarkdownBodyWrapper.js b/packages/bruno-app/src/components/Documentation/StyledMarkdownBodyWrapper.js index 305994bd0..f08c278ef 100644 --- a/packages/bruno-app/src/components/Documentation/StyledMarkdownBodyWrapper.js +++ b/packages/bruno-app/src/components/Documentation/StyledMarkdownBodyWrapper.js @@ -14,42 +14,42 @@ const StyledMarkdownBodyWrapper = styled.div` font-size: 0.875rem; } + .markdown-body h1 { + margin: 0.67em 0; + font-weight: var(--base-text-weight-semibold, 600); + padding-bottom: 0.3em; + font-size: 1.3; + border-bottom: 1px solid var(--color-border-muted); + } + .markdown-body h2 { font-weight: var(--base-text-weight-semibold, 600); padding-bottom: 0.3em; - font-size: 1.125em; + font-size: 1.2; border-bottom: 1px solid var(--color-border-muted); } .markdown-body h3 { font-weight: var(--base-text-weight-semibold, 600); - font-size: 1em; + font-size: 1.1em; } .markdown-body h4 { font-weight: var(--base-text-weight-semibold, 600); - font-size: 0.875em; + font-size: 1em; } .markdown-body h5 { font-weight: var(--base-text-weight-semibold, 600); - font-size: 0.85em; + font-size: 0.95em; } .markdown-body h6 { font-weight: var(--base-text-weight-semibold, 600); - font-size: 0.8em; + font-size: 0.9em; color: var(--color-fg-muted); } - .markdown-body h1 { - margin: 0.67em 0; - font-weight: var(--base-text-weight-semibold, 600); - padding-bottom: 0.3em; - font-size: 1.375em; - border-bottom: 1px solid var(--color-border-muted); - } - .markdown-body hr { box-sizing: content-box; overflow: hidden; diff --git a/packages/bruno-app/src/components/Documentation/StyledWrapper.js b/packages/bruno-app/src/components/Documentation/StyledWrapper.js index 75027e76b..6c1dd8ea9 100644 --- a/packages/bruno-app/src/components/Documentation/StyledWrapper.js +++ b/packages/bruno-app/src/components/Documentation/StyledWrapper.js @@ -1,9 +1,7 @@ import styled from 'styled-components'; const StyledWrapper = styled.div` - border-left: 1px solid ${(props) => props.theme.rightPane.border}; - padding-top: 2em; - height: 100%; + width: inherit; `; export default StyledWrapper; diff --git a/packages/bruno-app/src/components/Documentation/index.js b/packages/bruno-app/src/components/Documentation/index.js index 290534cd3..ec317254e 100644 --- a/packages/bruno-app/src/components/Documentation/index.js +++ b/packages/bruno-app/src/components/Documentation/index.js @@ -1,62 +1,32 @@ -import { IconX } from '@tabler/icons'; +import TextareaEditor from 'components/TextareaEditor/index'; import 'github-markdown-css/github-markdown.css'; +import get from 'lodash/get'; import MarkdownIt from 'markdown-it'; -import { updateRequestDocs } from 'providers/ReduxStore/slices/collections/index'; -import { closeDocs } from 'providers/ReduxStore/slices/docs'; +import { updateRequestDocs } from 'providers/ReduxStore/slices/collections'; import { useTheme } from 'providers/Theme/index'; import { useState } from 'react'; -import { useDispatch, useSelector } from 'react-redux'; -import { findCollectionByUid, findItemInCollection } from 'utils/collections/index'; -import DocumentationEditor from './DocumentationEditor'; +import { useDispatch } from 'react-redux'; import MarkdownBody from './MarkdownBody'; import StyledContentWrapper from './StyledContentWrapper'; import StyledWrapper from './StyledWrapper'; const md = new MarkdownIt(); -const getItem = (collections, collectionUid, itemUid) => { - const collection = findCollectionByUid(collections, collectionUid); - if (!collection) { - return new Error('Collection not found'); - } - const item = findItemInCollection(collection, itemUid); - if (!item) { - return new Error('Item not found'); - } - - return item; -}; - -const Documentation = () => { +const Documentation = ({ item, collection }) => { const dispatch = useDispatch(); const themeContext = useTheme(); - const tabs = useSelector((state) => state.tabs.tabs); - const activeTabUid = useSelector((state) => state.tabs.activeTabUid); - const collections = useSelector((state) => state.collections); - const isShowDocs = useSelector((state) => state.docs.isShow); - - const tab = tabs.find((tab) => tab.uid === activeTabUid); - const item = getItem(collections.collections, tab?.collectionUid, tab?.uid); - const [isEditing, setIsEditing] = useState(false); - - const draftDocs = item.draft?.request?.docs; - const savedDocs = item?.request?.docs || ''; - const docs = draftDocs !== undefined ? draftDocs : savedDocs; + const docs = item.draft ? get(item, 'draft.request.docs') : get(item, 'request.docs'); const toggleViewMode = () => { setIsEditing((prev) => !prev); }; - const setCloseDocs = () => { - dispatch(closeDocs()); - }; - const handleChange = (e) => { dispatch( updateRequestDocs({ - itemUid: tab.uid, - collectionUid: tab.collectionUid, + itemUid: item.uid, + collectionUid: collection.uid, docs: e.target.value }) ); @@ -64,25 +34,16 @@ const Documentation = () => { const htmlFromMarkdown = md.render(docs); - if (!isShowDocs) { - return null; - } - - if (!tab) { + if (!item) { return null; } return ( - - - +
-

Documentation

@@ -90,7 +51,7 @@ const Documentation = () => { {isEditing ? ( - + ) : ( {htmlFromMarkdown} diff --git a/packages/bruno-app/src/components/RequestPane/GraphQLRequestPane/index.js b/packages/bruno-app/src/components/RequestPane/GraphQLRequestPane/index.js index 6d4eba2a6..29c46de77 100644 --- a/packages/bruno-app/src/components/RequestPane/GraphQLRequestPane/index.js +++ b/packages/bruno-app/src/components/RequestPane/GraphQLRequestPane/index.js @@ -19,6 +19,7 @@ import { sendRequest, saveRequest } from 'providers/ReduxStore/slices/collection import { findEnvironmentInCollection } from 'utils/collections'; import useGraphqlSchema from './useGraphqlSchema'; import StyledWrapper from './StyledWrapper'; +import Documentation from 'components/Documentation/index'; const GraphQLRequestPane = ({ item, collection, leftPaneWidth, onSchemaLoad, toggleDocs, handleGqlClickReference }) => { const dispatch = useDispatch(); @@ -113,6 +114,9 @@ const GraphQLRequestPane = ({ item, collection, leftPaneWidth, onSchemaLoad, tog case 'tests': { return ; } + case 'docs': { + return ; + } default: { return
404 | Not found
; } @@ -161,6 +165,9 @@ const GraphQLRequestPane = ({ item, collection, leftPaneWidth, onSchemaLoad, tog
selectTab('tests')}> Tests
+
selectTab('docs')}> + Docs +
{isSchemaLoading ? : null} diff --git a/packages/bruno-app/src/components/RequestPane/HttpRequestPane/index.js b/packages/bruno-app/src/components/RequestPane/HttpRequestPane/index.js index ec20514fe..27eb7d594 100644 --- a/packages/bruno-app/src/components/RequestPane/HttpRequestPane/index.js +++ b/packages/bruno-app/src/components/RequestPane/HttpRequestPane/index.js @@ -14,6 +14,7 @@ import Assertions from 'components/RequestPane/Assertions'; import Script from 'components/RequestPane/Script'; import Tests from 'components/RequestPane/Tests'; import StyledWrapper from './StyledWrapper'; +import Documentation from 'components/Documentation/index'; const HttpRequestPane = ({ item, collection, leftPaneWidth }) => { const dispatch = useDispatch(); @@ -55,6 +56,9 @@ const HttpRequestPane = ({ item, collection, leftPaneWidth }) => { case 'tests': { return ; } + case 'docs': { + return ; + } default: { return
404 | Not found
; } @@ -103,6 +107,9 @@ const HttpRequestPane = ({ item, collection, leftPaneWidth }) => {
selectTab('tests')}> Tests
+
selectTab('docs')}> + Docs +
{focusedTab.requestPaneTab === 'body' ? (
diff --git a/packages/bruno-app/src/components/RequestPane/QueryUrl/index.js b/packages/bruno-app/src/components/RequestPane/QueryUrl/index.js index d1fad07d1..0a45f1a7d 100644 --- a/packages/bruno-app/src/components/RequestPane/QueryUrl/index.js +++ b/packages/bruno-app/src/components/RequestPane/QueryUrl/index.js @@ -9,8 +9,6 @@ import { IconDeviceFloppy, IconArrowRight } from '@tabler/icons'; import SingleLineEditor from 'components/SingleLineEditor'; import { isMacOS } from 'utils/common/platform'; import StyledWrapper from './StyledWrapper'; -import { showDocs } from 'providers/ReduxStore/slices/docs'; -import { IconFileDescription } from '@tabler/icons'; const QueryUrl = ({ item, collection, handleRun }) => { const { theme, storedTheme } = useTheme(); @@ -51,10 +49,6 @@ const QueryUrl = ({ item, collection, handleRun }) => { ); }; - const onDocsClick = () => { - dispatch(showDocs()); - }; - return (
@@ -98,11 +92,6 @@ const QueryUrl = ({ item, collection, handleRun }) => {
- ); }; diff --git a/packages/bruno-app/src/components/Documentation/DocumentationEditor.js b/packages/bruno-app/src/components/TextareaEditor/StyledTextarea.js similarity index 78% rename from packages/bruno-app/src/components/Documentation/DocumentationEditor.js rename to packages/bruno-app/src/components/TextareaEditor/StyledTextarea.js index 7890b8f92..ef0ceea69 100644 --- a/packages/bruno-app/src/components/Documentation/DocumentationEditor.js +++ b/packages/bruno-app/src/components/TextareaEditor/StyledTextarea.js @@ -1,6 +1,6 @@ import styled from 'styled-components'; -const StyledEditor = styled.textarea` +const StyledTextarea = styled.textarea` height: inherit; background: ${(props) => props.theme.bg}; color: ${(props) => props.theme.text}; @@ -26,8 +26,4 @@ const StyledEditor = styled.textarea` } `; -const DocumentationEditor = (props) => { - return ; -}; - -export default DocumentationEditor; +export default StyledTextarea; diff --git a/packages/bruno-app/src/components/TextareaEditor/index.js b/packages/bruno-app/src/components/TextareaEditor/index.js new file mode 100644 index 000000000..19c4c2eed --- /dev/null +++ b/packages/bruno-app/src/components/TextareaEditor/index.js @@ -0,0 +1,7 @@ +import StyledTextarea from './StyledTextarea'; + +const TextareaEditor = (props) => { + return ; +}; + +export default TextareaEditor; diff --git a/packages/bruno-app/src/pageComponents/Index/index.js b/packages/bruno-app/src/pageComponents/Index/index.js index 0c9d9f55f..764849936 100644 --- a/packages/bruno-app/src/pageComponents/Index/index.js +++ b/packages/bruno-app/src/pageComponents/Index/index.js @@ -44,7 +44,6 @@ export default function Main() { const activeTabUid = useSelector((state) => state.tabs.activeTabUid); const isDragging = useSelector((state) => state.app.isDragging); const showHomePage = useSelector((state) => state.app.showHomePage); - const showDocs = useSelector((state) => state.docs.isShow); // Todo: write a better logging flow that can be used to log by turning on debug flag // Enable for debugging. @@ -68,11 +67,6 @@ export default function Main() { )} - {showDocs && ( -
- -
- )}
); diff --git a/packages/bruno-app/src/providers/ReduxStore/index.js b/packages/bruno-app/src/providers/ReduxStore/index.js index 77cfc9737..d86b18fc4 100644 --- a/packages/bruno-app/src/providers/ReduxStore/index.js +++ b/packages/bruno-app/src/providers/ReduxStore/index.js @@ -2,14 +2,12 @@ import { configureStore } from '@reduxjs/toolkit'; import appReducer from './slices/app'; import collectionsReducer from './slices/collections'; import tabsReducer from './slices/tabs'; -import docsReducer from './slices/docs'; export const store = configureStore({ reducer: { app: appReducer, collections: collectionsReducer, - tabs: tabsReducer, - docs: docsReducer + tabs: tabsReducer } }); diff --git a/packages/bruno-app/src/providers/ReduxStore/slices/docs.js b/packages/bruno-app/src/providers/ReduxStore/slices/docs.js deleted file mode 100644 index 19ecfdc92..000000000 --- a/packages/bruno-app/src/providers/ReduxStore/slices/docs.js +++ /dev/null @@ -1,22 +0,0 @@ -import { createSlice } from '@reduxjs/toolkit'; - -const initialState = { - isShow: false -}; - -export const docsSlice = createSlice({ - name: 'docs', - initialState, - reducers: { - showDocs: (state) => { - state.isShow = true; - }, - closeDocs: (state) => { - state.isShow = false; - } - } -}); - -export const { closeDocs, showDocs } = docsSlice.actions; - -export default docsSlice.reducer;