Skip to content
This repository was archived by the owner on Nov 22, 2022. It is now read-only.

Commit 18798c4

Browse files
Move FileSelector to tab-based UI
1 parent 3569260 commit 18798c4

File tree

1 file changed

+45
-7
lines changed
  • packages/builder/src/components/FileSelector

1 file changed

+45
-7
lines changed

packages/builder/src/components/FileSelector/index.js

Lines changed: 45 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import React, { Component } from 'react'
22
import PropTypes from 'prop-types'
3-
import { ModalHeader, ModalBody } from 'reactstrap'
3+
import { Nav, NavItem, NavLink, ModalBody } from 'reactstrap'
4+
import classnames from 'classnames'
45

56
import { addGlobalFile, addLocalFile } from '../../logic/util/files'
67

78
import Modal from '../Modal'
9+
import Icon from '../Icon'
810

911
import UploadTab from './Components/UploadTab'
1012

@@ -14,6 +16,7 @@ export default class FileSelector extends Component {
1416

1517
this.state = {
1618
active: false,
19+
activeTab: 'new',
1720
}
1821
this.promiseHandlers = {}
1922

@@ -34,6 +37,12 @@ export default class FileSelector extends Component {
3437
})
3538
}
3639

40+
toggleTab(name) {
41+
this.setState({
42+
activeTab: name
43+
})
44+
}
45+
3746
handleUpload(content, file) {
3847
const { poolPath } = addGlobalFile(
3948
this.context.store,
@@ -76,18 +85,47 @@ export default class FileSelector extends Component {
7685
)
7786
}
7887

88+
renderTab() {
89+
switch (this.state.activeTab) {
90+
default:
91+
return <UploadTab handleUpload={ this.handleUpload } />
92+
}
93+
}
94+
7995
render() {
8096
return <Modal
8197
isOpen={ this.state.active }
8298
>
8399
<div className="modal-content">
84-
<ModalHeader
85-
toggle={ this.toggle }
86-
>
87-
New image
88-
</ModalHeader>
100+
<Nav tabs>
101+
<NavItem>
102+
<NavLink
103+
className={ classnames({
104+
active: this.state.activeTab === 'new'
105+
}) }
106+
onClick={ () => this.toggleTab('new') }
107+
>
108+
<Icon icon="plus" weight="s" />
109+
</NavLink>
110+
</NavItem>
111+
<NavItem
112+
className="ml-auto"
113+
style={{
114+
padding: '0.25em 0',
115+
}}
116+
>
117+
<button
118+
type="button"
119+
className="close"
120+
aria-label="Close"
121+
onClick={ this.toggle }
122+
>
123+
<span aria-hidden="true">&times;</span>
124+
</button>
125+
</NavItem>
126+
</Nav>
89127
<ModalBody>
90-
<UploadTab handleUpload={ this.handleUpload } />
128+
{ this.renderTab() }
91129
</ModalBody>
92130
</div>
93131
</Modal>

0 commit comments

Comments
 (0)