From 9d757403be58cba16386f4a55e4c7194abc6881c Mon Sep 17 00:00:00 2001 From: Lily Kuang Date: Sat, 11 Jul 2020 20:57:54 -0700 Subject: [PATCH] fix: fetch datasets list after dataset created successfully (#10290) --- .../src/components/Menu/SubMenu.tsx | 111 +++++++++--------- .../src/views/datasetList/DatasetList.tsx | 6 +- .../src/views/datasetList/DatasetModal.tsx | 24 ++-- 3 files changed, 75 insertions(+), 66 deletions(-) diff --git a/superset-frontend/src/components/Menu/SubMenu.tsx b/superset-frontend/src/components/Menu/SubMenu.tsx index f565af0fe..5b45ae11a 100644 --- a/superset-frontend/src/components/Menu/SubMenu.tsx +++ b/superset-frontend/src/components/Menu/SubMenu.tsx @@ -16,7 +16,7 @@ * specific language governing permissions and limitations * under the License. */ -import React from 'react'; +import React, { useState } from 'react'; import styled from '@superset-ui/style'; import DatasetModal from 'src/views/datasetList/DatasetModal'; import { Button, Nav, Navbar, MenuItem } from 'react-bootstrap'; @@ -64,71 +64,72 @@ const StyledHeader = styled.header` `; interface SubMenuProps { - createButton?: { name: string; url: string | null }; canCreate?: boolean; - name: string; childs?: Array<{ label: string; name: string; url: string }>; + createButton?: { name: string; url: string | null }; + fetchData?: () => void; + name: string; } -interface SubMenuState { - selectedMenu: string; - isModalOpen: boolean; -} +const SubMenu = ({ + canCreate, + childs, + createButton, + fetchData, + name, +}: SubMenuProps) => { + const [isModalOpen, setIsModalOpen] = useState(false); + const [selectedMenu, setSelectedMenu] = useState( + childs?.[0]?.label, + ); -class SubMenu extends React.PureComponent { - state: SubMenuState = { - selectedMenu: - this.props.childs && this.props.childs[0] - ? this.props.childs[0].label - : '', - isModalOpen: false, + const onOpen = () => { + setIsModalOpen(true); }; - onOpen = () => { - this.setState({ isModalOpen: true }); + const onClose = () => { + setIsModalOpen(false); }; - onClose = () => { - this.setState({ isModalOpen: false }); + const handleClick = (item: string) => () => { + setSelectedMenu(item); }; - handleClick = (item: string) => () => { - this.setState({ selectedMenu: item }); - }; - - render() { - return ( - - - - {this.props.name} - - -