github / github/hotkey

Add support for class-name as `data-hotkey-scope`

未关闭
#55 0 条评论 1 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
JavaScript
星标
3.3k
派生
99
平均合并
14 小时 22 分钟
30 天内合并 PR
6

描述

## Problem

Currently `data-hotkey-scope` only supports matching the (`event.target` i.e. the scope) as an `id`, this has a few limitations:

1. I may want to specify multiple elements as the scope for my hotkey.
2. 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).
3. 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 for `data-hotkey-scope`.

### Some possible API thoughts:

#### Support a 'mini selector syntax'

The API could be updated to take a `#` prefix (for `id`) or `.` prefix (for `class` name). We could continue to treat an un-prefixed value as an id:

```html


```

#### Add new data-attributes:

We could add `data-hotkey-scope-class` and `data-hotkey-scope-id` attributes. Again we could continue to treat the existing `data-hotkey-scope` as an id scope.

```html


```

## Considerations

### Why not allow full css-selector syntax?

I thought about the possibility of extending `data-hotkey-scope` to support full css selector syntax like `data-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 that `id` and `class` name already support many use-cases.

贡献指南

打开贡献指南

调研方向

Start by locating the code that reads and matches the data-hotkey-scope attribute, then inspect any related tests or examples. Compare the proposed class-name syntax with the alternative data attributes and verify that existing id behavior remains supported. Done means multiple scoped elements can be addressed without full CSS-selector support, with the chosen API covered by tests.

由索引模型根据 Issue 内容生成。

评估

技术栈
javascript
领域
frontend
Issue 类型
功能
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
基本清楚
新手友好度
45/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。