Skip to content

Commit 572991e

Browse files
author
michael-n-cooper
committedDec 5, 2017
Add common
1 parent 0cb3d23 commit 572991e

19 files changed

+4637
-8
lines changed
 

‎common/CONTRIBUTING.md

+22
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
Contributions to this repository are intended to become part of Recommendation-track documents governed by the
2+
[W3C Patent Policy](https://www.w3.org/Consortium/Patent-Policy-20040205/) and
3+
[Document License](https://www.w3.org/Consortium/Legal/copyright-documents). To make substantive contributions to specifications, you must either participate
4+
in the relevant W3C Working Group or make a non-member patent licensing commitment.
5+
6+
If you are not the sole contributor to a contribution (pull request), please identify all
7+
contributors in the pull request comment.
8+
9+
To add a contributor (other than yourself, that's automatic), mark them one per line as follows:
10+
11+
```
12+
+@github_username
13+
```
14+
15+
If you added a contributor by mistake, you can remove them in a comment with:
16+
17+
```
18+
-@github_username
19+
```
20+
21+
If you are making a pull request on behalf of someone else but you had no part in designing the
22+
feature, you can remove yourself with the above syntax.

‎common/LICENSE.md

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
All documents in this Repository are licensed by contributors
2+
under the
3+
[W3C Document License](https://www.w3.org/Consortium/Legal/copyright-documents).
4+

‎common/acknowledgements.html

+183
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,183 @@
1+
<section class="appendix informative section" id="acknowledgements">
2+
<h3>Acknowledgments</h3>
3+
<p>The following people contributed to the development of this document.</p>
4+
<section class="section" id="ack_group">
5+
<h4>Participants active in the ARIA WG at the time of publication</h4>
6+
<ul>
7+
<li>Ann Abbott (IBM Corporation)</li>
8+
<li>Michiel Bijl (The Paciello Group)</li>
9+
<li>Christy Blew (University of Illinois at Urbana-Champaign)</li>
10+
<li>David Bolter (Mozilla Foundation) </li>
11+
<li>Michael Cooper (W3C/MIT)</li>
12+
<li>James Craig (Apple Inc.) </li>
13+
<li>Joanmarie Diggs (Igalia)</li>
14+
<li>Fred Esch (IBM Corporation)</li>
15+
<li>Steve Faulkner (The Paciello Group) </li>
16+
<li>John Foliot (Invited Expert)</li>
17+
<li>Bryan Garaventa (SSB BART Group)</li>
18+
<li>Matt Garrish (DAISY Consortium)</li>
19+
<li>Billy Gregory (The Paciello Group)</li>
20+
<li>Karl Groves (The Paciello Group)</li>
21+
<li>Jon Gunderson (University of Illinois at Urbana-Champaign)</li>
22+
<li>Markus Gylling (DAISY Consortium)</li>
23+
<li>Markku Hakkinen (Educational Testing Service)</li>
24+
<li>Katie Haritos-Shea (Knowbility)</li>
25+
<li>Susann Keohane (IBM Corporation)</li>
26+
<li>Matthew King (Facebook)</li>
27+
<li>Jason Kiss (Department of Internal Affairs, New Zealand Government)</li>
28+
<li>Jamie Knight (British Broadcasting Corporation)</li>
29+
<li>JaEun Jemma Ku (University of Illinois at Urbana-Champaign)</li>
30+
<li>Shane McCarron (Invited Expert, Aptest)</li>
31+
<li>Charles McCathie Nevile (Yandex)</li>
32+
<li>Mary Jo Mueller (IBM Corporation)</li>
33+
<li>James Nurthen (Oracle Corporation) </li>
34+
<li>Ian Pouncey (The Paciello Group, LLC)</li>
35+
<li>Mark Sadecki (Invited Expert)</li>
36+
<li>Janina Sajka (Invited Expert, The Linux Foundation)</li>
37+
<li>Joseph Scheuhammer (Invited Expert, Inclusive Design Research Centre, OCAD University) </li>
38+
<li>Stefan Schnabel (SAP AG) </li>
39+
<li>Richard Schwerdtfeger (IBM Corporation)</li>
40+
<li>Lisa Seeman (Invited Expert) </li>
41+
<li>Tzviya Siegman (Wiley)</li>
42+
<li>Cynthia Shelly (Microsoft Corporation) </li>
43+
<li>Alexander Surkov (Mozilla Foundation)</li>
44+
<li>Léonie Watson (The Paciello Group)</li>
45+
<li>Jason White (Educational Testing Service)</li>
46+
<li>Gottfried Zimmermann (Invited Expert, Access Technologies Group)</li>
47+
</ul>
48+
</section>
49+
<section class="section" id="ack_others">
50+
<h4>Other ARIA contributors, commenters, and previously active participants</h4>
51+
<ul>
52+
<li>Shadi Abou-Zahra (W3C)</li>
53+
<li>Jim Allan (TSB)</li>
54+
<li>Jonny Axelsson (Opera Software)</li>
55+
<li>David Baron (Mozilla Foundation)</li>
56+
<li>Art Barstow (Nokia Corporation)</li>
57+
<li>Simon Bates</li>
58+
<li>Chris Blouch (AOL)</li>
59+
<li>Judy Brewer (W3C/MIT)</li>
60+
<li>Mark Birbeck (Sidewinder Labs)</li>
61+
<li>Sally Cain (Royal National Institute of Blind People (RNIB))</li>
62+
<li>Gerardo Capiel (Benetech)</li>
63+
<li>Ben Caldwell (Trace)</li>
64+
<li>Sofia Celic-Li</li>
65+
<li>Jaesik Chang (Samsung Electronics Co., Ltd.)</li>
66+
<li>Alex Qiang Chen (University of Manchester)</li>
67+
<li>Charles Chen (Google, Inc.)</li>
68+
<li>Christian Cohrs</li>
69+
<li>Deborah Dahl</li>
70+
<li>Erik Dahlström (Opera Software)</li>
71+
<li>Dimitar Denev (Frauenhofer Gesellschaft)</li>
72+
<li>Micah Dubinko (Invited Expert)</li>
73+
<li>Mandana Eibegger</li>
74+
<li>Beth Epperson (Websense)</li>
75+
<li>Donald Evans (AOL)</li>
76+
<li>Chris Fleizach (Apple Inc.)</li>
77+
<li>Kelly Ford (Microsoft Corporation)</li>
78+
<li>Geoff Freed (Invited Expert, NCAM)</li>
79+
<li>Christopher Gallelo (Microsoft Corporation)</li>
80+
<li>Birkir Gunnarsson (Deque Systems, Inc.)</li>
81+
<li>Kentarou Fukuda (IBM Corporation)</li>
82+
<li>Bryan Garaventa</li>
83+
<li>Guido Geloso</li>
84+
<li>Ali Ghassemi</li>
85+
<li>Becky Gibson (IBM)</li>
86+
<li>Alfred S. Gilman</li>
87+
<li>Andres Gonzalez (Adobe Systems Inc.)</li>
88+
<li>Scott González (JQuery Foundation)</li>
89+
<li>James Graham</li>
90+
<li>Georgios Grigoriadis (SAP AG)</li>
91+
<li>Jeff Grimes (Oracle)</li>
92+
<li>Loretta Guarino Reid (Google, Inc.)</li>
93+
<li>Barbara Hartel</li>
94+
<li>James Hawkins (Google, Inc.)</li>
95+
<li>Benjamin Hawkes-Lewis</li>
96+
<li>Sean Hayes (Microsoft Corporation)</li>
97+
<li>Mona Heath (University of Illinois at Urbana-Champaign)</li>
98+
<li>Jan Heck</li>
99+
<li>Shawn Henry</li>
100+
<li>Tina Homboe</li>
101+
<li>John Hrvatin (Microsoft Corporation)</li>
102+
<li>Takahiro Inada</li>
103+
<li>Masayasu Ishikawa (W3C)</li>
104+
<li>Jim Jewitt</li>
105+
<li>Kenny Johar (Microsoft Corporation)</li>
106+
<li>Shilpi Kapoor (BarrierBreak Technologies)</li>
107+
<li>Masahiko Kaneko (Microsoft Corporation)</li>
108+
<li>Marjolein Katsma</li>
109+
<li>George Kerscher (International Digital Publishing Forum)</li>
110+
<li>Jason Kiss (New Zealand Government)</li>
111+
<li>Todd Kloots</li>
112+
<li>Johannes Koch</li>
113+
<li>Sam Kuper</li>
114+
<li>Earl Johnson (Sun)</li>
115+
<li>Jael Kurz</li>
116+
<li>Rajesh Lal (Nokia Corporation)</li>
117+
<li>Diego La Monica (International Webmasters Association / HTML Writers Guild (IWA-HWG))</li>
118+
<li>Aaron Leventhal (IBM Corporation)</li>
119+
<li>Gez Lemon (International Webmasters Association / HTML Writers Guild (IWA-HWG))</li>
120+
<li>Alex Li (SAP)</li>
121+
<li>Chris Lilley</li>
122+
<li>Thomas Logan (HiSoftware Inc.)</li>
123+
<li>William Loughborough (Invited Expert)</li>
124+
<li>Linda Mao (Microsoft)</li>
125+
<li>David MacDonald (Invited Expert, CanAdapt Solutions Inc.)</li>
126+
<li>Carolyn MacLeod</li>
127+
<li>Anders Markussen (Opera Software)</li>
128+
<li>Krzysztof Maczyński </li>
129+
<li>Matthew May (Adobe Systems Inc.)</li>
130+
<li>Dominic Mazzoni (Google, Inc.)</li>
131+
<li>Alexandre Morgaut (4D)</li>
132+
<li>Ann Navarro (Invited Expert)</li>
133+
<li>Joshue O Connor (Invited Expert, CFIT)</li>
134+
<li>Artur Ortega (Microsoft Corporation)</li>
135+
<li>Sailesh Panchang (Deque)</li>
136+
<li>Lisa Pappas (Society for Technical Communication (STC))</li>
137+
<li>Marta Pawlowlska (Samsung Electronics Co., Ltd.)</li>
138+
<li>Dave Pawson (RNIB)</li>
139+
<li>Steven Pemberton (CWI Amsterdam)</li>
140+
<li>Simon Pieters (Opera Software)</li>
141+
<li>Jean-Bernard Piot (4D)</li>
142+
<li>David Poehlman, Simon Pieters (Opera Software)</li>
143+
<li>Sarah Pulis (Media Access Australia)</li>
144+
<li>T.V. Raman (Google, Inc.)</li>
145+
<li>Jan Richards</li>
146+
<li>Gregory Rosmaita (Invited Expert)</li>
147+
<li>Tony Ross (Microsoft Corporation)</li>
148+
<li>Alex Russell (Dojo Foundation) (</li>
149+
<li>Mark Sadecki (Invited Expert)</li>
150+
<li>Mario Sánchez Prada (Samsung Electronics Co., Ltd. and Gnome Foundation)</li>
151+
<li>Martin Schaus (SAP AG)</li>
152+
<li>Doug Schepers (W3C)</li>
153+
<li>Matthias Schmitt </li>
154+
<li>Marc Silbey (Microsoft Corporation)</li>
155+
<li>Leif Halvard Sili</li>
156+
<li>Henri Sivonen (Mozilla)</li>
157+
<li>Michael Smith (W3C)</li>
158+
<li>Andi Snow-Weaver (IBM Corporation)</li>
159+
<li>Ville Skyttä </li>
160+
<li>Henny Swan (BBC)</li>
161+
<li>Neil Soiffer (Design Science)</li>
162+
<li>Vitaly Sourikov</li>
163+
<li>Mike Squillace (IBM)</li>
164+
<li>Maciej Stachowiak (Apple Inc.)</li>
165+
<li>Christophe Strobbe</li>
166+
<li>Suzanne Taylor (Pearson plc)</li>
167+
<li>Terrill Thompson</li>
168+
<li>David Todd</li>
169+
<li>Gregg Vanderheiden (Invited Expert, Trace)</li>
170+
<li>Anne van Kesteren</li>
171+
<li>Wen He (Tencent)</li>
172+
<li>Wu Wei (W3C / RITT)</li>
173+
<li>Ryan Williams (Oracle)</li>
174+
<li>Tom Wlodkowski</li>
175+
<li>Sam White (Apple Inc.)</li>
176+
<li>Marco Zehe (Mozilla Foundation)</li>
177+
</ul>
178+
</section>
179+
<section class="section" id="ack_funders">
180+
<h4>Enabling funders</h4>
181+
<p>This publication has been funded in part with U.S. Federal funds from the Department of Education, National Institute on Disability, Independent Living, and Rehabilitation Research (NIDILRR), initially under contract number ED-OSE-10-C-0067 and currently under contract number HHSP23301500054C. The content of this publication does not necessarily reflect the views or policies of the U.S. Department of Education, nor does mention of trade names, commercial products, or organizations imply endorsement by the U.S. Government.</p>
182+
</section>
183+
</section>

‎common/biblio.js

+270
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,270 @@
1+
var biblio = {
2+
3+
"ACCNAME-AAM": {
4+
"title": "Accessible Name and Description: Computation and API Mappings 1.1",
5+
"href": "http://www.w3.org/TR/accname-aam-1.1/",
6+
"status": "WD",
7+
"publisher": "W3C",
8+
"authors": [
9+
"Joseph Scheuhammer",
10+
"Michael Cooper",
11+
"Andi Snow-Weaver",
12+
"Aaron Leventhal"
13+
],
14+
"etAl": true,
15+
"deliveredBy": [
16+
"http://www.w3.org/WAI/ARIA/"
17+
]
18+
},
19+
"ARIA-PRACTICES": {
20+
"title": "WAI-ARIA Authoring Practicess 1.1",
21+
"href": "http://www.w3.org/TR/wai-aria-practices-1.1/",
22+
"status": "WD",
23+
"publisher": "W3C",
24+
"authors": [
25+
"Matt King",
26+
"James Nurthen",
27+
"Michael Cooper",
28+
"Michiel Bijl",
29+
"Joseph Scheuhammer",
30+
"Lisa Pappas",
31+
"Richard Schwerdtfeger"
32+
],
33+
"etAl": true,
34+
"deliveredBy": [
35+
"http://www.w3.org/WAI/ARIA/"
36+
]
37+
},
38+
// Correct reference for ATK
39+
"ATK": {
40+
"href": "https://developer.gnome.org/atk/stable/",
41+
"title": "ATK - Accessibility Toolkit",
42+
"publisher": "The GNOME Project"
43+
},
44+
// Custom reference for the Mac OSX Accessibility API
45+
"AXAPI": {
46+
"href": "https://developer.apple.com/library/content/documentation/Accessibility/Conceptual/AccessibilityMacOSX/index.html#//apple_ref/doc/uid/TP40001078",
47+
"title": "Accessibility Programming Guide for OS X",
48+
"publisher": "Apple Corporation"
49+
},
50+
"CORE-AAM": {
51+
"title": "Core Accessibility API Mappings 1.1",
52+
"href": "http://www.w3.org/TR/core-aam-1.1/",
53+
"status": "WD",
54+
"publisher": "W3C",
55+
"authors": [
56+
"Joseph Scheuhammer",
57+
"Michael Cooper",
58+
"Andi Snow-Weaver",
59+
"Aaron Leventhal"
60+
],
61+
"etAl": true,
62+
"deliveredBy": [
63+
"http://www.w3.org/WAI/ARIA/"
64+
]
65+
},
66+
"DPUB-ARIA": {
67+
"title": "Digital Publishing WAI-ARIA Module 1.0",
68+
"href": "http://www.w3.org/TR/dpub-aria-1.0/",
69+
"status": "WD",
70+
"publisher": "W3C",
71+
"authors": [
72+
"Matt Garrish",
73+
"Tzviya Siegman",
74+
"Markus Gylling",
75+
"Shane McCarron"
76+
],
77+
"etAl": true,
78+
"deliveredBy": [
79+
"http://www.w3.org/WAI/ARIA/"
80+
]
81+
},
82+
"GRAPHICS-ARIA": {
83+
"title": "WAI-ARIA Graphics",
84+
"href": "http://www.w3.org/TR/graphics-aria-1.0/",
85+
"status": "WD",
86+
"publisher": "W3C",
87+
"authors": [
88+
"Amelia Bellamy-Royds",
89+
"Fred Esch",
90+
"Rich Schwerdtfeger",
91+
"Leonie Watson"
92+
],
93+
"etAl": true,
94+
"deliveredBy": [
95+
"http://www.w3.org/WAI/ARIA/",
96+
"http://www.w3.org/SVG/"
97+
]
98+
},
99+
"GRAPHICS-AAM": {
100+
"title": "Graphics Accessibility API Mappings",
101+
"href": "http://www.w3.org/TR/graphics-aam-1.0/",
102+
"status": "WD",
103+
"publisher": "W3C",
104+
"authors": [
105+
"Amelia Bellamy-Royds",
106+
"Fred Esch",
107+
"Richard Schwerdtfeger"
108+
],
109+
"etAl": true,
110+
"deliveredBy": [
111+
"http://www.w3.org/WAI/ARIA/",
112+
"http://www.w3.org/SVG/"
113+
]
114+
},
115+
116+
"EPUB-SSV": {
117+
"href": "http://www.idpf.org/epub/vocab/structure/",
118+
"title": "EPUB Structural Semantics Vocabulary",
119+
"publisher": "IDPF"
120+
},
121+
122+
"EPUB-Content": {
123+
"href": "http://www.idpf.org/epub/31/spec/epub-contentdocs.html",
124+
"title": "EPUB Content Documents 3.1",
125+
"publisher": "IDPF"
126+
},
127+
// Custom reference for GTK+ (GNOME GUI Toolkit) (not available from SpecRef biblio)
128+
"GTK": {
129+
"href": "https://developer.gnome.org/gtk3/stable/",
130+
"title": "GTK+ 3 Reference Manual",
131+
"publisher": "The GNOME Project"
132+
},
133+
"HTML-AAM": {
134+
"authors": [
135+
"Steve Faulkner",
136+
"Jason Kiss",
137+
"Cynthia Shelly",
138+
"Alexander Surkov"
139+
],
140+
"etAl": true,
141+
"href": "http://www.w3.org/TR/html-aam-1.0/",
142+
"title": "HTML Accessibility API Mappings 1.0",
143+
"status": "WD",
144+
"publisher": "W3C",
145+
"deliveredBy": [
146+
"http://www.w3.org/html",
147+
"http://www.w3.org/WAI/PF/"
148+
]
149+
},
150+
"MSAA": {
151+
"href": "https://msdn.microsoft.com/en-us/library/ms697707.aspx",
152+
"title": "Microsoft Active Accessibility (MSAA) 2.0",
153+
"publisher": "Microsoft Corporation"
154+
},
155+
"SVG-AAM": {
156+
"title": "SVG2 Accessibility API Mappings 1.0",
157+
"href": "http://www.w3.org/TR/svg-aam-1.0/",
158+
"status": "WD",
159+
"publisher": "W3C",
160+
"authors": [
161+
"Amelia Bellamy-Royds",
162+
"Richard Schwerdtfeger"
163+
],
164+
"etAl": true,
165+
"deliveredBy": [
166+
"http://www.w3.org/WAI/PF/"
167+
]
168+
},
169+
"SVG1": {
170+
"title": "Scalable Vector Graphics (SVG) 1.0 Specification",
171+
"href": "http://www.w3.org/TR/SVG10/",
172+
"status": "REC",
173+
"publisher": "W3C",
174+
"authors": [
175+
"John Ferraiolo"
176+
],
177+
"etAl": true,
178+
"deliveredBy": [
179+
"http://www.w3.org/SVG"
180+
]
181+
},
182+
"SVG11": {
183+
"title": "Scalable Vector Graphics (SVG) 1.1 (Second Edition)",
184+
"href": "http://www.w3.org/TR/SVG11/",
185+
"status": "REC",
186+
"publisher": "W3C",
187+
"authors": [
188+
"Erik Dahlström",
189+
"Patrick Dengler",
190+
"Anthony Grasso",
191+
"Chris Lilley",
192+
"Cameron McCormack",
193+
"Doug Schepers",
194+
"Jonathan Watt",
195+
"John Ferraiolo",
196+
"藤沢 淳 (FUJISAWA Jun)",
197+
"Dean Jackson"
198+
],
199+
"etAl": true,
200+
"deliveredBy": [
201+
"http://www.w3.org/SVG"
202+
]
203+
},
204+
"SVG2": {
205+
"title": "Scalable Vector Graphics (SVG) 2",
206+
"href": "http://www.w3.org/TR/2015/WD-SVG2-20150915/",
207+
"status": "WD",
208+
"publisher": "W3C",
209+
"authors": [
210+
"Nikos Andronikos",
211+
"Rossen Atanassov",
212+
"Tavmjong Bah",
213+
"Amelia Bellamy-Royds",
214+
"Brian Birtles",
215+
"Cyril Concolato",
216+
"Erik Dahlström",
217+
"Chris Lilley",
218+
"Cameron McCormack",
219+
"Doug Schepers",
220+
"Dirk Schulze",
221+
"Richard Schwerdtfeger",
222+
"Satoru Takagi",
223+
"Jonathan Watt"
224+
],
225+
"etAl": true,
226+
"deliveredBy": [
227+
"http://www.w3.org/WAI/PF/"
228+
]
229+
},
230+
"UI-AUTOMATION": {
231+
"href": "https://msdn.microsoft.com/en-us/library/ee684009%28v=vs.85%29.aspx",
232+
"title": "UI Automation",
233+
"publisher": "Microsoft Corporation"
234+
},
235+
// Custom reference for UIA Express (not available from SpecRef biblio).
236+
"UIA-EXPRESS": {
237+
"href": "https://msdn.microsoft.com/en-us/library/windows/desktop/dd561898%28v=vs.85%29.aspx",
238+
"title": "The IAccessibleEx Interface",
239+
"publisher": "Microsoft Corporation"
240+
},
241+
"WAI-ARIA": {
242+
"title": "Accessible Rich Internet Applications (WAI-ARIA) 1.1",
243+
"href": "http://www.w3.org/TR/wai-aria-1.1/",
244+
"status": "WD",
245+
"publisher": "W3C",
246+
"authors": [
247+
"James Craig",
248+
"Michael Cooper",
249+
"Shane McCarron"
250+
],
251+
"etAl": true,
252+
"deliveredBy": [
253+
"http://www.w3.org/WAI/PF/"
254+
]
255+
},
256+
"WAI-ARIA-10": {
257+
"authors": [
258+
"James Craig",
259+
"Michael Cooper"
260+
],
261+
"etAl": true,
262+
"href": "http://www.w3.org/TR/wai-aria/",
263+
"title": "Accessible Rich Internet Applications (WAI-ARIA) 1.0",
264+
"status": "REC",
265+
"publisher": "W3C",
266+
"deliveredBy": [
267+
"http://www.w3.org/WAI/PF/"
268+
]
269+
}
270+
};

‎common/css/common.css

+261
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,261 @@
1+
2+
* {
3+
/* add default line-height so different fonts don't affect the rhythm of line-box height */
4+
line-height:1.2; /* [sic] unitless multiplier, not EM size */
5+
}
6+
ol{ list-style:decimal; }
7+
ol ol{ list-style:upper-alpha; }
8+
ol ol ol{ list-style:lower-roman; }
9+
ol ol ol ol{ list-style:lower-alpha; }
10+
11+
/* following rules are specifically for the complex nested list in #textequivalentcomputation */
12+
/* but perhaps we should abstract this out to a more general classname (like .stepbystep or .nested) instead */
13+
#textequivalentcomputation li{
14+
margin-top:0.5em;
15+
margin-bottom:0.5em;
16+
}
17+
#textequivalentcomputation > ol{
18+
padding-top:0.5em;
19+
padding-bottom:0.7em;
20+
border:solid 1px #ccc;
21+
}
22+
#textequivalentcomputation > ol > li{
23+
margin-right:2em;
24+
}
25+
26+
/* not clear where/why the following two blocks are used; spacing on .role causes problem in html-aam; commenting out for now
27+
*
28+
.role, .state, .property, .widget {
29+
margin-left: 2em;
30+
margin-bottom: 4ex;
31+
}
32+
33+
.role-name, .state-name, .property-name, .widget-name {
34+
/* margin-left: -2em; */
35+
/* font-size: 100%;
36+
font-weight: bold;
37+
font-style: normal;
38+
font-variant: normal;
39+
}
40+
*/
41+
.role-parent ul,
42+
.role-base ul,
43+
.role-children ul,
44+
.role-related ul,
45+
.role-scope ul,
46+
.role-mustcontain ul,
47+
.role-required-properties ul,
48+
.role-properties ul,
49+
.role-inherited ul,
50+
.role-namefrom ul,
51+
.state-value ul, .state-related ul,
52+
.state-applicability ul,
53+
.state-descendants ul,
54+
.property-value ul,
55+
.property-related ul,
56+
.property-applicability ul,
57+
.property-descendants ul,
58+
.quickref-required ul,
59+
.quickref-supported ul {
60+
margin:0;
61+
padding:0;
62+
list-style-type:none;
63+
}
64+
/*
65+
.role-parent ul li, .role-children ul li, .role-related ul li, .role-scope ul li, .role-mustcontain ul li, .role-required-properties ul li, .role-properties ul li, .role-inherited ul li, .role-namefrom ul li, .state-value ul li, .state-related ul li, .state-applicability ul li, .state-descendants ul li, .property-value ul li, .property-related ul li, .property-applicability ul li, .property-descendants ul li {
66+
display: inline;
67+
}
68+
.role-parent ul li:after, .role-children ul li:after, .role-related ul li:after, .role-scope ul li:after, .role-mustcontain ul li:after, .role-required-properties ul li:after, .role-properties ul li:after, .role-inherited ul li:after, .role-namefrom ul li:after, .state-value ul li:after, .state-related ul li:after, .state-applicability ul li:after, .state-descendants ul li:after, .property-value ul li:after, .property-related ul li:after, .property-applicability ul li:after, .property-descendants ul li:after {
69+
content: " ";
70+
}
71+
*/
72+
/*
73+
.widget-description ul, .widget-keyboard ul, .widget-mouse ul, .widget-styling ul, .widget-aria ul, .widget-example ul {
74+
margin: 0;
75+
padding: 0;
76+
list-style-type: none;
77+
}
78+
*/
79+
80+
table{
81+
border:solid 2px #999;
82+
border-width:1px 0 0 1px;
83+
margin:0.1em 0 1em;
84+
padding:0;
85+
border-spacing:0;
86+
border-collapse:collapse;
87+
}
88+
th, td{
89+
border:solid 2px #999;
90+
border-width:0 1px 1px 0;
91+
padding:0.15em 0.3em 0.1em;
92+
vertical-align:top;
93+
text-align:left;
94+
}
95+
th{
96+
background-color:#eee;
97+
}
98+
caption{
99+
text-align:left;
100+
color:#555;
101+
font-style:normal;
102+
margin:1em 0 0.1em;
103+
padding:0 0 0 0.3em;
104+
}
105+
table.role-features th, table.role-features td, table.state-features th, table.state-features td, table.property-features th, table.property-features td, table.value-descriptions th, table.value-descriptions td {
106+
min-width:20em;
107+
}
108+
table.role-features tbody th, table.state-features tbody th, table.property-features tbody th, table.value-descriptions tbody th {
109+
text-align: left !important;
110+
}
111+
th+th, td+td{
112+
width:auto;
113+
}
114+
/*
115+
.role-abstract-head, .role-parent-head, .role-children-head, .role-related-head, .role-scope-head, .role-mustcontain-head, .role-required-properties-head, .role-properties-head, .role-inherited-head, .role-namefrom-head, .role-child-presentational-head, .role-presentational-inherited-head, .state-value-head, .state-related-head, .state-applicability-head, .property-value-head, .property-related-head, .property-applicability-head, .widget-description-head, .widget-keyboard-head, .widget-mouse-head, .widget-styling-head, .widget-aria-head, .widget-example-head {
116+
width: 20em;
117+
}
118+
table.role-features, table.role-features tbody tr td, table.role-features thead tr th, table.state-features, table.state-features tbody tr td, table.state-features thead tr th, table.property-features, table.property-features tbody tr td, table.property-features thead tr th, table.widget-features, table.widget-features tbody tr td, table.widget-features tbody tr th {
119+
border: 1px solid #000000;
120+
}
121+
table.role-properties tbody tr th, table.state-properties tbody tr th, table.property-properties tbody tr th {
122+
padding-right: 1em;
123+
}
124+
table.value-descriptions caption {
125+
margin-top: 1em;
126+
}
127+
*/
128+
129+
html code, html pre, html kbd{ /* more specific selector than the default W3C style sheet */
130+
/* Most browsers default 'monospace' to Courier, which has an ex-height of about 60% normal size. */
131+
/* Monaco has a normal ex-height so font sizes appear more consistent with surrounding non-monospaced text. */
132+
font-family: "Monaco", "Courier New", "Courier", monospace;
133+
font-family: "Monaco", "Courier New", "Courier"; /* declare as separate rule to account for browser font-size inconsistencies, monospace fallback from previous rule should still work in the [almost non-existant] case that a user system does not have Courier */
134+
font-size:0.9em;
135+
}
136+
html pre { /* more specific selector than the default W3C style sheet */
137+
border: solid 1px #999;
138+
background-color: #fcfcfc;
139+
margin:1em 0;
140+
padding:0.5em 0.8em;
141+
font-size:0.75em; /* text in blocks code blocks looked too big now that font is back to normal size */
142+
line-height:1.4; /* [sic] unitless multiplier, not EM size */
143+
}
144+
pre .tag, code .tag, code.tag{
145+
color:#00c; /* blue */
146+
}
147+
pre .str, code .str, code.str{
148+
color:#090; /* green */
149+
}
150+
pre .comment, code .comment, code.comment, .comment .str, .comment .tag{
151+
color:#777; /* gray */
152+
}
153+
/*
154+
.role-reference, .role-reference:link, .role-reference:visited {
155+
background-color: #eee;
156+
}
157+
.state-reference, .state-reference:link, .state-reference:visited {
158+
background-color: #ffc;
159+
}
160+
.property-reference, .property-reference:link, .property-reference:visited {
161+
background-color: #ccf;
162+
}
163+
.widget-reference, .widget-reference:link, .widget-reference:visited {
164+
background-color: #9f6;
165+
}
166+
*/
167+
.role-reference, .state-reference, .property-reference, .widget-reference, .design-pattern-reference {}
168+
.termref, a.termref:link {
169+
color:#006400;
170+
text-decoration:none;
171+
font-style:italic;
172+
}
173+
a.termref:visited {
174+
color:inherit;
175+
}
176+
a.termref:hover, a.termref:focus {
177+
background-color: #fafad2;
178+
color: #006400;
179+
}
180+
.empty {
181+
display: none;
182+
}
183+
.note {
184+
color:#444;
185+
border:solid 1px #ccc;
186+
margin:1em 0;
187+
padding:1em 2em;
188+
}
189+
.ednote {
190+
border:solid 3px #cca;
191+
background-color:#ffd;
192+
padding:0 0.8em;
193+
}
194+
.role-screenshot {
195+
float: right;
196+
margin-left: 1em;
197+
margin-bottom: 1ex;
198+
}
199+
.role-screenshot p {
200+
text-align: center;
201+
font-size: smaller;
202+
}
203+
.image {
204+
text-align: center;
205+
}
206+
.img {
207+
margin-left: auto;
208+
margin-right: auto;
209+
}
210+
.img p {
211+
text-align: center;
212+
font-weight: bold;
213+
font-size: smaller;
214+
}
215+
.img-caption {
216+
font-weight: bold;
217+
}
218+
/*
219+
dl.runin dt {
220+
display: run-in;
221+
}
222+
dl.runin dt:after {
223+
content: ": ";
224+
}
225+
*/
226+
dl.compact dt {
227+
font-weight:normal;
228+
}
229+
/*
230+
dl.compact dd {
231+
margin-left: 5em;
232+
}
233+
*/
234+
.rfc2119 {
235+
font-weight: bold;
236+
text-transform: uppercase;
237+
}
238+
.tocnum {}
239+
.section {}
240+
.todo {
241+
background-color:#f99;
242+
}
243+
.issue {
244+
background-color:#0c0;
245+
text-transform:uppercase;
246+
}
247+
abbr.symbol {
248+
border-bottom:none;
249+
}
250+
251+
.aref {
252+
font-family: monospace;
253+
font-weight: bold;
254+
color: #ff4500 !important;
255+
}
256+
257+
/* prevent <dt> from butting up against previous <dd> in .termlist (terms.html) */
258+
.termlist dt {margin-top: 1em;}
259+
260+
261+

‎common/css/editors.css

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
.todo {
2+
background-color: #FF9999;
3+
}
4+
/* Placeholder elements */
5+
.placeholder, .toc, .miniindex, .role-children, .role-inherited, .namerequired-inherited, .presentation-inherited, .property-descendants, .state-descendants, #index_role, #index_state, #index_property, #acknowledgements, #references {
6+
color: #666666;
7+
}
8+
.section, .role, .state, .property {
9+
border-left: medium solid #666666;
10+
padding-left: 1ex;
11+
margin-left: 0;
12+
}
13+
.role-name, .state-name, .property-name {
14+
margin-left: 0;
15+
}
16+
.role-reference, .role-reference:link, .role-reference:visited {
17+
background-color: #eee;
18+
text-decoration: underline;
19+
color: blue;
20+
}
21+
.state-reference, .state-reference:link, .state-reference:visited {
22+
background-color: #ffc;
23+
text-decoration: underline;
24+
color: blue;
25+
}
26+
.property-reference, .property-reference:link, .property-reference:visited {
27+
background-color: #ccf;
28+
text-decoration: underline;
29+
color: blue;
30+
}
31+
.widget-reference, .widget-reference:link, .widget-reference:visited,
32+
.design-pattern-reference, .design-pattern-reference:link, .design-pattern-reference:visited {
33+
background-color: #9f6;
34+
text-decoration: underline;
35+
color: blue;
36+
}

‎common/css/mapping-tables.css

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
body {line-height: 1.4;}
2+
caption {
3+
text-align:left;
4+
font-size: 120%;
5+
font-weight:bold;
6+
margin-bottom: 0.25em;
7+
}
8+
table {
9+
width:100%;
10+
border-collapse: collapse;
11+
border: 1px solid #630;
12+
}
13+
th, td {
14+
text-align: left;
15+
vertical-align: top;
16+
padding: 0.3em;
17+
border-collapse: collapse;
18+
border: 1px solid #630;
19+
}
20+
th code, td code {font-size: 123%;}
21+
22+
a[href|="#el"], a[href|="#att"] {color: #D93B00;}
23+
24+
.warning {color: #990000; font-size: x-large; font-weight: normal;}
25+
.map-table, .details {clear: left; margin-bottom: 2em;}
26+
.map-table thead {background-color: #ddd;}
27+
.map-table tr:nth-child(2n+2) {background-color: #fafafa;}
28+
.map-table tbody th {max-width: 200px;}
29+
details, summary {display: block;}
30+
details {border-bottom: 1px solid #ccc; padding: 0.5em;}
31+
summary {padding: 0.25em;background: #fff url(../img/rightArrow.png) no-repeat 0.5em center; padding: 0.25em 0.25em 0.25em 2em;}
32+
summary::-webkit-details-marker {display: none;}
33+
.open summary, details[open] summary {background-color: #f5f5f5; background-image: url(../img/downArrow.png);}
34+
summary .el-context {display: inline;}
35+
summary:hover, summary:focus, details[open] summary:hover, details[open] summary:focus {background-color: #eee;}
36+
.map table {margin: 0.5em 1% 1%; width: 98%;}
37+
.map th span {font-weight: normal;}
38+
.map th {width: 18%;}
39+
.switch-view {font-size: 100%; margin-bottom: 1.5em;}
40+
.show-hide-cols {border: 1px solid #ccc; float: left; margin-bottom: 0.5em; padding: 10px;}
41+
.show-hide-cols span {margin: 0.25em 0; vertical-align: middle;}
42+
.show-hide-cols button {font-size: 80%; margin: 0 5px; padding-right: 15px;}
43+
.show-hide-cols .action {position: absolute; left: -9999em;}
44+
.show-col {background: #eee; border-style: inset;}
45+
.hide-col {background: #ddd; border-style: outset;}
46+
47+
.general, .role, .states, .name, .actions, .objattrs, .textattrs, .relations,
48+
.ifaces, .children, .ctrltype, .ctrlpattern, .properties, .subrole, .roledesc {
49+
margin: 0 0 6px;
50+
line-height: 1.3;
51+
}
52+
53+
.type {
54+
font-weight: bold;
55+
}

‎common/css/slices.css

+146
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
/* Navigation styles taken from Understanding WCAG 2.0 */
2+
#slices_maincontent{
3+
clear:both;
4+
}
5+
#slices_navigation {
6+
padding: 3px 0 0.5em 0;
7+
margin: 0 0 0.5em;
8+
border-bottom: 2px solid #778;
9+
float: left;
10+
width: 100%;
11+
clear: both;
12+
}
13+
#slices_navigation li {
14+
list-style: none;
15+
margin: 0;
16+
display: inline;
17+
float: left;
18+
font-size: 0.8125em;
19+
}
20+
#slices_navigation li a {
21+
padding: 3px 0.5em;
22+
margin-right: 3px;
23+
border: 1px solid #778;
24+
background: #dde;
25+
text-decoration: none;
26+
float: left;
27+
}
28+
#slices_navigation li a:link {
29+
color: #404040
30+
}
31+
#slices_navigation li a:visited {
32+
color: #404040
33+
}
34+
#slices_navigation li a:hover, #slices_navigation li a:focus, #slices_navigation li a:active {
35+
color: #000;
36+
background: #aae;
37+
border-color: #227;
38+
float: left;
39+
}
40+
#slices_navigationbottom {
41+
padding: .5em 0 0 0;
42+
margin: 2em 0 10px 0;
43+
border-top: 2px solid #778;
44+
float: right;
45+
width: 100%;
46+
} /* top, right, bottom, left */
47+
#slices_navigationbottom li {
48+
list-style: none;
49+
margin: 0;
50+
display: inline;
51+
float: left;
52+
font-size: 0.8125em;
53+
}
54+
#slices_navigationbottom li a {
55+
padding: 3px 0.5em;
56+
margin-left: 3px;
57+
border: 1px solid #778;
58+
background: #dde;
59+
text-decoration: none;
60+
float: left
61+
}
62+
#slices_navigationbottom li a:link {
63+
color: #404040
64+
}
65+
#slices_navigationbottom li a:visited {
66+
color: #404040
67+
}
68+
#slices_navigationbottom li a:hover, #slices_navigationbottom li a:focus, #slices_navigationbottom li a:active {
69+
color: #000;
70+
background: #aae;
71+
border-color: #227;
72+
float: left
73+
}
74+
div.slices_footer {
75+
margin-top: 1em;
76+
}
77+
* html .slices_skipnav {
78+
display: block
79+
} /*Switch on for IE6 and below*/
80+
*+html .slices_skipnav {
81+
display: block
82+
} /*Switch on for IE7*/
83+
:root .slices_skipnav {
84+
display: block
85+
} /*Switch on for Moz, FF and Safari*/
86+
.slices_skipnav p {
87+
margin: 5px 0 0 0;
88+
padding: 0;
89+
position: absolute;
90+
font-size: 2em
91+
}
92+
.slices_skipnav a {
93+
width: 26em;
94+
display:block;
95+
color: #fff;
96+
background: #333;
97+
text-decoration: none;
98+
padding: 5px;
99+
position: absolute;
100+
left: -1000em;
101+
top: 0;
102+
font-weight: bold
103+
}
104+
.slices_skipnav a:visited {
105+
color: #fff
106+
}
107+
.slices_skipnav a:focus, .slices_skipnav a:active {
108+
z-index: 99;
109+
top: -3em;
110+
left: 0;
111+
border: solid #777 2px;
112+
color: #fff;
113+
background: #333 !important
114+
} /*Note IE bug that requires use of :active to mimic effect of :focus*/
115+
.slices_skipnav a:hover {
116+
cursor: default
117+
}
118+
#slices_masthead {
119+
margin-top:-.5em;
120+
position: relative;
121+
display: block;
122+
}
123+
p.slices_collectiontitle {
124+
text-align: right;
125+
font-size: 135%;
126+
font-style: oblique;
127+
color: #005A9C;
128+
padding-top: .5em;
129+
}
130+
p.slices_collectiontitle a {
131+
text-decoration:none;
132+
color:#005A9C;
133+
border-bottom:dotted #585858 1px;/* glossary ref */
134+
background-color: #FFFFFF;
135+
}
136+
p.slices_collectiontitle a:hover, p.slices_collectiontitle a:focus {
137+
text-decoration:none;
138+
color:#005A9C;
139+
border-bottom:dotted #585858 1px;/* glossary ref */
140+
background-color: inherit;
141+
}
142+
p.slices_logo {
143+
float: left;
144+
margin: 0;
145+
margin-bottom: .5em;
146+
}

‎common/img/downArrow.png

176 Bytes
Loading

‎common/img/rightArrow.png

747 Bytes
Loading

‎common/script/jquery-1.9.0.min.js

+4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎common/script/jquery.details.min.js

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎common/script/mapping-tables.js

+254
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,254 @@
1+
/* globals $, require */
2+
3+
require(["core/pubsubhub"], function(respecEvents) {
4+
"use strict";
5+
6+
var mappingTableInfos = [];
7+
8+
function viewAsSingleTable (mappingTableInfo) {
9+
mappingTableInfo.detailsContainer.hide();
10+
//add <summary> @id to ids array and remove @id from summary
11+
$('summary', mappingTableInfo.detailsContainer).each(function() {
12+
$(this).removeAttr('id');
13+
});
14+
mappingTableInfo.tableContainer.show();
15+
//add relevant @id to tr
16+
$('tbody tr',mappingTableInfo.tableContainer).each(function() {
17+
$(this).attr('id', mappingTableInfo.ids[$(this).index()]);
18+
});
19+
}
20+
21+
function viewAsDetails (mappingTableInfo) {
22+
mappingTableInfo.tableContainer.hide();
23+
//add tr @id to ids array and remove @id from tr
24+
$('tbody tr', mappingTableInfo.tableContainer).each(function() {
25+
$(this).removeAttr('id');
26+
});
27+
mappingTableInfo.detailsContainer.show();
28+
//add relevant @id to summary
29+
$('summary', mappingTableInfo.detailsContainer).each(function() {
30+
$(this).attr('id', mappingTableInfo.ids[$('details', mappingTableInfo.detailsContainer).index($(this).parent())]);
31+
});
32+
}
33+
34+
function mappingTables() {
35+
$('.table-container').each(function() {
36+
// object to store information about a mapping table.
37+
var tableInfo = {};
38+
mappingTableInfos.push (tableInfo);
39+
//store a reference to the container and hide it
40+
tableInfo.tableContainer = $(this).hide();
41+
//store a reference to the table
42+
tableInfo.table = $('table', tableInfo.tableContainer);
43+
//create a container div to hold all the details element and insert after table
44+
tableInfo.detailsContainer = $('<div class="details removeOnSave" id="' + tableInfo.table.attr('id') + '-details"></div>');
45+
tableInfo.tableContainer.after(tableInfo.detailsContainer);
46+
// array to store @id attributes for rows and summaries.
47+
tableInfo.ids = [];
48+
49+
//add switch to view as single table or details/summary
50+
var $viewSwitch = $('<button class="switch-view removeOnSave">' + mappingTableLabels.viewByTable + '</button>').on('click', function() {
51+
//array to store summary/tr @ids
52+
//if current view is details/summary
53+
if (tableInfo.detailsContainer.is(':visible')) {
54+
viewAsSingleTable (tableInfo);
55+
// toggle the $viewSwitch label from view-as-single-table to view-by-X
56+
$(this).text(mappingTableLabels.viewByLabels[tableInfo.table.attr('id')]);
57+
} else {
58+
viewAsDetails (tableInfo);
59+
// toggle the $viewSwitch label from view-by-X to view-as-single-table.
60+
$(this).text(mappingTableLabels.viewByTable);
61+
}
62+
});
63+
tableInfo.tableContainer.before($viewSwitch);
64+
//store the table's column headers in array colHeaders
65+
var colHeaders = [];
66+
$('thead th', tableInfo.table).each(function() {
67+
var colHead = $(this).html();
68+
colHeaders.push(colHead);
69+
});
70+
//remove first column header from array
71+
colHeaders.shift();
72+
//for each row in the table, create details/summary..
73+
$('tbody tr', tableInfo.table).each(function() {
74+
//store a reference to the row
75+
var $row = $(this),
76+
//store a reference to the row header for use in details' summary and table caption
77+
$caption = $('th', $row).html(),
78+
$summary = $caption.replace(/<a [^>]+>|<\/a>/g,'');
79+
//get the tr's @id
80+
var id = $row.attr('id');
81+
//store the row's @id
82+
tableInfo.ids.push(id);
83+
//remove the tr's @id since same id will be used in the relevant summary element
84+
$row.removeAttr('id');
85+
//store the row's cells in array rowCells
86+
var rowCells = [];
87+
//add row cells to array rowCells for use in the details' table
88+
$('td', $row).each(function() {
89+
rowCells.push($(this).html());
90+
});
91+
//clone colHeaders array for use in details table row headers
92+
var rowHeaders = colHeaders.slice(0);
93+
//if attributes mapping table...
94+
if (tableInfo.table.hasClass('attributes')) {
95+
//remove second column header from array
96+
rowHeaders.shift();
97+
//remove and store "HTML elements" cell from rowCells array for use in details' summary and table caption
98+
var relevantElsCaption = rowCells.shift(),
99+
relevantElsSummary = relevantElsCaption.replace(/<a [^>]+>|<\/a>/g,'');
100+
}
101+
//create content for each <details> element; add row header's content to summary
102+
var details = '<details class="map removeOnSave"><summary id="' + id + '">' + $summary;
103+
//if attributes mapping table, append relevant elements to summary
104+
if (tableInfo.table.hasClass('attributes')) {
105+
details += ' [' + relevantElsSummary + ']';
106+
}
107+
details += '</summary><table><caption>' + $caption;
108+
if (tableInfo.table.hasClass('attributes')) {
109+
details += ' [' + relevantElsCaption + ']';
110+
}
111+
details += '</caption><tbody>';
112+
//add table rows using appropriate header from detailsRowHead array and relevant value from rowCells array
113+
for(var i=0, len=rowCells.length; i < len; i++) {
114+
details += '<tr><th>' + rowHeaders[i] + '</th><td>' + rowCells[i] + '</td></tr>';
115+
}
116+
details += '</tbody></table></details>';
117+
//append the <details> element to the detailsContainer div
118+
tableInfo.detailsContainer.append(details);
119+
});
120+
//add 'expand/collapse all' functionality
121+
var $expandAllButton = $('<button class="expand removeOnSave">' + mappingTableLabels.expand + '</button>');
122+
var $collapseAllButton = $('<button disabled="disabled" class="collapse removeOnSave">' + mappingTableLabels.collapse + '</button>');
123+
tableInfo.detailsContainer.prepend($expandAllButton, $collapseAllButton);
124+
var expandCollapseDetails = function($detCont, action) {
125+
$detCont.find('details').each(function() {
126+
var $details = $(this),
127+
$detailsSummary = $('summary', $details),
128+
$detailsNotSummary = $details.children(':not(summary)');
129+
if (action == 'collapse') {
130+
$details.removeClass('open').prop('open', false);
131+
$detailsSummary.attr('aria-expanded', false);
132+
$detailsNotSummary.hide();
133+
} else {
134+
$details.addClass('open').prop('open', true);
135+
$detailsSummary.attr('aria-expanded', true);
136+
$detailsNotSummary.show();
137+
}
138+
});
139+
};
140+
$expandAllButton.on('click', function() {
141+
expandCollapseDetails(tableInfo.detailsContainer, 'expand');
142+
$(this).attr('disabled', 'disabled');
143+
tableInfo.detailsContainer.find('button.collapse').removeAttr('disabled');
144+
});
145+
$collapseAllButton.on('click', function() {
146+
expandCollapseDetails(tableInfo.detailsContainer, 'collapse');
147+
$(this).attr('disabled', 'disabled');
148+
tableInfo.detailsContainer.find('button.expand').removeAttr('disabled');
149+
});
150+
//add collapsible table columns functionality
151+
var $showHideCols = $('<div class="show-hide-cols removeOnSave"><span>' + mappingTableLabels.showHideCols + '</span></div>');
152+
for(var i=0, len=colHeaders.length; i < len; i++) {
153+
var toggleLabel = colHeaders[i].replace(/<a [^<]+>|<\/a>/g,'').replace(/<sup>\[Note [0-9]+\]<\/sup>/g, '');
154+
var $showHideColButton = $('<button class="hide-col" aria-pressed="false" title="' + mappingTableLabels.hideToolTipText + '"><span class="action">' + mappingTableLabels.hideActionText + '</span> ' + toggleLabel + '</button>').on('click', function() {
155+
var index = $(this).index() + 1;
156+
if ($(this).attr('class') == 'hide-col') {
157+
$('tr>th:nth-child('+index+')', tableInfo.table).hide();
158+
$('tr>td:nth-child('+index+')', tableInfo.table).hide();
159+
$(this).attr({'class': 'show-col', 'aria-pressed': 'true', 'title': mappingTableLabels.showToolTipText});
160+
$('span', $(this)).text(mappingTableLabels.showActionText);
161+
} else {
162+
$('tr>th:nth-child('+index+')', tableInfo.table).show();
163+
$('tr>td:nth-child('+index+')', tableInfo.table).show();
164+
$(this).attr({'class': 'hide-col', 'aria-pressed': 'false', 'title': mappingTableLabels.hideToolTipText});
165+
$('span', $(this)).text(mappingTableLabels.hideActionText);
166+
}
167+
});
168+
$('span:not(.action)', $showHideColButton).remove();
169+
$showHideCols.append($showHideColButton);
170+
}
171+
tableInfo.tableContainer.prepend($showHideCols);
172+
});
173+
//call the jquery-details plugin
174+
var nativeDetailsSupport = $.fn.details.support;
175+
if (!nativeDetailsSupport) {
176+
$('html').addClass('no-details');
177+
}
178+
$('details').details();
179+
180+
//Use jquery-details plugin event handlers on details open/close to set state of expand/collapse all buttons
181+
$('details').on({
182+
'open.details': function() {
183+
setExpandCollapseButtons($(this).parent());
184+
},
185+
'close.details': function() {
186+
setExpandCollapseButtons($(this).parent());
187+
}
188+
});
189+
var setExpandCollapseButtons = function($detCont) {
190+
var totalDetails = $detCont.find('details').length;
191+
var detailsOpen = $detCont.find('details.open, details[open]').length;
192+
//if, after the details is opened or closed...
193+
if (detailsOpen == totalDetails) {//all details are open, enable collapse all button and disable expand all button
194+
$detCont.find('button.collapse').removeAttr('disabled');
195+
$detCont.find('button.expand').attr('disabled', 'disabled');
196+
} else if (totalDetails > detailsOpen && detailsOpen > 0) {//some but not all details are open, enable collapse all button
197+
$detCont.find('button.collapse').removeAttr('disabled');
198+
$detCont.find('button.expand').removeAttr('disabled');
199+
} else {//no details are open, disable collapse all button and enable expand all button
200+
$detCont.find('button.collapse').attr('disabled', 'disabled');
201+
$detCont.find('button.expand').removeAttr('disabled');
202+
}
203+
}
204+
//if page URL links to frag id, reset location to frag id once details/summary view is set
205+
if(window.location.hash) {
206+
var hash = window.location.hash;
207+
window.location = hash;
208+
//if frag id is for a summary element, expand the parent details element
209+
if ($(hash).prop('tagName') == "SUMMARY") {
210+
expandReferredDetails(hash);
211+
}
212+
}
213+
214+
// Add a hook to expand referred details element when <a> whose @href is fragid of a <summary> is clicked.
215+
$('a[href^="#"]').each(function() {
216+
var fragId = $(this).attr('href');
217+
if ($(fragId).prop('tagName') == "SUMMARY") {
218+
$(this).on('click', function() {
219+
expandReferredDetails(fragId);
220+
});
221+
}
222+
});
223+
224+
};
225+
226+
function expandReferredDetails(summaryFragId) {
227+
//if details element is not open, activate click on summary
228+
if (!$(summaryFragId).parent().prop('open')) {
229+
$(summaryFragId).click();
230+
}
231+
}
232+
233+
if (respecEvents) {
234+
// Fix the scroll-to-fragID:
235+
// - if running with ReSpec, do not invoke the mapping tables script until
236+
// ReSpec executes its own scroll-to-fragID.
237+
// - if running on a published document (no ReSpec), invoke the mapping tables
238+
// script on document ready.
239+
respecEvents.sub ("start", function (details) {
240+
if (details === "core/location-hash") {
241+
mappingTables();
242+
}
243+
});
244+
// Subscribe to ReSpec "save" message to set the mapping tables to
245+
// view-as-single-table state.
246+
respecEvents.sub ("save", function (details) {
247+
mappingTableInfos.forEach (function (item) {
248+
viewAsSingleTable (item);
249+
});
250+
});
251+
} else {
252+
$(document).ready(mappingTables);
253+
}
254+
});

‎common/script/resolveReferences.js

+285
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,285 @@
1+
/* globals respecConfig, $, localRoleInfo, roleInfo, require */
2+
/* exported linkCrossReferences, restrictReferences, fixIncludes */
3+
4+
function linkCrossReferences() {
5+
"use strict";
6+
7+
var specBaseURL = ( respecConfig.ariaSpecURLs ?
8+
respecConfig.ariaSpecURLs[respecConfig.specStatus] : null
9+
);
10+
11+
var coreMappingURL = (respecConfig.coreMappingURLs ?
12+
respecConfig.coreMappingURLs[respecConfig.specStatus] : null
13+
);
14+
15+
var accNameURL = (respecConfig.accNameURLs ?
16+
respecConfig.accNameURLs[respecConfig.specStatus] : null
17+
);
18+
19+
var htmlMappingURL = (respecConfig.htmlMappingURLs ?
20+
respecConfig.htmlMappingURLs[respecConfig.specStatus] : null
21+
);
22+
23+
var dpubModURL = ( respecConfig.dpubModURLs ?
24+
respecConfig.dpubModURLs[respecConfig.specStatus] : null
25+
);
26+
27+
var graphicsModURL = ( respecConfig.graphicsModURLs ?
28+
respecConfig.graphicsModURLs[respecConfig.specStatus] : null
29+
);
30+
var graphicsMappingModURL = ( respecConfig.graphicsMappingModURLs ?
31+
respecConfig.graphicsMappingModURLs[respecConfig.specStatus] : null
32+
);
33+
var practicesURL = ( respecConfig.practicesURLs ?
34+
respecConfig.practicesURLs[respecConfig.specStatus] : null
35+
);
36+
37+
38+
function setHrefs (selString, baseUrl) {
39+
$ (selString).each (
40+
function (idx, el) {
41+
var href = $ (el).attr ('href');
42+
$ (el).attr ('href', baseUrl + href);
43+
});
44+
}
45+
46+
// First the links to the definitions of roles, states, and properties.
47+
if (!!specBaseURL) {
48+
setHrefs ('a.role-reference, a.property-reference, a.state-reference, a.specref', specBaseURL);
49+
}
50+
else {
51+
console.log ("linkCrossReferences(): specBaseURL is not defined.");
52+
}
53+
54+
// Second, for links to role, state, and property mappings in the core mapping
55+
// doc.
56+
if (!!coreMappingURL) {
57+
setHrefs ('a.core-mapping', coreMappingURL);
58+
}
59+
else {
60+
console.log ("linkCrossReferences(): Note -- coreMappingURL is not defined.");
61+
}
62+
63+
// Third, for links into the accname document.
64+
if (!!accNameURL) {
65+
setHrefs ('a.accname', accNameURL);
66+
}
67+
else {
68+
console.log ("linkCrossReferences(): Note -- accNameURL is not defined.");
69+
}
70+
// Fourth, for links to role, state, and property mappings in the html mapping
71+
// doc.
72+
if (!!htmlMappingURL) {
73+
setHrefs ('a.html-mapping', htmlMappingURL);
74+
}
75+
else {
76+
console.log ("linkCrossReferences(): Note -- htmlMappingURL is not defined.");
77+
}
78+
// Links to the DPub WAI-ARIA Module.
79+
if (!!dpubModURL) {
80+
setHrefs ('a.dpub-role-reference, a.dpub-property-reference, a.dpub-state-reference, a.dpub', dpubModURL);
81+
}
82+
else {
83+
console.log ("linkCrossReferences(): dpubModURL is not defined.");
84+
}
85+
// Links to the Graphics WAI-ARIA Module.
86+
if (!!graphicsModURL) {
87+
setHrefs ('a.graphics-role-reference, a.graphics-property-reference, a.graphics-state-reference, a.graphics', graphicsModURL);
88+
}
89+
else {
90+
console.log ("linkCrossReferences(): graphicsModURL is not defined.");
91+
}
92+
// Links to the Graphics Mapping WAI-ARIA Module.
93+
if (!!graphicsMappingModURL) {
94+
setHrefs ('a.graphics-role-mapping, a.graphics-property-mapping, a.graphics-state-mapping, a.graphics-mapping', graphicsMappingModURL);
95+
}
96+
else {
97+
console.log ("linkCrossReferences(): graphicsMappingModURL is not defined.");
98+
}
99+
// Links to the Authoring Practices.
100+
if (!!practicesURL) {
101+
setHrefs ('a.practices', practicesURL);
102+
}
103+
else {
104+
console.log ("linkCrossReferences(): practicesURL is not defined.");
105+
}
106+
107+
108+
109+
}
110+
111+
function updateReferences(base) {
112+
// update references to properties
113+
//
114+
// New logic:
115+
// 1. for each item, find it's nearest 'section' ancestor (or nearest div
116+
// with a class of role, property, or state)
117+
// 2. if we have not already seen this item in this section, it is a link using 'a'
118+
// 3. otherwise, it is just a styled reference to the item using 'code'
119+
120+
"use strict";
121+
122+
var baseURL = respecConfig.ariaSpecURLs[respecConfig.specStatus];
123+
124+
var sectionMap = {} ;
125+
126+
$.each(base.querySelectorAll("pref, sref, rref"), function(i, item) {
127+
var $item = $(item) ;
128+
129+
// what are we referencing?
130+
var content = $item.text();
131+
var usedTitle = false;
132+
var ref = $item.attr("title");
133+
if (!ref) {
134+
ref = $item.attr("data-lt");
135+
if (!ref) {
136+
ref = content;
137+
} else {
138+
usedTitle = true;
139+
}
140+
} else {
141+
usedTitle = true;
142+
}
143+
144+
// what sort of reference are we?
145+
var theClass = ($item.is("pref") ? "property-reference" : ($item.is("sref") ? "state-reference" : "role-reference"));
146+
147+
// property and state references are assumed to be in the parent document
148+
// a role reference might be local or might be elsewhere
149+
var URL = $item.is("pref, sref") ? baseURL+"#" : "#";
150+
151+
// assume we are making a link
152+
var theElement = "a";
153+
154+
// pSec is the nearest parent section element
155+
var $pSec = $item.parents("section,div.role,div.state,div.property").first();
156+
var pID = $pSec.attr("id");
157+
if (pID) {
158+
if (sectionMap[pID]) {
159+
if (sectionMap[pID][ref]) {
160+
// only change the element if we not in a table or a dl
161+
if ($item.parents("table,dl").length === 0) {
162+
if (usedTitle) {
163+
theElement = "span";
164+
} else {
165+
theElement = "code";
166+
}
167+
}
168+
} else {
169+
sectionMap[pID][ref] = 1;
170+
}
171+
} else {
172+
sectionMap[pID] = {} ;
173+
sectionMap[pID][ref] = 1;
174+
}
175+
}
176+
177+
if (theElement === "a" && $item.is('rref') ) {
178+
if (typeof localRoleInfo !== 'undefined' && localRoleInfo[ref]) {
179+
ref = localRoleInfo[ref].fragID;
180+
} else if (baseURL && roleInfo[ref]) {
181+
ref = roleInfo[ref].fragID;
182+
URL = baseURL + "#";
183+
} else {
184+
// no roleInfo structure. Make an assumption
185+
URL = baseURL + "#";
186+
}
187+
}
188+
var sp = document.createElement(theElement);
189+
if (theElement === "a") {
190+
sp.href = URL + ref;
191+
sp.className = theClass;
192+
content = "<code>" + content + "</code>";
193+
}
194+
sp.innerHTML=content;
195+
$item.replaceWith(sp);
196+
});
197+
}
198+
199+
// We should be able to remove terms that are not actually
200+
// referenced from the common definitions
201+
var termNames = [] ;
202+
203+
function restrictReferences(utils, content) {
204+
"use strict";
205+
var base = document.createElement("div");
206+
base.innerHTML = content;
207+
updateReferences(base);
208+
209+
// strategy: Traverse the content finding all of the terms defined
210+
$.each(base.querySelectorAll("dfn"), function(i, item) {
211+
var $t = $(item) ;
212+
var titles = $t.getDfnTitles();
213+
var n = $t.makeID("dfn", titles[0]);
214+
if (n) {
215+
termNames[n] = $t.parent() ;
216+
}
217+
});
218+
219+
return (base.innerHTML);
220+
}
221+
222+
// add a handler to come in after all the definitions are resolved
223+
//
224+
// New logic: If the reference is within a 'dl' element of
225+
// class 'termlist', and if the target of that reference is
226+
// also within a 'dl' element of class 'termlist', then
227+
// consider it an internal reference and ignore it.
228+
229+
require(["core/pubsubhub"], function(respecEvents) {
230+
"use strict";
231+
respecEvents.sub('end', function(message) {
232+
if (message === 'core/link-to-dfn') {
233+
// all definitions are linked
234+
$("a.internalDFN").each(function () {
235+
var $item = $(this) ;
236+
var t = $item.attr('href');
237+
if ( $item.closest('dl.termlist').length ) {
238+
if ( $(t).closest('dl.termlist').length ) {
239+
// do nothing
240+
return;
241+
}
242+
}
243+
var r = t.replace(/^#/,"") ;
244+
if (termNames[r]) {
245+
delete termNames[r] ;
246+
}
247+
});
248+
// delete any terms that were not referenced.
249+
Object.keys(termNames).forEach(function(term) {
250+
var $p = $("#"+term) ;
251+
if ($p) {
252+
var tList = $p.getDfnTitles();
253+
$p.parent().next().remove();
254+
$p.remove() ;
255+
tList.forEach(function( item ) {
256+
if (respecConfig.definitionMap[item]) {
257+
delete respecConfig.definitionMap[item];
258+
}
259+
});
260+
}
261+
});
262+
}
263+
});
264+
});
265+
266+
// included files are brought in after proProc. Create a DOM tree
267+
// of content then call the updateReferences method above on it. Return
268+
// the transformed content
269+
function fixIncludes(utils, content) {
270+
"use strict";
271+
var base = document.createElement("div");
272+
base.innerHTML = content;
273+
updateReferences(base);
274+
return (base.innerHTML);
275+
}
276+
277+
// Fix the scroll-to-fragID problem:
278+
require(["core/pubsubhub"], function (respecEvents) {
279+
"use strict";
280+
respecEvents.sub("end-all", function () {
281+
if(window.location.hash) {
282+
window.location = window.location.hash;
283+
}
284+
});
285+
});

‎common/terms.html

+209
Large diffs are not rendered by default.

‎common/utility/aria-taxonomy.xmi

+2,806
Large diffs are not rendered by default.
28.3 KB
Binary file not shown.

‎common/utility/roleXMIgenerator.xslt

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:xmi="http://schema.omg.org/spec/XMI/1.2" xmlns:UML="org.omg.xmi.namespace.UML" exclude-result-prefixes="html xsl xs fn">
3+
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
4+
5+
<xsl:template match="/">
6+
<XMI xmi.version="1.2">
7+
<XMI.header>
8+
<XMI.metamodel xmi.name="UML" xmi.version="1.4"/>
9+
</XMI.header>
10+
<XMI.content>
11+
<UML:Model xmi.id="aria_roles" name="ARIA Roles Class Diagram">
12+
<UML:Namespace.ownedElement>
13+
<xsl:apply-templates select="//html:div[@class='role']"/>
14+
</UML:Namespace.ownedElement>
15+
</UML:Model>
16+
</XMI.content>
17+
</XMI>
18+
</xsl:template>
19+
20+
<xsl:template match="html:div[@class='role']">
21+
<xsl:variable name="id" select="@id"/>
22+
<xsl:variable name="isAbstract"><xsl:choose>
23+
<xsl:when test="string-length(normalize-space(descendant::html:td[@class = 'role-abstract'])) &gt; 1">true</xsl:when>
24+
<xsl:otherwise>false</xsl:otherwise>
25+
</xsl:choose></xsl:variable>
26+
<UML:Class xmi.id="{$id}" name="{$id}" visibility="public" isAbstract="{$isAbstract}" isSpecification="false" isRoot="false" isLeaf="false" isActive="false">
27+
<xsl:if test="descendant::html:td[@class='role-parent']//html:rref">
28+
<UML:GeneralizableElement.generalization>
29+
<xsl:apply-templates select="descendant::html:td[@class='role-parent']//html:rref" mode="GeneralizableElement"/>
30+
</UML:GeneralizableElement.generalization>
31+
</xsl:if>
32+
<xsl:if test="$id = 'roletype'">
33+
<UML:Classifier.feature>
34+
<xsl:apply-templates select="//html:div[@class='state' or @class = 'property']" mode="globalstates"><xsl:sort select="@id"/></xsl:apply-templates>
35+
</UML:Classifier.feature>
36+
</xsl:if>
37+
<xsl:variable name="properties" select="descendant::html:td[@class='role-properties' or @class='role-required-properties']//html:pref | descendant::html:td[@class='role-properties' or @class='role-required-properties']//html:sref"/>
38+
<xsl:if test="$properties">
39+
<UML:Classifier.feature>
40+
<xsl:apply-templates select="$properties"/>
41+
</UML:Classifier.feature>
42+
</xsl:if>
43+
</UML:Class>
44+
<xsl:apply-templates select="descendant::html:td[@class='role-parent']//html:rref"/>
45+
</xsl:template>
46+
47+
<xsl:template match="html:td[@class='role-properties' or @class='role-required-properties']//html:pref | html:td[@class='role-properties' or @class='role-required-properties']//html:sref">
48+
<xsl:variable name="id" select="generate-id()"/>
49+
<UML:Attribute xmi.id="{$id}" name="{.}" visibility="public" isSpecification="false" ownerScope="instance" changeability="changeable" targetScope="instance">
50+
<UML:StructuralFeature.multiplicity>
51+
<UML:Multiplicity xmi.id="{$id}-multiplicity">
52+
<UML:Multiplicity.range>
53+
<UML:MultiplicityRange xmi.id="{$id}-multiplicity-range" lower="1" upper="1"/>
54+
</UML:Multiplicity.range>
55+
</UML:Multiplicity>
56+
</UML:StructuralFeature.multiplicity>
57+
</UML:Attribute>
58+
</xsl:template>
59+
60+
<xsl:template match="html:div[@class='state' or @class = 'property']" mode="globalstates">
61+
<xsl:variable name="applicability"><xsl:value-of select="normalize-space(descendant::html:td[@class='state-applicability' or @class = 'property-applicability'])"/></xsl:variable>
62+
<xsl:if test="$applicability = 'All elements of the base markup' or $applicability = 'All roles'">
63+
<xsl:variable name="id" select="generate-id()"/>
64+
<UML:Attribute xmi.id="{$id}" name="{@id}" visibility="public" isSpecification="false" ownerScope="instance" changeability="changeable" targetScope="instance">
65+
<UML:StructuralFeature.multiplicity>
66+
<UML:Multiplicity xmi.id="{$id}-multiplicity">
67+
<UML:Multiplicity.range>
68+
<UML:MultiplicityRange xmi.id="{$id}-multiplicity-range" lower="1" upper="1"/>
69+
</UML:Multiplicity.range>
70+
</UML:Multiplicity>
71+
</UML:StructuralFeature.multiplicity>
72+
</UML:Attribute>
73+
</xsl:if>
74+
</xsl:template>
75+
76+
<xsl:template match="html:td[@class='role-parent']//html:rref">
77+
<xsl:variable name="id" select="generate-id()"/>
78+
<UML:Generalization xmi.id="{$id}" isSpecification="false" name="{ancestor::html:*[@class='role']/@id} to {.}">
79+
<UML:Generalization.child>
80+
<UML:Class xmi.idref="{ancestor::html:*[@class='role']/@id}"/>
81+
</UML:Generalization.child>
82+
<UML:Generalization.parent>
83+
<UML:Class xmi.idref="{.}"/>
84+
</UML:Generalization.parent>
85+
</UML:Generalization>
86+
</xsl:template>
87+
88+
<xsl:template match="html:td[@class='role-parent']//html:rref" mode="GeneralizableElement">
89+
<UML:Generalization xmi.idref="{generate-id()}"/>
90+
</xsl:template>
91+
</xsl:stylesheet>

‎index.html

+8-8
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
<title>Graphics Accessibility API Mappings</title>
55
<script src="https://www.w3.org/scripts/jquery/1.11/jquery.min.js"></script>
66
<script src="https://www.w3.org/Tools/respec/respec-w3c-common" class="remove"></script>
7-
<script src="../common/script/resolveReferences.js" class="remove"></script>
8-
<script src="../common/biblio.js" class="remove"></script>
7+
<script src="common/script/resolveReferences.js" class="remove"></script>
8+
<script src="common/biblio.js" class="remove"></script>
99

10-
<link href="../common/css/mapping-tables.css" rel="stylesheet" type="text/css" />
11-
<link href="../common/css/common.css" rel="stylesheet" type="text/css" />
10+
<link href="common/css/mapping-tables.css" rel="stylesheet" type="text/css" />
11+
<link href="common/ccommon/.css" rel="stylesheet" type="text/css" />
1212
<!--<link href="css/dpub-aam.css" rel="stylesheet" type="text/css"/>-->
1313
<script class="remove">
1414
var respecConfig = {
@@ -165,8 +165,8 @@
165165
preProcess: [ linkCrossReferences ]
166166
}
167167
</script>
168-
<script src="../common/script/jquery.details.min.js"></script>
169-
<script src="../common/script/mapping-tables.js"></script>
168+
<script src="common/script/jquery.details.min.js"></script>
169+
<script src="common/script/mapping-tables.js"></script>
170170
<script type="text/javascript">
171171

172172
var mappingTableLabels = {
@@ -308,7 +308,7 @@ <h2>Introduction</h2>
308308
</section>
309309
<section id="glossary">
310310
<h2>Important Terms</h2>
311-
<div data-include="../common/terms.html" data-oninclude="restrictReferences">Placeholder for glossary</div>
311+
<div data-include="common/terms.html" data-oninclude="restrictReferences">Placeholder for glossary</div>
312312
</section>
313313
<section id="mapping">
314314
<h2>Mapping <abbr title="Accessible Rich Internet Application">WAI-ARIA</abbr> to Accessibility <abbr title="Application Programming Interfaces">APIs</abbr></h2>
@@ -391,7 +391,7 @@ <h3>References</h3>
391391
<p>This section is <a class="termref">informative</a>.</p>
392392
<p>Placeholder for references</p>
393393
</section>
394-
<div data-include="../common/acknowledgements.html" data-include-replace="true"></div>
394+
<div data-include="common/acknowledgements.html" data-include-replace="true"></div>
395395
</section>
396396
</body>
397397
</html>

0 commit comments

Comments
 (0)
Please sign in to comment.