hotwired / stimulus

A modest JavaScript framework for the HTML you already have
https://stimulus.hotwired.dev/
MIT License
12.67k stars 421 forks source link

Allow for default method for controller actions #756

Open pythonandchips opened 6 months ago

pythonandchips commented 6 months ago

Hi, I raised the possibility of allowing for devs to omit the method on an action and use a default method in issue #754 and put together a PR to see if there is any interest in this.

This allows for actions to omit the method and use _ as the method name on the controller. This will make it simpiler to use single method controllers.

For example if we have a controller that disables an element before we would write something like this:-

  <button data-controller="disable" data-action="click->disable#disable">Disable on click</button>
class DisableController extends Controller {
  disable({target}) {
    target.disabled = true
  }
}

After we can shorten the data-action attribute like this:-

  <button data-controller="disable" data-action="click->disable">Disable on click</button>
class DisableController extends Controller {
  _({target}) {
    target.disabled = true
  }
}

This makes it easier for developers to write the controller as they can give the controller a clear name and not have to construct a name for the method when its not needed.