yzt
2023-05-26 de4278af2fd46705a40bac58ec01122db6b7f3d7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
define([
    "dojo/dom-attr", // domAttr.attr
    "dojo/_base/lang", // lang.mixin
    "../main",  // export symbols to dijit
    "../hccss"          // not using this module directly, but loading it sets CSS flag on <html>
], function(domAttr, lang, dijit){
 
    // module:
    //      dijit/_base/wai
 
    var exports = {
        // summary:
        //      Deprecated methods for setting/getting wai roles and states.
        //      New code should call setAttribute()/getAttribute() directly.
        //
        //      Also loads hccss to apply dj_a11y class to root node if machine is in high-contrast mode.
 
        hasWaiRole: function(/*Element*/ elem, /*String?*/ role){
            // summary:
            //      Determines if an element has a particular role.
            // returns:
            //      True if elem has the specific role attribute and false if not.
            //      For backwards compatibility if role parameter not provided,
            //      returns true if has a role
            var waiRole = this.getWaiRole(elem);
            return role ? (waiRole.indexOf(role) > -1) : (waiRole.length > 0);
        },
 
        getWaiRole: function(/*Element*/ elem){
            // summary:
            //      Gets the role for an element (which should be a wai role).
            // returns:
            //      The role of elem or an empty string if elem
            //      does not have a role.
             return lang.trim((domAttr.get(elem, "role") || "").replace("wairole:",""));
        },
 
        setWaiRole: function(/*Element*/ elem, /*String*/ role){
            // summary:
            //      Sets the role on an element.
            // description:
            //      Replace existing role attribute with new role.
 
            domAttr.set(elem, "role", role);
        },
 
        removeWaiRole: function(/*Element*/ elem, /*String*/ role){
            // summary:
            //      Removes the specified role from an element.
            //      Removes role attribute if no specific role provided (for backwards compat.)
 
            var roleValue = domAttr.get(elem, "role");
            if(!roleValue){ return; }
            if(role){
                var t = lang.trim((" " + roleValue + " ").replace(" " + role + " ", " "));
                domAttr.set(elem, "role", t);
            }else{
                elem.removeAttribute("role");
            }
        },
 
        hasWaiState: function(/*Element*/ elem, /*String*/ state){
            // summary:
            //      Determines if an element has a given state.
            // description:
            //      Checks for an attribute called "aria-"+state.
            // returns:
            //      true if elem has a value for the given state and
            //      false if it does not.
 
            return elem.hasAttribute ? elem.hasAttribute("aria-"+state) : !!elem.getAttribute("aria-"+state);
        },
 
        getWaiState: function(/*Element*/ elem, /*String*/ state){
            // summary:
            //      Gets the value of a state on an element.
            // description:
            //      Checks for an attribute called "aria-"+state.
            // returns:
            //      The value of the requested state on elem
            //      or an empty string if elem has no value for state.
 
            return elem.getAttribute("aria-"+state) || "";
        },
 
        setWaiState: function(/*Element*/ elem, /*String*/ state, /*String*/ value){
            // summary:
            //      Sets a state on an element.
            // description:
            //      Sets an attribute called "aria-"+state.
 
            elem.setAttribute("aria-"+state, value);
        },
 
        removeWaiState: function(/*Element*/ elem, /*String*/ state){
            // summary:
            //      Removes a state from an element.
            // description:
            //      Sets an attribute called "aria-"+state.
 
            elem.removeAttribute("aria-"+state);
        }
    };
 
    lang.mixin(dijit, exports);
 
    /*===== return exports; =====*/
    return dijit;   // for back compat :-(
});