Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: WAI-ARIA role #181

Closed
wants to merge 3 commits into from
Closed

feat: WAI-ARIA role #181

wants to merge 3 commits into from

Conversation

akabekobeko
Copy link
Member

refs: #28

VFM v2 残件のうち対応が容易そうだったので、WAI-ARIA role を実装してみました。記法の追加ではなく #28 (comment) のように DPUB-ARIA へ定義されているクラス名を持つ要素があれば対応する role を doc-xxxx として追加します。

@akabekobeko akabekobeko added this to the v2.0.0 milestone Oct 15, 2023
@akabekobeko akabekobeko self-assigned this Oct 15, 2023
@akabekobeko akabekobeko requested review from MurakamiShinyu and removed request for MurakamiShinyu October 15, 2023 09:12
@akabekobeko akabekobeko marked this pull request as draft October 15, 2023 09:17
Comment on lines +64 to +67
// Skip if the role already exists.
if (node.properties.role) {
return;
}
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

HTML で role="role1 role2" のようにして HAST を出力したところ Array ではなく String でした。role の性質としても単一の役割になるのでそう解析されるのだと思われます。

これを考慮して既に role 属性がある場合は処理をスキップするようにしました。

Comment on lines +69 to +76
// Set the first target class found to role.
for (const className of node.properties.className) {
if (typeof className === 'string' && targetClassNames.includes(className)) {
node.properties.role = `doc-${className}`;
break;
}
}
};
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

role が単一となるように、WAI-ARIA 対象のクラスが複数あっても最初に見つかったものだけ処理しています。

@akabekobeko akabekobeko marked this pull request as ready for review October 15, 2023 09:44
@MurakamiShinyu
Copy link
Member

## Abstract {.abstract} のように見出しを指定したとき、

<section class="level2" aria-labelledby="abstract">
  <h2 class="abstract" id="abstract" role="doc-abstract">Abstract</h2>
  <p>This is an abstract.</p>
</section>

ではなくて

<section class="level2" aria-labelledby="abstract" role="doc-abstract">
  <h2 class="abstract" id="abstract">Abstract</h2>
  <p>This is an abstract.</p>
</section>

となるべきです。

https://w3c.github.io/dpub-aria/#doc-abstract
で、

Superclass Role: section

とされてます。sectionのrole属性にする必要があります。sectionを生成する見出しに指定されたときのroleはすべてsectionのほうに指定するのでよいと思います。

@akabekobeko
Copy link
Member Author

@MurakamiShinyu
この role は section のみを対応とするのでしょうか?
であれば実装方法として HAST ではなく section 処理のほうにしたほうがよいので PR を破棄します。

@MurakamiShinyu
Copy link
Member

@MurakamiShinyu この role は section のみを対応とするのでしょうか? であれば実装方法として HAST ではなく section 処理のほうにしたほうがよいので PR を破棄します。

はい、セクション化の処理での対応だけでよいと思います。それからフェンス記法をサポートしたら、そのときに。

@akabekobeko
Copy link
Member Author

はい、セクション化の処理での対応だけでよいと思います。それからフェンス記法をサポートしたら、そのときに。

とのことなので本 PR は破棄します。時間がとれたらセクション処理の改善として別途 PR 出します。

@akabekobeko akabekobeko deleted the feat/wai-aria-role branch October 15, 2023 23:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants