- Notifications
You must be signed in to change notification settings - Fork97
Description
Problem
Currentlydata-hotkey-scope
only supports matching the (event.target
i.e. the scope) as anid
, this has a few limitations:
- I may want to specify multiple elements as the scope for my hotkey.
- I may need to specify an element rendered by a third part library as my scope and do not have access to set an
id
on that element. (This is my current actual issue). - Likely there are other uses-cases where an
id
doesn't work as a selector...
Suggestion
Add the ability to specify a class-name instead of an id fordata-hotkey-scope
.
Some possible API thoughts:
Support a 'mini selector syntax'
The API could be updated to take a#
prefix (forid
) or.
prefix (forclass
name). We could continue to treat an un-prefixed value as an id:
<buttondata-hotkey-scope=".my-scope-class-name"/><buttondata-hotkey-scope="#my-scope-id"/><buttondata-hotkey-scope="my-scope-id"/><!-- legacy support -->
Add new data-attributes:
We could adddata-hotkey-scope-class
anddata-hotkey-scope-id
attributes. Again we could continue to treat the existingdata-hotkey-scope
as an id scope.
<buttondata-hotkey-scope-class="my-scope-class-name"/><buttondata-hotkey-scope-id="my-scope-id"/><buttondata-hotkey-scope="my-scope-id"/><!-- legacy support -->
Considerations
Why not allow full css-selector syntax?
I thought about the possibility of extendingdata-hotkey-scope
to support full css selector syntax likedata-hotkey-scope="div#parent > .target-element"
... but after talking this over with@keithamus we decided the complexity and likely performance cost of such an API would not be worth it given thatid
andclass
name already support many use-cases.