12 min to read
React Components
Eternus-React-Components
React components inspired by react-bootstrap.
Available components
- Dropdown
- Login Component
- File Upload
- Export to Excel
Install
$npm install eternus-react-component
Dropdown
Usage
import {Dropdown} from "eternus-react-component";
export default class Sample extends Component {
optionClicked = () => {
...
}
render() {
const options = [
{
optionName :"Action 1",
onClick:this.optionClicked,
Link :"#/action1",
icon :"fa fa-arrow-right"
},
{
...
}
];
return (
<div>;
<Dropdown
title = "Dropdown"
variant = "success"
dropDirection = "down"
options = {options}
error = {true}
errorMessage = "error message"
/>
</div>
)
}
}
Props
Common props you need to specify include:
Props | Default | Type | Description |
---|---|---|---|
title | Dropdown | String | Title for the dropdown |
variant | success | String [‘primary’, ‘secondary’ , ‘success’ ,’danger’ , ‘warning’ , ‘info’ , ‘dark’ , ‘light’] | Color for the dropdown |
dropDirection | down | String [‘up’, ‘down’, ‘left’, ‘right’] | Determines the direction and location of the Menu in relation to its toggle |
options | Empty array | Array of objects | Option menu for dropdown menu items |
error | false | Boolean | Allows the user to trigger an error |
errorMessage | Empty String | String | Error message to be displayed |
Options array object keys
Key | Type | Default | Description |
---|---|---|---|
optionName | String | Name for menu item | |
onClick | Function | Callback fired when the menu item is clicked | |
Link | String | href link associated with menu item | |
icon | String | Icon to be displayed along with menu item name | |
disabled | Boolean | false | Disable the menu item, making it unselectable |
Login
Usage
import {Login} from "eternus-react-component";
export default class Sample extends Component {
onChangeComponent=(e) => {
...
}
onSubmit =()=>{
...
}
render() {
return (
<Login
title="Login"
usernameType="email"
usernamePlaceholder="Username"
passwordPlaceholder="Password"
buttonTitle="Sign In"
onChange={this.onChangeComponent.bind(this)}
position="Left"
username ="usernameValue"
passwordName="userPasswordValue"
usernameValue={this.state.usernameValue}
userPasswordValue={this.state.userPasswordValue}
error={false}
errorMessage="Invalid username or password"
onSubmit= {this.onSubmit}
/>
)
}
}
Props
Common props you need to specify include:
Props | Default | Type | Description |
---|---|---|---|
title | Login | String | Title for the login page |
variant | info | String [‘primary’, ‘secondary’, ‘success’, ‘danger’, ‘warning’ , ‘info’ , ‘dark’ , ‘light’] | Color for sign in button |
usernameType | text | String [email, number, text] | Input type for username field |
passwordType | password | String [password] | Input type for password field |
usernamePlaceholder | Username | String | Placeholder for username field |
passwordPlaceholder | Password | String | Placeholder for password field |
buttonTitle | Sign In | String | Text for sign in button |
onChange | Function | onChange handler for username and password fields | |
position | center | String[center,left] | Position for login page title |
username | username | String | Input name for username field |
passwordName | password | String | Input name for password field |
usernameValue | Empty String | String | Value for username field |
userPasswordValue | Empty String | String | Value for password field |
forgotPasswordLink | String | Redirect link for forgot password | |
signUpLink | String | Redirect link for sign up | |
error | false | Boolean | Trigger error |
errorMessage | Empty String | String | Error message to be displayed |
onSubmit | Function | Callback function to submit the login credentials |
File Upload
Usage
import {FileUpload} from "eternus-react-component";
export default class Sample extends Component {
getFiles = (files) => {
//console.log("files",files)
}
render() {
return (
<FileUpload
browseButtonTitle = "Browse"
uploadButtonTitle = "Upload"
accept = ".xls,.xlsx,.txt"
size = {1}
multiple = {true}
variant = "success"
fileResponse = {this.getFiles}
/>
)
}
}
Props
Common props you need to specify include:
Props | Default | Type | Description |
---|---|---|---|
browseButtonTitle | Browse | String | Title for the Browse Button |
uploadButtonTitle | Upload | String | Title for the Upload Button |
accept | Empty String | String “.xls,.xlsx,.txt” | Allows the user to restrict file extensions |
size | Number | Number | Allows the user to restrict file size. File size should be in KB |
multiple | false | Boolean | Define single or multiple file selection criteria |
variant | success | String [‘primary’, ‘secondary’ , ‘success’ ,’danger’ , ‘warning’ , ‘info’ , ‘dark’ , ‘light’] | Color for the Browse and Upload Button |
fileResponse | Function | Callback function to recieve uploaded files |
File response array structure after upload
[
{
name: "fileName.txt",
lastModified: 1560493560484,
lastModifiedDate: Fri Jun 14 2019 11:56:00 GMT+0530 (India Standard Time),
webkitRelativePath: "",
size: 967
}
]
Export to excel
Usage
import {ExportToExcel} from "eternus-react-component";
export default class Sample extends Component {
render() {
const data= [
{id : 1, name: 'name1', gender: 'female'},
{id : 2, name: 'name2', gender: 'female'},
{id : 3, name: 'name3', gender: 'male'},
{id : 4, name: 'name4', gender: 'female'},
{id : 5, name: 'name5', gender: 'male'},
]
return (
<div>
<ExportToExcel
variant="success"
title="Export to excel"
data={data}
fileName="dataFile"
sheetName="sheet1"/>
</div>
)
}
}
}
Props
Common props you need to specify include:
Props | Default | Type | Description |
---|---|---|---|
title | Dropdown | String | Title for the export button |
variant | info | String [‘primary’, ‘secondary’, ‘success’,’danger’, ‘warning’ , ‘info’ , ‘dark’ , ‘light’] | Color for the button |
data | Array of objects [JSON] | Json data to export to the excel file | |
fileName | excel | String | File name for excel file |
sheetName | sheet1 | String | Sheet name for the data sheet |
extension | xlsx | String [‘xlsx’, ‘csv’, ‘tsv’] | File extension for export file |
Modal Component
Usage
import {Modal} from "eternus-react-component";
export default class Sample extends Component {
this.state = {
show: false
}
handleClose = () => {
this.setState({
show: !this.state.show
});
}
handleShow = () => {
this.setState({
show: true
});
}
render() {
return (
<div>
<Modal
size="md"
variant="#FFCC00"
modalType="confirm"
show={this.state.show}
handleClose={this.handleClose}
handleConfirm={this.handleShow}
modalHeading="Modal Heading"
modalMessage ="Modal Message"
confirmButtonText = "Save data"
cancelButtonText = "Ok"
/>
</div>
)
}
}
Props
Common props you need to specify include:
Props | Default | Type | Description |
---|---|---|---|
variant | String [Any color code] | Color for modal heading background | |
modalType | ‘message’ | String [‘message’ , ‘confirm’] | Modal type for displaying message modal or a confirmation modal |
show | false | Boolean | Show and hide the modal using this attribute |
handleClose | Function | Callback function for cancel button | |
handleConfirm | Function | Callback function for confirm button | |
modalHeading | String | Modal heading text to be displayed | |
modalMessage | String | Modal message to be displayed | |
cancelButtonText | ‘Cancel’ | String | Text for cancel button |
confirmButtonText | ‘Confirm’ | String | Text for confirm button |
size | ‘md’ | String[‘sm’,’md’,’lg’] | Size of modal |
Menu Component
Usage
import {Modal} from "eternus-react-component";
import eternusLogo from "./eternus.png";
import profile from "./profile.png";
export default class Sample extends Component {
constructor(props) {
super(props)
this.state = {
searchKey: ''
};
}
onSearchKeyChange = (e) => {
//...
}
onSearch = () => {
//....
}
render() {
const menuOptions = [{
name: "Dashboard",
url: "/",
icon: "fa fa-tasks"
},
{
name: "Home",
url: "/",
icon: "fa fa-home",
rootParent: true,
children: [{
name: "Link1",
url: "/",
icon: "fa fa-user",
children: [
//Upto any level
]
}],
}
]
const profileOptions = [{
name: "Logout",
url: "#",
icon: "fa fa-sign-out"
}]
return (
<div>
{/* --------- For horizontal menu ----------*/}
<Menu
alignment = "horizontal"
menuOptions={menuOptions}
logoUrl={eternusLogo}
brandName="Eternus" //optional
profileUrl= {profile}
searchOption={true}
profileOptions={profileOptions}
onSearchKeyChange ={this.onSearchKeyChange}
searchKey = {this.state.searchKey}
onSearch = {this.onSearch} />
{/* -------- For vertical menu ------------*/}
<Menu
alignment="vertical"
menuOptions={menuOptions}
brandName="Eternus" //optional
logoUrl={eternusLogo}
/>
</div>
)
}
}
Props
Common props you need to specify include:
Props | Default | Type | Description |
---|---|---|---|
alignment | “horizontal” | String[vertical,horizontal] | Alignment of menu |
menuOptions | Array contains home option | Array of objects | Option menu for menu items |
logoUrl | Empty String | String | Contains URL for logo |
profileUrl | User image | String | Contains URL for profile |
searchOption | true | Boolean | Display or hide search option |
profileOptions | Array of objects | Option menu for profile | |
onSearchKeyChange | Function | Handle onChange of search text box | |
searchKey | String | Value of search text box | |
onSearch | Function | Handle onClick event of search button | |
brandName | “Eternus” | String | Title for menu |
License
This project is licensed under the MIT License.
Comments