@markuplint/html-spec 4.0.0-alpha.5 → 4.0.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/LICENSE +1 -1
  2. package/index.json +62 -55
  3. package/package.json +5 -5
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2017-2023 Yusuke Hirao
3
+ Copyright (c) 2017-2024 Yusuke Hirao
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/index.json CHANGED
@@ -706,7 +706,8 @@
706
706
  "opener",
707
707
  "prev",
708
708
  "search",
709
- "tag"
709
+ "tag",
710
+ "terms-of-service"
710
711
  ]
711
712
  },
712
713
  "unique": true,
@@ -2893,7 +2894,7 @@
2893
2894
  },
2894
2895
  {
2895
2896
  "name": "cell",
2896
- "description": "A cell in a tabular container. See related gridcell.\n\nAuthors MUST ensure elements with role cell are contained in, or owned by, an element with the role row.",
2897
+ "description": "A cell in a tabular container. See related gridcell.\n\nAuthors MUST ensure elements with role cell are the accessibility children of an element with the role row.",
2897
2898
  "generalization": ["section"],
2898
2899
  "requiredContextRole": ["row"],
2899
2900
  "requiredOwnedElements": [],
@@ -3250,7 +3251,7 @@
3250
3251
  },
3251
3252
  {
3252
3253
  "name": "columnheader",
3253
- "description": "A cell containing header information for a column.\n\ncolumnheader can be used as a column header in a table or grid. It could also be used in a pie chart to show a similar relationship in the data.\n\nThe columnheader establishes a relationship between it and all cells in the corresponding column. It is the structural equivalent to an HTML th element with a column scope.\n\nAuthors MUST ensure elements with role columnheader are contained in, or owned by, an element with the role row.\n\nApplying the aria-selected state on a columnheader MUST not cause the user agent to automatically propagate the aria-selected state to all the cells in the corresponding column. An author MAY choose to propagate selection in this manner depending on the specific application.\n\nWhile the columnheader role can be used in both interactive grids and non-interactive tables, the use of aria-readonly and aria-required is only applicable to interactive elements. Therefore, authors SHOULD NOT use aria-required or aria-readonly in a columnheader that descends from a table, and user agents SHOULD NOT expose either property to assistive technologies unless the columnheader descends from a grid.\n\nBecause cells are organized into rows, there is not a single container element for the column. The column is the set of gridcell elements in a particular position within their respective row containers.\n\nWhile aria-disabled is currently supported on columnheader, in a future version the working group plans to prohibit its use on elements with role columnheader except when the element is in the context of a grid or treegrid.",
3254
+ "description": "A cell containing header information for a column.\n\ncolumnheader can be used as a column header in a table or grid. It could also be used in a pie chart to show a similar relationship in the data.\n\nThe columnheader establishes a relationship between it and all cells in the corresponding column. It is the structural equivalent to an HTML th element with a column scope.\n\nAuthors MUST ensure elements with role columnheader are the accessibility children of an element with the role row.\n\nApplying the aria-selected state on a columnheader MUST not cause the user agent to automatically propagate the aria-selected state to all the cells in the corresponding column. An author MAY choose to propagate selection in this manner depending on the specific application.\n\nWhile the columnheader role can be used in both interactive grids and non-interactive tables, the use of aria-readonly and aria-required is only applicable to interactive elements. Therefore, authors SHOULD NOT use aria-required or aria-readonly in a columnheader that descends from a table, and user agents SHOULD NOT expose either property to assistive technologies unless the columnheader descends from a grid.\n\nBecause cells are organized into rows, there is not a single container element for the column. The column is the set of gridcell elements in a particular position within their respective row containers.\n\nWhile aria-disabled is currently supported on columnheader, in a future version the working group plans to prohibit its use on elements with role columnheader except when the element is in the context of a grid or treegrid.",
3254
3255
  "generalization": ["cell", "gridcell", "sectionhead"],
3255
3256
  "requiredContextRole": ["row"],
3256
3257
  "requiredOwnedElements": [],
@@ -3877,7 +3878,7 @@
3877
3878
  },
3878
3879
  {
3879
3880
  "name": "composite",
3880
- "description": "A widget that can contain navigable descendants or owned children.\n\nAuthors SHOULD ensure that a composite widget exists as a single navigation stop within the larger navigation system of the web page. Once the composite widget has focus, authors SHOULD provide a separate navigation mechanism for users to navigate to elements that are descendants or owned children of the composite element.\n\ncomposite is an abstract role used for the ontology. Authors MUST NOT use composite role in content.",
3881
+ "description": "A widget that can contain navigable accessibility descendants.\n\nAuthors SHOULD ensure that a composite widget exists as a single navigation stop within the larger navigation system of the web page. Once the composite widget has focus, authors SHOULD provide a separate navigation mechanism for users to navigate to elements that are accessibility descendants of the composite element.\n\ncomposite is an abstract role used for the ontology. Authors MUST NOT use composite role in content.",
3881
3882
  "isAbstract": true,
3882
3883
  "generalization": ["widget"],
3883
3884
  "requiredContextRole": [],
@@ -5201,7 +5202,7 @@
5201
5202
  },
5202
5203
  {
5203
5204
  "name": "grid",
5204
- "description": "A composite widget containing a collection of one or more rows with one or more cells where some or all cells in the grid are focusable by using methods of two-dimensional navigation, such as directional arrow keys.\n\nThe grid role does not imply a specific visual, e.g., tabular, presentation. It describes relationships among elements. It can be used for purposes as simple as grouping a collection of checkboxes or navigation links or as complex as creating a full-featured spreadsheet application.\n\nThe cell elements of a grid have role gridcell. Authors MAY designate a cell as a row or column header by using either the rowheader or columnheader role in lieu of the gridcell role. Authors MUST ensure elements with role gridcell, columnheader, or rowheader are owned by elements with role row, which are in turn owned by an element with role rowgroup, or grid.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants of a grid as described in Managing Focus. When a user is navigating the grid content with a keyboard, authors SHOULD set focus as follows:\n\nAuthors SHOULD provide a mechanism for changing to an interaction or edit mode that allows users to navigate and interact with content contained inside a focusable cell if that focusable cell contains any of the following:\n\nFor example, if a cell in a spreadsheet contains a combobox or editable text, the Enter key might be used to activate a cell interaction or editing mode when that cell has focus so the directional arrow keys can be used to operate the contained combobox or textbox. Depending on the implementation, pressing Enter again, Tab, Escape, or another key might switch the application back to the grid navigation mode.\n\nAuthors MAY use a gridcell to display the result of a formula, which could be editable by the user. In a spreadsheet application, for example, a gridcell might show a value calculated from a formula until the user activates the gridcell for editing when a textbox appears in the gridcell containing the formula in an editable state.\n\nIf aria-readonly is set on an element with role grid, user agents MUST propagate the value to all gridcell elements owned by the grid and expose the value in the accessibility API. An author MAY override the propagated value of aria-readonly for an individual gridcell element.\n\nIn a grid that provides cell content editing functions, if the content of a focusable gridcell element is not editable, authors MAY set aria-readonly to true on the gridcell element. However, the value of aria-readonly, whether specified for a grid or individual cells, only indicates whether the content contained in cells is editable. It does not represent availability of functions for navigating or manipulating the grid itself.\n\nAn unspecified value for aria-readonly does not imply that a grid or a gridcell contains editable content. For example, if a grid presents a collection of elements that are not editable, such as a collection of link elements representing dates in a datepicker, it is not necessary for the author to specify a value for aria-readonly.\n\nAuthors MAY indicate that a focusable gridcell is selectable as the object of an action with the aria-selected attribute. If the grid allows multiple gridcells to be selected, the author SHOULD set aria-multiselectable to true on the element with role grid.\n\nSince WAI-ARIA can augment an element of the host language, a grid can reuse the elements and attributes of a native table, such as an HTML table element. For example, if an author applies the grid role to an HTML table element, the author does not need to apply the row and gridcell roles to the descendant HTML tr and td elements because the user agent will automatically make the appropriate translations. When the author is reusing a native host language table element and needs a gridcell element to span multiple rows or columns, the author SHOULD apply the appropriate host language attributes instead of WAI-ARIA aria-rowspan or aria-colspan properties.\n\nSee the WAI-ARIA Authoring Practices for additional details on implementing grid design patterns.",
5205
+ "description": "A composite widget containing a collection of one or more rows with one or more cells where some or all cells in the grid are focusable by using methods of two-dimensional navigation, such as directional arrow keys.\n\nThe grid role does not imply a specific visual, e.g., tabular, presentation. It describes relationships among elements. It can be used for purposes as simple as grouping a collection of checkboxes or navigation links or as complex as creating a full-featured spreadsheet application.\n\nThe cell elements of a grid have role gridcell. Authors MAY designate a cell as a row or column header by using either the rowheader or columnheader role in lieu of the gridcell role. Authors MUST ensure elements with role gridcell, columnheader, or rowheader are accessibility children of elements with role row, which are in turn are accessibility children of an element with role rowgroup, or grid.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants of a grid as described in Managing Focus. When a user is navigating the grid content with a keyboard, authors SHOULD set focus as follows:\n\nAuthors SHOULD provide a mechanism for changing to an interaction or edit mode that allows users to navigate and interact with content contained inside a focusable cell if that focusable cell contains any of the following:\n\nFor example, if a cell in a spreadsheet contains a combobox or editable text, the Enter key might be used to activate a cell interaction or editing mode when that cell has focus so the directional arrow keys can be used to operate the contained combobox or textbox. Depending on the implementation, pressing Enter again, Tab, Escape, or another key might switch the application back to the grid navigation mode.\n\nAuthors MAY use a gridcell to display the result of a formula, which could be editable by the user. In a spreadsheet application, for example, a gridcell might show a value calculated from a formula until the user activates the gridcell for editing when a textbox appears in the gridcell containing the formula in an editable state.\n\nIf aria-readonly is set on an element with role grid, user agents MUST propagate the value to all gridcell elements that are accessibility descendants of that grid and expose the value in the accessibility API. An author MAY override the propagated value of aria-readonly for an individual gridcell element.\n\nIn a grid that provides cell content editing functions, if the content of a focusable gridcell element is not editable, authors MAY set aria-readonly to true on the gridcell element. However, the value of aria-readonly, whether specified for a grid or individual cells, only indicates whether the content contained in cells is editable. It does not represent availability of functions for navigating or manipulating the grid itself.\n\nAn unspecified value for aria-readonly does not imply that a grid or a gridcell contains editable content. For example, if a grid presents a collection of elements that are not editable, such as a collection of link elements representing dates in a datepicker, it is not necessary for the author to specify a value for aria-readonly.\n\nAuthors MAY indicate that a focusable gridcell is selectable as the object of an action with the aria-selected attribute. If the grid allows multiple gridcells to be selected, the author SHOULD set aria-multiselectable to true on the element with role grid.\n\nSince WAI-ARIA can augment an element of the host language, a grid can reuse the elements and attributes of a native table, such as an HTML table element. For example, if an author applies the grid role to an HTML table element, the author does not need to apply the row and gridcell roles to the descendant HTML tr and td elements because the user agent will automatically make the appropriate translations. When the author is reusing a native host language table element and needs a gridcell element to span multiple rows or columns, the author SHOULD apply the appropriate host language attributes instead of WAI-ARIA aria-rowspan or aria-colspan properties.\n\nSee the WAI-ARIA Authoring Practices for additional details on implementing grid design patterns.",
5205
5206
  "generalization": ["composite", "table"],
5206
5207
  "requiredContextRole": [],
5207
5208
  "requiredOwnedElements": ["caption", "row", "rowgroup > row"],
@@ -5332,7 +5333,7 @@
5332
5333
  },
5333
5334
  {
5334
5335
  "name": "gridcell",
5335
- "description": "A cell in a grid or treegrid.\n\nA gridcell can be focusable, editable, and selectable. A gridcell can have relationships such as aria-controls to address the application of functional relationships.\n\nIf an author intends a gridcell to have a row header, column header, or both, and if the relevant headers cannot be determined from the DOM structure, authors SHOULD explicitly indicate which header cells are relevant to the gridcell by applying aria-describedby on the gridcell and referencing elements with role rowheader or columnheader.\n\nIn a treegrid, authors MAY define a gridcell as expandable by using the aria-expanded attribute. If the aria-expanded attribute is provided, it applies only to the individual cell. It is not a proxy for the container row, which also can be expanded. The main use case for providing this attribute on a gridcell is pivot table behavior.\n\nAuthors MUST ensure elements with role gridcell are contained in, or owned by, an element with the role row.",
5336
+ "description": "A cell in a grid or treegrid.\n\nA gridcell can be focusable, editable, and selectable. A gridcell can have relationships such as aria-controls to address the application of functional relationships.\n\nIf an author intends a gridcell to have a row header, column header, or both, and if the relevant headers cannot be determined from the DOM structure, authors SHOULD explicitly indicate which header cells are relevant to the gridcell by applying aria-describedby on the gridcell and referencing elements with role rowheader or columnheader.\n\nIn a treegrid, authors MAY define a gridcell as expandable by using the aria-expanded attribute. If the aria-expanded attribute is provided, it applies only to the individual cell. It is not a proxy for the container row, which also can be expanded. The main use case for providing this attribute on a gridcell is pivot table behavior.\n\nAuthors MUST ensure elements with role gridcell are accessibility children of an element with the role row.",
5336
5337
  "generalization": ["cell", "widget"],
5337
5338
  "requiredContextRole": ["row"],
5338
5339
  "requiredOwnedElements": [],
@@ -6521,7 +6522,7 @@
6521
6522
  },
6522
6523
  {
6523
6524
  "name": "listitem",
6524
- "description": "A single item in a list or directory.\n\nAuthors MUST ensure elements whose role is listitem are contained in, or owned by, an element whose role is list.",
6525
+ "description": "A single item in a list or directory.\n\nAuthors MUST ensure elements whose role is listitem are accessibility children of an element whose role is list.",
6525
6526
  "generalization": ["section"],
6526
6527
  "requiredContextRole": ["directory", "list"],
6527
6528
  "requiredOwnedElements": [],
@@ -7457,7 +7458,7 @@
7457
7458
  },
7458
7459
  {
7459
7460
  "name": "menuitem",
7460
- "description": "An option in a set of choices contained by a menu or menubar.\n\nAuthors MUST ensure elements with role menuitem are contained in, or owned by, an element with role menu or an element with role group that is contained in, or owned by, an element with role menu.\n\nAuthors MAY disable a menu item with the aria-disabled attribute. If the menu item has its aria-haspopup attribute set to true, it indicates that the menu item can be used to launch a sub-level menu, and authors SHOULD display a new sub-level menu when the menu item is activated.\n\nIn order to identify that they are related widgets, authors MUST ensure that menu items are owned by an element with role menu or menubar. Authors MAY separate menu items into sets by use of a separator or an element with an equivalent role from the native markup language.",
7461
+ "description": "An option in a set of choices contained by a menu or menubar.\n\nAuthors MUST ensure elements with role menuitem are accessibility children of an element with role menu or an element with role group that is an accessibility child of an element with role menu.\n\nAuthors MAY disable a menu item with the aria-disabled attribute. If the menu item has its aria-haspopup attribute set to true, it indicates that the menu item can be used to launch a sub-level menu, and authors SHOULD display a new sub-level menu when the menu item is activated.\n\nIn order to identify that they are related widgets, authors MUST ensure that menu items are accessibility descendants of an element with role menu or menubar. Authors MAY separate menu items into sets by use of a separator or an element with an equivalent role from the native markup language.",
7461
7462
  "generalization": ["command"],
7462
7463
  "requiredContextRole": ["menu", "menubar", "menu > group", "menubar > group"],
7463
7464
  "requiredOwnedElements": [],
@@ -7576,7 +7577,7 @@
7576
7577
  },
7577
7578
  {
7578
7579
  "name": "menuitemcheckbox",
7579
- "description": "A menuitem with a checkable state whose possible values are true, false, or mixed.\n\nAuthors MUST ensure elements with role menuitemcheckbox are contained in, or owned by, an element with role menu or an element with role group that is contained in, or owned by, an element with role menu.\n\nThe aria-checked attribute of a menuitemcheckbox indicates whether the menu item is checked (true), unchecked (false), or represents a sub-level menu of other menu items that have a mixture of checked and unchecked values (mixed).\n\nIn order to identify that they are related widgets, authors MUST ensure that menu item checkboxes are owned by an element with role menu or menubar. Authors MAY separate menu items into sets by use of a separator or an element with an equivalent role from the native markup language.",
7580
+ "description": "A menuitem with a checkable state whose possible values are true, false, or mixed.\n\nAuthors MUST ensure elements with role menuitemcheckbox are accessibility children of an element with role menu or an element with role group that is the accessibility child of an element with role menu.\n\nThe aria-checked attribute of a menuitemcheckbox indicates whether the menu item is checked (true), unchecked (false), or represents a sub-level menu of other menu items that have a mixture of checked and unchecked values (mixed).\n\nIn order to identify that they are related widgets, authors MUST ensure that menu item checkboxes are the accessibility descendants of an element with role menu or menubar. Authors MAY separate menu items into sets by use of a separator or an element with an equivalent role from the native markup language.",
7580
7581
  "generalization": ["menuitem"],
7581
7582
  "requiredContextRole": ["menu", "menubar", "menu > group", "menubar > group"],
7582
7583
  "requiredOwnedElements": [],
@@ -7705,7 +7706,7 @@
7705
7706
  },
7706
7707
  {
7707
7708
  "name": "menuitemradio",
7708
- "description": "A checkable menuitem in a set of elements with the same role, only one of which can be checked at a time.\n\nAuthors MUST ensure elements with role menuitemradio are contained in, or owned by, an element with role menu or an element with role group that is contained in, or owned by, an element with role menu.\n\nAuthors SHOULD enforce that only one menuitemradio in a group can be checked at the same time. When one item in the group is checked, the previously checked item becomes unchecked (its aria-checked attribute becomes false).\n\nIn order to identify that they are related widgets, authors MUST ensure that menu item radios are owned by an element with role menu or menubar, or by a role group which itself is owned by an element with role menu or menubar.\n\nIf a menu or menubar contains more than one group of menuitemradio elements, or if the menu contains one group and other, unrelated menu items, authors SHOULD contain each set of related menuitemradio elements in an element using the group role. Authors MAY also delimit the group from other menu items with an element using the separator role, or an element with an equivalent role from the native markup language.",
7709
+ "description": "A checkable menuitem in a set of elements with the same role, only one of which can be checked at a time.\n\nAuthors MUST ensure elements with role menuitemradio are accessibility children of an element with role menu or of an element with role group that is the accessibility child of an element with role menu.\n\nAuthors SHOULD enforce that only one menuitemradio in a group can be checked at the same time. When one item in the group is checked, the previously checked item becomes unchecked (its aria-checked attribute becomes false).\n\nIn order to identify that they are related widgets, authors MUST ensure that menu item radios are accessibility descendants of an element with role menu or menubar.\n\nIf a menu or menubar contains more than one group of menuitemradio elements, or if the menu contains one group and other, unrelated menu items, authors SHOULD contain each set of related menuitemradio elements in an element using the group role. Authors MAY also delimit the group from other menu items with an element using the separator role, or an element with an equivalent role from the native markup language.",
7709
7710
  "generalization": ["menuitem"],
7710
7711
  "requiredContextRole": ["menu", "menubar", "menu > group", "menubar > group"],
7711
7712
  "requiredOwnedElements": [],
@@ -8079,7 +8080,7 @@
8079
8080
  },
8080
8081
  {
8081
8082
  "name": "none",
8082
- "description": "An element whose implicit native role semantics will not be mapped to the accessibility API. See synonym presentation.\n\nIn ARIA 1.1, the working group introduced none as a synonym to the presentation role, due to author confusion surrounding the intended meaning of the word \"presentation\" or \"presentational.\" Many individuals erroneously consider role=\"presentation\" to be synonymous with aria-hidden=\"true\", and we believe role=\"none\" conveys the actual meaning more unambiguously.\n\nThe intended use is when an element is used to change the look of the page but does not have all the functional, interactive, or structural relevance implied by the element type, or can be used to provide for an accessible fallback in older browsers that do not support WAI-ARIA.\n\nExample use cases:\n\nFor any element with a role of none/presentation and which is not focusable, the user agent MUST NOT expose the implicit native semantics of the element (the role and its states and properties) to accessibility APIs. However, the user agent MUST expose content and descendant elements that do not have an explicit or inherited role of none/presentation. Thus, the none/presentation role causes a given element to be treated as having no role or to be removed from the accessibility tree, but does not cause the content contained within the element to be removed from the accessibility tree.\n\nFor example, the following two markup snippets will be exposed similarly to an accessibility API.\n\nIn HTML, the <img> element is treated as a single entity regardless of the type of image file. Consequently, using role=\"none\" or role=\"presentation\" on an HTML img is equivalent to using aria-hidden=\"true\". In order to make the image contents accessible, authors can embed the object using an <object> or <iframe> element, or use inline SVG code, and follow the accessibility guidelines for the image content.\n\nAuthors SHOULD NOT provide meaningful alternative text (for example, use alt=\"\" in HTML) when the none/presentation role is applied to an image.\n\nIn the following code sample, the containing img and is appropriately labeled by the caption paragraph. In this example the img element can be marked as none/presentation because the role and the text alternatives are provided by the containing element.\n\nIn the following code sample, because the anchor (HTML a element) is acting as the treeitem, the list item (HTML li element) is assigned an explicit WAI-ARIA role of none/presentation to override the user agent's implicit native semantics for list items.\n\nThe none/presentation role is used on an element that has implicit native semantics, meaning that there is a default accessibility API role for the element. Some elements are only complete when additional descendant elements are provided. For example, in HTML, table elements (matching the table role) require tr descendants (which have an implicit row role), which in turn require th or td children (the columnheader or rowheader and cell roles, respectively). Similarly, lists require list item children. The descendant elements that complete the semantics of an element are described in WAI-ARIA as Allowed Accessibility Child Roles.\n\nWhen an explicit or inherited role of none/presentation is applied to an element with the implicit semantic of a WAI-ARIA role that has Allowed Accessibility Child Roles, in addition to the element with the explicit role of none/presentation, the user agent MUST apply an inherited role of none to any owned elements that do not have an explicit role defined. Also, when an explicit or inherited role of none/presentation is applied to a host language element which has specifically allowed children as defined by the host language specification, in addition to the element with the explicit role of none/presentation, the user agent MUST apply an inherited role of none to any specifically allowed children that do not have an explicit role defined.\n\nFor any element with an explicit or inherited role of none/presentation and which is not focusable, user agents MUST ignore role-specific WAI-ARIA states and properties for that element. For example, in HTML, a ul or ol element with a role of none/presentation will have the implicit native semantics of its li elements removed because the list role to which the ul or ol corresponds has an Allowed Accessibility Child Role of listitem. Likewise, the implicit native semantics of an HTML table element's thead/tbody/tfoot/tr/th/td descendants will also be removed, because the HTML specification indicates that these are required structural descendants of the table element.\n\nOnly the implicit native semantics of elements that correspond to WAI-ARIA Allowed Accessibility Child Roles are removed. All other content remains intact, including nested tables or lists, unless those elements also have an explicit role of none/presentation specified.\n\nFor example, according to an accessibility API, the following markup elements might have identical or very similar role semantics (generic or none role) and identical content.\n\nThere are other WAI-ARIA roles with specific allowed children for which this situation is applicable (e.g., feeds and listboxes), but tables and lists are the most common real-world cases in which the none/presentation inheritance is likely to apply.\n\nFor any element with an explicit or inherited role of none/presentation, user agents MUST apply an inherited role of none to all host-language-specific labeling elements for the presentational element. For example, a table element with a role of none/presentation will have the implicit native semantics of its caption element removed, because the caption is merely a label for the presentational table.\n\nInformation about resolving conflicts in the none/presentation role has been moved to Handling Author Errors",
8083
+ "description": "An element whose implicit native role semantics will not be mapped to the accessibility API. See synonym presentation.\n\nIn ARIA 1.1, the working group introduced none as a synonym to the presentation role, due to author confusion surrounding the intended meaning of the word \"presentation\" or \"presentational.\" Many individuals erroneously consider role=\"presentation\" to be synonymous with aria-hidden=\"true\", and we believe role=\"none\" conveys the actual meaning more unambiguously.\n\nThe intended use is when an element is used to change the look of the page but does not have all the functional, interactive, or structural relevance implied by the element type, or can be used to provide for an accessible fallback in older browsers that do not support WAI-ARIA.\n\nExample use cases:\n\nFor any element with a role of none/presentation and which is not focusable, the user agent MUST NOT expose the implicit native semantics of the element (the role and its states and properties) to accessibility APIs. However, the user agent MUST expose content and descendant elements that do not have an explicit or inherited role of none/presentation. Thus, the none/presentation role causes a given element to be treated as having no role or to be removed from the accessibility tree, but does not cause the content contained within the element to be removed from the accessibility tree.\n\nFor example, the following two markup snippets will be exposed similarly to an accessibility API.\n\nIn HTML, the <img> element is treated as a single entity regardless of the type of image file. Consequently, using role=\"none\" or role=\"presentation\" on an HTML img is equivalent to using aria-hidden=\"true\". In order to make the image contents accessible, authors can embed the object using an <object> or <iframe> element, or use inline SVG code, and follow the accessibility guidelines for the image content.\n\nAuthors SHOULD NOT provide a meaningful text alternative (for example, use alt=\"\" in HTML) when the none/presentation role is applied to an image.\n\nIn the following code sample, the containing img and is appropriately labeled by the caption paragraph. In this example the img element can be marked as none/presentation because the role and the text alternatives are provided by the containing element.\n\nIn the following code sample, because the anchor (HTML a element) is acting as the treeitem, the list item (HTML li element) is assigned an explicit WAI-ARIA role of none/presentation to override the user agent's implicit native semantics for list items.\n\nThe none/presentation role is used on an element that has implicit native semantics, meaning that there is a default accessibility API role for the element. Some elements are only complete when additional descendant elements are provided. For example, in HTML, table elements (matching the table role) require tr descendants (which have an implicit row role), which in turn require th or td children (the columnheader or rowheader and cell roles, respectively). Similarly, lists require list item children. The descendant elements that complete the semantics of an element are described in WAI-ARIA as Allowed Accessibility Child Roles.\n\nWhen an explicit or inherited role of none/presentation is applied to an element with the implicit semantic of a WAI-ARIA role that has Allowed Accessibility Child Roles, in addition to the element with the explicit role of none/presentation, the user agent MUST apply an inherited role of none to any accessibility descendants that do not have an explicit role defined. Also, when an explicit or inherited role of none/presentation is applied to a host language element which has specifically allowed children as defined by the host language specification, in addition to the element with the explicit role of none/presentation, the user agent MUST apply an inherited role of none to any specifically allowed children that do not have an explicit role defined.\n\nFor any element with an explicit or inherited role of none/presentation and which is not focusable, user agents MUST ignore role-specific WAI-ARIA states and properties for that element. For example, in HTML, a ul or ol element with a role of none/presentation will have the implicit native semantics of its li elements removed because the list role to which the ul or ol corresponds has an Allowed Accessibility Child Role of listitem. Likewise, the implicit native semantics of an HTML table element's thead/tbody/tfoot/tr/th/td descendants will also be removed, because the HTML specification indicates that these are required structural descendants of the table element.\n\nOnly the implicit native semantics of elements that correspond to WAI-ARIA Allowed Accessibility Child Roles are removed. All other content remains intact, including nested tables or lists, unless those elements also have an explicit role of none/presentation specified.\n\nFor example, according to an accessibility API, the following markup elements might have identical or very similar role semantics (generic or none role) and identical content.\n\nThere are other WAI-ARIA roles with specific allowed children for which this situation is applicable (e.g., feeds and listboxes), but tables and lists are the most common real-world cases in which the none/presentation inheritance is likely to apply.\n\nFor any element with an explicit or inherited role of none/presentation, user agents MUST apply an inherited role of none to all host-language-specific labeling elements for the presentational element. For example, a table element with a role of none/presentation will have the implicit native semantics of its caption element removed, because the caption is merely a label for the presentational table.\n\nInformation about resolving conflicts in the none/presentation role has been moved to Handling Author Errors",
8083
8084
  "generalization": ["structure"],
8084
8085
  "requiredContextRole": [],
8085
8086
  "requiredOwnedElements": [],
@@ -8295,7 +8296,7 @@
8295
8296
  },
8296
8297
  {
8297
8298
  "name": "option",
8298
- "description": "An item in a listbox.\n\nAuthors MUST ensure elements with role option are contained in, or owned by, an element with role listbox or an element with role group that is contained in, or owned by, an element with role listbox. Options not associated with a listbox might not be correctly mapped to an accessibility API.\n\nIn certain conditions, a user agent MAY provide an implicit value for aria-selected for each option in a listbox, and if it does, the user agent MUST ensure the following conditions are met before providing an implicit value:\n\nIf a user agent provides an implicit aria-selected value for an option, the value SHOULD be true if the option has DOM focus or the listbox has DOM focus and the option is referenced by aria-activedescendant. Otherwise, if a user agent provides an implicit aria-selected value for an option, the value SHOULD be false.\n\nAuthors SHOULD indicate selection for option elements using one of the following:\n\nAuthors SHOULD NOT specify both aria-selected and aria-checked on option elements contained by the same listbox except in the extremely rare circumstances where all the following conditions are met:",
8299
+ "description": "An item in a listbox.\n\nAuthors MUST ensure elements with role option are accessibility children of an element with role listbox or of an element with role group that is the accessibility child of an element with role listbox. Options not associated with a listbox might not be correctly mapped to an accessibility API.\n\nIn certain conditions, a user agent MAY provide an implicit value for aria-selected for each option in a listbox, and if it does, the user agent MUST ensure the following conditions are met before providing an implicit value:\n\nIf a user agent provides an implicit aria-selected value for an option, the value SHOULD be true if the option has DOM focus or the listbox has DOM focus and the option is referenced by aria-activedescendant. Otherwise, if a user agent provides an implicit aria-selected value for an option, the value SHOULD be false.\n\nAuthors SHOULD indicate selection for option elements using one of the following:\n\nAuthors SHOULD NOT specify both aria-selected and aria-checked on option elements contained by the same listbox except in the extremely rare circumstances where all the following conditions are met:",
8299
8300
  "generalization": ["input"],
8300
8301
  "requiredContextRole": ["listbox", "listbox > group"],
8301
8302
  "requiredOwnedElements": [],
@@ -9335,16 +9336,9 @@
9335
9336
  },
9336
9337
  {
9337
9338
  "name": "row",
9338
- "description": "A row of cells in a tabular container.\n\nRows contain cell or gridcell elements, and thus serve to organize a table, grid, or treegrid.\n\nWhile the row role can be used in a table, grid, or treegrid, the semantics of aria-expanded, aria-posinset, aria-setsize, and aria-level are only applicable to the hierarchical structure of an interactive tree grid. Therefore, authors MUST NOT apply aria-expanded, aria-posinset, aria-setsize, and aria-level to a row that descends from a table or grid, and user agents SHOULD NOT expose any of these four properties to assistive technologies unless the row descends from a treegrid.\n\nAuthors MUST ensure elements with role row are contained in, or owned by, an element with the role table, grid, rowgroup, or treegrid.\n\nWhile aria-disabled is currently supported on row, in a future version the working group plans to prohibit its on elements with role row except when the element is in the context of a grid or treegrid.",
9339
+ "description": "A row of cells in a tabular container.\n\nRows contain cell or gridcell elements, and thus serve to organize a table, grid, or treegrid.\n\nWhile the row role can be used in a table, grid, or treegrid, the semantics of aria-expanded, aria-posinset, aria-setsize, and aria-level are only applicable to the hierarchical structure of an interactive tree grid. Therefore, authors MUST NOT apply aria-expanded, aria-posinset, aria-setsize, and aria-level to a row that descends from a table or grid, and user agents SHOULD NOT expose any of these four properties to assistive technologies unless the row descends from a treegrid.\n\nAuthors MUST ensure elements with role row are accessibility children of an element with the role table, grid, rowgroup, or treegrid.\n\nWhile aria-disabled is currently supported on row, in a future version the working group plans to prohibit its on elements with role row except when the element is in the context of a grid or treegrid.",
9339
9340
  "generalization": ["group", "widget"],
9340
- "requiredContextRole": [
9341
- "grid",
9342
- "table",
9343
- "treegrid",
9344
- "grid > rowgroup",
9345
- "table > rowgroup",
9346
- "treegrid > rowgroup"
9347
- ],
9341
+ "requiredContextRole": ["grid", "table", "treegrid", "rowgroup"],
9348
9342
  "requiredOwnedElements": ["cell", "columnheader", "gridcell", "rowheader"],
9349
9343
  "accessibleNameRequired": false,
9350
9344
  "accessibleNameFromAuthor": true,
@@ -9483,7 +9477,7 @@
9483
9477
  },
9484
9478
  {
9485
9479
  "name": "rowgroup",
9486
- "description": "A structure containing one or more row elements in a tabular container.\n\nThe rowgroup role establishes a relationship between owned row elements. It is a structural equivalent to the thead, tfoot, and tbody elements in an HTML table element.\n\nAuthors MUST ensure elements with role rowgroup are contained in, or owned by, an element with the role grid, table, or treegrid.\n\nThe rowgroup role exists, in part, to support role symmetry in HTML, and allows for the propagation of presentation inheritance on HTML table elements with an explicit presentation role applied.\n\nThis role does not differentiate between types of row groups (e.g., thead vs. tbody), but an issue has been raised for WAI-ARIA 2.0.",
9480
+ "description": "A structure containing one or more row elements in a tabular container.\n\nThe rowgroup role establishes a relationship with its accessibility children of role row. It is a structural equivalent to the thead, tfoot, and tbody elements in an HTML table element.\n\nAuthors MUST ensure elements with role rowgroup are accessibility children of an element with the role grid, table, or treegrid.\n\nThe rowgroup role exists, in part, to support role symmetry in HTML, and allows for the propagation of presentation inheritance on HTML table elements with an explicit presentation role applied.\n\nThis role does not differentiate between types of row groups (e.g., thead vs. tbody), but an issue has been raised for WAI-ARIA 2.0.",
9487
9481
  "generalization": ["structure"],
9488
9482
  "requiredContextRole": ["grid", "table", "treegrid"],
9489
9483
  "requiredOwnedElements": ["row"],
@@ -9597,7 +9591,7 @@
9597
9591
  },
9598
9592
  {
9599
9593
  "name": "rowheader",
9600
- "description": "A cell containing header information for a row.\n\nThe rowheader role can be used to identify a cell as a header for a row in a table, grid, or treegrid. The rowheader establishes a relationship between it and all cells in the corresponding row. It is a structural equivalent to setting scope=\"row\" on an HTML th element.\n\nAuthors MUST ensure elements with role rowheader are contained in, or owned by, an element with the role row.\n\nApplying the aria-selected state on a rowheader MUST NOT cause the user agent to automatically propagate the aria-selected state to all the cells in the corresponding row. An author MAY choose to propagate selection in this manner depending on the specific application.\n\nWhile the rowheader role can be used in both interactive grids and non-interactive tables, the use of aria-expanded, aria-readonly, and aria-required is only applicable to interactive elements. Therefore, authors SHOULD NOT use aria-expanded, aria-readonly, or aria-required in a rowheader that descends from a table, and user agents SHOULD NOT expose these properties to assistive technologies unless the rowheader descends from a grid or treegrid.\n\nWhile aria-disabled is currently supported on rowheader, in a future version the working group plans to prohibit its use on elements with role rowheader except when the element is in the context of a grid or treegrid.",
9594
+ "description": "A cell containing header information for a row.\n\nThe rowheader role can be used to identify a cell as a header for a row in a table, grid, or treegrid. The rowheader establishes a relationship between it and all cells in the corresponding row. It is a structural equivalent to setting scope=\"row\" on an HTML th element.\n\nAuthors MUST ensure elements with role rowheader are accessibility children of an element with the role row.\n\nApplying the aria-selected state on a rowheader MUST NOT cause the user agent to automatically propagate the aria-selected state to all the cells in the corresponding row. An author MAY choose to propagate selection in this manner depending on the specific application.\n\nWhile the rowheader role can be used in both interactive grids and non-interactive tables, the use of aria-expanded, aria-readonly, and aria-required is only applicable to interactive elements. Therefore, authors SHOULD NOT use aria-expanded, aria-readonly, or aria-required in a rowheader that descends from a table, and user agents SHOULD NOT expose these properties to assistive technologies unless the rowheader descends from a grid or treegrid.\n\nWhile aria-disabled is currently supported on rowheader, in a future version the working group plans to prohibit its use on elements with role rowheader except when the element is in the context of a grid or treegrid.",
9601
9595
  "generalization": ["cell", "gridcell", "sectionhead"],
9602
9596
  "requiredContextRole": ["row"],
9603
9597
  "requiredOwnedElements": [],
@@ -10735,7 +10729,7 @@
10735
10729
  },
10736
10730
  {
10737
10731
  "name": "spinbutton",
10738
- "description": "A form of range that expects the user to select from among discrete choices.\n\nA spinbutton typically allows users to change its displayed value by activating increment and decrement buttons that step through a set of allowed values. Some implementations display the value in an text field that allows editing and typing but typically limits input in ways that help prevent invalid values.\n\nAlthough a spinbutton is similar in appearance to many presentations of select, it is advisable to use spinbutton when working with known ranges (especially in the case of large ranges) as opposed to distinct options. For example, a spinbutton representing a range from 1 to 1,000,000 would provide much better performance than a select widget representing the same values.\n\nAuthors MAY create a spinbutton with children or owned elements, but MUST limit those elements to a textbox and/or two buttons. Alternatively, authors MAY apply the spinbutton role to a text input and create sibling buttons to support the increment and decrement functions.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus. When a spinbutton receives focus, authors SHOULD ensure focus is placed on the textbox element if one is present, and on the spinbutton itself otherwise. Authors SHOULD also ensure the up and down arrows on a keyboard perform the increment and decrement functions and that the increment and decrement button elements are NOT included in the primary navigation ring, e.g., the Tab ring in HTML.\n\nAuthors SHOULD set the aria-valuenow attribute when the spinbutton has a value. Authors SHOULD set the aria-valuemin attribute when there is a minimum value, and the aria-valuemax attribute when there is a maximum value.",
10732
+ "description": "A form of range that expects the user to select from among discrete choices.\n\nA spinbutton typically allows users to change its displayed value by activating increment and decrement buttons that step through a set of allowed values. Some implementations display the value in an text field that allows editing and typing but typically limits input in ways that help prevent invalid values.\n\nAlthough a spinbutton is similar in appearance to many presentations of select, it is advisable to use spinbutton when working with known ranges (especially in the case of large ranges) as opposed to distinct options. For example, a spinbutton representing a range from 1 to 1,000,000 would provide much better performance than a select widget representing the same values.\n\nAuthors MAY create a spinbutton with accessibility children, but MUST limit those elements to a textbox and/or two buttons. Alternatively, authors MAY apply the spinbutton role to a text input and create sibling buttons to support the increment and decrement functions.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus. When a spinbutton receives focus, authors SHOULD ensure focus is placed on the textbox element if one is present, and on the spinbutton itself otherwise. Authors SHOULD also ensure the up and down arrows on a keyboard perform the increment and decrement functions and that the increment and decrement button elements are NOT included in the primary navigation ring, e.g., the Tab ring in HTML.\n\nAuthors SHOULD set the aria-valuenow attribute when the spinbutton has a value. Authors SHOULD set the aria-valuemin attribute when there is a minimum value, and the aria-valuemax attribute when there is a maximum value.",
10739
10733
  "generalization": ["composite", "input", "range"],
10740
10734
  "requiredContextRole": [],
10741
10735
  "requiredOwnedElements": [],
@@ -11631,7 +11625,7 @@
11631
11625
  },
11632
11626
  {
11633
11627
  "name": "tab",
11634
- "description": "A grouping label providing a mechanism for selecting the tab content that is to be rendered to the user.\n\nIf a tabpanel or item in a tabpanel has focus, the associated tab is the currently active tab in the tablist, as defined in Managing Focus. tablist elements, which contain a set of associated tab elements, are typically placed near a series of tabpanel elements, usually preceding it. See the WAI-ARIA Authoring Practices for details on implementing a tab set design pattern.\n\nAuthors MUST ensure elements with role tab are contained in, or owned by, an element with the role tablist.\n\nAuthors SHOULD ensure the tabpanel associated with the currently active tab is perceivable to the user.\n\nFor a single-selectable tablist, authors SHOULD hide from all users other tabpanel elements until the user selects the tab associated with that tabpanel. For a multi-selectable tablist, authors SHOULD ensure that the tab for each visible tabpanel has the aria-expanded attribute set to true, and that the tabs associated with the remaining hidden from all users tabpanel elements have their aria-expanded attributes set to false.\n\nAuthors SHOULD ensure that a selected tab has its aria-selected attribute set to true, that inactive tab elements have their aria-selected attribute set to false, and that the currently selected tab provides a visual indication that it is selected.\n\nIn certain conditions, a user agent MAY provide an implicit value for aria-selected for each tab in a tablist, and if it does, the user agent MUST ensure the following conditions are met before providing an implicit value:",
11628
+ "description": "A grouping label providing a mechanism for selecting the tab content that is to be rendered to the user.\n\nIf a tabpanel or item in a tabpanel has focus, the associated tab is the currently active tab in the tablist, as defined in Managing Focus. tablist elements, which contain a set of associated tab elements, are typically placed near a series of tabpanel elements, usually preceding it. See the WAI-ARIA Authoring Practices for details on implementing a tab set design pattern.\n\nAuthors MUST ensure elements with role tab are accessibility children of an element with the role tablist.\n\nAuthors SHOULD ensure the tabpanel associated with the currently active tab is perceivable to the user.\n\nFor a single-selectable tablist, authors SHOULD hide from all users other tabpanel elements until the user selects the tab associated with that tabpanel. For a multi-selectable tablist, authors SHOULD ensure that the tab for each visible tabpanel has the aria-expanded attribute set to true, and that the tabs associated with the remaining hidden from all users tabpanel elements have their aria-expanded attributes set to false.\n\nAuthors SHOULD ensure that a selected tab has its aria-selected attribute set to true, that inactive tab elements have their aria-selected attribute set to false, and that the currently selected tab provides a visual indication that it is selected.\n\nIn certain conditions, a user agent MAY provide an implicit value for aria-selected for each tab in a tablist, and if it does, the user agent MUST ensure the following conditions are met before providing an implicit value:",
11635
11629
  "generalization": ["sectionhead", "widget"],
11636
11630
  "requiredContextRole": ["tablist"],
11637
11631
  "requiredOwnedElements": [],
@@ -12674,7 +12668,7 @@
12674
12668
  },
12675
12669
  {
12676
12670
  "name": "tooltip",
12677
- "description": "A contextual popup that displays a description for an element.\n\nThe tooltip typically becomes visible, after a short delay, in response to a mouse hover, or after the owning element receives keyboard focus. The use of a WAI-ARIA tooltip is a supplement to the normal tooltip behavior of the user agent.\n\nTypical tooltip delays last from one to five seconds.\n\nAuthors SHOULD ensure that elements with the role tooltip are referenced through the use of aria-describedby before or at the time the tooltip is displayed.",
12671
+ "description": "A contextual popup that displays a description for an element.\n\nThe tooltip typically becomes visible, after a short delay, in response to a mouse hover, or after the accessibility parent receives keyboard focus. The use of a WAI-ARIA tooltip is a supplement to the normal tooltip behavior of the user agent.\n\nTypical tooltip delays last from one to five seconds.\n\nAuthors SHOULD ensure that elements with the role tooltip are referenced through the use of aria-describedby before or at the time the tooltip is displayed.",
12678
12672
  "generalization": ["section"],
12679
12673
  "requiredContextRole": [],
12680
12674
  "requiredOwnedElements": [],
@@ -12911,7 +12905,7 @@
12911
12905
  },
12912
12906
  {
12913
12907
  "name": "treegrid",
12914
- "description": "A grid whose rows can be expanded and collapsed in the same manner as for a tree.\n\nIf aria-readonly is set on an element with role treegrid, user agents MUST propagate the value to all gridcell elements owned by the treegrid and expose the value in the accessibility API. An author MAY override the propagated value of aria-readonly for an individual gridcell element.\n\nWhen the aria-readonly attribute is applied to a focusable gridcell, it indicates whether the content contained in the gridcell is editable. The aria-readonly attribute does not represent availability of functions for navigating or manipulating the treegrid itself.\n\nIn a treegrid that provides content editing functions, if the content of a focusable gridcell element is not editable, authors MAY set aria-readonly to true on the gridcell element. However, if a treegrid presents a collection of elements that do not support aria-readonly, such as a collection of link elements, it is not necessary for the author to specify a value for aria-readonly.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.",
12908
+ "description": "A grid whose rows can be expanded and collapsed in the same manner as for a tree.\n\nIf aria-readonly is set on an element with role treegrid, user agents MUST propagate the value to all gridcell elements that are accessibility descendants of the treegrid and expose the value in the accessibility API. An author MAY override the propagated value of aria-readonly for an individual gridcell element.\n\nWhen the aria-readonly attribute is applied to a focusable gridcell, it indicates whether the content contained in the gridcell is editable. The aria-readonly attribute does not represent availability of functions for navigating or manipulating the treegrid itself.\n\nIn a treegrid that provides content editing functions, if the content of a focusable gridcell element is not editable, authors MAY set aria-readonly to true on the gridcell element. However, if a treegrid presents a collection of elements that do not support aria-readonly, such as a collection of link elements, it is not necessary for the author to specify a value for aria-readonly.\n\nTo be keyboard accessible, authors SHOULD manage focus of descendants for all instances of this role, as described in Managing Focus.",
12915
12909
  "generalization": ["grid", "tree"],
12916
12910
  "requiredContextRole": [],
12917
12911
  "requiredOwnedElements": ["caption", "row", "rowgroup > row"],
@@ -13050,7 +13044,7 @@
13050
13044
  },
13051
13045
  {
13052
13046
  "name": "treeitem",
13053
- "description": "An item in a tree.\n\nA treeitem element can contain a sub-level group of elements that can be expanded or collapsed. An expandable collection of treeitem elements are enclosed in an element with the group role.\n\nAuthors MUST ensure elements with role treeitem are contained in, or owned by, an element with role tree or an element with role group that is contained in, or owned by, an element with role treeitem.\n\nIn certain conditions, a user agent MAY provide an implicit value for aria-selected for each treeitem in a tree, and if it does, the user agent MUST ensure the following conditions are met before providing an implicit value:\n\nIf a user agent provides an implicit aria-selected value for a treeitem, the value SHOULD be true if the treeitem has DOM focus or the tree has DOM focus and the treeitem is referenced by aria-activedescendant. Otherwise, if a user agent provides an implicit aria-selected value for a treeitem, the value SHOULD be false.\n\nAuthors MAY indicate selection for treeitem elements using either aria-selected or aria-checked. Some user interfaces indicate selection with aria-selected in single-select trees and with aria-checked in multi-select trees. Authors SHOULD NOT specify both aria-selected and aria-checked on treeitem elements contained by the same tree except in the extremely rare circumstances where all the following conditions are met:",
13047
+ "description": "An item in a tree.\n\nA treeitem element can contain a sub-level group of elements that can be expanded or collapsed. An expandable collection of treeitem elements are enclosed in an element with the group role.\n\nAuthors MUST ensure elements with role treeitem are accessibility children of an element with role tree or an element with role group that is the accessibility child of an element with role treeitem.\n\nIn certain conditions, a user agent MAY provide an implicit value for aria-selected for each treeitem in a tree, and if it does, the user agent MUST ensure the following conditions are met before providing an implicit value:\n\nIf a user agent provides an implicit aria-selected value for a treeitem, the value SHOULD be true if the treeitem has DOM focus or the tree has DOM focus and the treeitem is referenced by aria-activedescendant. Otherwise, if a user agent provides an implicit aria-selected value for a treeitem, the value SHOULD be false.\n\nAuthors MAY indicate selection for treeitem elements using either aria-selected or aria-checked. Some user interfaces indicate selection with aria-selected in single-select trees and with aria-checked in multi-select trees. Authors SHOULD NOT specify both aria-selected and aria-checked on treeitem elements contained by the same tree except in the extremely rare circumstances where all the following conditions are met:",
13054
13048
  "generalization": ["listitem", "option"],
13055
13049
  "requiredContextRole": ["tree", "treeitem > group"],
13056
13050
  "requiredOwnedElements": [],
@@ -13621,8 +13615,8 @@
13621
13615
  "enum": [],
13622
13616
  "defaultValue": "undefined",
13623
13617
  "valueDescriptions": {
13624
- "false": "The grouping element this element owns or controls is collapsed.",
13625
- "true": "The grouping element this element owns or controls is expanded.",
13618
+ "false": "The grouping element this element controls or is the accessibility parent of is collapsed.",
13619
+ "true": "The grouping element this element controls or is the accessibility parent of is expanded.",
13626
13620
  "undefined": "The element does not own or control a grouping element that is expandable."
13627
13621
  }
13628
13622
  },
@@ -35623,8 +35617,7 @@
35623
35617
  "description": "This enumerated attribute indicates whether to use CORS to fetch the related audio file. CORS-enabled resources can be reused in the <canvas> element without being tainted. The allowed values are: anonymous Sends a cross-origin request without a credential. In other words, it sends the Origin: HTTP header without a cookie, X.509 certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (by not setting the Access-Control-Allow-Origin: HTTP header), the resource will be tainted, and its usage restricted. use-credentials Sends a cross-origin request with a credential. In other words, it sends the Origin: HTTP header with a cookie, a certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (through Access-Control-Allow-Credentials: HTTP header), the resource will be tainted and its usage restricted. When not present, the resource is fetched without a CORS request (i.e. without sending the Origin: HTTP header), preventing its non-tainted use in <canvas> elements. If invalid, it is handled as if the enumerated keyword anonymous was used. See CORS settings attributes for additional information."
35624
35618
  },
35625
35619
  "disableremoteplayback": {
35626
- "description": "A Boolean attribute used to disable the capability of remote playback in devices that are attached using wired (HDMI, DVI, etc.) and wireless technologies (Miracast, Chromecast, DLNA, AirPlay, etc.). See this proposed specification for more information. Note: In Safari, you can use x-webkit-airplay=\"deny\" as a fallback.",
35627
- "experimental": true
35620
+ "description": "A Boolean attribute used to disable the capability of remote playback in devices that are attached using wired (HDMI, DVI, etc.) and wireless technologies (Miracast, Chromecast, DLNA, AirPlay, etc.). See this proposed specification for more information. In Safari, you can use x-webkit-airplay=\"deny\" as a fallback."
35628
35621
  },
35629
35622
  "loop": {
35630
35623
  "description": "A Boolean attribute: if specified, the audio player will automatically seek back to the start upon reaching the end of the audio."
@@ -35805,8 +35798,7 @@
35805
35798
  "description": "This enumerated attribute indicates whether to use CORS to fetch the related audio file. CORS-enabled resources can be reused in the <canvas> element without being tainted. The allowed values are: anonymous Sends a cross-origin request without a credential. In other words, it sends the Origin: HTTP header without a cookie, X.509 certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (by not setting the Access-Control-Allow-Origin: HTTP header), the resource will be tainted, and its usage restricted. use-credentials Sends a cross-origin request with a credential. In other words, it sends the Origin: HTTP header with a cookie, a certificate, or performing HTTP Basic authentication. If the server does not give credentials to the origin site (through Access-Control-Allow-Credentials: HTTP header), the resource will be tainted and its usage restricted. When not present, the resource is fetched without a CORS request (i.e. without sending the Origin: HTTP header), preventing its non-tainted use in <canvas> elements. If invalid, it is handled as if the enumerated keyword anonymous was used. See CORS settings attributes for additional information."
35806
35799
  },
35807
35800
  "disableremoteplayback": {
35808
- "description": "A Boolean attribute used to disable the capability of remote playback in devices that are attached using wired (HDMI, DVI, etc.) and wireless technologies (Miracast, Chromecast, DLNA, AirPlay, etc.). See this proposed specification for more information. Note: In Safari, you can use x-webkit-airplay=\"deny\" as a fallback.",
35809
- "experimental": true
35801
+ "description": "A Boolean attribute used to disable the capability of remote playback in devices that are attached using wired (HDMI, DVI, etc.) and wireless technologies (Miracast, Chromecast, DLNA, AirPlay, etc.). See this proposed specification for more information. In Safari, you can use x-webkit-airplay=\"deny\" as a fallback."
35810
35802
  },
35811
35803
  "loop": {
35812
35804
  "description": "A Boolean attribute: if specified, the audio player will automatically seek back to the start upon reaching the end of the audio."
@@ -36618,6 +36610,9 @@
36618
36610
  "#HTMLGlobalAttrs": true
36619
36611
  },
36620
36612
  "attributes": {
36613
+ "name": {
36614
+ "type": "NoEmptyAny"
36615
+ },
36621
36616
  "open": {
36622
36617
  "type": "Boolean"
36623
36618
  }
@@ -37131,8 +37126,7 @@
37131
37126
  "type": "URL"
37132
37127
  },
37133
37128
  "autocapitalize": {
37134
- "description": "A nonstandard attribute used by iOS Safari that controls how textual form elements should be automatically capitalized. autocapitalize attributes on a form elements override it on <form>. Possible values: none: No automatic capitalization. sentences (default): Capitalize the first letter of each sentence. words: Capitalize the first letter of each word. characters: Capitalize all characters — that is, uppercase.",
37135
- "nonStandard": true
37129
+ "description": "Controls whether inputted text is automatically capitalized and, if so, in what manner. See the autocapitalize global attribute page for more information."
37136
37130
  },
37137
37131
  "autocomplete": {
37138
37132
  "type": {
@@ -37693,7 +37687,8 @@
37693
37687
  },
37694
37688
  "allowpaymentrequest": {
37695
37689
  "description": "Set to true if a cross-origin <iframe> should be allowed to invoke the Payment Request API. Note: This attribute is considered a legacy attribute and redefined as allow=\"payment\".",
37696
- "experimental": true
37690
+ "deprecated": true,
37691
+ "nonStandard": true
37697
37692
  },
37698
37693
  "credentialless": {
37699
37694
  "description": "Set to true to make the <iframe> credentialless, meaning that its content will be loaded in a new, ephemeral context. It doesn't have access to the network, cookies, and storage data associated with its origin. It uses a new context local to the top-level document lifetime. In return, the Cross-Origin-Embedder-Policy (COEP) embedding rules can be lifted, so documents with COEP set can embed third-party documents that do not. See IFrame credentialless for more details.",
@@ -37712,7 +37707,7 @@
37712
37707
  "description": "The height of the frame in CSS pixels. Default is 150."
37713
37708
  },
37714
37709
  "loading": {
37715
- "description": "Indicates how the browser should load the iframe: eager: Load the iframe immediately, regardless if it is outside the visible viewport (this is the default value). lazy: Defer loading of the iframe until it reaches a calculated distance from the viewport, as defined by the browser."
37710
+ "description": "Indicates when the browser should load the iframe: eager Load the iframe immediately on page load (this is the default value). lazy Defer loading of the iframe until it reaches a calculated distance from the visual viewport, as defined by the browser. The intent is to avoid using the network and storage bandwidth required to fetch the frame until the browser is reasonably certain that it will be needed. This improves the performance and cost in most typical use cases, in particular by reducing initial page load times. Note: Loading is only deferred when JavaScript is enabled. This is an anti-tracking measure."
37716
37711
  },
37717
37712
  "longdesc": {
37718
37713
  "description": "A URL of a long description of the frame's content. Due to widespread misuse, this is not helpful for non-visual browsers.",
@@ -37730,7 +37725,7 @@
37730
37725
  "type": "NavigableTargetName"
37731
37726
  },
37732
37727
  "referrerpolicy": {
37733
- "description": "Indicates which referrer to send when fetching the frame's resource: no-referrer: The Referer header will not be sent. no-referrer-when-downgrade: The Referer header will not be sent to origins without TLS (HTTPS). origin: The sent referrer will be limited to the origin of the referring page: its scheme, host, and port. origin-when-cross-origin: The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path. same-origin: A referrer will be sent for same origin, but cross-origin requests will contain no referrer information. strict-origin: Only send the origin of the document as the referrer when the protocol security level stays the same (HTTPS→HTTPS), but don't send it to a less secure destination (HTTPS→HTTP). strict-origin-when-cross-origin (default): Send a full URL when performing a same-origin request, only send the origin when the protocol security level stays the same (HTTPS→HTTPS), and send no header to a less secure destination (HTTPS→HTTP). unsafe-url: The referrer will include the origin and the path (but not the fragment, password, or username). This value is unsafe, because it leaks origins and paths from TLS-protected resources to insecure origins."
37728
+ "description": "Indicates which referrer to send when fetching the frame's resource: no-referrer The Referer header will not be sent. no-referrer-when-downgrade The Referer header will not be sent to origins without TLS (HTTPS). origin The sent referrer will be limited to the origin of the referring page: its scheme, host, and port. origin-when-cross-origin The referrer sent to other origins will be limited to the scheme, the host, and the port. Navigations on the same origin will still include the path. same-origin A referrer will be sent for same origin, but cross-origin requests will contain no referrer information. strict-origin Only send the origin of the document as the referrer when the protocol security level stays the same (HTTPS→HTTPS), but don't send it to a less secure destination (HTTPS→HTTP). strict-origin-when-cross-origin (default) Send a full URL when performing a same-origin request, only send the origin when the protocol security level stays the same (HTTPS→HTTPS), and send no header to a less secure destination (HTTPS→HTTP). unsafe-url The referrer will include the origin and the path (but not the fragment, password, or username). This value is unsafe, because it leaks origins and paths from TLS-protected resources to insecure origins."
37734
37729
  },
37735
37730
  "sandbox": {
37736
37731
  "type": {
@@ -37758,7 +37753,7 @@
37758
37753
  }
37759
37754
  },
37760
37755
  "scrolling": {
37761
- "description": "Indicates when the browser should provide a scrollbar for the frame: auto: Only when the frame's content is larger than its dimensions. yes: Always show a scrollbar. no: Never show a scrollbar.",
37756
+ "description": "Indicates when the browser should provide a scrollbar for the frame: auto Only when the frame's content is larger than its dimensions. yes Always show a scrollbar. no Never show a scrollbar.",
37762
37757
  "deprecated": true
37763
37758
  },
37764
37759
  "src": {
@@ -37879,8 +37874,7 @@
37879
37874
  "description": "Marks the image for observation by the PerformanceElementTiming API. The value given becomes an identifier for the observed image element. See also the elementtiming attribute page."
37880
37875
  },
37881
37876
  "fetchpriority": {
37882
- "description": "Provides a hint of the relative priority to use when fetching the image. Allowed values: high Signals a high-priority fetch relative to other images. low Signals a low-priority fetch relative to other images. auto Default: Signals automatic determination of fetch priority relative to other images.",
37883
- "experimental": true
37877
+ "description": "Provides a hint of the relative priority to use when fetching the image. Allowed values: high Signals a high-priority fetch relative to other images. low Signals a low-priority fetch relative to other images. auto Default: Signals automatic determination of fetch priority relative to other images."
37884
37878
  },
37885
37879
  "height": {
37886
37880
  "description": "The intrinsic height of the image, in pixels. Must be an integer without a unit. Note: Including height and width enables the aspect ratio of the image to be calculated by the browser prior to the image being loaded. This aspect ratio is used to reserve the space needed to display the image, reducing or even preventing a layout shift when the image is downloaded and painted to the screen. Reducing layout shift is a major component of good user experience and web performance."
@@ -38443,8 +38437,7 @@
38443
38437
  "condition": "[type='image' i]"
38444
38438
  },
38445
38439
  "autocapitalize": {
38446
- "description": "(Safari only). A string which indicates how auto-capitalization should be applied while the user is editing this field. Permitted values are: none Do not automatically capitalize any text sentences Automatically capitalize the first character of each sentence. words Automatically capitalize the first character of each word. characters Automatically capitalize every character.",
38447
- "nonStandard": true
38440
+ "description": "Controls whether inputted text is automatically capitalized and, if so, in what manner. See the autocapitalize global attribute page for more information."
38448
38441
  },
38449
38442
  "autocomplete": {
38450
38443
  "condition": [
@@ -38483,12 +38476,14 @@
38483
38476
  "dirname": {
38484
38477
  "condition": [
38485
38478
  ":not([type])",
38479
+ "[type='hidden' i]",
38486
38480
  "[type='text' i]",
38487
38481
  "[type='search' i]",
38488
- "[type='hidden' i]",
38489
38482
  "[type='tel' i]",
38490
38483
  "[type='url' i]",
38491
- "[type='email' i]"
38484
+ "[type='email' i]",
38485
+ "[type='password' i]",
38486
+ "[type='submit' i]"
38492
38487
  ]
38493
38488
  },
38494
38489
  "disabled": {
@@ -39043,8 +39038,7 @@
39043
39038
  "type": "Boolean"
39044
39039
  },
39045
39040
  "fetchpriority": {
39046
- "description": "Provides a hint of the relative priority to use when fetching a preloaded resource. Allowed values: high Signals a high-priority fetch relative to other resources of the same type. low Signals a low-priority fetch relative to other resources of the same type. auto Default: Signals automatic determination of fetch priority relative to other resources of the same type.",
39047
- "experimental": true
39041
+ "description": "Provides a hint of the relative priority to use when fetching a preloaded resource. Allowed values: high Signals a high-priority fetch relative to other resources of the same type. low Signals a low-priority fetch relative to other resources of the same type. auto Default: Signals automatic determination of fetch priority relative to other resources of the same type."
39048
39042
  },
39049
39043
  "href": {
39050
39044
  "description": "This attribute specifies the URL of the linked resource. A URL can be absolute or relative."
@@ -39102,7 +39096,8 @@
39102
39096
  "prerender",
39103
39097
  "prev",
39104
39098
  "search",
39105
- "stylesheet"
39099
+ "stylesheet",
39100
+ "terms-of-service"
39106
39101
  ]
39107
39102
  },
39108
39103
  "unique": true,
@@ -40505,8 +40500,7 @@
40505
40500
  "ineffective": ["[type='module' i]", ":not([src])", "[async]"]
40506
40501
  },
40507
40502
  "fetchpriority": {
40508
- "description": "Provides a hint of the relative priority to use when fetching an external script. Allowed values: high Signals a high-priority fetch relative to other external scripts. low Signals a low-priority fetch relative to other external scripts. auto Default: Signals automatic determination of fetch priority relative to other external scripts.",
40509
- "experimental": true
40503
+ "description": "Provides a hint of the relative priority to use when fetching an external script. Allowed values: high Signals a high-priority fetch relative to other external scripts. low Signals a low-priority fetch relative to other external scripts. auto Default: Signals automatic determination of fetch priority relative to other external scripts."
40510
40504
  },
40511
40505
  "integrity": {
40512
40506
  "condition": "[src]"
@@ -40776,7 +40770,7 @@
40776
40770
  {
40777
40771
  "name": "source",
40778
40772
  "cite": "https://developer.mozilla.org/en-US/docs/Web/HTML/Element/source",
40779
- "description": "The <source> HTML element specifies multiple media resources for the <picture>, the <audio> element, or the <video> element. It is a void element, meaning that it has no content and does not have a closing tag. It is commonly used to offer the same media content in multiple file formats in order to provide compatibility with a broad range of browsers given their differing support for image file formats and media file formats.",
40773
+ "description": "The <source> HTML element specifies one or more media resources for the <picture>, <audio>, and <video> elements. It is a void element, which means that it has no content and does not require a closing tag. This element is commonly used to offer the same media content in multiple file formats in order to provide compatibility with a broad range of browsers given their differing support for image file formats and media file formats.",
40780
40774
  "categories": [],
40781
40775
  "contentModel": {
40782
40776
  "contents": false
@@ -41303,7 +41297,18 @@
41303
41297
  "#GlobalEventAttrs": true,
41304
41298
  "#HTMLGlobalAttrs": true
41305
41299
  },
41306
- "attributes": {}
41300
+ "attributes": {
41301
+ "shadowrootdelegatesfocus": {
41302
+ "type": "Boolean"
41303
+ },
41304
+ "shadowrootmode": {
41305
+ "type": {
41306
+ "enum": ["open", "closed"],
41307
+ "missingValueDefault": "none",
41308
+ "invalidValueDefault": "none"
41309
+ }
41310
+ }
41311
+ }
41307
41312
  },
41308
41313
  {
41309
41314
  "name": "textarea",
@@ -41343,6 +41348,9 @@
41343
41348
  "#HTMLGlobalAttrs": true
41344
41349
  },
41345
41350
  "attributes": {
41351
+ "autocapitalize": {
41352
+ "description": "Controls whether inputted text is automatically capitalized and, if so, in what manner. See the autocapitalize global attribute page for more information."
41353
+ },
41346
41354
  "autocomplete": {
41347
41355
  "description": "This attribute indicates whether the value of the control can be automatically completed by the browser. Possible values are: off: The user must explicitly enter a value into this field for every use, or the document provides its own auto-completion method; the browser does not automatically complete the entry. on: The browser can automatically complete the value based on values that the user has entered during previous uses. If the autocomplete attribute is not specified on a <textarea> element, then the browser uses the autocomplete attribute value of the <textarea> element's form owner. The form owner is either the <form> element that this <textarea> element is a descendant of or the form element whose id is specified by the form attribute of the input element. For more information, see the autocomplete attribute in <form>."
41348
41356
  },
@@ -41962,8 +41970,7 @@
41962
41970
  "experimental": true
41963
41971
  },
41964
41972
  "disableremoteplayback": {
41965
- "description": "A Boolean attribute used to disable the capability of remote playback in devices that are attached using wired (HDMI, DVI, etc.) and wireless technologies (Miracast, Chromecast, DLNA, AirPlay, etc.). In Safari, you can use x-webkit-airplay=\"deny\" as a fallback.",
41966
- "experimental": true
41973
+ "description": "A Boolean attribute used to disable the capability of remote playback in devices that are attached using wired (HDMI, DVI, etc.) and wireless technologies (Miracast, Chromecast, DLNA, AirPlay, etc.). In Safari, you can use x-webkit-airplay=\"deny\" as a fallback."
41967
41974
  },
41968
41975
  "height": {
41969
41976
  "description": "The height of the video's display area, in CSS pixels (absolute values only; no percentages)."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@markuplint/html-spec",
3
- "version": "4.0.0-alpha.5",
3
+ "version": "4.0.0-alpha.7",
4
4
  "description": "A specification of HTML Living Standard for markuplint",
5
5
  "repository": "git@github.com:markuplint/markuplint.git",
6
6
  "author": "Yusuke Hirao <yusukehirao@me.com>",
@@ -17,11 +17,11 @@
17
17
  "gen:prettier": "prettier --write index.json"
18
18
  },
19
19
  "devDependencies": {
20
- "@markuplint/spec-generator": "4.0.0-alpha.5",
21
- "@markuplint/test-tools": "4.0.0-alpha.5"
20
+ "@markuplint/spec-generator": "4.0.0-alpha.7",
21
+ "@markuplint/test-tools": "4.0.0-alpha.7"
22
22
  },
23
23
  "dependencies": {
24
- "@markuplint/ml-spec": "4.0.0-alpha.5"
24
+ "@markuplint/ml-spec": "4.0.0-alpha.7"
25
25
  },
26
- "gitHead": "0c3e4690662edf1765bcc4b6411ec5507c1e2ea3"
26
+ "gitHead": "571129bf6498541125e1e7c3907d5ed9af53459a"
27
27
  }