[483] | 1 | define(["./dom-geometry", "./_base/lang", "./domReady", "./sniff", "./_base/window"], |
---|
| 2 | function(geometry, lang, domReady, has, baseWindow){ |
---|
| 3 | |
---|
| 4 | // module: |
---|
| 5 | // dojo/uacss |
---|
| 6 | |
---|
| 7 | /*===== |
---|
| 8 | return { |
---|
| 9 | // summary: |
---|
| 10 | // Applies pre-set CSS classes to the top-level HTML node, based on: |
---|
| 11 | // |
---|
| 12 | // - browser (ex: dj_ie) |
---|
| 13 | // - browser version (ex: dj_ie6) |
---|
| 14 | // - box model (ex: dj_contentBox) |
---|
| 15 | // - text direction (ex: dijitRtl) |
---|
| 16 | // |
---|
| 17 | // In addition, browser, browser version, and box model are |
---|
| 18 | // combined with an RTL flag when browser text is RTL. ex: dj_ie-rtl. |
---|
| 19 | // |
---|
| 20 | // Returns the has() method. |
---|
| 21 | }; |
---|
| 22 | =====*/ |
---|
| 23 | |
---|
| 24 | var |
---|
| 25 | html = baseWindow.doc.documentElement, |
---|
| 26 | ie = has("ie"), |
---|
| 27 | opera = has("opera"), |
---|
| 28 | maj = Math.floor, |
---|
| 29 | ff = has("ff"), |
---|
| 30 | boxModel = geometry.boxModel.replace(/-/,''), |
---|
| 31 | |
---|
| 32 | classes = { |
---|
| 33 | "dj_quirks": has("quirks"), |
---|
| 34 | |
---|
| 35 | // NOTE: Opera not supported by dijit |
---|
| 36 | "dj_opera": opera, |
---|
| 37 | |
---|
| 38 | "dj_khtml": has("khtml"), |
---|
| 39 | |
---|
| 40 | "dj_webkit": has("webkit"), |
---|
| 41 | "dj_safari": has("safari"), |
---|
| 42 | "dj_chrome": has("chrome"), |
---|
| 43 | |
---|
| 44 | "dj_gecko": has("mozilla"), |
---|
| 45 | |
---|
| 46 | "dj_ios": has("ios"), |
---|
| 47 | "dj_android": has("android") |
---|
| 48 | }; // no dojo unsupported browsers |
---|
| 49 | |
---|
| 50 | if(ie){ |
---|
| 51 | classes["dj_ie"] = true; |
---|
| 52 | classes["dj_ie" + maj(ie)] = true; |
---|
| 53 | classes["dj_iequirks"] = has("quirks"); |
---|
| 54 | } |
---|
| 55 | if(ff){ |
---|
| 56 | classes["dj_ff" + maj(ff)] = true; |
---|
| 57 | } |
---|
| 58 | |
---|
| 59 | classes["dj_" + boxModel] = true; |
---|
| 60 | |
---|
| 61 | // apply browser, browser version, and box model class names |
---|
| 62 | var classStr = ""; |
---|
| 63 | for(var clz in classes){ |
---|
| 64 | if(classes[clz]){ |
---|
| 65 | classStr += clz + " "; |
---|
| 66 | } |
---|
| 67 | } |
---|
| 68 | html.className = lang.trim(html.className + " " + classStr); |
---|
| 69 | |
---|
| 70 | // If RTL mode, then add dj_rtl flag plus repeat existing classes with -rtl extension. |
---|
| 71 | // We can't run the code below until the <body> tag has loaded (so we can check for dir=rtl). |
---|
| 72 | domReady(function(){ |
---|
| 73 | if(!geometry.isBodyLtr()){ |
---|
| 74 | var rtlClassStr = "dj_rtl dijitRtl " + classStr.replace(/ /g, "-rtl "); |
---|
| 75 | html.className = lang.trim(html.className + " " + rtlClassStr + "dj_rtl dijitRtl " + classStr.replace(/ /g, "-rtl ")); |
---|
| 76 | } |
---|
| 77 | }); |
---|
| 78 | return has; |
---|
| 79 | }); |
---|