react-message-preview
Version:
A React Component - Browser centered Message box with blur background
137 lines (120 loc) • 5.38 kB
Markdown
# react-message-preview
A React Component - Browser centered Message box with blur background.
### On Large Screen
<div align="center">
<img src="https://raw.githubusercontent.com/sachinlamba/react-message-preview/master/previewLargeScreen.PNG" />
</div>
### On Small Screen
<div align="center">
<img src="https://raw.githubusercontent.com/sachinlamba/react-message-preview/master/previewSmallScreen.PNG" />
</div>
## Examples
1. Here is the first one to get you started:
```jsx
import React, { Component } from 'react';
import MessagePreviewer from 'react-message-preview';
class App extends Component {
constructor(props){
super(props);
this.state = {
showMessagePreview: true,
count: 1
}
this.increment = this.increment.bind(this);
this.decrement = this.decrement.bind(this);
this.removePreviewFunction = this.removePreviewFunction.bind(this);
}
removePreviewFunction(){
this.setState({
showMessagePreview: false
})
}
increment(){
this.setState({
count: this.state.count + 1
})
}
decrement(){
if(this.state.count != 0){
this.setState({
count: this.state.count - 1
})
}
}
render() {
let self = this;
return (
<div className="App">
{
self.state.showMessagePreview &&
<MessagePreviewer
messageTitle={"Counter"}
messageText={"Counter : " + self.state.count}
resetText="Decrement"
saveText="Increment"
closePreview={this.removePreviewFunction}
saveFunction={self.increment}
resetFunction={self.decrement}
/>
}
</div>
);
}
}
export default App;
```
---
2. Second one for Advanced params(*Only render function re-write*)
Here we are overriding
* CSS of class "preview-div" styles
* Reset/Cancel button hidden
*You can override the props depending on table names given below for reference.*
```jsx
render() {
let self = this;
let messageDetails = [];
if(self.state.count <= 0){
messageDetails.push(<div>Counter stopped at zero.</div>);
}
messageDetails.push(<div>{"Counter : " + self.state.count}</div>);
return (
<div className="App">
{
this.state.showMessagePreview &&
<MessagePreviewer
messageStyle={{top: "15%", color: "green"}}
messageTitle={"Counter"}
messageText={messageDetails}
resetText="Decrement"
saveText="Increment"
resetFlagHide={true}
closePreview={this.removePreviewFunction}
saveFunction={self.increment}
resetFunction={self.decrement}
/>
}
</div>
);
}
```
## Paramters as Props
| PropNames | Type | Use | Default |
| ------------- |:--------------------: |:-------------:|:-------------:|
| backgroundStyle | Object | css style object to update class="blur-background" | {} |
| messageStyle | Object | css style object to update class="preview-div" | {} |
| titleStyle | Object | css style object to update class="message-title" | {} |
| removePreviewButtonStyle | Object | css style object to update class="cross-button" | {} |
| resetButtonStyle | Object | css style object to update class="button-style reset-button" | {} |
| saveButtonStyle | Object | css style object to update class="button-style save-button" | {} |
| resetFlagHide | Boolean | Show(default)/Hide Cancel Button | false |
| closePreview | Function | Functon passed from ur project to Close/Hide the preview | - |
| resetFunction | Function | Functon passed from ur project for Cancel/Reset action from preview | ()=>{} |
| saveFunction | Function | Functon passed from ur project to Save/Ok Action from preview | ()=>{} |
| messageTitle | String | Title for the preview box. | "" |
| messageText | String/Array| Message content showing in center of preview box. | Pass your msg here. |
| resetText | String | Button Name on bottom left side. | Cancel |
| saveText | String | Button Name on bottom Right side. | Ok |
*All Props are optional except closePreview function(unless u want my preview to be always on ur screen)* :smirk:
*As you can see, we can send messageText as Array also.* [See this to view more on this](https://stackoverflow.com/questions/33381029/react-how-to-pass-html-tags-in-props)
# Help
Published [Guide](http://jasonwatmore.com/post/2018/04/14/react-npm-how-to-publish-a-react-component-to-npm) :heart_eyes: