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