1- import { AddIcon , CloseIcon , CustomModalProps , ScrollBar } from "openblocks-design" ;
1+ import { AddIcon , CloseIcon , CustomModalProps , ImportIconV2 , ScrollBar } from "openblocks-design" ;
22import { BottomShadow , GreyTextColor , TabActiveColor } from "constants/style" ;
33import { trans } from "i18n" ;
44import _ , { noop } from "lodash" ;
55import { CreateDataSourceModal } from "pages/datasource/datasourceModal" ;
66import { DataSourceButton } from "pages/datasource/pluginPanel" ;
7- import { useState } from "react" ;
7+ import React , { useState } from "react" ;
88import { useResizeDetector } from "react-resize-detector" ;
99import styled , { css } from "styled-components" ;
1010import { BottomResTypeEnum } from "types/bottomRes" ;
@@ -20,6 +20,7 @@ import {
2020 QUICK_REST_API_ID ,
2121} from "../constants/datasourceConstants" ;
2222import { ResourceType } from "@openblocks-ee/constants/queryConstants" ;
23+ import { Upload } from "antd" ;
2324
2425const Wrapper = styled . div < { placement : PageType } > `
2526 width: 100%;
@@ -174,6 +175,7 @@ interface ResCreateModalProps extends CustomModalProps {
174175 onSelect : ( type : BottomResTypeEnum , extraInfo ?: any ) => void ;
175176 onClose : ( ) => void ;
176177 placement ?: PageType ;
178+ onImport ?: ( options : any ) => void ;
177179}
178180
179181export function ResCreatePanel ( props : ResCreateModalProps ) {
@@ -246,6 +248,29 @@ export function ResCreatePanel(props: ResCreateModalProps) {
246248 </ >
247249 ) }
248250
251+ { placement === "queryLibrary" && props . onImport && (
252+ < >
253+ < div className = "section-title" > { trans ( "home.import" ) } </ div >
254+ < div className = "section" >
255+ < DataSourceListWrapper placement = { placement } >
256+ < Upload
257+ accept = ".json"
258+ showUploadList = { false }
259+ customRequest = { ( options ) => {
260+ props . onImport ! ( options ) ;
261+ } }
262+ multiple = { false }
263+ >
264+ < DataSourceButton size = { buttonSize } >
265+ < ImportIconV2 width = "20px" height = "20px" style = { { marginRight : "8px" } } />
266+ { trans ( "query.importFromFile" ) }
267+ </ DataSourceButton >
268+ </ Upload >
269+ </ DataSourceListWrapper >
270+ </ div >
271+ </ >
272+ ) }
273+
249274 < div className = "section-title" > { trans ( "query.datasource" ) } </ div >
250275 < div className = "section" >
251276 < DataSourceListWrapper placement = { placement } >
0 commit comments