-
Notifications
You must be signed in to change notification settings - Fork 11
Description
Is your feature request related to a problem? Please describe.
When using <SelectLight>, currently you must always handle the change event yourself. This means that you must create a JavaScript event handler to update the value, like so:
<SelectLight
@value={{this.selected}}
@options={{array "turtle" "tortoise"}}
@change={{this.handleChange}}
/>class MyComponent extends Component {
@tracked selected = "turtle";
handleChange = (event) => {
this.selected = event.target.selectedOptions[0].value;
};
}This is a lot of boilerplate to write, and also means that you can't use a conventional solution like ember-set-helper or {{mut}} to update a value with this component.
Describe the solution you'd like
Instead of passing the event as the first value to @change, I think it would be better to pass the value of the newly selected option (or options if there are multiple):
class MyComponent extends Component {
@tracked selected = "turtle";
handleChange = (value, event) => {
this.selected = value;
};
}This could be used conventionally with {{set}} from ember-set-helper like so:
<SelectLight
@value={{this.selected}}
@options={{array "turtle" "tortoise"}}
@change={{set this "selected"}}
/>I think the event could still be provided as the second parameter, there are definitely cases where the user may want to do something a bit more custom and may need access to the original event.
Describe alternatives you've considered
This could possibly be provided as a separate API, @changeValue (name is definitely bikesheddable), but IMO this would be a bit confusing, since there would be multiple event handlers at that point.