EasyUI Forum
April 26, 2024, 02:35:02 PM *
Welcome, Guest. Please login or register.

Login with username, password and session length
News:
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: Messager formating  (Read 5999 times)
chrwei
Full Member
***
Posts: 219


View Profile Email
« on: June 29, 2020, 12:09:52 PM »

Since react encodes any html in content, how can I add formatting to the Messager content, especially with prompt()?

I've making a class that extends it, but my renderContent() methods doesn't get called.
Logged
jarry
Administrator
Hero Member
*****
Posts: 2262


View Profile Email
« Reply #1 on: June 30, 2020, 07:03:45 PM »

You can extend the Messager and create your own message components.
Code:
class MyMessagerDialog extends MessagerDialog {
  renderContent() {
    const { msg, title } = this.props;
    return [
      <div key="content" className="f-column f-full">
        <div className="messager-body f-full f-column">
          <h2>{title}</h2>
          <p>{msg}</p>
          {this.renderPrompt()}
        </div>
      </div>,
      this.renderButtons()
    ]
  }
}
class MyMessager extends Messager {
  render() {
    return (
      <MyMessagerDialog
        ref={ref => this.dialog = ref}
        {...this.props}
        {...this.state}
      />
    )
  }
}

Usage example:
Code:
<MyMessager ref={ref => this.mymsg = ref}></MyMessager>
Logged
chrwei
Full Member
***
Posts: 219


View Profile Email
« Reply #2 on: July 01, 2020, 12:24:13 PM »

MessagerDialog doesn't seem to exist.
Logged
jarry
Administrator
Hero Member
*****
Posts: 2262


View Profile Email
« Reply #3 on: July 02, 2020, 08:23:00 PM »

Please try to update to the newest version.
Logged
chrwei
Full Member
***
Posts: 219


View Profile Email
« Reply #4 on: July 06, 2020, 09:54:24 AM »

worked on a minimal test, thanks.
Logged
chrwei
Full Member
***
Posts: 219


View Profile Email
« Reply #5 on: July 07, 2020, 07:10:12 AM »

added the ability to provide a default value to the prompt().

Code:
export class MyMessagerDialog extends MessagerDialog {
    renderPrompt() {
        return this.props.messagerType!=="prompt" ? null : (
            <input ref={ref => {this.input = ref} }
                className="messager-input"
                value={this.state.inputValue || this.props.defaultValue}
                onChange={(e)=> {
                    this.setState({
                        inputValue: e.target.value
                    })
                }}
            />
        );
    }
...

called like
Code:
msg.prompt({
    title: "title",
    msg: "change?",
    defaultValue: itemSelected.name,
    result: r => {
        if (r) {
            renameItem(itemSelected.id, r)
        }
    }
});
Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines Valid XHTML 1.0! Valid CSS!