github / github/hotkey

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

Đang mở
#55 0 bình luận 1 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
JavaScript
Star
3.3k
Fork
99
Merge trung bình
14 giờ 22 phút
Pull request đã merge (30 ngày)
6

Mô tả

## 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.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

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.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
javascript
Lĩnh vực
frontend
Loại issue
Tính năng
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
45/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.