mirror of
https://github.com/maputnik/editor.git
synced 2025-12-10 00:00:02 +00:00
In this PR I have changed some of the jsx files to tsx file. I'm starting off with the "leafs" so that migration of the rest will be easier, hopefully. What I'm basically doing is taking a jsx file, copy paste it into: https://mskelton.dev/ratchet And after that I'm fixing the types as needed. It's not a very long process. Hopefully more PRs will follow and this will be over soon. I don't plan to migrate the storybook as I generally don't understand why is it useful, I'll open an issue to see if anyone thinks differently.
42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import React from 'react'
|
|
import classnames from 'classnames'
|
|
|
|
export type InputMultiInputProps = {
|
|
name?: string
|
|
value: string
|
|
options: any[]
|
|
onChange(...args: unknown[]): unknown
|
|
'aria-label'?: string
|
|
};
|
|
|
|
export default class InputMultiInput extends React.Component<InputMultiInputProps> {
|
|
render() {
|
|
let options = this.props.options
|
|
if(options.length > 0 && !Array.isArray(options[0])) {
|
|
options = options.map(v => [v, v])
|
|
}
|
|
|
|
const selectedValue = this.props.value || options[0][0]
|
|
const radios = options.map(([val, label])=> {
|
|
return <label
|
|
key={val}
|
|
className={classnames("maputnik-radio-as-button", {"maputnik-button-selected": val === selectedValue})}
|
|
>
|
|
<input type="radio"
|
|
name={this.props.name}
|
|
onChange={_e => this.props.onChange(val)}
|
|
value={val}
|
|
checked={val === selectedValue}
|
|
/>
|
|
{label}
|
|
</label>
|
|
})
|
|
|
|
return <fieldset className="maputnik-multibutton" aria-label={this.props['aria-label']}>
|
|
{radios}
|
|
</fieldset>
|
|
}
|
|
}
|
|
|
|
|