2020-06-10 16:16:33 +02:00
|
|
|
import WebpackLoader from "../../modules/WebpackLoader"
|
|
|
|
import { MouseEventHandler } from "react"
|
|
|
|
|
2020-06-14 19:23:40 +02:00
|
|
|
let ButtonModules
|
2020-06-10 16:16:33 +02:00
|
|
|
export default class Button extends React.Component<{
|
|
|
|
text: string,
|
|
|
|
onClick: MouseEventHandler,
|
|
|
|
color?: ButtonColor
|
|
|
|
}> {
|
|
|
|
constructor(props:{
|
|
|
|
text: string,
|
|
|
|
onClick: MouseEventHandler,
|
|
|
|
color?: ButtonColor
|
|
|
|
}){
|
|
|
|
if(props.color){
|
|
|
|
props.color = props.color.toLowerCase() as ButtonColor
|
|
|
|
if(!["brand", "grey", "red", "green", "yellow", "primary", "link", "white", "black", "transparent"].includes(props.color)){
|
|
|
|
props.color = "brand"
|
|
|
|
}
|
|
|
|
}else{
|
|
|
|
props.color = "brand"
|
|
|
|
}
|
|
|
|
props.onClick = typeof props.onClick === "function" ? props.onClick : () => {}
|
|
|
|
super(props)
|
|
|
|
}
|
|
|
|
|
2020-06-14 19:23:40 +02:00
|
|
|
get modules(){ // caching modules
|
|
|
|
return ButtonModules || (ButtonModules = [
|
|
|
|
WebpackLoader.findByUniqueProperties(["_horizontal"]),
|
|
|
|
WebpackLoader.findByUniqueProperties(["colorTransparent"]),
|
|
|
|
WebpackLoader.findByUniqueProperties(["buttonWrapper"]),
|
|
|
|
WebpackLoader.findByUniqueProperties(["ButtonColors"]),
|
|
|
|
])
|
|
|
|
}
|
|
|
|
|
2020-06-10 16:16:33 +02:00
|
|
|
render(){
|
2020-06-14 19:23:40 +02:00
|
|
|
let [
|
|
|
|
flexModule,
|
|
|
|
euhModule1,
|
|
|
|
buttonModule,
|
|
|
|
colorsModule,
|
|
|
|
] = this.modules
|
2020-06-10 16:16:33 +02:00
|
|
|
|
|
|
|
return (<div className={buttonModule.buttonWrapper}>
|
|
|
|
<button type="button" className={`${flexModule.flexChild} ${euhModule1.button} ${euhModule1.lookFilled} ${colorsModule.ButtonColors[this.props.color.toUpperCase()]} ${euhModule1.sizeSmall} ${euhModule1.grow}`} style={{flex: "0 1 auto"}} onClick={this.props.onClick}>
|
|
|
|
<div className={euhModule1.contents}>{this.props.text}</div>
|
|
|
|
</button>
|
|
|
|
</div>)
|
|
|
|
}
|
2020-06-16 15:51:21 +02:00
|
|
|
|
|
|
|
static get AllPreviews(){
|
|
|
|
return AllPreviews || (AllPreviews = [
|
|
|
|
|
|
|
|
])
|
|
|
|
}
|
2020-06-10 16:16:33 +02:00
|
|
|
}
|
|
|
|
|
2020-06-16 15:51:21 +02:00
|
|
|
|
|
|
|
|
2020-06-10 16:16:33 +02:00
|
|
|
export type ButtonColor = "brand" | "grey" | "red" | "green" | "yellow" | "primary" | "link" | "white" | "black" | "transparent"
|