diff --git a/src/main/resources/static/dijit/BackgroundIframe.js b/src/main/resources/static/dijit/BackgroundIframe.js new file mode 100644 index 0000000000000000000000000000000000000000..4da9d5001f264835f9dc1e5f66ddab4218b8fc34 --- /dev/null +++ b/src/main/resources/static/dijit/BackgroundIframe.js @@ -0,0 +1,118 @@ +define([ + "require", // require.toUrl + "./main", // to export dijit.BackgroundIframe + "dojo/_base/config", + "dojo/dom-construct", // domConstruct.create + "dojo/dom-style", // domStyle.set + "dojo/_base/lang", // lang.extend lang.hitch + "dojo/on", + "dojo/sniff" // has("ie"), has("trident"), has("quirks") +], function(require, dijit, config, domConstruct, domStyle, lang, on, has){ + + // module: + // dijit/BackgroundIFrame + + // Flag for whether to create background iframe behind popups like Menus and Dialog. + // A background iframe is useful to prevent problems with popups appearing behind applets/pdf files, + // and is also useful on older versions of IE (IE6 and IE7) to prevent the "bleed through select" problem. + // By default, it's enabled for IE6-10, excluding Windows Phone 8, + // and it's also enabled for IE11 on Windows 7 and Windows 2008 Server. + // TODO: For 2.0, make this false by default. Also, possibly move definition to has.js so that this module can be + // conditionally required via dojo/has!bgIfame?dijit/BackgroundIframe + has.add("config-bgIframe", + (has("ie") && !/IEMobile\/10\.0/.test(navigator.userAgent)) || // No iframe on WP8, to match 1.9 behavior + (has("trident") && /Windows NT 6.[01]/.test(navigator.userAgent))); + + var _frames = new function(){ + // summary: + // cache of iframes + + var queue = []; + + this.pop = function(){ + var iframe; + if(queue.length){ + iframe = queue.pop(); + iframe.style.display=""; + }else{ + // transparency needed for DialogUnderlay and for tooltips on IE (to see screen near connector) + if(has("ie") < 9){ + var burl = config["dojoBlankHtmlUrl"] || require.toUrl("dojo/resources/blank.html") || "javascript:\"\""; + var html=" + + run popup test + + diff --git a/src/main/resources/static/dijit/tests/_base/test_FocusManager.html b/src/main/resources/static/dijit/tests/_base/test_FocusManager.html new file mode 100644 index 0000000000000000000000000000000000000000..8c827aeae211c91f568077af0c60db1066bd9332 --- /dev/null +++ b/src/main/resources/static/dijit/tests/_base/test_FocusManager.html @@ -0,0 +1,64 @@ + + + + + + + dijit.focus Test + + + + + + + +

Focus/Selection Save/Restore Test

+

This is for testing whether focus and selection can be saved and restored by the focus manager.

+

+ If you press the "Save focus" button, it should save the focus, but not the selection. + This is because merely pressing that button makes the focused textarea/input lose focus, + which also loses the selection. (We fudge things by saving the previously focused element rather + than the currently focused one.) +

+

+ If you press the "Save focus/selection state after 3 seconds" button, and then focus an input/textarea + and select some text, it should (after three seconds) save both the focused element and the selection. +

+

This paragraph contains text to select for testing purposes.

+
+
+
+
+ +
+ + + + + + + diff --git a/src/main/resources/static/dijit/tests/_base/test_focusWidget.html b/src/main/resources/static/dijit/tests/_base/test_focusWidget.html new file mode 100644 index 0000000000000000000000000000000000000000..d4cf75666182488cdd4b607455c82a7fbfade957 --- /dev/null +++ b/src/main/resources/static/dijit/tests/_base/test_focusWidget.html @@ -0,0 +1,155 @@ + + + + + + + + dijit.focus Test + + + + + + + + +

Widget Focus Test

+

+ This is for testing code to detect onBlur and onFocus on a widget level.
+ Focused widgets' borders will turn red.
+ Also, check the console log for focus and blur events on widgets. +

+ +
+
+
+ +
+
+ + + + +
+
+
+
+ +
+ +
+
+ + +
+ + +
+ push me + +
+
+
+ + diff --git a/src/main/resources/static/dijit/tests/_base/wai.html b/src/main/resources/static/dijit/tests/_base/wai.html new file mode 100644 index 0000000000000000000000000000000000000000..0389b391175347365be98cc9e2b3ce32c6539da1 --- /dev/null +++ b/src/main/resources/static/dijit/tests/_base/wai.html @@ -0,0 +1,113 @@ + + + Dijit wai unit test + + + + +
+
+
+ + + +
+ + diff --git a/src/main/resources/static/dijit/tests/_data/SlowStore.js b/src/main/resources/static/dijit/tests/_data/SlowStore.js new file mode 100644 index 0000000000000000000000000000000000000000..966b63b5acbc0e5c4acd25d540ec0416fd13af1c --- /dev/null +++ b/src/main/resources/static/dijit/tests/_data/SlowStore.js @@ -0,0 +1,89 @@ +define(["dojo/_base/declare", "dojo/data/ItemFileReadStore"], function(declare, ItemFileReadStore){ + + return declare("dijit.tests._data.SlowStore", ItemFileReadStore, { + // summary: + // This wrapper decorates an ItemFileReadStore by delaying queries issued according to the + // length of the query: + // + // - empty query: 2000ms, + // - 1 or 2 characters: 1000ms, + // - 3 characters: 500ms, + // - 4 or more characters: 100ms. + + constructor: function(){ + this.log = []; + }, + + fetch: function(/* Object */ keywordArgs){ + // Get the query phrase (store into first), and the # of chars it has + var count = 0; + var first; + if("query" in keywordArgs){ + var query = keywordArgs.query; + for(var attr in query){ + first = query[attr]; + break; + } + count = first.toString().length; + } + + var delay = 100; + switch(count || 0){ + case 0: + delay = 2000; + break; + case 1: + case 2: + delay = 1000; + break; + case 3: + delay = 500; + break; + case 4: + delay = 100; + break; + } + + this.log.push({ + type: "start", + date: new Date(), + query: query, + count: count, + delay: delay + }); + console.log("START query on " + (first || "{}") + " (" + count + " chars), delay = " + delay); + + var that = this, + thatArgs = arguments; + var handle = setTimeout(function(){ + that.log.push({ + type: "end", + date: new Date(), + query: query, + count: count, + delay: delay + }); + console.log("END query on " + (first || "{}") + " (" + count + " chars), delay = " + delay); + ItemFileReadStore.prototype.fetch.apply(that, thatArgs); + }, delay); + + // This abort() method cancels a request before it has even been sent to ItemFileReadStore. + // (Since ItemFileReadStore has already loaded the data (as per code in the test file), + // it operates synchronously; there is never a case to send the cancel request to that object) + keywordArgs.abort = function(){ + clearTimeout(handle); + that.log.push({ + type: "cancel", + date: new Date(), + query: query, + count: count, + delay: delay + }); + console.log("CANCEL query on " + (first || "{}") + " (" + count + " chars), delay = " + delay); + }; + + return keywordArgs; + } + }); + +}); diff --git a/src/main/resources/static/dijit/tests/_data/categories.json b/src/main/resources/static/dijit/tests/_data/categories.json new file mode 100644 index 0000000000000000000000000000000000000000..0bf996c8c6ab24a913432f375d4729567bef87b5 --- /dev/null +++ b/src/main/resources/static/dijit/tests/_data/categories.json @@ -0,0 +1,12 @@ +{ + "identifier": "id", + "label": "name", + "items": [ + { "id": "0", "name":"Foods", "numberOfItems":1, "children":[ {"_reference": "1"}, {"_reference": "2"}, {"_reference": "3"} ] }, + { "id": "1", "name":"Fruits", "numberOfItems":1, "children":[ {"_reference": "4"} ] }, + { "id": "4","name":"Citrus", "numberOfItems":1, "items":[ {"_reference": "5"} ] }, + { "id": "5", "name":"Orange"}, + { "id": "2", "name":"Vegetables", "numberOfItems":0}, + { "id": "3", "name":"Cereals", "numberOfItems":0} + ] +} diff --git a/src/main/resources/static/dijit/tests/_data/categoriesNested.json b/src/main/resources/static/dijit/tests/_data/categoriesNested.json new file mode 100644 index 0000000000000000000000000000000000000000..c264344eceb1183132b15c1ebf3f138d9b664fa1 --- /dev/null +++ b/src/main/resources/static/dijit/tests/_data/categoriesNested.json @@ -0,0 +1,13 @@ +{ + "identifier": "id", + "label": "name", + "items": [ + { "id": "0", "name":"Fruits", "numberOfItems":1, "children":[ + { "id": "1","name":"Citrus", "numberOfItems":1, "items":[ + { "id": "4", "name":"Orange"} + ]} + ]}, + { "id": "2", "name":"Vegetables", "numberOfItems":0}, + { "id": "3", "name":"Cereals", "numberOfItems":0} + ] +} diff --git a/src/main/resources/static/dijit/tests/_data/countries.json b/src/main/resources/static/dijit/tests/_data/countries.json new file mode 100644 index 0000000000000000000000000000000000000000..8b39decbcf78b79792d6bd5f1a55b6da3d3dea90 --- /dev/null +++ b/src/main/resources/static/dijit/tests/_data/countries.json @@ -0,0 +1,46 @@ +{ + "identifier": "id", + "label": "name", + "items": [ + { "id": "AF", "name":"Africa", "type":"continent", "population":"900 million", "area": "30,221,532 sq km", + "timezone": "-1 UTC to +4 UTC", + "children":[{"_reference":"EG"}, {"_reference":"KE"}, {"_reference":"SD"}] }, + { "id": "EG", "name":"Egypt", "type":"country" }, + { "id": "KE", "name":"Kenya", "type":"country", + "children":[{"_reference":"Nairobi"}, {"_reference":"Mombasa"}] }, + { "id": "Nairobi", "name":"Nairobi", "type":"city" }, + { "id": "Mombasa", "name":"Mombasa", "type":"city" }, + { "id": "SD", "name":"Sudan", "type":"country", + "children":{"_reference":"Khartoum"} }, + { "id": "Khartoum", "name":"Khartoum", "type":"city" }, + { "id": "AS", "name":"Asia", "type":"continent", + "children":[{"_reference":"CN"}, {"_reference":"IN"}, {"_reference":"RU"}, {"_reference":"MN"}] }, + { "id": "CN", "name":"China", "type":"country" }, + { "id": "IN", "name":"India", "type":"country" }, + { "id": "RU", "name":"Russia", "type":"country" }, + { "id": "MN", "name":"Mongolia", "type":"country" }, + { "id": "OC", "name":"Oceania", "type":"continent", "population":"21 million", + "children":{"_reference":"AU"}}, + { "id": "AU", "name":"Australia", "type":"country", "population":"21 million"}, + { "id": "EU", "name":"Europe", "type":"continent", + "children":[{"_reference":"DE"}, {"_reference":"FR"}, {"_reference":"ES"}, {"_reference":"IT"}] }, + { "id": "DE", "name":"Germany", "type":"country" }, + { "id": "FR", "name":"France", "type":"country" }, + { "id": "ES", "name":"Spain", "type":"country" }, + { "id": "IT", "name":"Italy", "type":"country" }, + { "id": "NA", "name":"North America", "type":"continent", + "children":[{"_reference":"MX"}, {"_reference":"CA"}, {"_reference":"US"}] }, + { "id": "MX", "name":"Mexico", "type":"country", "population":"108 million", "area":"1,972,550 sq km", + "children":[{"_reference":"Mexico City"}, {"_reference":"Guadalajara"}] }, + { "id": "Mexico City", "name":"Mexico City", "type":"city", "population":"19 million", "timezone":"-6 UTC"}, + { "id": "Guadalajara", "name":"Guadalajara", "type":"city", "population":"4 million", "timezone":"-6 UTC" }, + { "id": "CA", "name":"Canada", "type":"country", "population":"33 million", "area":"9,984,670 sq km", + "children":[{"_reference":"Ottawa"}, {"_reference":"Toronto"}] }, + { "id": "Ottawa", "name":"Ottawa", "type":"city", "population":"0.9 million", "timezone":"-5 UTC"}, + { "id": "Toronto", "name":"Toronto", "type":"city", "population":"2.5 million", "timezone":"-5 UTC" }, + { "id": "US", "name":"United States of America", "type":"country" }, + { "id": "SA", "name":"South America", "type":"continent", + "children":[{"_reference":"BR"}, {"_reference":"AR"}] }, + { "id": "BR", "name":"Brazil", "type":"country", "population":"186 million" }, + { "id": "AR", "name":"Argentina", "type":"country", "population":"40 million" } +]} diff --git a/src/main/resources/static/dijit/tests/_data/dijits.json b/src/main/resources/static/dijit/tests/_data/dijits.json new file mode 100644 index 0000000000000000000000000000000000000000..160581b5d0b1f7285b7ba71e5be2941302008b9e --- /dev/null +++ b/src/main/resources/static/dijit/tests/_data/dijits.json @@ -0,0 +1 @@ +{"timestamp":1193692111,"items":[{"namespace":"dijit","className":"dijit.ColorPalette","summary":"Grid showing various colors, so the user can pick a certain color","description":null,"examples":null},{"namespace":"dijit","className":"dijit.Declaration","summary":"The Declaration widget allows a user to declare new widget\nclasses directly from a snippet of markup.","description":null,"examples":null},{"namespace":"dijit","className":"dijit.DialogUnderlay","summary":"the thing that grays out the screen behind the dialog\n\nTemplate has two divs; outer div is used for fade-in\/fade-out, and also to hold background iframe.\nInner div has opacity specified in CSS file.","description":null,"examples":null},{"namespace":"dijit","className":"dijit.Dialog","summary":"Pops up a modal dialog window, blocking access to the screen\nand also graying out the screen Dialog is extended from\nContentPane so it supports all the same parameters (href, etc.)","description":null,"examples":null},{"namespace":"dijit","className":"dijit.TooltipDialog","summary":"Pops up a dialog that appears like a Tooltip","description":null,"examples":null},{"namespace":"dijit","className":"dijit.Editor","summary":"A rich-text Editing widget","description":null,"examples":null},{"namespace":"dijit","className":"dijit.InlineEditBox","summary":"Behavior for an existing node (

,

, , etc.) so that\nwhen you click it, an editor shows up in place of the original\ntext. Optionally, Save and Cancel button are displayed below the edit widget.\nWhen Save is clicked, the text is pulled from the edit\nwidget and redisplayed and the edit widget is again hidden.\nBy default a plain Textarea widget is used as the editor (or for\ninline values a TextBox), but you can specify an editor such as\ndijit.Editor (for editing HTML) or a Slider (for adjusting a number).\nAn edit widget must support the following API to be used:\nString getDisplayedValue() OR String getValue()\nvoid setDisplayedValue(String) OR void setValue(String)\nvoid focus()","description":null,"examples":null},{"namespace":"dijit","className":"dijit._InlineEditor","summary":"internal widget used by InlineEditBox, displayed when in editing mode\nto display the editor and maybe save\/cancel buttons. Calling code should\nconnect to save\/cancel methods to detect when editing is finished\n\nHas mainly the same parameters as InlineEditBox, plus these values:\n\nstyle: Object\nSet of CSS attributes of display node, to replicate in editor\n\nvalue: String\nValue as an HTML string or plain text string, depending on renderAsHTML flag","description":null,"examples":null},{"namespace":"dijit","className":"dijit.Menu","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.MenuItem","summary":"A line item in a Menu2\n\nMake 3 columns\nicon, label, and expand arrow (BiDi-dependent) indicating sub-menu","description":null,"examples":null},{"namespace":"dijit","className":"dijit.PopupMenuItem","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.MenuSeparator","summary":"A line between two menu items","description":null,"examples":null},{"namespace":"dijit","className":"dijit.ProgressBar","summary":"a progress widget\n\nusage:\n
","examples":null},{"namespace":"dijit","className":"dijit.form.RadioButton","summary":"Same as an HTML radio, but with fancy styling.","description":"This shared object keeps track of all widgets, grouped by name","examples":null},{"namespace":"dijit","className":"dijit.form.ComboBoxMixin","summary":"Auto-completing text box, and base class for FilteringSelect widget.\n\nThe drop down box's values are populated from an class called\na data provider, which returns a list of values based on the characters\nthat the user has typed into the input box.\n\nSome of the options to the ComboBox are actually arguments to the data\nprovider.\n\nYou can assume that all the form widgets (and thus anything that mixes\nin ComboBoxMixin) will inherit from _FormWidget and thus the \"this\"\nreference will also \"be a\" _FormWidget.","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form._ComboBoxMenu","summary":"these functions are called in showResultList","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.ComboBox","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.CurrencyTextBox","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.DateTextBox","summary":"A validating, serializable, range-bound date text box.","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.FilteringSelect","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form._FormMixin","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.Form","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.InlineEditBox","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.NumberSpinner","summary":"Number Spinner","description":"This widget is the same as NumberTextBox but with up\/down arrows added","examples":null},{"namespace":"dijit","className":"dijit.form.NumberTextBoxMixin","summary":"A mixin for all number textboxes","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.NumberTextBox","summary":"A validating, serializable, range-bound text box.\nconstraints object: min, max, places","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.HorizontalSlider","summary":"A form widget that allows one to select a value with a horizontally draggable image","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.VerticalSlider","summary":"A form widget that allows one to select a value with a vertically draggable image","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form._SliderMover","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.HorizontalRule","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.VerticalRule","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.HorizontalRuleLabels","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.VerticalRuleLabels","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.TextBox","summary":"A generic textbox field.\nServes as a base class to derive more specialized functionality in subclasses.","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.Textarea","summary":"event handlers, you can over-ride these in your own subclasses","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.TimeTextBox","summary":"NaN\nNaN","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.ValidationTextBox","summary":"default values for new subclass properties","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.MappedTextBox","summary":"A subclass of ValidationTextBox.\nProvides a hidden input field and a serialize method to override","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form.RangeBoundTextBox","summary":"A subclass of MappedTextBox.\nTests for a value out-of-range","description":null,"examples":null},{"namespace":"dijit","className":"dijit.form._FormWidget","summary":null,"description":null,"examples":null},{"namespace":"dijit","className":"dijit.form._Spinner","summary":"Mixin for validation widgets with a spinner","description":"This class basically (conceptually) extends dijit.form.ValidationTextBox.\nIt modifies the template to have up\/down arrows, and provides related handling code.","examples":null},{"namespace":"dijit","className":"dijit.layout.AccordionContainer","summary":"Holds a set of panes where every pane's title is visible, but only one pane's content is visible at a time,\nand switching between panes is visualized by sliding the other panes up\/down.\nusage:\n
\n
\n
...<\/div>\n<\/div>\n
\n

This is some text<\/p>\n...\n<\/div>","description":null,"examples":null},{"namespace":"dijit","className":"dijit.layout.AccordionPane","summary":"AccordionPane is a ContentPane with a title that may contain another widget.\nNested layout widgets, such as SplitContainer, are not supported at this time.","description":null,"examples":null},{"namespace":"dijit","className":"dijit.layout.ContentPane","summary":"A widget that acts as a Container for other widgets, and includes a ajax interface","description":"A widget that can be used as a standalone widget\nor as a baseclass for other widgets\nHandles replacement of document fragment using either external uri or javascript\ngenerated markup or DOM content, instantiating widgets within that content.\nDon't confuse it with an iframe, it only needs\/wants document fragments.\nIt's useful as a child of LayoutContainer, SplitContainer, or TabContainer.\nBut note that those classes can contain any widget as a child.\nexample:\nSome quick samples:\nTo change the innerHTML use .setContent('new content<\/b>')\n\nOr you can send it a NodeList, .setContent(dojo.query('div [class=selected]', userSelection))\nplease note that the nodes in NodeList will copied, not moved\n\nTo do a ajax update use .setHref('url')","examples":null},{"namespace":"dijit","className":"dijit.layout.LayoutContainer","summary":"Provides Delphi-style panel layout semantics.\n\ndetails\nA LayoutContainer is a box with a specified size (like style=\"width: 500px; height: 500px;\"),\nthat contains children widgets marked with \"layoutAlign\" of \"left\", \"right\", \"bottom\", \"top\", and \"client\".\nIt takes it's children marked as left\/top\/bottom\/right, and lays them out along the edges of the box,\nand then it takes the child marked \"client\" and puts it into the remaining space in the middle.\n\nLeft\/right positioning is similar to CSS's \"float: left\" and \"float: right\",\nand top\/bottom positioning would be similar to \"float: top\" and \"float: bottom\", if there were such\nCSS.\n\nNote that there can only be one client element, but there can be multiple left, right, top,\nor bottom elements.\n\nusage\n + + + + +

Dijit Test Matrix Table

+ + + + + + + + +
TestTundraNihiloSoria
Normala11yrtla11y + rtlNormala11yrtla11y + rtlNormala11yrtla11y + rtl
+ + + +".$group.""; + while(false !== ($file = readdir($handle))){ + if(preg_match("/(test_|demo_)(.*)\.html/", $file, $matches)){ + $base = $matches[0]; + $link = $path."/".$matches[0]; + print + "" . + + "" . $base . "" . + + // standard / tundra: + "run" . + "run" . + "run" . + "run" . + + // nihilo + "run" . + "run" . + "run" . + "run" . + + // soria + "run" . + "run" . + "run" . + "run" . + + ""; + } + } +} + + +?> diff --git a/src/main/resources/static/dijit/tests/a11y.html b/src/main/resources/static/dijit/tests/a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..57fc0b4830fad826ce2f040adcfccf1ba83c9d56 --- /dev/null +++ b/src/main/resources/static/dijit/tests/a11y.html @@ -0,0 +1,303 @@ + + + + + dijit/a11y unit test + + + + + + +

Dijit TabIndex Related Functions Unit Test

+ +
+ +
+
+
+
+ +
+
+ +
+ +
picture of a flat-screen monitor
+ + example area + + +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+ + + +
+ +
+
+
+ +
+
+
+ +
+ +
+ +
+
+
+ +
+
+
+ +
+ + + + + + +
+ +
+ + + + +
+ +
+ + + +
+ +
+ +
+ +
+ +
+
+
+ +
+ +
+
+ +
+
+ +
+
+
+
+ +
+ +
+ +
+ +
+
+
+
+
+
+
+
+ +
+ +
+ +
+ + + +
+ +
+ +
+ +
+ + + +
+ +
+ + + + + + + + + + + +
+ + diff --git a/src/main/resources/static/dijit/tests/boilerplate.js b/src/main/resources/static/dijit/tests/boilerplate.js new file mode 100644 index 0000000000000000000000000000000000000000..3d22bd1475e48f575ed8b76e56cfb90051e80bfd --- /dev/null +++ b/src/main/resources/static/dijit/tests/boilerplate.js @@ -0,0 +1,138 @@ +// module: +// dijit/tests/boilerplate +// description: +// A +// ... +// + +var dir = "", + theme = "claro", + testMode = null; + +dojoConfig = { + async: true, + isDebug: true, + locale: "en-us" +}; + +// Parse the URL, get parameters +if(window.location.href.indexOf("?") > -1){ + var str = window.location.href.substr(window.location.href.indexOf("?")+1).split(/#/); + var ary = str[0].split(/&/); + for(var i = 0; i < ary.length; i++){ + var split = ary[i].split("="), + key = split[0], + value = (split[1]||'').replace(/[^\w]/g, ""); // replace() to prevent XSS attack + switch(key){ + case "locale": + // locale string | null + dojoConfig.locale = value; + break; + case "dir": + // rtl | null + dir = value; + break; + case "theme": + // tundra | soria | nihilo | claro | null + theme = /null|none/.test(value) ? null : value; + break; + case "a11y": + if(value){ testMode = "dj_a11y"; } + break; + } + } +} + +// Find the '); + +// On IE9 the following inlined script will run before dojo has finished loading, leading to an error because require() +// isn't defined yet. Workaround it by putting the code in a separate file. +//document.write(''); +document.write(''); + +function boilerplateOnLoad(){ + // This function is the first registered domReady() callback, allowing us to setup + // theme stuff etc. before the widgets start instantiating. + + // theme (claro, tundra, etc.) + if(theme){ + // Set to point to the specified theme + document.body.className = theme; + } + + // a11y (flag for faux high-contrast testing) + if(testMode){ + document.body.className += " " + testMode; + } + + // BIDI + if(dir == "rtl"){ + // set dir=rtl on node + document.body.parentNode.setAttribute("dir", "rtl"); + + require(["dojo/query!css2", "dojo/NodeList-dom"], function(query){ + // pretend all the labels are in an RTL language, because + // that affects how they lay out relative to inline form widgets + query("label").attr("dir", "rtl"); + }); + } + + // parseOnLoad: true requires that the parser itself be loaded. + if(dojoConfig.parseOnLoad){ + require(["dojo/parser"]); + } +} diff --git a/src/main/resources/static/dijit/tests/boilerplateOnload.js b/src/main/resources/static/dijit/tests/boilerplateOnload.js new file mode 100644 index 0000000000000000000000000000000000000000..e12fbf285ca81aa6054f293c05ba9eeba493a4c7 --- /dev/null +++ b/src/main/resources/static/dijit/tests/boilerplateOnload.js @@ -0,0 +1,3 @@ +// Part of boilerplate.js but need to put it in a separate file for IE9, so it doesn't run until dojo has finished +// loading and require is defined +require(["dojo/domReady!"], boilerplateOnLoad); diff --git a/src/main/resources/static/dijit/tests/css/dijitTests.css b/src/main/resources/static/dijit/tests/css/dijitTests.css new file mode 100644 index 0000000000000000000000000000000000000000..df16d1e800c88f9360feff4348efee87a5566692 --- /dev/null +++ b/src/main/resources/static/dijit/tests/css/dijitTests.css @@ -0,0 +1,116 @@ +/* Test file styles for Dijit widgets */ + +body { + background: #fff url("../images/testsBodyBg.gif") repeat-x top left; + padding: 20px; +} + +h1.testTitle { + font-size: 2em; + margin: 0 0 1em 0; +} + +/* Icons used in the tests */ + +.plusIcon, .plusBlockIcon { + background-image: url(../images/plus.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} +.plusBlockIcon { + display: block !important; +} +.noteIcon { + background-image: url(../images/note.gif); + background-repeat: no-repeat; + background-position: center center; + width: 18px; + height: 18px; +} +.flatScreenIcon { + background-image: url(../images/flatScreen.gif); + background-repeat: no-repeat; + width: 32px; + height: 32px; +} +.dijitTestNodeDialog { + position:absolute; + top:5px; + right:5px; + display:block; + width:200px; + visibility:hidden; + background-color:#fff !important; + color:#000 !important; + border:1px solid #000; + padding:5px; +} +.dijitTestNodeDialog table { + background-color:#fff !important; +} +.dijitTestNodeDialog td { + padding:3px; +} +.dijitTestNodeShowing { + visibility:visible; +} + +body .customFolderOpenedIcon, body .customFolderClosedIcon { + background-image: url('../images/folderIcons.png'); /* mail icons sprite image */ + background-repeat: no-repeat; + width: 18px; + height: 18px; + background-position: -44px; +} + +.dj_ie6 .customFolderOpenedIcon, .dj_ie6 .customFolderClosedIcon { + background-image: url('../images/folderIcons.gif'); +} + +.customFolderClosedIcon { + background-position: -154px; +} + +#testMatrix { + width:100%; + text-align:center; +} +#testMatrix tr > td { + text-align:left; +} +#testMatrix tr.top { + background:blue; + color:#fff; +} +#testMatrix tr.top th { + padding:6px; +} +#testMatrix tr.tests { + background:#666; + padding:3px; + padding-left:6px; + padding-right:6px; + color:#fff; +} +#testMatrix tr.tests th { + text-align:center; +} +#testMatrix tr.spacer { + background:#dedede; + color:#666; +} +#testMatrix tr.spacer td { + padding:6px; +} +#testMatrix tr.testRow td { + text-align:center; +} +#testMatrix tr.testRow td.label { + text-align:left; + padding-left:15px; +} +#testMatrix tr.alt { + background:#ededed; +} diff --git a/src/main/resources/static/dijit/tests/delay.js b/src/main/resources/static/dijit/tests/delay.js new file mode 100644 index 0000000000000000000000000000000000000000..820a7c7c91e00f3b154c3dbe42dc15fccf54b1d7 --- /dev/null +++ b/src/main/resources/static/dijit/tests/delay.js @@ -0,0 +1,22 @@ +// module: +// dijit/tests/delay.js +// summary: +// AMD plugin that waits a specified number of ms before "loading". +// Used to delay execution of callbacks registered by dojo.ready(). +// (Used by _testCommon.html) +// +// Usage: ready(1, function(){ require(["dijit/tests/delay!300"]); }); + +// TODO: remove for 2.0, it's only used by _testCommon.js which will also be removed. + +define({ + load: function(delay, req, loaded){ + setTimeout(function(){ + loaded(1); + }, delay); + }, + dynamic: 1, + normalize: function(id){ + return id; + } +}); \ No newline at end of file diff --git a/src/main/resources/static/dijit/tests/editor/BackForwardState.html b/src/main/resources/static/dijit/tests/editor/BackForwardState.html new file mode 100644 index 0000000000000000000000000000000000000000..46f406894e46fa2290ae277e461816d6392d8694 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/BackForwardState.html @@ -0,0 +1,38 @@ + + + + + Editor Back/Forward Button Test + + + + + + + +

Editor back/forward button value restore tests

+

+ Try typing something into the editors below, and then click the page refrsh link or the back then forward buttons. + The editor should not lose the value. +

+

Notes:

+
    +
  1. Editor must have a "name" attribute for this to work (not sure why) +
  2. If in XD mode must set dojo.config.allowXdRichTextSave or manually create the hidden + <textarea> node used to preserve the data. +
+

Navigate to another page

+ +
editor0 original contents
+
editor1 original contents
+ + + diff --git a/src/main/resources/static/dijit/tests/editor/BackForwardStateHelper.html b/src/main/resources/static/dijit/tests/editor/BackForwardStateHelper.html new file mode 100644 index 0000000000000000000000000000000000000000..ac1a046bc727294d86e5af7a5df8ef8affb9cece --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/BackForwardStateHelper.html @@ -0,0 +1,17 @@ + + +Back/forward test helper page + +

Back/forward test helper page

+

+ You've navigated to this page from backForward.html. + Press the "Go back" link below to return, or your browser's back button, + and check that the editors' values were restored to the test data you entered. +

+

+ Note that pressing the link above will not work, since the browser doesn't consider it + as "returning" to the previous page. +

+Go Back + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/tests/editor/Editor.html b/src/main/resources/static/dijit/tests/editor/Editor.html new file mode 100644 index 0000000000000000000000000000000000000000..f758d7b2b93be44b7c4a7d18ced1d0004b959161 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/Editor.html @@ -0,0 +1,118 @@ + + + + Editor Test + + + + + + + +
This is the anchor div.
+
+
initial content
+
+ + diff --git a/src/main/resources/static/dijit/tests/editor/Editor_IE8Compat.html b/src/main/resources/static/dijit/tests/editor/Editor_IE8Compat.html new file mode 100644 index 0000000000000000000000000000000000000000..9e9c1eb24597eb693f0ba29b41b8efbee2d5bc54 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/Editor_IE8Compat.html @@ -0,0 +1,21 @@ + + + + + + Demo: Basic Editor + + + + + +

Test of Editor on IE9 in IE8 Compatibility mode

+
+ + \ No newline at end of file diff --git a/src/main/resources/static/dijit/tests/editor/Editor_stylesheet.html b/src/main/resources/static/dijit/tests/editor/Editor_stylesheet.html new file mode 100644 index 0000000000000000000000000000000000000000..866e956dea17a44c71312d02876daa5b8db48ba0 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/Editor_stylesheet.html @@ -0,0 +1,104 @@ + + + + Editor StyleSheet Test + + + + + + + + +

Turning on the stylesheet should make header red

+
+

Adding stylesheet should make my background red

+

I shouldn't change

+
+ + + + + diff --git a/src/main/resources/static/dijit/tests/editor/EnterKeyHandling.html b/src/main/resources/static/dijit/tests/editor/EnterKeyHandling.html new file mode 100644 index 0000000000000000000000000000000000000000..ef05299ca742fbe4d6970d21eb8931452ff15f4a --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/EnterKeyHandling.html @@ -0,0 +1,78 @@ + + + + + Editor Test + + + + + + + + +

Test file for Editor EnterKeyHandling plugin

+ +

blockNodeforEnter='BR'

+

para 1
line 2

+

para 2
line 2

+
+ +

blockNodeforEnter='DIV'

+

para 1
line 2

+

para 2
line 2

+
+ +

blockNodeforEnter='DIV' split test

+
+
 
+
this is a line of text. It IS intended to be split up by pressing enter.
+
 
+
+ +

blockNodeforEnter='DIV' split test style clone

+
+
 
+
this is a line of text. It IS intended to be split up by pressing enter.
+
 
+
+ +

blockNodeforEnter='DIV' split test font clone

+
+
 
+
this is a line of text. It IS intended to be split up by pressing enter.
+
 
+
+ +

blockNodeforEnter='P'

+

para 1
line 2

+

para 2
line 2

+
+ +

blockNodeforEnter='P' split test

+
+

 

+

this is a line of text. It IS intended to be split up by pressing enter.

+

 

+
+ + diff --git a/src/main/resources/static/dijit/tests/editor/customIcon.gif b/src/main/resources/static/dijit/tests/editor/customIcon.gif new file mode 100644 index 0000000000000000000000000000000000000000..5fd50d28927012ea9f10629af16851cf5e623eeb Binary files /dev/null and b/src/main/resources/static/dijit/tests/editor/customIcon.gif differ diff --git a/src/main/resources/static/dijit/tests/editor/html.html b/src/main/resources/static/dijit/tests/editor/html.html new file mode 100644 index 0000000000000000000000000000000000000000..36d9e495ec24596cc09ff396ca15ef462b910882 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/html.html @@ -0,0 +1,131 @@ + + + + html utility tests + + + + + + + + + +
+ + helloworld +
+ + +
+

+
+ + +
+hi + +
+ +
+ hello&goodbye3>2 +
+ + + +
+ alt text +
+ + +
+

123456789

+
+ + diff --git a/src/main/resources/static/dijit/tests/editor/module.js b/src/main/resources/static/dijit/tests/editor/module.js new file mode 100644 index 0000000000000000000000000000000000000000..e9c7452cbbf7e7a20a93f965d3c61e18ce615bbb --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/module.js @@ -0,0 +1,48 @@ +define(["doh/main", "require", "dojo/sniff"], function(doh, require, has){ + + var test_robot = has("trident") || has("ff") || has("chrome") < 45; + + // inline doh tests + doh.register("editor.Editor", require.toUrl("./Editor.html"), 999999); + doh.register("editor.nls_8859-2", require.toUrl("./nls_8859-2.html"), 999999); + doh.register("editor.nls_sjis", require.toUrl("./nls_sjis.html"), 999999); + doh.register("editor.nls_utf8", require.toUrl("./nls_utf8.html"), 999999); + doh.register("editor.Editor_stylesheet", require.toUrl("./Editor_stylesheet.html"), 999999); + doh.register("editor.html", require.toUrl("./html.html"), 999999); + + // Base editor functionality + if(test_robot){ + doh.register("editor.robot.Editor_mouse", require.toUrl("./robot/Editor_mouse.html"), 999999); + doh.register("editor.robot.Editor_a11y", require.toUrl("./robot/Editor_a11y.html"), 999999); + doh.register("editor.robot.Misc", require.toUrl("./robot/Editor_misc.html"), 999999); + doh.register("editor.robot.Bidi", require.toUrl("./robot/Editor_bidi.html"), 999999); + } + + // Plugins + if(test_robot){ + doh.register("editor.robot.CustomPlugin", require.toUrl("./robot/CustomPlugin.html"), 999999); + doh.register("editor.robot.EnterKeyHandling", require.toUrl("./robot/EnterKeyHandling.html"), 999999); + doh.register("editor.robot.FullScreen", require.toUrl("./robot/Editor_FullScreen.html"), 999999); + doh.register("editor.robot.ViewSource", require.toUrl("./robot/Editor_ViewSource.html"), 999999); + doh.register("editor.robot.NewPage", require.toUrl("./robot/Editor_NewPage.html"), 999999); + doh.register("editor.robot.LinkDialog", require.toUrl("./robot/Editor_LinkDialog.html"), 999999); + doh.register("editor.robot.FontChoice", require.toUrl("./robot/Editor_FontChoice.html"), 999999); + doh.register("editor.robot.ToggleDir", require.toUrl("./robot/ToggleDir.html"), 999999); + doh.register("editor.robot.TabIndent", require.toUrl("./robot/TabIndent.html"), 999999); + } + + if(test_robot && !has("webkit")){ + // The back button on webkit is URL for the browser itself, restarting the entire test suite, + // rather than just for the iframe holding the test file (BackForwardState.html and BackForwardStateHelper.html) + doh.register("editor.robot.BackForwardState", require.toUrl("./robot/BackForwardState.html"), 999999); + } + + // Special test for IE9 in IE8 compat mode (#14900) + if(test_robot && has("ie") == 9){ + doh.register("editor.robot.Editor_IE8Compat", require.toUrl("./robot/Editor_IE8Compat.html"), 999999); + } + +}); + + + diff --git a/src/main/resources/static/dijit/tests/editor/nls_8859-2.html b/src/main/resources/static/dijit/tests/editor/nls_8859-2.html new file mode 100644 index 0000000000000000000000000000000000000000..9ebc3b8a06717979663b14c95fb1fc625cdf5a84 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/nls_8859-2.html @@ -0,0 +1,70 @@ + + + + Editor Test + + + + + + + + +
+

+Plain text: êó±¶³¿¼æñÊÓ£¡¦£¯¬ÆÑ +

+ +

+Same text should show up in the Editor: +

+
êó±¶³¿¼æñÊÓ£¡¦£¯¬ÆÑ
+ + + + +
+ + diff --git a/src/main/resources/static/dijit/tests/editor/nls_sjis.html b/src/main/resources/static/dijit/tests/editor/nls_sjis.html new file mode 100644 index 0000000000000000000000000000000000000000..e8a93022839a62993ac4f4bba396932f0cf1aeb0 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/nls_sjis.html @@ -0,0 +1,70 @@ + + + + Editor Test + + + + + + + + +
+

+Plain text: “ú–{Œê +

+ +

+Same text should show up in the Editor: +

+
“ú–{Œê
+ + + + +
+ + diff --git a/src/main/resources/static/dijit/tests/editor/nls_utf8.html b/src/main/resources/static/dijit/tests/editor/nls_utf8.html new file mode 100644 index 0000000000000000000000000000000000000000..ca69d5f497594a33895189babcc16558f57e0f43 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/nls_utf8.html @@ -0,0 +1,69 @@ + + + + Editor Test + + + + + + + + +
+

+Plain text: 日本語 +

+ +

+Same text should show up in the Editor: +

+
日本語
+ + + + +
+ + diff --git a/src/main/resources/static/dijit/tests/editor/robot/BackForwardState.html b/src/main/resources/static/dijit/tests/editor/robot/BackForwardState.html new file mode 100644 index 0000000000000000000000000000000000000000..686ba6574b0bf77a598a6afc0e10cf99df28a7ff --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/robot/BackForwardState.html @@ -0,0 +1,127 @@ + + + + doh.robot Editor/Back Button Restore Test + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/tests/editor/robot/CustomPlugin.html b/src/main/resources/static/dijit/tests/editor/robot/CustomPlugin.html new file mode 100644 index 0000000000000000000000000000000000000000..8cd9ede76f8f6c48ce4dc6be47aab5abc3e40d46 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/robot/CustomPlugin.html @@ -0,0 +1,101 @@ + + + + doh.robot CustomPlugin Test + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/editor/robot/Editor_FontChoice.html b/src/main/resources/static/dijit/tests/editor/robot/Editor_FontChoice.html new file mode 100644 index 0000000000000000000000000000000000000000..9405616e2415769c397e82323b76ae2f1f8aa1d1 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/robot/Editor_FontChoice.html @@ -0,0 +1,538 @@ + + + + doh.robot Editor FontChoice Plugin Test + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/editor/robot/Editor_FullScreen.html b/src/main/resources/static/dijit/tests/editor/robot/Editor_FullScreen.html new file mode 100644 index 0000000000000000000000000000000000000000..4e2c88c1da5d48e546981777502688e0bbda6e03 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/robot/Editor_FullScreen.html @@ -0,0 +1,645 @@ + + + + doh.robot Editor FullScreen Plugin Test + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/editor/robot/Editor_IE8Compat.html b/src/main/resources/static/dijit/tests/editor/robot/Editor_IE8Compat.html new file mode 100644 index 0000000000000000000000000000000000000000..de20fc0935ee1b68776fc0b5410cc7cd4f386c8e --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/robot/Editor_IE8Compat.html @@ -0,0 +1,67 @@ + + + + doh.robot Editor IE9 in IE8 Compat Mode Test + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/editor/robot/Editor_LinkDialog.html b/src/main/resources/static/dijit/tests/editor/robot/Editor_LinkDialog.html new file mode 100644 index 0000000000000000000000000000000000000000..06b95bd1c587a2501173be6237f84e916055ccf5 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/robot/Editor_LinkDialog.html @@ -0,0 +1,903 @@ + + + + doh.robot Editor LinkDialog Plugin Test + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/editor/robot/Editor_NewPage.html b/src/main/resources/static/dijit/tests/editor/robot/Editor_NewPage.html new file mode 100644 index 0000000000000000000000000000000000000000..2c795800f45e22ebc80ff902760a0cf94435a962 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/robot/Editor_NewPage.html @@ -0,0 +1,116 @@ + + + + doh.robot Editor NewPage Plugin Test + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/editor/robot/Editor_ViewSource.html b/src/main/resources/static/dijit/tests/editor/robot/Editor_ViewSource.html new file mode 100644 index 0000000000000000000000000000000000000000..99adc1884ca2fed0597db8b7697649db3d9a1228 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/robot/Editor_ViewSource.html @@ -0,0 +1,842 @@ + + + + doh.robot Editor View Source Plugin Test + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/editor/robot/Editor_a11y.html b/src/main/resources/static/dijit/tests/editor/robot/Editor_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..38d36fb3a93ace9069fe3685ef572f9cfa667ee8 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/robot/Editor_a11y.html @@ -0,0 +1,397 @@ + + + + doh.robot Editor A11Y Test + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/editor/robot/Editor_bidi.html b/src/main/resources/static/dijit/tests/editor/robot/Editor_bidi.html new file mode 100644 index 0000000000000000000000000000000000000000..54827dd0330b7be2b8e979541e946adf45d6c413 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/robot/Editor_bidi.html @@ -0,0 +1,155 @@ + + + + doh.robot Editor GUI orientation and default text direction tests + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/editor/robot/Editor_misc.html b/src/main/resources/static/dijit/tests/editor/robot/Editor_misc.html new file mode 100644 index 0000000000000000000000000000000000000000..b822472384d7d101590b8dd23defb4079f1c1c6a --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/robot/Editor_misc.html @@ -0,0 +1,379 @@ + + + + doh.robot Editor Miscellaneous Tests + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/editor/robot/Editor_mouse.html b/src/main/resources/static/dijit/tests/editor/robot/Editor_mouse.html new file mode 100644 index 0000000000000000000000000000000000000000..f2792a6385fe6d2a949b8ee67603c4f37a39ed0c --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/robot/Editor_mouse.html @@ -0,0 +1,170 @@ + + + + robot Editor Mouse Test + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/editor/robot/EnterKeyHandling.html b/src/main/resources/static/dijit/tests/editor/robot/EnterKeyHandling.html new file mode 100644 index 0000000000000000000000000000000000000000..d2d9cb86fc7c418ac381e9866b6ca19f669806c6 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/robot/EnterKeyHandling.html @@ -0,0 +1,549 @@ + + + + doh.robot Editor/EnterKeyHandling Plugin Test + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/editor/robot/TabIndent.html b/src/main/resources/static/dijit/tests/editor/robot/TabIndent.html new file mode 100644 index 0000000000000000000000000000000000000000..74a4e7836cd8459d8c45b26513e4938cfb83d1b0 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/robot/TabIndent.html @@ -0,0 +1,152 @@ + + + + doh.robot TabIndent Test + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/editor/robot/ToggleDir.html b/src/main/resources/static/dijit/tests/editor/robot/ToggleDir.html new file mode 100644 index 0000000000000000000000000000000000000000..b9f7ba0d50501f20b1d6c47c2706904b9ed65428 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/robot/ToggleDir.html @@ -0,0 +1,85 @@ + + + + doh.robot ToggleDir Test + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/editor/runTests.html b/src/main/resources/static/dijit/tests/editor/runTests.html new file mode 100644 index 0000000000000000000000000000000000000000..7f2a5c45761ed2b655652b4d0c285f042ff3daef --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/runTests.html @@ -0,0 +1,9 @@ + + + + Dijit Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/src/main/resources/static/dijit/tests/editor/sample.jpg b/src/main/resources/static/dijit/tests/editor/sample.jpg new file mode 100644 index 0000000000000000000000000000000000000000..53422b3673112fcf2ca5363ffcd08368afaf84a1 Binary files /dev/null and b/src/main/resources/static/dijit/tests/editor/sample.jpg differ diff --git a/src/main/resources/static/dijit/tests/editor/sample2.jpg b/src/main/resources/static/dijit/tests/editor/sample2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2767c0ae90b6a3ae1be909ecb40cced2008f7d49 Binary files /dev/null and b/src/main/resources/static/dijit/tests/editor/sample2.jpg differ diff --git a/src/main/resources/static/dijit/tests/editor/test_CustomPlugin.html b/src/main/resources/static/dijit/tests/editor/test_CustomPlugin.html new file mode 100644 index 0000000000000000000000000000000000000000..288c8d99be366742ba828636997e22c1ba8f6297 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/test_CustomPlugin.html @@ -0,0 +1,98 @@ + + + + + Editor Custom Plugin Test/Tutorial + + + + + + + + +

+ This editor should have my custom plugin +

+ + diff --git a/src/main/resources/static/dijit/tests/editor/test_Editor.html b/src/main/resources/static/dijit/tests/editor/test_Editor.html new file mode 100644 index 0000000000000000000000000000000000000000..97db8c7b71626e5908f648be6489780326594f36 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/test_Editor.html @@ -0,0 +1,215 @@ + + + + + Editor Test + + + + + + + + + +
Automated Test - all check boxes should be checked
+ + + + + + +
+
+ +

Editor + Plugins Test

+ +

No plugins, initially empty

+
+ +

+ +

This instance is created from a div directly with default toolbar and plugins

+ The following HTML should appear as source: <INPUT TYPE="IMAGE" SRC="javascript:alert('no scripting attacks')"> +
+ + + + +
+ +

Created from div, auto-expanding

+

+
+ Extra text +

+ This editor is created from a div with AlwaysShowToolbar plugin (do not forget to set height=""). +

+

+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

+ The following HTML should appear as source: <INPUT TYPE="IMAGE" SRC="javascript:alert('no scripting attacks')"> +
+

..after

+
+ +

Optional toolbar buttons

+

+
+ This instance includes optional toolbar buttons which pull in additional ui (dijit) code. + Note the require() arguments to pull in the associated editor plugins to make + this work. +
+ This is serif. +
+ This is sans-serif. +
+ This is monospace. +
+ This is cursive. +
+ This is fantasy. +
+
+

..after

+ +
+ +

Plugins specified

+

+
+ This instance demos how to: +
    +
  1. specify which plugins to load (see the plugins property): this instance loads FontChoice plugin, among others;
  2. +
  3. specify options for a plugin (see the last item in the plugins array)
  4. +
+
+

..after

+
+ +

Font sizing via style

+
+ Hello World! +
+ +

Checking pre-filter application

+
+ notdojo +
+ +

Checking editor starting with br

+
+
+ some stuff +
+ some other stuff. +
+ +

Programmatic creation

+
This div will become an editor.
+ +
This div will become an auto-expanding editor.
+ + +

+
This div will become a programmatic editor in addOnLoad with creation-defined default content.
+

+
This div will become a programmatic editor in addOnLoad with creation-defined and custom filters.
+ + + diff --git a/src/main/resources/static/dijit/tests/editor/test_FontChoice.html b/src/main/resources/static/dijit/tests/editor/test_FontChoice.html new file mode 100644 index 0000000000000000000000000000000000000000..3f5b671e9e328a5e8f868d0ac80806bff2a3c438 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/test_FontChoice.html @@ -0,0 +1,139 @@ + + + + + Editor Test: FontChoice Plugin + + + + + + +
+
+
Content before the editor.
+
+
+

Editor with default drop down lists:

+
+

Font Choice Plugin details

+
    +
  1. The Fontchoice plugin provides three dropdown menus for manipulating font information, such as + font name, font size, and the format of the block containing the text (such as P, PRE, H1, and so on)
  2. +
  3. It auto-updates itself based on the caret and selection position in the document.
  4. +
+ +

Things to test:

+
    +
  1. Verify clicking in a P tag shows Paragraph in the dropdown.
  2. +
  3. Verify clicking in a a font-sized tag that the size dropdown indicates the current size (via a name).
  4. +
  5. Verify clicking in a a font-nameed tag that the name dropdown indicates the current font name.
  6. +
  7. Verify that you can set/manipulate all the above via the menu.
  8. +
+
+

+ This is a pararaph. +

+
+
+			This is preformatted text.
+		
+
+

+ This is a heading. +

+

+ This is a sub-heading. +

+

+ This is a sub-sub-heading. +

+
+

This is some text in a 'p' for styling.

+

This is some more text in a 'p' for styling.

+
+ This is some small text. +
+ This is some mediumish text. +
+ This is some xx-large text. +
+ This is some text in 'Comic Sans MS'. +
+
+
+

Selection format removal test

+
+

+ Some H3 formatted content. +

+
+				Some PRE formatted content.
+			
+

+ Some P formatted content. +

+
+ +
+
+
+
Content after the editor.
+
+
+
Content before the editor.
+
+
+

Editor w/ plain text dropdown values:

+
+

Font Choice Plugin details

+
    +
  1. This instance of the FontChoice plugin just turns off formatted content in the dropdowns. Everything should be the same font and size.
  2. +
+ +

Things to test:

+
    +
  1. Verify that each of the dropdowns have values that are all the same size and font.
  2. +
+
+
+
+
Content after the editor.
+
+
+

Editor w/ generic (web font names) font selector, traditional font name selector, font size selector, and format block selector:

+
hello world
+
+
+
Content after the editor.
+
+
+
Content before the editor.
+
+
+

Editor w/ custom font drop down list:

+
+ This editor should let you set the fonts to + Verdana, Myriad, and Garamond. +
+
+
+
Content after the editor.
+
+
+ + diff --git a/src/main/resources/static/dijit/tests/editor/test_FullScreen.html b/src/main/resources/static/dijit/tests/editor/test_FullScreen.html new file mode 100644 index 0000000000000000000000000000000000000000..0c1a40006fc82f938e0c3abe6e204f36791b99ec --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/test_FullScreen.html @@ -0,0 +1,203 @@ + + + + + Editor Test: FullScreen Plugin + + + + + + +
+
+
Content before the editor.
+
+
+
+

Full Screen Plugin details

+
    +
  1. The Fullscreen plugin provides an extra button on the toolbar to allow switching the + editor into 'full screen' mode, meaning the editor takes over the viewport of the + browser. This plugin is particularly useful when editing large documents.
  2. +
  3. The mode can also be toggled by entering the key command: CTRL-SHIFT-F11 + in the editor pane.
  4. +
  5. When it toggled to full screen, it makes + the editor text pane opaque white so that the contents behind it are not visible.
  6. +
  7. When in full screen mode, the plugin attempts to capture the TAB key and allow navigation only between + the editor toolbar and the editing area, as when in full screen mode, the rest of the page is hidden + behind the editor.
  8. +
+ +

Things to test:

+
    +
  1. Verify that clicking the full screen icon highlights the button appropriately and toggles the full screen mode on.
  2. +
  3. Verify that clicking the full screen icon again dehighlites the button and toggles the full screen mode off.
  4. +
  5. Click in the editing pane and verify that CTRL-SHIFT-F11 toggles the full screen mode on and off.
  6. +
  7. Verify while in full screen mode that TAB seems to behave appropriately. Please note that FireFox and Internet + Explorer work the best here. There are still a few tab control issues in Safari and Chrome.
  8. +
+
+
+
+
Content after the editor.
+
+

BorderContainer with center region containing editor.

+
+
left
+
top
+
right
+
bottom
+
+
+

Full Screen Plugin details

+
    +
  1. The Fullscreen plugin provides an extra button on the toolbar to allow switching the + editor into 'full screen' mode, meaning the editor takes over the viewport of the + browser. This plugin is particularly useful when editing large documents.
  2. +
  3. The mode can also be toggled by entering the key command: CTRL-SHIFT-F11 + in the editor pane.
  4. +
  5. When it toggled to full screen, it makes + the editor text pane opaque white so that the contents behind it are not visible.
  6. +
  7. When in full screen mode, the plugin attempts to capture the TAB key and allow navigation only between + the editor toolbar and the editing area, as when in full screen mode, the rest of the page is hidden + behind the editor.
  8. +
+ +

Things to test:

+
    +
  1. Verify that clicking the full screen icon highlights the button appropriately and toggles the full screen mode on.
  2. +
  3. Verify that clicking the full screen icon again dehighlites the button and toggles the full screen mode off.
  4. +
  5. Click in the editing pane and verify that CTRL-SHIFT-F11 toggles the full screen mode on and off.
  6. +
  7. Verify while in full screen mode that TAB seems to behave appropriately. Please note that FireFox and Internet + Explorer work the best here. There are still a few tab control issues in Safari and Chrome.
  8. +
+
+
+
+
+

TabContainer with tab containing editor.

+
+
+
+

Full Screen Plugin details

+
    +
  1. The Fullscreen plugin provides an extra button on the toolbar to allow switching the + editor into 'full screen' mode, meaning the editor takes over the viewport of the + browser. This plugin is particularly useful when editing large documents.
  2. +
  3. The mode can also be toggled by entering the key command: CTRL-SHIFT-F11 + in the editor pane.
  4. +
  5. When it toggled to full screen, it makes + the editor text pane opaque white so that the contents behind it are not visible.
  6. +
  7. When in full screen mode, the plugin attempts to capture the TAB key and allow navigation only between + the editor toolbar and the editing area, as when in full screen mode, the rest of the page is hidden + behind the editor.
  8. +
+ +

Things to test:

+
    +
  1. Verify that clicking the full screen icon highlights the button appropriately and toggles the full screen mode on.
  2. +
  3. Verify that clicking the full screen icon again dehighlites the button and toggles the full screen mode off.
  4. +
  5. Click in the editing pane and verify that CTRL-SHIFT-F11 toggles the full screen mode on and off.
  6. +
  7. Verify while in full screen mode that TAB seems to behave appropriately. Please note that FireFox and Internet + Explorer work the best here. There are still a few tab control issues in Safari and Chrome.
  8. +
+
+
+
+
+
+
+
+
+
+
+

AccordionContainer with pane containing editor.

+
+
+
+

Full Screen Plugin details

+
    +
  1. The Fullscreen plugin provides an extra button on the toolbar to allow switching the + editor into 'full screen' mode, meaning the editor takes over the viewport of the + browser. This plugin is particularly useful when editing large documents.
  2. +
  3. The mode can also be toggled by entering the key command: CTRL-SHIFT-F11 + in the editor pane.
  4. +
  5. When it toggled to full screen, it makes + the editor text pane opaque white so that the contents behind it are not visible.
  6. +
  7. When in full screen mode, the plugin attempts to capture the TAB key and allow navigation only between + the editor toolbar and the editing area, as when in full screen mode, the rest of the page is hidden + behind the editor.
  8. +
+ +

Things to test:

+
    +
  1. Verify that clicking the full screen icon highlights the button appropriately and toggles the full screen mode on.
  2. +
  3. Verify that clicking the full screen icon again dehighlites the button and toggles the full screen mode off.
  4. +
  5. Click in the editing pane and verify that CTRL-SHIFT-F11 toggles the full screen mode on and off.
  6. +
  7. Verify while in full screen mode that TAB seems to behave appropriately. Please note that FireFox and Internet + Explorer work the best here. There are still a few tab control issues in Safari and Chrome.
  8. +
+
+
+
+
+
+
+
+
+
+
+

StackContainer with pane containing editor.

+
+
+
+

Full Screen Plugin details

+
    +
  1. The Fullscreen plugin provides an extra button on the toolbar to allow switching the + editor into 'full screen' mode, meaning the editor takes over the viewport of the + browser. This plugin is particularly useful when editing large documents.
  2. +
  3. The mode can also be toggled by entering the key command: CTRL-SHIFT-F11 + in the editor pane.
  4. +
  5. When it toggled to full screen, it makes + the editor text pane opaque white so that the contents behind it are not visible.
  6. +
  7. When in full screen mode, the plugin attempts to capture the TAB key and allow navigation only between + the editor toolbar and the editing area, as when in full screen mode, the rest of the page is hidden + behind the editor.
  8. +
+ +

Things to test:

+
    +
  1. Verify that clicking the full screen icon highlights the button appropriately and toggles the full screen mode on.
  2. +
  3. Verify that clicking the full screen icon again dehighlites the button and toggles the full screen mode off.
  4. +
  5. Click in the editing pane and verify that CTRL-SHIFT-F11 toggles the full screen mode on and off.
  6. +
  7. Verify while in full screen mode that TAB seems to behave appropriately. Please note that FireFox and Internet + Explorer work the best here. There are still a few tab control issues in Safari and Chrome.
  8. +
+
+
+
+
+
+
+
+
+
+ + diff --git a/src/main/resources/static/dijit/tests/editor/test_LinkDialog.html b/src/main/resources/static/dijit/tests/editor/test_LinkDialog.html new file mode 100644 index 0000000000000000000000000000000000000000..1681b6e9cfed069f0ce5842f11369ab937c626a2 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/test_LinkDialog.html @@ -0,0 +1,57 @@ + + + + + Editor Test: LinkDialog Plugin + + + + + + +
+
+
    +
  1. The LinkDialog plugin is an 'example' style plugin that shows how to insert basic web links as well as + image tags. This plugin is intended to guide users in writing their own, more complex, link and image handlers + while still providing useful function.
  2. +
+
+ +
+
+
Sample Image
+
+
+
+
+ +

RTL Editor:

+
+
+
    +
  1. The LinkDialog plugin is an 'example' style plugin that shows how to insert basic web links as well as + image tags. This plugin is intended to guide users in writing their own, more complex, link and image handlers + while still providing useful function.
  2. +
+
+ +
+
+
Sample Image
+
+
+
+
+ + diff --git a/src/main/resources/static/dijit/tests/editor/test_NewPage.html b/src/main/resources/static/dijit/tests/editor/test_NewPage.html new file mode 100644 index 0000000000000000000000000000000000000000..e14e8302bc7de95f86726ae345862fe577d566a8 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/test_NewPage.html @@ -0,0 +1,58 @@ + + + + + Editor Test: New Page Plugin + + + + + + +
+
+
Content before the editor.
+
+
+
+

New Page Plugin details

+
    +
  1. The new page plugin is a small plugin that adds the capability of making a 'new page'. In other words + replacing all the content of the editor with some default text. This also usually kills any undo that had been saved.
  2. +
+ +

Things to test:

+
    +
  1. Verify that clicking the new page button clears the editor contents.
  2. +
+
+
+
+
+

New Page Plugin details

+
    +
  1. The new page plugin is a small plugin that adds the capability of making a 'new page'. In other words + replacing all the content of the editor with some default text. This also usually kills any undo that had been saved.
  2. +
+ +

Things to test:

+
    +
  1. Verify that clicking the new page button sets the content to: <p>This page intentionally left blank</p>
  2. +
+
+
+
+
Content after the editor.
+ + diff --git a/src/main/resources/static/dijit/tests/editor/test_Print.html b/src/main/resources/static/dijit/tests/editor/test_Print.html new file mode 100644 index 0000000000000000000000000000000000000000..bb3de842fe9ac5ee342d353dc3c49d1a39217d52 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/test_Print.html @@ -0,0 +1,44 @@ + + + + + Editor Test: Print Plugin + + + + + + +
+
+
Content before the editor.
+
+
+
+

Print Plugin details

+
    +
  1. The print plugin is a small plugin that adds the capability of printing the document in the editor
  2. +
  3. If the underlying browser doesn't support print, then the button will be disabled by default
  4. +
+ +

Things to test (manually, because of the print dialog, the function test cannot be automated):

+
    +
  1. Verify that clicking the print button opns the browser print dialog and the document will print.
  2. +
  3. Verify that the printed document is only the document in the editor, not the whole page.
  4. +
+
+
+
+
Content after the editor.
+ + diff --git a/src/main/resources/static/dijit/tests/editor/test_TabIndent.html b/src/main/resources/static/dijit/tests/editor/test_TabIndent.html new file mode 100644 index 0000000000000000000000000000000000000000..f750d209ea20b07cb9c221faf2d287cf6b62fdea --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/test_TabIndent.html @@ -0,0 +1,45 @@ + + + + + Editor TabIndent Plugin Test + + + + + + +

Paragraph with focusable item before editor.

+ +
+ +
+
+
    +
  1. the tabIndent plugin allows the use of the tab and shift-tab keys to +indent list items.
  2. +
  3. another list element
  4. +
  5. and another
  6. +
  7. still one more
  8. +
+
+

+ Ctrl-M also turns tab indent on/off. + (The buttons should change checked status when the user types + Ctrl-M, to indicate whether tab and shift-tab is enabled.) +

+
+
+

Paragraph with focusable item after editor.

+ + diff --git a/src/main/resources/static/dijit/tests/editor/test_ToggleDir.html b/src/main/resources/static/dijit/tests/editor/test_ToggleDir.html new file mode 100644 index 0000000000000000000000000000000000000000..9113b109b10ebc37889e3abf525077ab7a730f39 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/test_ToggleDir.html @@ -0,0 +1,35 @@ + + + + + Editor Test: ToggleDir Plugin + + + + + + +

LTR Editor

+
+
  1. the toggleDir plugin provides an extra button to switch text direction (BiDi). Useful when right-to-left + languages are used with left-to-right languages.
+
+ +

RTL Editor

+
+
  1. the toggleDir plugin provides an extra button to switch text direction (BiDi). Useful when right-to-left + languages are used with left-to-right languages.
+
+ + diff --git a/src/main/resources/static/dijit/tests/editor/test_ViewSource.html b/src/main/resources/static/dijit/tests/editor/test_ViewSource.html new file mode 100644 index 0000000000000000000000000000000000000000..f952898f9ea3f337cbc9fa038c07cec8bb1006eb --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/test_ViewSource.html @@ -0,0 +1,110 @@ + + + + + Editor Test: ViewSource Plugin + + + + + + +
+
+
Content before the editors.
+
+
+
+
+

ViewSource Plugin details

+
    +
  1. The ViewSource plugin provides an extra button on the toolbar to allow switching the + editor from WSYIWYG editing to into HTML source mode editing in the browser. + This plugin is particularly useful when needing to tweak generated HTML source.
  2. +
  3. The mode can also be toggled by entering the key command: CTRL-SHIFT-F12 + in the editor pane.
  4. +
  5. When it toggled it makes the edit area either a textarea if editing is enabled, or a readonly TEXTAREA node + if it is not editable.
  6. +
  7. The plugin is aware of the FullScreen plugin, and when present will make sure that FullScreen knows which + node to make 'full'.
  8. +
  9. The View Source adds in basic comment and script tag stripping by default (to help avoid XSS) attacks in code. + These can be disabled, but it is not recommended.
  10. +
  11. While in view source mode, all other menu bar plugins are disabled.
  12. +
+ +

Things to test:

+
    +
  1. Verify that clicking the View Source icon highlights the button appropriately and toggles the view source mode on.
  2. +
  3. Verify that clicking the View Source icon again dehighlites the button and toggles the view source mode off.
  4. +
  5. Click in the editing pane and verify that CTRL-SHIFT-F12 toggles the view source mode on and off.
  6. +
  7. Verify that when in View Source mode and comment and script tag stripping is enabled, that both inputs are removed when + toggled off.
  8. +
+
+
+
+
+
+
+

ViewSource Plugin with FullScreen Plugin details

+
    +
  1. The ViewSource plugin is FullScreen aware. It will should work appropriately when in full screen mode.
  2. +
+ +

Things to test:

+
    +
  1. Verify that while in Full Screen mode clicking the View Source icon highlights the button appropriately and toggles the + view source mode on and scales appropriately.
  2. +
+
+
+
+
+
+
+

ViewSource Plugin with readOnly enabled details

+
    +
  1. The ViewSource plugin supports a readonly mode. This should display the content but not allow any edits..
  2. +
+ +

Things to test:

+
    +
  1. Verify that while in View Source mode, the source cannot be edited.
  2. +
+
+
+
+
+
+
+

ViewSource Plugin with script* disabled

+
    +
  1. The ViewSource plugin supports disabling the script stripping, comment stripping, etc. This can be dangerous, but sometimes it is desirable.
  2. +
+ +

Things to test:

+
    +
  1. Verify that typed in script tags, comments, and iframes are left in the content when view switched.
  2. +
+
+
+
+
+
Content after the editors.
+ + diff --git a/src/main/resources/static/dijit/tests/editor/test_bidiEditor.html b/src/main/resources/static/dijit/tests/editor/test_bidiEditor.html new file mode 100644 index 0000000000000000000000000000000000000000..83597614c580218e39ac2628146d3ebb37b66888 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/test_bidiEditor.html @@ -0,0 +1,85 @@ + + + + + Editor Test + + + + + + + + +

Editor GUI orientation and default text direction Test

+

Created from div.

+ + + + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+ +

Programmatic creation.

+ + + + +
+
This div will become a programmatic editor in addOnLoad.
+
+
This div will become a programmatic editor in addOnLoad.
+
+ + diff --git a/src/main/resources/static/dijit/tests/editor/test_editor.css b/src/main/resources/static/dijit/tests/editor/test_editor.css new file mode 100644 index 0000000000000000000000000000000000000000..6b4d4ece8fe57a0f596857636e21eed41a0de383 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/test_editor.css @@ -0,0 +1,4 @@ +h1 { + border: 1px solid black; + background-color:red; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/tests/editor/test_performance.html b/src/main/resources/static/dijit/tests/editor/test_performance.html new file mode 100644 index 0000000000000000000000000000000000000000..ed8562503f26f959b8ea90765f38671f60806b54 --- /dev/null +++ b/src/main/resources/static/dijit/tests/editor/test_performance.html @@ -0,0 +1,169 @@ + + + + + test_performance + + + + + + +

Dojo Editor PerformanceTest

+ +
+
+ + diff --git a/src/main/resources/static/dijit/tests/focus-framedojo-child.html b/src/main/resources/static/dijit/tests/focus-framedojo-child.html new file mode 100644 index 0000000000000000000000000000000000000000..11081fed3da1aa3d384ff02b06433794c3b8741a --- /dev/null +++ b/src/main/resources/static/dijit/tests/focus-framedojo-child.html @@ -0,0 +1,51 @@ + + + + + Focus Issue Child + + + + + + this frame is for loading script only + + diff --git a/src/main/resources/static/dijit/tests/focus-framedojo.html b/src/main/resources/static/dijit/tests/focus-framedojo.html new file mode 100644 index 0000000000000000000000000000000000000000..6e46cb9da4de8a31bd6d308889b7545b9601bccb --- /dev/null +++ b/src/main/resources/static/dijit/tests/focus-framedojo.html @@ -0,0 +1,22 @@ + + + + + Focus Issue + + + +

+ Test case for focus code when dojo is loaded into an iframe. + Not supported officially but checking in test case anyway. +

+ +

Automated test will focus this input, causing a console message:

+ + +

Dojo is loaded into this iframe:

+ + + diff --git a/src/main/resources/static/dijit/tests/focus.html b/src/main/resources/static/dijit/tests/focus.html new file mode 100644 index 0000000000000000000000000000000000000000..e3da7e0fd30d99ba32aa72855c5d3d9d1feda065 --- /dev/null +++ b/src/main/resources/static/dijit/tests/focus.html @@ -0,0 +1,439 @@ + + + + dijit/focus automated test + + + + + + + +

Dijit/focus Automated Test

+ +
+
+
+
+ +
+
+ + + + +
+
+ Hello world, this is an editor +
+
+
+
+ +
+ +
+
+ + +
+ + +
+ push me + +
+
+ + +
+ + diff --git a/src/main/resources/static/dijit/tests/form/AutoCompleterMixin.html b/src/main/resources/static/dijit/tests/form/AutoCompleterMixin.html new file mode 100644 index 0000000000000000000000000000000000000000..0c1e10ffc0c3031ee3c14aba2cab7a866892faab --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/AutoCompleterMixin.html @@ -0,0 +1,299 @@ + + + + + + _AutoCompleterMixin tests + + + + + + + + +

_AutoCompleterMixin (dijit and mobile) non-robot tests

+ + + + + + + + + + + + + + + + + + + + + + + + +
 dijitmobile
attributes
Events
Programmatic
+ + diff --git a/src/main/resources/static/dijit/tests/form/Button.html b/src/main/resources/static/dijit/tests/form/Button.html new file mode 100644 index 0000000000000000000000000000000000000000..ea2b08b2bd78421d9e3c433152bd65c3769edfa6 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/Button.html @@ -0,0 +1,83 @@ + + + + + + Button non-robot tests + + + + + + + + + +

Button non-robot tests

+ + diff --git a/src/main/resources/static/dijit/tests/form/ButtonMixin.html b/src/main/resources/static/dijit/tests/form/ButtonMixin.html new file mode 100644 index 0000000000000000000000000000000000000000..92b3f547a7ab4e9033e72968e40a183deff4ba25 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/ButtonMixin.html @@ -0,0 +1,256 @@ + + + + + + _ButtonMixin tests + + + + + + + + + +

_ButtonMixin (dijit and mobile) non-robot tests

+ + + + + + + + + + + + + + + + + +
 dijitmobile
attributes
Programmatic
+
+ Compare native and widget click event behavior: + + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+
+ + + + + + +
+ + diff --git a/src/main/resources/static/dijit/tests/form/CheckBox.html b/src/main/resources/static/dijit/tests/form/CheckBox.html new file mode 100644 index 0000000000000000000000000000000000000000..824dae2247617b6acaa2edb3880b10222ed49726 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/CheckBox.html @@ -0,0 +1,273 @@ + + + + Checkbox unit Test + + + + + + + +

Dijit CheckBox Test

+

+ Here are some checkboxes. Try clicking, and hovering, tabbing, and using the space bar to select: +

+ +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+
+ + + diff --git a/src/main/resources/static/dijit/tests/form/CheckBoxMixin.html b/src/main/resources/static/dijit/tests/form/CheckBoxMixin.html new file mode 100644 index 0000000000000000000000000000000000000000..c26a73792c70aa313e79f7836fdd6d7315165ae6 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/CheckBoxMixin.html @@ -0,0 +1,323 @@ + + + + + + _CheckBoxMixin tests + + + + + + + + + +

_CheckBoxMixin (dijit and mobile) non-robot tests

+ + + + + + + + + + + + + + + + + + + + + + + +
 dijitmobile
attributes
Events
Programmatic
+
+ before click: checked=true, onclick handler: return false, after click: + + +
+ before click: checked=true, onclick handler: return true, after click: + + +
+ before click: checked=false, onclick handler: return false, after click: + + +
+ before click: checked=false, onclick handler: return true, after click: + + +
+ before click: checked=true, onclick handler: no return, after click: + + +
+ before click: checked=false, onclick handler: no return, after click: + + +
+ before click: checked=true, onclick handler: checked=false and return false, after click: + + +
+ before click: checked=true, onclick handler: checked=false and return true, after click: + + +
+ before click: checked=true, onclick handler: checked=true and return false, after click: + + +
+ before click: checked=true, onclick handler: checked=true and return true, after click: + + +
+ before click: checked=false, onclick handler: checked=false and return false, after click: + + +
+ before click: checked=false, onclick handler: checked=false and return true, after click: + + +
+ before click: checked=false, onclick handler: checked=true and return false, after click: + + +
+ before click: checked=false, onclick handler: checked=true and return true, after click: + + +
+ before click: checked=true, onclick handler: checked=false and no return, after click: + + +
+ before click: checked=true, onclick handler: checked=true and no return, after click: + + +
+ before click: checked=false, onclick handler: checked=false and no return, after click: + + +
+ before click: checked=false, onclick handler: checked=true and no return, after click: + + +
+
+ + diff --git a/src/main/resources/static/dijit/tests/form/ExpandingTextAreaMixin.html b/src/main/resources/static/dijit/tests/form/ExpandingTextAreaMixin.html new file mode 100644 index 0000000000000000000000000000000000000000..0499368e25fbdefe6f7b49af800536ff384b3f07 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/ExpandingTextAreaMixin.html @@ -0,0 +1,286 @@ + + + + + + _ExpandingTextAreaMixin tests + + + + + + + + + +

_ExpandingTextAreaMixin (dijit and mobile) non-robot tests

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
 dijitmobile
attributes
Events
Programmatic
Size
+ + diff --git a/src/main/resources/static/dijit/tests/form/Form.html b/src/main/resources/static/dijit/tests/form/Form.html new file mode 100644 index 0000000000000000000000000000000000000000..db331f60d5fafe3704ce4f93330fcf03611e5352 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/Form.html @@ -0,0 +1,921 @@ + + + + + + + Form unit test + + + + + + + + + + + + + + +

Form Widget Unit Test

+

+ The form widget takes data in a form and serializes/deserializes it, so + it can be submitted as a JSON string of nested objects. +

+
Currently only widgets are supported, not raw elements.
+ +
+ + +

Just HTML text

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DescriptionNameForm node/widget
DateTextBox inside contentpane +
+ +
+
DateTextBox 2 + +
DateTextBox 3 + +
ComboBox + +
CheckBox widgetcb + + + + +
Radio widgetr + + + + + +
Multi-selectms1 + +
Selects1 + +
Hidden inputh1 + +
Auto-sizing textareat1 + +
Fixed size textareast1 + +
Editor widgetrichtext + +
File uploadfilename + +
Required WidgetrequiredWidget + +
Disabled WidgetdisabledWidget + +
Disabled Required WidgetdisabledRequiredWidget + +
Read-only WidgetreadOnlyWidget + +
Duplicate named TextBox 1duplicate + +
Duplicate named TextBox 2duplicate + +
Duplicate named TextBox 3duplicate + +
+ + + + + + + +
+ + + + +
+ + diff --git a/src/main/resources/static/dijit/tests/form/RadioButtonMixin.html b/src/main/resources/static/dijit/tests/form/RadioButtonMixin.html new file mode 100644 index 0000000000000000000000000000000000000000..4d792a13dee2a4eeb5f1a506d5620e5deb88f31c --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/RadioButtonMixin.html @@ -0,0 +1,187 @@ + + + + + + _RadioButtonMixin tests + + + + + + + + + +

_RadioButtonMixin (dijit and mobile) non-robot tests

+ + + + + + + + + + + + + + + + + + + + + + + +
 dijitmobile
attributes + +
Events + +
Programmatic + +
+ + diff --git a/src/main/resources/static/dijit/tests/form/RadioButtonTiming.html b/src/main/resources/static/dijit/tests/form/RadioButtonTiming.html new file mode 100755 index 0000000000000000000000000000000000000000..9e27ec6d00d62ed3a9dfe6c3cda83f4272a81295 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/RadioButtonTiming.html @@ -0,0 +1,174 @@ + + + + Dijit RadioButton checked state test + + + + +
+ Native input[type=radio] Test +

Click the radio buttons and view the console output.

+ +
+ +
+ +
+
+
+ Dijit/form/RadioButton Test +

Click the radio buttons and view the console output.

+ +
+ +
+ +

Expectation: only a single radio button can be checked at a time

+

Result: two radio buttons are simultaneously checked

+
+ +

+ When the click handler is called, the "checked" property should be set true, but if + the event handler calls preventDefault(), then after a delay, the "checked" property will revert to false. +

+ + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/tests/form/Slider.html b/src/main/resources/static/dijit/tests/form/Slider.html new file mode 100644 index 0000000000000000000000000000000000000000..abf80fe64146e840ecd38ae4914cfea19389d3b9 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/Slider.html @@ -0,0 +1,153 @@ + + + + + Dojo Slider Widget Test (non-robot) + + + + + + + +

Slider Non-Robot Test

+ + diff --git a/src/main/resources/static/dijit/tests/form/TextBoxMixin.html b/src/main/resources/static/dijit/tests/form/TextBoxMixin.html new file mode 100644 index 0000000000000000000000000000000000000000..3b2e5a4e7aaa119ff6e434437238084aaf54b3e5 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/TextBoxMixin.html @@ -0,0 +1,264 @@ + + + + + + _TextBoxMixin tests + + + + + + + + + +

_TextBoxMixin (dijit and mobile) non-robot tests

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
 dijitmobile
DOM attr
Widget attr
Events
Programmatic
+ + diff --git a/src/main/resources/static/dijit/tests/form/TextBox_sizes.html b/src/main/resources/static/dijit/tests/form/TextBox_sizes.html new file mode 100644 index 0000000000000000000000000000000000000000..09995112b2aaa582fd30ae827226570b35f08710 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/TextBox_sizes.html @@ -0,0 +1,621 @@ + + + + + dijit.form.TextBox size tests + + + + + + + + + +

dijit.form.TextBox size tests

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + +
Font family: +
Font size: +
Padding: +
Direction: + + left-to-right + right-to-left +
Theme: +
+ + + diff --git a/src/main/resources/static/dijit/tests/form/TextBox_sizes.js b/src/main/resources/static/dijit/tests/form/TextBox_sizes.js new file mode 100644 index 0000000000000000000000000000000000000000..e877764c05181a609fb0b914912b6512fd578a65 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/TextBox_sizes.js @@ -0,0 +1,107 @@ +dojo.provide("dijit.tests.form.TextBox_sizes"); + +var userArgs = window.location.search.replace(/[\?&](dojoUrl|testUrl|testModule)=[^&]*/g,"").replace(/^&/,"?"); + + +try{ + +doh.registerUrl('t.monospace.small.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.small.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=small&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.large.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=large&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.1em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.monospace.2em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=monospace'), 999999); +doh.registerUrl('t.Times.small.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=small&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.small.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=small&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.small.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=small&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.small.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=small&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.small.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=small&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.small.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=small&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.small.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=small&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.small.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=small&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.small.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=small&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.small.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=small&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.small.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=small&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.small.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=small&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.large.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=large&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.large.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=large&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.large.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=large&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.large.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=large&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.large.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=large&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.large.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=large&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.large.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=large&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.large.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=large&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.large.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=large&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.large.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=large&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.large.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=large&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.large.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=large&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.1em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=1em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.1em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=1em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.1em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=1em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.1em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=1em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.1em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=1em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.1em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=1em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.1em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.1em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.1em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=1em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.1em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.1em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.1em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=1em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.2em.padded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=padded&fontSize=2em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.2em.padded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=padded&fontSize=2em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.2em.padded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=padded&fontSize=2em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.2em.padded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=padded&fontSize=2em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.2em.padded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=padded&fontSize=2em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.2em.padded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=padded&fontSize=2em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.2em.unPadded.ltr.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.2em.unPadded.ltr.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.2em.unPadded.ltr.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=ltr&padding=unPadded&fontSize=2em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.2em.unPadded.rtl.claro',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=claro&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.2em.unPadded.rtl.tundra',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=tundra&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=Times'), 999999); +doh.registerUrl('t.Times.2em.unPadded.rtl.a11y',dojo.moduleUrl('dijit', 'tests/form/TextBox_sizes.html?theme=a11y&dir=rtl&padding=unPadded&fontSize=2em&fontFamily=Times'), 999999); + +}catch(e){ + doh.debug(e); +} diff --git a/src/main/resources/static/dijit/tests/form/TextBox_types.html b/src/main/resources/static/dijit/tests/form/TextBox_types.html new file mode 100644 index 0000000000000000000000000000000000000000..b3548c6a80093b12342d23817ad0170fd16116ec --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/TextBox_types.html @@ -0,0 +1,87 @@ + + + + + + + TextBox type Tests + + + + + + + + + + + + + + +

TextBox type Tests

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + diff --git a/src/main/resources/static/dijit/tests/form/ToggleButtonMixin.html b/src/main/resources/static/dijit/tests/form/ToggleButtonMixin.html new file mode 100644 index 0000000000000000000000000000000000000000..e36d8a7707ff63ab5466a610be9b2b381c31c3f6 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/ToggleButtonMixin.html @@ -0,0 +1,177 @@ + + + + + + _ToggleButtonMixin tests + + + + + + + + + +

_ToggleButtonMixin (dijit and mobile) non-robot tests

+ + + + + + + + + + + + + + + + + + + + + + + +
 dijitmobile
attributes
Events
Programmatic
+ + diff --git a/src/main/resources/static/dijit/tests/form/_autoComplete.html b/src/main/resources/static/dijit/tests/form/_autoComplete.html new file mode 100644 index 0000000000000000000000000000000000000000..456146a55ff15ba3ca91bc396574535a60b752ba --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/_autoComplete.html @@ -0,0 +1,944 @@ + + + + + dijit.form.ComboBox Unit Test + + + + + + + + + + + + + + + + + +

+ +
+ + + +
+
+ +

Option tags, autoComplete=false, selectOnClick=true, default value of California, pageSize=30, custom labelFunc method

+ + + +
+
+
+
+ + + + + +
+ +
+
+ +
+ +

Data store, autoComplete=true:

+ + +
+
+

Artificially slowed-down data store, autoComplete=true:

+ + +
+ +
+ + + + Hey look, this one is kind of useful. +
+ +

Initially disabled, url, autoComplete=false:

+ + +
+
+ +
+
+

Data store, autoComplete=false required=true and highlightMatch="none"

+ + +
+
+

test that title used as label is preserved on input

+ +
+

No arrow, data store which searches and highlights matches anywhere in the string

+ + +
+

Created programmatically

+ + +
+

Created programmatically with an initial query. (Limits list to items with type = country.)

+ + +
+

Created programmatically with an ItemFileReadStore and a descending sort. (Limits list to items with type = country.)

+ + +
+

With option tags, autoComplete=true, pageSize=30, and a descending sort.

+ + +
+

Special characters

+

The drop down list should be:

+
    +
  • sticks & stones
  • +
  • rags --> riches to
  • +
  • more\less
  • +
  • 3 * 5
  • +
+ + +
+

Japanese

+

Try typing 東区 (East), 西区 (West), 北区 (North), 南区 (South) and a few choices will pop up.
+ Using the Microsoft IME for Japanese (Hiragana), 東 can be inputed by typing higashi followed by SPACE. +

+ + +
+

Custom labelFunc (labels in lowercase), autoComplete=true, prompt message when field is blank:

+ + + + + + +
+ +

Rich text label

+ + +
+ + + +
+ +
+

+ +

+ This is some text below the boxes. It shouldn't get pushed out of the way when search results get returned. + A native select tag to test IE bleed through problem: +

+ + + +
+ +
+
+ Highlight test +
+ + + + + + + +
+ + + + +
+
+ +
+ +

+ + +
+ +
+

autoComplete=true

+ + +
+

autoComplete=false

+ + +
+

type=url

+ + + + diff --git a/src/main/resources/static/dijit/tests/form/images/Alabama.jpg b/src/main/resources/static/dijit/tests/form/images/Alabama.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f2018e664ea57288aa4f667ae884378478e80dff Binary files /dev/null and b/src/main/resources/static/dijit/tests/form/images/Alabama.jpg differ diff --git a/src/main/resources/static/dijit/tests/form/mobile.html b/src/main/resources/static/dijit/tests/form/mobile.html new file mode 100644 index 0000000000000000000000000000000000000000..6e80879fc6ad2b8b0cbeef15321b75824363c871 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/mobile.html @@ -0,0 +1,220 @@ + + + + + + + Form widgets mobile test page + + + + + + + + +

Buttons

+ + + + + +

CheckBox, RadioButton

+
+ check boxes + + + + +
+
+ radio buttons + + + + +
+ +

TextBoxes

+ + + + + + + + + +

Selects

+ + + + + + + + + +

HorizontalSlider

+
+
    +
    +
    +
      +
    1. lowest
    2. +
    3. normal
    4. +
    5. highest
    6. +
    +
    + + diff --git a/src/main/resources/static/dijit/tests/form/module.js b/src/main/resources/static/dijit/tests/form/module.js new file mode 100644 index 0000000000000000000000000000000000000000..7dda3cf2eed041fa30bd0de945c87c10db27da7e --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/module.js @@ -0,0 +1,106 @@ +define(["doh/main", "require", "dojo/sniff"], function(doh, require, has){ + + var test_robot = has("trident") || has("ff") || has("chrome") < 45; + + doh.register("form.ButtonMixin", require.toUrl("./ButtonMixin.html"), 999999); + doh.register("form.Button", require.toUrl("./Button.html"), 999999); + doh.register("form.ToggleButtonMixin", require.toUrl("./ToggleButtonMixin.html"), 999999); + if(test_robot){ + doh.register("form.robot.Button_mouse", require.toUrl("./robot/Button_mouse.html"), 999999); + doh.register("form.robot.Button_a11y", require.toUrl("./robot/Button_a11y.html"), 999999); + } + + doh.register("form.CheckBoxMixin", require.toUrl("./CheckBoxMixin.html"), 999999); + doh.register("form.CheckBox", require.toUrl("./CheckBox.html"), 999999); + doh.register("form.RadioButtonMixin", require.toUrl("./RadioButtonMixin.html"), 999999); + doh.register("form.RadioButtonTiming", require.toUrl("./RadioButtonTiming.html?mode=test"), 999999); + if(test_robot){ + doh.register("form.robot.CheckBox_mouse", require.toUrl("./robot/CheckBox_mouse.html"), 999999); + doh.register("form.robot.CheckBox_a11y", require.toUrl("./robot/CheckBox_a11y.html"), 999999); + } + + doh.register("form.test_validate", require.toUrl("./test_validate.html?mode=test"), 999999); + if(test_robot){ + doh.register("form.robot.ValidationTextBox", require.toUrl("./robot/ValidationTextBox.html"), 999999); + doh.register("form.robot.TextBox_onInput", require.toUrl("./robot/TextBox_onInput.html"), 999999); + } + + doh.register("form.DateTextBox", require.toUrl("./test_DateTextBox.html?mode=test"), 999999); + if(test_robot){ + doh.register("form.robot.DateTextBox", require.toUrl("./robot/DateTextBox.html"), 999999); + doh.register("form.robot.TimeTextBox", require.toUrl("./robot/TimeTextBox.html"), 999999); + } + + doh.register("form.Form", require.toUrl("./Form.html"), 999999); + if(test_robot){ + doh.register("form.robot.FormState", require.toUrl("./robot/Form_state.html"), 999999); + doh.register("form.robot.Form_onsubmit", require.toUrl("./robot/Form_onsubmit.html"), 999999); + } + + doh.register("form.Select", require.toUrl("./test_Select.html?mode=test"), 999999); + if(test_robot){ + doh.register("form.robot.Select", require.toUrl("./robot/Select.html"), 999999); + } + + doh.register("form.AutoCompleterMixin", require.toUrl("./AutoCompleterMixin.html"), 999999); + doh.register("form.ComboBox", require.toUrl("./_autoComplete.html?testWidget=dijit.form.ComboBox&mode=test"), 999999); + if(test_robot){ + doh.register("form.robot.ComboBox_mouse", require.toUrl("./robot/_autoComplete_mouse.html?testWidget=dijit.form.ComboBox"), 999999); + doh.register("form.robot.ComboBox_a11y", require.toUrl("./robot/_autoComplete_a11y.html?testWidget=dijit.form.ComboBox"), 999999); + } + doh.register("form.FilteringSelect", require.toUrl("./_autoComplete.html?testWidget=dijit.form.FilteringSelect&mode=test"), 999999); + if(test_robot){ + doh.register("form.robot.FilteringSelect_mouse", require.toUrl("./robot/_autoComplete_mouse.html?testWidget=dijit.form.FilteringSelect"), 999999); + doh.register("form.robot.FilteringSelect_a11y", require.toUrl("./robot/_autoComplete_a11y.html?testWidget=dijit.form.FilteringSelect"), 999999); + } + + doh.register("form.MultiSelect", require.toUrl("./test_MultiSelect.html?mode=test"), 999999); + if(test_robot){ + doh.register("form.robot.MultiSelect", require.toUrl("./robot/MultiSelect.html"), 999999); + } + + if(test_robot){ + doh.register("form.robot.SimpleTextarea", require.toUrl("./robot/SimpleTextarea.html"), 999999); + } + + doh.register("form.Slider", require.toUrl("./Slider.html"), 999999); + if(test_robot){ + doh.register("form.robot.Slider_mouse", require.toUrl("./robot/Slider_mouse.html"), 999999); + doh.register("form.robot.Slider_a11y", require.toUrl("./robot/Slider_a11y.html"), 999999); + } + + if(test_robot){ + doh.register("form.robot.Spinner_mouse", require.toUrl("./robot/Spinner_mouse.html"), 999999); + doh.register("form.robot.Spinner_a11y", require.toUrl("./robot/Spinner_a11y.html"), 999999); + } + + doh.register("form.ExpandingTextAreaMixin", require.toUrl("./ExpandingTextAreaMixin.html"), 999999); + if(test_robot){ + doh.register("form.robot.Textarea", require.toUrl("./robot/Textarea.html"), 999999); + } + + if(test_robot){ + doh.register("form.robot.validationMessages", require.toUrl("./robot/validationMessages.html"), 999999); + } + + doh.register("form.verticalAlign", require.toUrl("./test_verticalAlign.html"), 999999); + + doh.register("form.TextBox_types", require.toUrl("./TextBox_types.html"), 999999); + + doh.register("form.TextBox_sizes.tundra.ltr", require.toUrl("./TextBox_sizes.html?theme=tundra&dir=ltr"), 999999); + doh.register("form.TextBox_sizes.tundra.rtl", require.toUrl("./TextBox_sizes.html?theme=tundra&dir=rtl"), 999999); + doh.register("form.TextBox_sizes.tundra.quirks", require.toUrl("../quirks.html?file=form/TextBox_sizes.html&theme=tundra&dir=ltr"), 999999); + doh.register("form.TextBox_sizes.claro.ltr", require.toUrl("./TextBox_sizes.html?theme=claro&dir=ltr"), 999999); + doh.register("form.TextBox_sizes.claro.rtl", require.toUrl("./TextBox_sizes.html?theme=claro&dir=rtl"), 999999); + doh.register("form.TextBox_sizes.claro.quirks", require.toUrl("../quirks.html?file=form/TextBox_sizes.html&theme=claro&dir=ltr"), 999999); + doh.register("form.TextBox_sizes.soria.ltr", require.toUrl("./TextBox_sizes.html?theme=soria&dir=ltr"), 999999); + doh.register("form.TextBox_sizes.soria.rtl", require.toUrl("./TextBox_sizes.html?theme=soria&dir=rtl"), 999999); + doh.register("form.TextBox_sizes.soria.quirks", require.toUrl("../quirks.html?file=form/TextBox_sizes.html&theme=soria&dir=rtl"), 999999); + doh.register("form.TextBox_sizes.nihilo.ltr", require.toUrl("./TextBox_sizes.html?theme=nihilo&dir=ltr"), 999999); + doh.register("form.TextBox_sizes.nihilo.rtl", require.toUrl("./TextBox_sizes.html?theme=nihilo&dir=rtl"), 999999); + doh.register("form.TextBox_sizes.nihilo.quirks", require.toUrl("../quirks.html?file=form/TextBox_sizes.html&theme=nihilo&dir=rtl"), 999999); + doh.register("form.TextBox_sizes.a11y.ltr", require.toUrl("./TextBox_sizes.html?a11y=1&dir=ltr"), 999999); + doh.register("form.TextBox_sizes.a11y.rtl", require.toUrl("./TextBox_sizes.html?a11y=1&dir=rtl"), 999999); + doh.register("form.TextBox_sizes.a11y.quirks", require.toUrl("../quirks.html?file=form/TextBox_sizes.html&a11y=1&dir=ltr"), 999999); + +}); diff --git a/src/main/resources/static/dijit/tests/form/robot/Button_a11y.html b/src/main/resources/static/dijit/tests/form/robot/Button_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..4cf67a080454e2994864521450aa9f557e6b5872 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/Button_a11y.html @@ -0,0 +1,610 @@ + + + + doh.robot Button Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/Button_mouse.html b/src/main/resources/static/dijit/tests/form/robot/Button_mouse.html new file mode 100644 index 0000000000000000000000000000000000000000..643410f78c7e8c10222fa8730b27bdb203f3f0f0 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/Button_mouse.html @@ -0,0 +1,799 @@ + + + + doh.robot Button Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/CheckBox_a11y.html b/src/main/resources/static/dijit/tests/form/robot/CheckBox_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..3d0ecdca6f153edc94f74d9c803579278ad64045 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/CheckBox_a11y.html @@ -0,0 +1,403 @@ + + + + doh.robot Checkbox a11y Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/CheckBox_mouse.html b/src/main/resources/static/dijit/tests/form/robot/CheckBox_mouse.html new file mode 100644 index 0000000000000000000000000000000000000000..d7cea1c6aff0aa2f0f6053adc3b03acedc6e22a5 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/CheckBox_mouse.html @@ -0,0 +1,422 @@ + + + + doh.robot Checkbox mouse Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/ComboBox_a11y.html b/src/main/resources/static/dijit/tests/form/robot/ComboBox_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..8c04f69d2d5a1bc722abc49ae8192383f93d5009 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/ComboBox_a11y.html @@ -0,0 +1,12 @@ + + + + ComboBox General/Keyboard Robot Test + + + Loading ComboBox a11y robot test. + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/ComboBox_mouse.html b/src/main/resources/static/dijit/tests/form/robot/ComboBox_mouse.html new file mode 100644 index 0000000000000000000000000000000000000000..7bb349cb197590dd58236103d7779661f96e0cfd --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/ComboBox_mouse.html @@ -0,0 +1,12 @@ + + + + ComboBox Mouse Robot Test + + + Loading ComboBox mouse robot test. + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/DateTextBox.html b/src/main/resources/static/dijit/tests/form/robot/DateTextBox.html new file mode 100644 index 0000000000000000000000000000000000000000..574cf9cb63200589697cb49f43fdfe9ed7197fd9 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/DateTextBox.html @@ -0,0 +1,1165 @@ + + + + + doh.robot DateTextBox Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/FilteringSelect_a11y.html b/src/main/resources/static/dijit/tests/form/robot/FilteringSelect_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..0c135ae88027e40c6666bcd5ca8cfd7b453adf12 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/FilteringSelect_a11y.html @@ -0,0 +1,12 @@ + + + + FilteringSelect General/Keyboard Robot Test + + + Loading FilteringSelect a11y robot test. + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/FilteringSelect_mouse.html b/src/main/resources/static/dijit/tests/form/robot/FilteringSelect_mouse.html new file mode 100644 index 0000000000000000000000000000000000000000..725b817df194ae0a4db8473f0376bc44436c35c7 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/FilteringSelect_mouse.html @@ -0,0 +1,12 @@ + + + + FilteringSelect Mouse Robot Test + + + Loading FilteringSelect mouse robot test. + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/Form_onsubmit.html b/src/main/resources/static/dijit/tests/form/robot/Form_onsubmit.html new file mode 100644 index 0000000000000000000000000000000000000000..f398ade7052dfae5c1b8c6dcaa6403ced01595e1 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/Form_onsubmit.html @@ -0,0 +1,214 @@ + + + + doh.robot Form_onsubmit Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/Form_state.html b/src/main/resources/static/dijit/tests/form/robot/Form_state.html new file mode 100644 index 0000000000000000000000000000000000000000..c325c9fc1df17908db4142e9730370518cdc0bf8 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/Form_state.html @@ -0,0 +1,184 @@ + + + + doh.robot Form Valid/Invalid State Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/MultiSelect.html b/src/main/resources/static/dijit/tests/form/robot/MultiSelect.html new file mode 100644 index 0000000000000000000000000000000000000000..89d375dfcba768883e217eaea0cf63262964f949 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/MultiSelect.html @@ -0,0 +1,251 @@ + + + + doh.robot MultiSelect Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/Select.html b/src/main/resources/static/dijit/tests/form/robot/Select.html new file mode 100644 index 0000000000000000000000000000000000000000..fcbe453e662e9b7ec9fe5778a05ad50e9f1cdad4 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/Select.html @@ -0,0 +1,912 @@ + + + + + doh.robot Select Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/SimpleTextarea.html b/src/main/resources/static/dijit/tests/form/robot/SimpleTextarea.html new file mode 100644 index 0000000000000000000000000000000000000000..53f504a8fb1e050da4825d85d3c8cae23b35df2b --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/SimpleTextarea.html @@ -0,0 +1,135 @@ + + + + doh.robot SimpleTextArea Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/Slider_a11y.html b/src/main/resources/static/dijit/tests/form/robot/Slider_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..dd16d67e42fb13790c09a537a685802f73b54005 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/Slider_a11y.html @@ -0,0 +1,351 @@ + + + + doh.robot Slider Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/Slider_mouse.html b/src/main/resources/static/dijit/tests/form/robot/Slider_mouse.html new file mode 100644 index 0000000000000000000000000000000000000000..485aef26b3193de442126987ece750184f3cfcde --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/Slider_mouse.html @@ -0,0 +1,357 @@ + + + + doh.robot Slider Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/Spinner_a11y.html b/src/main/resources/static/dijit/tests/form/robot/Spinner_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..cdd495e0613ae01b91e995f621a7e31feb66986b --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/Spinner_a11y.html @@ -0,0 +1,701 @@ + + + + doh.robot Spinner Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/Spinner_mouse.html b/src/main/resources/static/dijit/tests/form/robot/Spinner_mouse.html new file mode 100644 index 0000000000000000000000000000000000000000..fd44c9d7db9aa34afe97ebcf025639f5d9fe9f81 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/Spinner_mouse.html @@ -0,0 +1,387 @@ + + + + doh.robot Spinner Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/TextBox_onInput.html b/src/main/resources/static/dijit/tests/form/robot/TextBox_onInput.html new file mode 100644 index 0000000000000000000000000000000000000000..2a5103f0bacefaea3c0afa3cc317f5cc17a24a38 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/TextBox_onInput.html @@ -0,0 +1,178 @@ + + + + robot TextBox onInput and _processInput Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/Textarea.html b/src/main/resources/static/dijit/tests/form/robot/Textarea.html new file mode 100644 index 0000000000000000000000000000000000000000..cb1df84688b63d3ebb737630247db4c8d7a0106e --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/Textarea.html @@ -0,0 +1,326 @@ + + + + + robot Textarea Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/TimeTextBox.html b/src/main/resources/static/dijit/tests/form/robot/TimeTextBox.html new file mode 100644 index 0000000000000000000000000000000000000000..c327a5c589a349c131260658500fe088b60b385d --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/TimeTextBox.html @@ -0,0 +1,511 @@ + + + + + doh.robot TimeTextBox Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/ValidationTextBox.html b/src/main/resources/static/dijit/tests/form/robot/ValidationTextBox.html new file mode 100644 index 0000000000000000000000000000000000000000..818202f75792ad9aa9a22f751cedfe4a7874f939 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/ValidationTextBox.html @@ -0,0 +1,1585 @@ + + + + + doh.robot Validation Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/_autoComplete_a11y.html b/src/main/resources/static/dijit/tests/form/robot/_autoComplete_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..3682dddf8142471017c9fd482ccc30d760b7f00c --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/_autoComplete_a11y.html @@ -0,0 +1,1629 @@ + + + + doh.robot ComboBox/FilteringSelect General and A11Y Tests + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/_autoComplete_mouse.html b/src/main/resources/static/dijit/tests/form/robot/_autoComplete_mouse.html new file mode 100644 index 0000000000000000000000000000000000000000..d6d57adb457c625d34f7f990a589036db1b6fc1d --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/_autoComplete_mouse.html @@ -0,0 +1,470 @@ + + + + doh.robot ComboBox/FilteringSelect Mouse Tests + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/robot/validationMessages.html b/src/main/resources/static/dijit/tests/form/robot/validationMessages.html new file mode 100644 index 0000000000000000000000000000000000000000..742ff58b3a8a23d21fac081f5e8f00f394311bcb --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/robot/validationMessages.html @@ -0,0 +1,711 @@ + + + + + Validation Message Test + + + + + + + + + + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + +
    + + + + diff --git a/src/main/resources/static/dijit/tests/form/runTests.html b/src/main/resources/static/dijit/tests/form/runTests.html new file mode 100644 index 0000000000000000000000000000000000000000..71677dd47ae91a3885396bcadb8033c8019029a6 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/runTests.html @@ -0,0 +1,9 @@ + + + + Dijit Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/src/main/resources/static/dijit/tests/form/test_Button.html b/src/main/resources/static/dijit/tests/form/test_Button.html new file mode 100644 index 0000000000000000000000000000000000000000..8a6b1626cacad6f90c5f06e9c3360ee3d0d4fbc8 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/test_Button.html @@ -0,0 +1,488 @@ + + + + + Dojo Button Widget Test + + + + + + + + + + + + + + + +

    Dijit Button Test

    +

    Simple, drop down & combo buttons

    +

    + Buttons can do an action, display a menu, or both: +

    +

    + + + + tooltip on button + + + + + + +

    +
    +

    DropDownButtons with different drop down positions

    + + + + +

    ComboButtons with different drop down positions

    + + + + +

    Buttons with no text label

    +

    Buttons have showLabel=false so text is not displayed. If no title attribute supplied, Should have label as title attribute displayed on mouse over

    +
    + + +
    + Save +
    +
    Save
    +
    Save As
    +
    +
    +
    +
    +

    Toggle buttons

    +

    The button CSS as well as the icon CSS can change on toggle

    +
    + + +
    +
    +

    Sizing

    +

    Short button, tall buttons, big buttons, small buttons... + These buttons size to their content (just like <button>).

    +
    + + + + +
    +
    +
    +

    Customized buttons

    +

    Dojo users can customize styles. Here's an example:

    +
    + + + +
    +
    +

    Toggling the display test

    +

    + (Ticket #403) +

    +
    + +
    + +
    +

    Programatically changing buttons

    +

    clicking the buttons below will change the buttons above

    + +
    + + + + +
    +

    Button instantiated via javacript:

    + + +

    DropDownButton instantiated via javacript:

    + + + + + +

    Submit and Reset Buttons

    +
    Testing that submit and reset buttons work properly. OnSubmit and OnReset handlers + for the form just output to the console. +
    +
    + + +
    +    + +
    + +

    onClick Tests

    +
    Testing that onClick works properly +
    +
    +
    + +
    + +
    + +
    + +
    + +
    +
    + +

    Submit/value test

    + +
    + + + + +
    +
    +
    + +
    + + + +

    Tests for bubbling:

    +
    + + + +
    + + + diff --git a/src/main/resources/static/dijit/tests/form/test_CheckBox.html b/src/main/resources/static/dijit/tests/form/test_CheckBox.html new file mode 100644 index 0000000000000000000000000000000000000000..cc0cc8c351d6cbaef4286489945a42db65c1530a --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/test_CheckBox.html @@ -0,0 +1,168 @@ + + + + + CheckBox Widget Demo + + + + + + + + + + + + + + + + + +

    Dijit CheckBox Test

    +

    + Here are some checkboxes. Try clicking, and hovering, tabbing, and using the space bar to select: +

    + +
    + + +
    + + + +
    + + + "onChange" handler updates: [] + +
    + + +
    + + +
    + + + +
    + + +
    + + + + + + + "onChange" handler updates: [] +
    +

    + Here are some radio buttons. Try clicking, and hovering, tabbing, and arrowing +

    +

    + Radio group #1: + + + + + + + + +

    +

    + Radio group #2: (no default value, and has breaks)
    + +
    + +
    + +
    + (Note if using keyboard: tab to navigate, and use arrow or space to select) +

    + + +
    + +

    + Radio group #3 (native radio buttons): + + + + + + +

    + +
    + These 6 radio buttons have the same name but are in separate forms so they can be selected independently. +
    + 1: + + +
    +
    + 2: + + +
    +
    + 3: + + +
    +
    + +
    + Programmatic radio buttons: +
    +
    +
    +
    +
    + + + diff --git a/src/main/resources/static/dijit/tests/form/test_ComboBox.html b/src/main/resources/static/dijit/tests/form/test_ComboBox.html new file mode 100644 index 0000000000000000000000000000000000000000..a0635cad3c73dba2a45afa062d71bbe0eb2bee2e --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/test_ComboBox.html @@ -0,0 +1,12 @@ + + + + ComboBox Unit Test + + + Loading ComboBox unit test. + + + diff --git a/src/main/resources/static/dijit/tests/form/test_DateTextBox.html b/src/main/resources/static/dijit/tests/form/test_DateTextBox.html new file mode 100644 index 0000000000000000000000000000000000000000..c2487486344a4f0eefe63b70fcc9da7394cd51c2 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/test_DateTextBox.html @@ -0,0 +1,471 @@ + + + + + Test DateTextBox Widget + + + + + + + + + + + + + + + + + + + +

    Test DateTextBox Widget

    + +
    +
    + + DateTextBox class, no attributes +
    +
    + + + + + + + + +
    +
    + + DateTextBox class, + Attributes: required="true", trim="true", constraints={min:'2004-01-01',max:'2006-12-31',formatLength:'long'}. Works for leap years +
    +
    + + + + +
    +
    + + DateTextBox class, + Attributes: lang="en-us", required="true", constraints={min:'2004-01-01',max:'2006-12-31'}. Works for leap years. + Prompt message whenever field is blank. + +
    +
    + +
    +
    + + DateTextBox class, + Attributes: lang="de-de", hasDownArrow=false, constraints={min:2004-01-01, max:2006-12-31}. Works for leap years. + Prompt message whenever field is blank. + +
    +
    + +
    + +
    + + Date, overriding pattern with dd-MM-yyyy +
    +
    + +
    +
    + Using title attribute for label + DateTextBox class, + Attributes: lang="en-us", required="true", prompt message, invalid message + Prompt message whenever field is blank. + +
    +
    +
    +
    +
    + + + +
    + Date pairs, from/to (won't submit unless from/to fields filled in correctly): +
    +
    + + + +
    + +
    + +
    +
    + +
    + + + + +
    + + diff --git a/src/main/resources/static/dijit/tests/form/test_DateTextBox_iframe.html b/src/main/resources/static/dijit/tests/form/test_DateTextBox_iframe.html new file mode 100644 index 0000000000000000000000000000000000000000..549f88e6abdca8d767f843627bbbdacec2741667 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/test_DateTextBox_iframe.html @@ -0,0 +1,6 @@ + +test_DateTextBox iframe + + + + diff --git a/src/main/resources/static/dijit/tests/form/test_FilteringSelect.html b/src/main/resources/static/dijit/tests/form/test_FilteringSelect.html new file mode 100644 index 0000000000000000000000000000000000000000..241de29891ea6272d11dea9f5ae40c48b8a04f1a --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/test_FilteringSelect.html @@ -0,0 +1,12 @@ + + + + FilteringSelect Unit Test + + + Loading FilteringSelect unit test. + + + diff --git a/src/main/resources/static/dijit/tests/form/test_Form_onsubmit.html b/src/main/resources/static/dijit/tests/form/test_Form_onsubmit.html new file mode 100644 index 0000000000000000000000000000000000000000..09c979b0d2501e9d899510b62abef0a589d9e147 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/test_Form_onsubmit.html @@ -0,0 +1,99 @@ + + + + + + + Form unit test + + + + + + + + + + + + + + + + +

    Form Widget Submit Test

    +

    Tests dojo.stopEvent() etc. calls inside dijit.form.Form onSubmit and onReset callbacks.

    +
    +

    This form shouldn't submit, nor reset

    + + + +
    + +
    +

    This form shouldn't submit, nor reset

    + + + +
    + +
    +

    This form should submit and reset

    + + + +
    + +
    +

    This form should submit and reset

    + + + +
    + +

    Submitted value:

    + + + + + diff --git a/src/main/resources/static/dijit/tests/form/test_Form_state.html b/src/main/resources/static/dijit/tests/form/test_Form_state.html new file mode 100644 index 0000000000000000000000000000000000000000..33146f780a5bc078f586d77cbc52dafc20aadacb --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/test_Form_state.html @@ -0,0 +1,114 @@ + + + + + dijit.form.Form Valid/Invalid State Test + + + + + + + + + + + + + + + + +

    dijit.form.Form Valid/Invalid State Test

    +

    + Tests that dijit.form.Form correctly changes state from valid to invalid (as indicated by disabled/enabled submit button) + according to child widget state. +

    +
    + + + + + + + + + + + + + + + + + + + + + + +





    + + +

    +
    + + + +
    + + diff --git a/src/main/resources/static/dijit/tests/form/test_MultiSelect.html b/src/main/resources/static/dijit/tests/form/test_MultiSelect.html new file mode 100644 index 0000000000000000000000000000000000000000..b88a27fcaa149bb78757ff341863737237a4943f --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/test_MultiSelect.html @@ -0,0 +1,200 @@ + + + + + Testing MultiSelect form widget | The Dojo Toolkit + + + + + + + + + +

    dijit.form.MultiSelect:

    +

    Select one or more items in First or Second list and move them between lists using the buttons provided.

    +
    + +
    + + + +
    + +

    + + + + + + + + +

    + + +
    +

    + + + + diff --git a/src/main/resources/static/dijit/tests/form/test_Select.html b/src/main/resources/static/dijit/tests/form/test_Select.html new file mode 100644 index 0000000000000000000000000000000000000000..ae4c8ff247652cb94de72dd4b54dcd428c6e477c --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/test_Select.html @@ -0,0 +1,1223 @@ + + + + + dijit/form/Select test + + + + + + + + +

    Test: dijit/form/Select

    + +

    + Note: load test_Select.html?mode=test to run unit tests, or + test_Select.html?mode=benchmark to run performance tests. +

    + + + +
    +

    HTML select for comparison

    + + + + +
    +
    +

    dijit/form/Select form

    +

    Setting Defaults

    + Test One: + + + Test Two: + + Test Three (required): + +
    +

    Rich Text (Need to use divs and spans - since browsers hack selects to pieces)

    + Rich text One: + + Alabama + Alaska + Arizona + Arkansas + California + + + + Rich text two: + + copy Copy + move Move + no copy No Copy + no move No Move + very long menu Very Long Menu Entry + +
    +

    Initially Empty

    + + + + +
    +

    Single Item

    + +
    +

    Long lists

    + maxHeight=200: + + no maxHeight: + + +
    +

    dojo/data store (legacy API) based

    + Example 1 + + Example 2 + + Example 3 + + Example 4 Legacy + + +
    +

    dojo/store based

    + Example 1 + + Example 2 + + Example 3 (Observable) + + Example 3a (Observable, same store as 3) + + Example 4 + + Example 5 Legacy + + +
    +

    Inlined with text (all IE modes except for IE8 Standards)

    + Text Prompt: + + +
    +

    More required but blank selects

    + required s13: + + required s14: + + +
    + + +
    + +

    Disabled

    + Disabled: + +
    +

    Programmatic and other tests

    +
    + + +
    +
    +
    + + validate and close +
    +
    + + +
    +
    +
    +
    + + validate and close +
    +
    + +
    +
    + Rendering tests +
    + unstyled widget +
    + normal + +
    +
    + disabled + +
    +
    + error + +
    +
    + hover + +
    +
    + focused + +
    +
    + RTL + +
    +
    + RTL error + +
    +
    + styled option + + Large + 2 + +
    +
    +
    +
    + width:60px;font-family:Arial;font-size:150%;border:2px blue;padding:5px;color:red +
    + normal + +
    +
    + disabled + +
    +
    + error + +
    +
    + hover + +
    +
    + focused + +
    +
    + RTL + +
    +
    + RTL error + +
    +
    + styled option + + Large + 2 + +
    +
    +
    +
    + a11y, unstyled +
    + normal + +
    +
    + disabled + +
    +
    + error + +
    +
    + hover + +
    +
    + focused + +
    +
    + RTL + +
    +
    + RTL error + +
    +
    + styled option + + Large + 2 + +
    +
    +
    +
    + a11y styled +
    + normal + +
    +
    + disabled + +
    +
    + error + +
    +
    + hover + +
    +
    + focused + +
    +
    + RTL + +
    +
    + RTL error + +
    +
    + styled option + + Large + 2 + +
    +
    +
    + +

    Toolbar

    + +
    + + + +
    + + diff --git a/src/main/resources/static/dijit/tests/form/test_SimpleTextarea.html b/src/main/resources/static/dijit/tests/form/test_SimpleTextarea.html new file mode 100644 index 0000000000000000000000000000000000000000..919cab2d2e1005c9bfea0fe1b8eeefa2f07c36e8 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/test_SimpleTextarea.html @@ -0,0 +1,92 @@ + + + + + Testing SimpleTextArea | The Dojo Toolkit + + + + + + + + + + + + + + + + + +

    SimpleTextarea

    + +

    + This is a simple text area that doesn't automatically size itself according to it's content. + It can be used inside layout containers. +

    + +

    + + + + + + + + + + +

    + + +

    In a BorderContainer

    + +
    + + + + + +
    + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/test_Slider.html b/src/main/resources/static/dijit/tests/form/test_Slider.html new file mode 100644 index 0000000000000000000000000000000000000000..9ef8ab302d8bd8b2c2c32d83923117665fd7117c --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/test_Slider.html @@ -0,0 +1,199 @@ + + + + + Dojo Slider Widget Demo + + + + + + + + + +

    Slider

    + Also try using the arrow keys, buttons, or clicking on the progress bar to move the slider. +
    + +
    + +

    Horizontal Slider Example

    + initial value=10, min=0, max=100, pageIncrement=100, onChange event triggers input box value change immediately
    +
    +
      +
      +
      +
        +
      1. lowest
      2. +
      3. normal
      4. +
      5. highest
      6. +
      +
      + + +
      + + + +

      Vertical Slider Example

      + initial value=10, min=0, max=100, onChange event triggers input box value change when you mouse up or tab away
      +
      +
        +
      1. 0
      2. +
      3. 100
      4. +
      +
      +
      +
        +
        + + +

        Fancy HTML labels (no slide animation):

        +
        +
        +
          +
        1. small
          small
        2. +
        3. medium
          medium
        4. +
        5. large
          large
        6. +
        +
        +

        + +

        Standalone ruler example:

        + +
        +
        +
        +
        +
        +
          +
        1. +
        2. 1
        3. +
        4. 2
        5. +
        +
        + +

        Horizontal, with buttons, disabled (to show styling):

        + +
        +
          +
          +
          +
            +
          1. lowest
          2. +
          3. normal
          4. +
          5. highest
          6. +
          +
          + + + + +
          + + +
          + +
          + +

          Fractional Slider Example

          + initial value=0.28, min=0, max=2, onChange event triggers input box value change when you mouse up or tab away

          +
          +
          +
          + + + diff --git a/src/main/resources/static/dijit/tests/form/test_Spinner.html b/src/main/resources/static/dijit/tests/form/test_Spinner.html new file mode 100644 index 0000000000000000000000000000000000000000..e21ed13a26282f88eb431d7d2133455bae9781f9 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/test_Spinner.html @@ -0,0 +1,129 @@ + + + + + Dojo Spinner Widget Test + + + + + + + + + + + + + + + + + +

          Dijit Spinner Test

          + Try typing values, and use the up/down arrow keys and/or the arrow push + buttons to spin +
          +
          +

          number spinner

          +
          + initial value=900, no delta specified, no min specified, max=1550, onChange captured, big font
          +
          + + + + + + +
          +
          + initial value=1000, delta=10, min=9 max=1550
          + + +
          +
          + initial value not specified, delta not specified, min not specified, max not specified, signed not specified, separator not specified
          + [verify no line break just after this text] + + [verify no line break just before this text] +
          +
          + Move the cursor left and right within the input field to see the effect on the spinner. +
          + initial value=+1.0, smalldelta=0.1, largedelta=1.0, min=-10.9, max=155, places=1, maxLength=20, exponent=false
          +
          + +
          + +

          +
          + + + + + +

          +

          + + +

          + + +
          +
          + + diff --git a/src/main/resources/static/dijit/tests/form/test_Textarea.html b/src/main/resources/static/dijit/tests/form/test_Textarea.html new file mode 100644 index 0000000000000000000000000000000000000000..51b1a9825ba19d56d1d271085c89fd2dd8c3359d --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/test_Textarea.html @@ -0,0 +1,138 @@ + + + + + + Dojo dijit.form.Textarea Widget Test + + + + + + + + + + + + +

          Auto-sizing Textarea Widget Test

          + + +
          +
          + Various dijit.form.Textarea widgets + + +
          + + + + +
          + + +
          + +
          +
          + +
          +
          +
          + +
          +
          +
          +
          + + + + + + +

          Set properties for every dijit.form.Textarea

          + + + + + +

          Submit page as form

          +
          + + +
          +
          + + diff --git a/src/main/resources/static/dijit/tests/form/test_TimeTextBox.html b/src/main/resources/static/dijit/tests/form/test_TimeTextBox.html new file mode 100644 index 0000000000000000000000000000000000000000..e73bc4686740f5e5f60573d653ca80823f13c793 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/test_TimeTextBox.html @@ -0,0 +1,209 @@ + + + + + Test TimeTextBox Widget + + + + + + + + + + + + + + + + +

          Test TimeTextBox Widget

          + +
          + +
          + +
          +
          + +
          + + TimeTextBox class, + Attributes: {formatLength:'medium'} +
          +
          + + +
          + +
          + + TimeTextBox class, + Attributes: {formatLength:'short'} +
          +
          + +
          + +
          + + TimeTextBox class, + Attributes: {timePattern:'h:mm:ss a'} +
          +
          + +
          + +
          + + TimeTextBox class, + Attributes: {timePattern:'HH:mm:ss'} +
          +
          + +
          + +
          + + TimeTextBox class, + Attributes: {formatLength:'medium',min:'T00:00:00',max:'T12:00:00'} +
          +
          + + +
          +
          + Using title attribute for label. + TimeTextBox class, + Attributes: {formatLength:'short'} Time using local conventions without seconds, required, no invalid message tooltip +
          +
          + +
          +
          + Ticket #18201 + Ensure that Date values can used with TimeTextBoxes +
          +
          + + +
          +
          + + TimeTextBox class, + Attributes: {formatLength:"medium", + pickerMin: "T09:00:00", + clickableIncrement: "T01:00:00", + pickerMax: "T17:00:00"} +
          +
          + + +
          +
          + + + + + + diff --git a/src/main/resources/static/dijit/tests/form/test_validStatePerformance.html b/src/main/resources/static/dijit/tests/form/test_validStatePerformance.html new file mode 100644 index 0000000000000000000000000000000000000000..0aab07b1681703c25aae7490867e0c81dee3287a --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/test_validStatePerformance.html @@ -0,0 +1,117 @@ + + + + + Performance Test of NumberTextBox + + + + + + + + + + + + + + + + + + +
          + + + + + + + + + + + + + + + + + + + + +
          +
          +
          + + + + + + + + + + + + + + + + + + + + +
          +
          + + + diff --git a/src/main/resources/static/dijit/tests/form/test_validate.html b/src/main/resources/static/dijit/tests/form/test_validate.html new file mode 100644 index 0000000000000000000000000000000000000000..20e775e4aa8ddfa0c6266fa6e5bc5f1cda413d1f --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/test_validate.html @@ -0,0 +1,982 @@ + + + + + Test TextBox Validation Widgets + + + + + + + + + + + + + + + + +

          Dijit Validation Widgets

          + +
          + +
          + + TextBox class, tabIndex=2, Attributes: {trim: true, propercase: true, intermediateChanges: true, style: 'width:700px', selectOnClick: true}, First letter of each word is upper case. +
          +
          + +
          + + +
          + +
          + + TextBox class, Attributes: {trim: true, uppercase: true, "class": 'verylong'}, all letters converted to upper case. +
          +
          + +
          + +
          + + NumberTextBox class, tabIndex=1, Attributes: {trim: true}, no initial value specified, tooltipPosition=[above, below]. Displays a prompt message if field is blank. +
          +
          + + + + + + + + + + +
          + +
          + + NumberTextBox class, Attributes: required=true, must be integer, no messages provided, no initial value specified, maxlength=3 +
          +
          + + + +
          + +
          + + ValidationTextBox class, + Attributes: {lowercase: true, required: true, "class": verylong, style: font-size: 15pt;}. Displays a prompt message if field is blank. +
          +
          + +
          + +
          + + IntegerTextBox class, + Attributes: {required: true, min:-20000, max:+20000 }, displays a prompt message if field is blank, thousands separator remains during editing. + Enter feet above sea level with a sign. +
          +
          + + +
          + + +
          + + CurrencyTextBox class, + Attributes: {fractional: true}. Enter whole and cents. Currency symbol is optional. Cents are MANDATORY. +
          + +
          + USD +   +
          + +
          + + EUR + + + +
          + + +
          + euro currency (fixed lang: de-de) programmatically created, fractional part is optional: EUR +
          + + + + +
          + + RegexpTextBox class, + Attributes: {required: true} +
          +
          + +
          + +
          + + (just a test that type attribute is obeyed) +
          +
          + +
          + +
          + + value: null should show up as empty +
          +
          + +
          + +
          + + a test that readOnly and disabled are understood for TextBox +
          +
          + + + + + +
          +
          + + a test that disabled is understood for ValidationTextBox +
          +
          + + + + + +
          + + + +
          + + +
          + +
          +
          + + a test that placeholder works for TextBox. 10px padding added for testing. +
          +
          + + +
          +

          Tooltip positioning

          +

          + These buttons switch the positions searched to try to place the validation error tooltips. + Note that setting tooltip positioning to "above" or "below" is dangerous if + you have a node with a dropdown, but the drop down might overlap the tooltip. +

          + + + +
          + +
          +
          + +
          + +

          Validation tooltips inside of dialogs:

          +
          + +
          +
          + + +
          + + Partial numeric input should be validated with respect to the min/max constraints and available space +
          + +
          + + + + + +
          + + +
          + + Ensure setting the formattedValue does not alter the entered value on blur +
          +
          + +
          + +
          + + Make sure rounding works with different locale's +
          + +
          + +
          + + +
          + + Make sure precision ranges work as expected +
          +
          + +
          + + + + diff --git a/src/main/resources/static/dijit/tests/form/test_verticalAlign.html b/src/main/resources/static/dijit/tests/form/test_verticalAlign.html new file mode 100644 index 0000000000000000000000000000000000000000..d53f9cff2a04da2998569e0300bed20aa11d3529 --- /dev/null +++ b/src/main/resources/static/dijit/tests/form/test_verticalAlign.html @@ -0,0 +1,207 @@ + + + + + Dojo Form Widget Vertical Alignment Test + + + + + + + + + + + + + + + +

          Dojo Form Widget Vertical Alignment Test

          + +

          In a P

          +

          + + + + + + + + + + + + +

          + +

          In a DIV

          +
          + + + + + + + + + + + + +
          + +

          font-size 200%

          +
          + + + + + + + + + + + + +
          + + + diff --git a/src/main/resources/static/dijit/tests/formAction.html b/src/main/resources/static/dijit/tests/formAction.html new file mode 100644 index 0000000000000000000000000000000000000000..6ecc40bb3cd1277e76027baebf0b20bd10ab8ecf --- /dev/null +++ b/src/main/resources/static/dijit/tests/formAction.html @@ -0,0 +1,26 @@ + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/general-module.js b/src/main/resources/static/dijit/tests/general-module.js new file mode 100644 index 0000000000000000000000000000000000000000..34b077a32148ba5b3c34bef93ec31eece8e713cc --- /dev/null +++ b/src/main/resources/static/dijit/tests/general-module.js @@ -0,0 +1,70 @@ +define(["doh/main", "require", "dojo/sniff"], function(doh, require, has){ + + var test_robot = has("trident") || has("ff") || has("chrome") < 45; + + // top level widget tests + doh.register("Bidi", require.toUrl("./Bidi.html"), 999999); + + doh.register("Menu", require.toUrl("./Menu.html"), 999999); + if(test_robot){ + doh.register("robot.Menu_mouse", require.toUrl("./robot/Menu_mouse.html"), 999999); + doh.register("robot.Menu_a11y", require.toUrl("./robot/Menu_a11y.html"), 999999); + doh.register("robot.Menu_iframe", require.toUrl("./robot/Menu_iframe.html"), 999999); + } + + doh.register("Dialog", require.toUrl("./Dialog.html"), 999999); + if(test_robot){ + doh.register("robot.Dialog_mouse", require.toUrl("./robot/Dialog_mouse.html"), 999999); + doh.register("robot.Dialog_a11y", require.toUrl("./robot/Dialog_a11y.html"), 999999); + doh.register("robot.Dialog_focusDestroy", require.toUrl("./robot/Dialog_focusDestroy.html"), 999999); + } + doh.register("ConfirmDialog", require.toUrl("./ConfirmDialog.html"), 999999); + if(test_robot){ + doh.register("robot.ConfirmDialog_a11y", require.toUrl("./robot/ConfirmDialog_a11y.html"), 999999); + } + + doh.register("ProgressBar", require.toUrl("./ProgressBar.html"), 999999); + + if(test_robot){ + doh.register("robot.Tooltip_a11y", require.toUrl("./robot/Tooltip_a11y.html"), 999999); + doh.register("robot.Tooltip_mouse", require.toUrl("./robot/Tooltip_mouse.html"), 999999); + doh.register("robot.Tooltip_mouse_quirks", require.toUrl("./robot/Tooltip_mouse_quirks.html"), 999999); + } + doh.register("Tooltip-placement", require.toUrl("./Tooltip-placement.html"), 999999); + + doh.register("TooltipDialog", require.toUrl("./TooltipDialog.html"), 999999); + if(test_robot){ + doh.register("robot.TooltipDialog_mouse", require.toUrl("./robot/TooltipDialog_mouse.html"), 999999); + doh.register("robot.TooltipDialog_a11y", require.toUrl("./robot/TooltipDialog_a11y.html"), 999999); + doh.register("robot.ConfirmTooltipDialog_a11y", require.toUrl("./robot/ConfirmTooltipDialog_a11y.html"), 999999); + } + + if(test_robot){ + doh.register("robot.InlineEditBox", require.toUrl("./robot/InlineEditBox.html"), 999999); + } + + if(test_robot){ + doh.register("robot.ColorPalette", require.toUrl("./robot/ColorPalette.html"), 999999); + } + + doh.register("CalendarLite", require.toUrl("./CalendarLite.html"), 999999); + if(test_robot){ + doh.register("robot.Calendar_a11y", require.toUrl("./robot/Calendar_a11y.html"), 999999); + } + + if(test_robot){ + doh.register("robot.TitlePane", require.toUrl("./robot/TitlePane.html"), 999999); + } + + doh.register("Fieldset", require.toUrl("./Fieldset.html"), 999999); + if(test_robot){ + doh.register("robot.Fieldset", require.toUrl("./robot/Fieldset.html"), 999999); + } + + if(test_robot){ + doh.register("robot.Toolbar", require.toUrl("./robot/Toolbar.html"), 999999); + } + + doh.register("_TimePicker", require.toUrl("./_TimePicker.html"), 999999); + +}); \ No newline at end of file diff --git a/src/main/resources/static/dijit/tests/helpers.js b/src/main/resources/static/dijit/tests/helpers.js new file mode 100644 index 0000000000000000000000000000000000000000..84f9387e0bfdd8c4af8acf89f8375842eaac429c --- /dev/null +++ b/src/main/resources/static/dijit/tests/helpers.js @@ -0,0 +1,137 @@ +// Helper methods for automated testing + +define([ + "dojo/_base/array", "dojo/Deferred", "dojo/promise/all", + "dojo/dom-attr", "dojo/dom-class", "dojo/dom-geometry", "dojo/dom-style", + "dojo/_base/kernel", "dojo/_base/lang", "dojo/on", "dojo/query", "dojo/sniff", + "dijit/a11y" // isTabNavigable, _isElementShown +], function(array, Deferred, all, + domAttr, domClass, domGeometry, domStyle, + kernel, lang, on, query, has, a11y){ + + +// Globals used by onFocus() +var curFocusNode, focusListener, focusCallback, focusCallbackDelay; + +var exports = { + +isVisible: function isVisible(/*dijit/_WidgetBase|DomNode*/ node){ + // summary: + // Return true if node/widget is visible + var p; + if(node.domNode){ node = node.domNode; } + return (domStyle.get(node, "display") != "none") && + (domStyle.get(node, "visibility") != "hidden") && + (p = domGeometry.position(node, true), p.y + p.h >= 0 && p.x + p.w >= 0 && p.h && p.w); +}, + +isHidden: function isHidden(/*dijit/_WidgetBase|DomNode*/ node){ + // summary: + // Return true if node/widget is hidden + var p; + if(node.domNode){ node = node.domNode; } + return (domStyle.get(node, "display") == "none") || + (domStyle.get(node, "visibility") == "hidden") || + (p = domGeometry.position(node, true), p.y + p.h < 0 || p.x + p.w < 0 || p.h <= 0 || p.w <= 0); +}, + +innerText: function innerText(/*DomNode*/ node){ + // summary: + // Browser portable function to get the innerText of specified DOMNode + return lang.trim(node.textContent || node.innerText || ""); +}, + +tabOrder: function tabOrder(/*DomNode?*/ root){ + // summary: + // Return all tab-navigable elements under specified node in the order that + // they will be visited (by repeated presses of the tab key) + + var elems = []; + + function walkTree(/*DOMNode*/ parent){ + query("> *", parent).forEach(function(child){ + // Skip hidden elements, and also non-HTML elements (those in custom namespaces) in IE, + // since show() invokes getAttribute("type"), which crashes on VML nodes in IE. + if((has("ie") <= 8 && child.scopeName !== "HTML") || !a11y._isElementShown(child)){ + return; + } + + if(a11y.isTabNavigable(child)){ + elems.push({ + elem: child, + tabIndex: domClass.contains(child, "tabIndex") ? domAttr.get(child, "tabIndex") : 0, + pos: elems.length + }); + } + if(child.nodeName.toUpperCase() != 'SELECT'){ + walkTree(child); + } + }); + } + + walkTree(root || dojo.body()); + + elems.sort(function(a, b){ + return a.tabIndex != b.tabIndex ? a.tabIndex - b.tabIndex : a.pos - b.pos; + }); + return array.map(elems, function(elem){ return elem.elem; }); +}, + + +onFocus: function onFocus(func, delay){ + // summary: + // Wait for the next change of focus, and then delay ms (so widget has time to react to focus event), + // then call func(node) with the currently focused node. Note that if focus changes again during delay, + // newest focused node is passed to func. + + if(!focusListener){ + focusListener = on(dojo.doc, "focusin", function(evt){ + // Track most recently focused node; note it may change again before delay completes + curFocusNode = evt.target; + + // If a handler was specified to fire after the next focus event (plus delay), set timeout to run it. + if(focusCallback){ + var callback = focusCallback; + focusCallback = null; + setTimeout(function(){ + callback(curFocusNode); // return current focus, may be different than 10ms earlier + }, focusCallbackDelay); // allow time for focus to change again, see #8285 + } + }); + } + + focusCallback = func; + focusCallbackDelay = delay || 10; +}, + +waitForLoad: function(){ + // summary: + // Returns Promise that fires when all widgets have finished initializing + + var d = new Deferred(); + + dojo.global.require(["dojo/ready", "dijit/registry"], function(ready, registry){ + ready(function(){ + // Deferred fires when all widgets with an onLoadDeferred have fired + var widgets = array.filter(registry.toArray(), function(w){ return w.onLoadDeferred; }), + deferreds = array.map(widgets, function(w){ return w.onLoadDeferred; }); + console.log("Waiting for " + widgets.length + " widgets: " + + array.map(widgets, function(w){ return w.id; }).join(", ")); + new all(deferreds).then(function(){ + console.log("All widgets loaded."); + d.resolve(widgets); + }); + }); + }); + + return d.promise; +} + +}; + +// All the old tests expect these symbols to be global +lang.mixin(kernel.global, exports); + +return exports; + +}); diff --git a/src/main/resources/static/dijit/tests/i18n/README b/src/main/resources/static/dijit/tests/i18n/README new file mode 100644 index 0000000000000000000000000000000000000000..a6516b6456a93366c221b083b899899e31ec4c92 --- /dev/null +++ b/src/main/resources/static/dijit/tests/i18n/README @@ -0,0 +1,4 @@ +Global Verification Tests (GVT) + +In order to run these tests, you will need full locale support in Dojo. Dojo only ships with a small subset by default. +See util/buildscripts/cldr for an ant-based build script. diff --git a/src/main/resources/static/dijit/tests/i18n/calendar.html b/src/main/resources/static/dijit/tests/i18n/calendar.html new file mode 100644 index 0000000000000000000000000000000000000000..70fece66300fd60918533425688f00b121cbcb06 --- /dev/null +++ b/src/main/resources/static/dijit/tests/i18n/calendar.html @@ -0,0 +1,44 @@ + + + + + Calendar I18N Test + + + + + + + + + + + + + + +

          Dijit Calendar I18N Test

          + + before + + + + + + + after + + + diff --git a/src/main/resources/static/dijit/tests/i18n/currency.html b/src/main/resources/static/dijit/tests/i18n/currency.html new file mode 100644 index 0000000000000000000000000000000000000000..1fd95e7170a5d8fff8a1705af1a34ea214a9e968 --- /dev/null +++ b/src/main/resources/static/dijit/tests/i18n/currency.html @@ -0,0 +1,210 @@ + + + + + Test CurrencyTextBox + + + + + + + + + + +

          Dijit TextBox Globalization Test for Currency

          + + +

          + Before start this test, make sure the dojo/cldr/nls contains the data for "zh-cn", "fr-fr", and "ja-jp" + and currencies CNY, EGP, EUR, JPY. If not, convert these CLDR data and put them there. +

          + + + +

          Issues & Comments

          +

          Issue #1Fixed

          +

          + Some browsers like FireFox have a bug on the non-breaking space character (U+00A0, &nbsp; or &#160; or + &#xA0; in HTML). + They always convert the NBSP character to a normal space (U+0020, &#x20; in HTML) automatically in the following circumstances: +

          +
            +
          • Copy text from the page
          • +
          • Use innerHTML to get the content of a certain element
          • +
          • Use value to get an INPUT element's value
          • +
          + +

          + You cannot read a real NBSP character from an INPUT element on these browsers. It causes issues when some formatting data in CLDR + contains an NBSP character. For example, +

          +
            +
          • Many locales like French use an NBSP character as a group separator in numbers
          • +
          • French and Finnish use NBSP characters in their percentage and currency format patterns respectively
          • +
          + +

          + So Dojo may generate formatted data with NBSP characters in it but cannot read NBSP charaters from user's input in some browser. +

          + +

          Issue #2Fixed: the CLDR data generator should be fixed by adding code to convert U+200F to "\u200F" in nls JS files.

          +

          + Most Bidi currency symbols contain an LTR-MARK (U+200F) character at the very beginning. + But Firefox ignores it when it is not in any escaping form. This should be a bug of Firefox. + For example, click alert('â€'.indexOf('\u+200F')) (there is a U+200F in the empty-looking string): +

          +
            +
          • In Firefox, shows "-1" -- no U+200F found
          • +
          • In IE & Opera, shows "0" -- the U+200F is found
          • +
          +

          + But if the U+200F is in some escaping form, Firefox will work as well as other browsers. + Click alert('\u200F'.indexOf('\u+200F')) to see the same result both in Firefox and IE: +

          + + +

          Issue #3Fixed: added a "localeDigit" to the options

          +

          + Strictly speaking, the data conversion must support non-European number characters in some locales like Arabic and Hindi. + For example, ICU formats a number data into Indic number characters by default in the Arabic locale. + However, currently Dojo does not support this feature (Dojo uses the default number conversion of the browser). +

          + + + diff --git a/src/main/resources/static/dijit/tests/i18n/date.html b/src/main/resources/static/dijit/tests/i18n/date.html new file mode 100644 index 0000000000000000000000000000000000000000..7cf2a39de6b1bfc1a1ce8a29436da70485df2a30 --- /dev/null +++ b/src/main/resources/static/dijit/tests/i18n/date.html @@ -0,0 +1,155 @@ + + + + + Test DateTextBox + + + + + + + + + + + +

          Dijit TextBox Globalization Test for Date

          + + +

          + Before start this test, make sure the dojo/cldr/nls contains the data for "zh-cn", "fr-fr", "ja-jp", "ru-ru", "hi-in", "en-us" and "ar-eg". If not, convert these CLDR data and put them there. +

          + + + + diff --git a/src/main/resources/static/dijit/tests/i18n/digit.html b/src/main/resources/static/dijit/tests/i18n/digit.html new file mode 100644 index 0000000000000000000000000000000000000000..e10c540fc514ec5b8d91f0f7776314450b2afcde --- /dev/null +++ b/src/main/resources/static/dijit/tests/i18n/digit.html @@ -0,0 +1,294 @@ + + + + + Test Hindi/Arabic numerals + + + + + + + + + + + +

          Dijit TextBox Globalization Test for Number

          + + +

          + Before start this test, make sure the dojo/cldr/nls contains the data for "ar-eg" and "hi-in". If not, convert these CLDR data and put them there. +

          + + + + + + + diff --git a/src/main/resources/static/dijit/tests/i18n/module.js b/src/main/resources/static/dijit/tests/i18n/module.js new file mode 100644 index 0000000000000000000000000000000000000000..6971b0b89486fd742c16ee3c55f6a299a1981b0e --- /dev/null +++ b/src/main/resources/static/dijit/tests/i18n/module.js @@ -0,0 +1,10 @@ +define(["doh/main", "require"], function(doh, require){ + + doh.register("i18n.currency", require.toUrl("./currency.html"), 999999); + doh.register("i18n.date", require.toUrl("./date.html"), 999999); + doh.register("i18n.number", require.toUrl("./number.html"), 999999); + doh.register("i18n.textbox", require.toUrl("./textbox.html"), 999999); + doh.register("i18n.time", require.toUrl("./time.html"), 999999); + doh.register("i18n.digit", require.toUrl("./digit.html"), 999999); + +}); diff --git a/src/main/resources/static/dijit/tests/i18n/number.html b/src/main/resources/static/dijit/tests/i18n/number.html new file mode 100644 index 0000000000000000000000000000000000000000..9a128db950183852a0efe51fad89e475cc938bc5 --- /dev/null +++ b/src/main/resources/static/dijit/tests/i18n/number.html @@ -0,0 +1,136 @@ + + + + + Test NumberTextBox + + + + + + + + + + +

          Dijit TextBox Globalization Test for Number

          + + +

          + Before start this test, make sure the dojo/cldr/nls contains the data for "zh-cn", "fr-fr". If not, convert these CLDR data and put them there. +

          + + + + + + diff --git a/src/main/resources/static/dijit/tests/i18n/test_i18n.js b/src/main/resources/static/dijit/tests/i18n/test_i18n.js new file mode 100644 index 0000000000000000000000000000000000000000..07aee3161fda6cd31c7f519f6a3c5230245a92b5 --- /dev/null +++ b/src/main/resources/static/dijit/tests/i18n/test_i18n.js @@ -0,0 +1,186 @@ +var validateValues = []; +var formatWidgetCount = 0; +var validateWidgetCount = 0; + +function getElementsById(id){ + var result = []; + + if(!id || typeof(id) != "string"){ + return result; + } + + var ae = document.getElementsByTagName(dojo.byId(id).tagName); + for(var i = 0; i < ae.length; i++){ + if(ae[i].id == id){ + result.push(ae[i]); + } + } + return result; +} + +function getString(n){ + return n && n.toString(); +} + +function startTest(t){ + startTestFormat(t); + startTestValidate(t); +} + +function getAllTestCases(){ + var allTestCases = []; + for(var i = 0; i < formatWidgetCount; i++){ + allTestCases.push({ + name: "format-" + i, + runTest: new Function("t", "startTestFormat(" + i + ", t)") + }); + } + for(i = 0; i < validateWidgetCount; i++){ + allTestCases.push({ + name: "validate-" + i, + runTest: new Function("t", "startTestValidate(" + i + ", t)") + }); + } + return allTestCases; +} + +function startTestFormat(i, t){ + var test_node = dojo.doc.getElementById("test_display_" + i); + var exp = dojo.doc.getElementById("test_display_expected_" + i).value; + var res_node = dojo.doc.getElementById("test_display_result_" + i); + res_node.innerHTML = test_node.value; + res_node.style.backgroundColor = (test_node.value == exp) ? "#AFA" : "#FAA"; + res_node.innerHTML += " Compare (Escaped)"; + t.is(exp, test_node.value); +} + +function startTestValidate(i, t){ + var test_node = dojo.doc.getElementById("test_validate_" + i); + var inp_node = dojo.doc.getElementById("test_validate_input_" + i); + var exp = dojo.doc.getElementById("test_validate_expected_" + i).innerHTML; + var res_node = dojo.doc.getElementById("test_validate_result_" + i); + var val_node = dojo.doc.getElementById("test_display_value_" + i); + + test_node.value = inp_node.value; + + var widget = widget = dijit.getEnclosingWidget(test_node); + + if(widget){ + widget.focus(); + + var expected = validateValues[i]; + var result = widget.getValue(); + if(validateValues[i].processValue){ + expected = validateValues[i].processValue(expected); + result = validateValues[i].processValue(result); + } + var parseCorrect = getString(expected) == getString(result); + val_node.style.backgroundColor = parseCorrect ? "#AFA" : "#FAA"; + val_node.innerHTML = getString(result) + (parseCorrect ? "" : "
          Expected: " + getString(expected)); + + res_node.innerHTML = widget.isValid && !widget.isValid() ? "Wrong" : "Correct"; + res_node.style.backgroundColor = res_node.innerHTML == exp ? "#AFA" : "#FAA"; + + t.is(getString(expected), getString(result)); + } +} + +function genFormatTestCase(desc, dojoType, dojoAttrs, value, expValue, comment){ + var res = ""; + res += ""; + res += "" + desc + ""; + res += ""; + res += ""; + res += ""; + res += "" + comment + ""; + res += ""; + formatWidgetCount++; + + return res; +} +/* +[ + {attrs: {currency: "CNY", lang: "zh-cn"}, desc: "", value:"-123456789.46", expValue: "", comment: ""}, + ... +] +*/ +function genFormatTestCases(title, dojoType, testCases){ + var res = ""; + res += "

          " + title + "

          "; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + + for(var i = 0; i < testCases.length; i++){ + var testCase = testCases[i]; + res += genFormatTestCase(testCase.desc, dojoType, testCase.attrs, testCase.value, testCase.expValue, testCase.comment); + } + + res += "
          Test DescriptionTestExpectedResultComment
          "; + + dojo.place(res, dojo.body()); +} + +function genValidateTestCase(desc, dojoType, dojoAttrs, input, value, comment, isWrong){ + var res = ""; + res += ""; + res += "" + desc + ""; + res += ""; + res += ""; + res += ""; + res += "" + (isWrong ? "Wrong" : "Correct") + ""; + res += ""; + res += "" + comment + ""; + res += ""; + validateValues.push(value); + validateWidgetCount++; + + return res; +} +/* +[ + {attrs: {currency: "CNY", lang: "zh-cn"}, desc: "", value:false, expValue: "-123456789.46", comment: ""}, + ... +] +*/ +function genValidateTestCases(title, dojoType, testCases){ + var res = ""; + res += "

          " + title + "

          "; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + res += ""; + + for(var i = 0; i < testCases.length; i++){ + var testCase = testCases[i]; + res += genValidateTestCase(testCase.desc, dojoType, testCase.attrs, testCase.expValue, testCase.value, testCase.comment, testCase.isWrong); + } + + res += "
          Test DescriptionTestInputParsed ValueExpectedResultComment
          "; + dojo.place(res, dojo.body()); +} diff --git a/src/main/resources/static/dijit/tests/i18n/textbox.html b/src/main/resources/static/dijit/tests/i18n/textbox.html new file mode 100644 index 0000000000000000000000000000000000000000..9e1923774671a588ded41b089adec39bbfb0c461 --- /dev/null +++ b/src/main/resources/static/dijit/tests/i18n/textbox.html @@ -0,0 +1,173 @@ + + + + + Test TextBox + + + + + + + + + + +

          Dijit TextBox Globalization Test

          + + + + + +

          Issues & Comments

          +

          Issue #1 Not fixed. Avoid using this function of TextBox.

          +

          + Strictly speaking, all casing manipulation must use ICU case mapping rules (routine). However, the default JavaScript routines used by Dojo + do not support ICU case mapping rules in all browsers. +

          + +

          Issue #2 Not fixed. Avoid using this function of TextBox.

          +

          + Trimming must get rid of all Unicode characters with the white space property. However, the default JavaScript routines used by Dojo + do not support get character properties in some browsers like IE. Other browsers like Firefox might support trimming more white space + characters. +

          + + + + + diff --git a/src/main/resources/static/dijit/tests/i18n/time.html b/src/main/resources/static/dijit/tests/i18n/time.html new file mode 100644 index 0000000000000000000000000000000000000000..ba9ddda19ec4bc61758c4131f430faf79ec21512 --- /dev/null +++ b/src/main/resources/static/dijit/tests/i18n/time.html @@ -0,0 +1,168 @@ + + + + + Test TextBox for Time + + + + + + + + + +

          Dijit TextBox Globalization Test for Time

          + +

          + Before start this test, make sure the dojo/cldr/nls contains the data for "zh-cn", "fr-fr", "ja-jp", "ru-ru", "hi-in", "en-us" and "ar-eg". If not, convert these CLDR data and put them there. +

          + + + diff --git a/src/main/resources/static/dijit/tests/images/arrowSmall.gif b/src/main/resources/static/dijit/tests/images/arrowSmall.gif new file mode 100644 index 0000000000000000000000000000000000000000..8459ffaf8511531852c36cf946ad6b33f94cf2e4 Binary files /dev/null and b/src/main/resources/static/dijit/tests/images/arrowSmall.gif differ diff --git a/src/main/resources/static/dijit/tests/images/copy.gif b/src/main/resources/static/dijit/tests/images/copy.gif new file mode 100644 index 0000000000000000000000000000000000000000..3fa0366ec9b77722f1c3191fea43fccdb1dd3256 Binary files /dev/null and b/src/main/resources/static/dijit/tests/images/copy.gif differ diff --git a/src/main/resources/static/dijit/tests/images/cut.gif b/src/main/resources/static/dijit/tests/images/cut.gif new file mode 100644 index 0000000000000000000000000000000000000000..27d2dd6532a0e42ca1878fd3e52549ddbe2b18d8 Binary files /dev/null and b/src/main/resources/static/dijit/tests/images/cut.gif differ diff --git a/src/main/resources/static/dijit/tests/images/flatScreen.gif b/src/main/resources/static/dijit/tests/images/flatScreen.gif new file mode 100644 index 0000000000000000000000000000000000000000..05edd7251d92fa3979e8f83ae82f32f9b3d8ca35 Binary files /dev/null and b/src/main/resources/static/dijit/tests/images/flatScreen.gif differ diff --git a/src/main/resources/static/dijit/tests/images/folderIcons.gif b/src/main/resources/static/dijit/tests/images/folderIcons.gif new file mode 100644 index 0000000000000000000000000000000000000000..d0b1760ac7efccdfbfd561d068eaf5264ff22f7d Binary files /dev/null and b/src/main/resources/static/dijit/tests/images/folderIcons.gif differ diff --git a/src/main/resources/static/dijit/tests/images/folderIcons.png b/src/main/resources/static/dijit/tests/images/folderIcons.png new file mode 100644 index 0000000000000000000000000000000000000000..f333fbea54399cc5ff044ebd0f486cc1d637cf4c Binary files /dev/null and b/src/main/resources/static/dijit/tests/images/folderIcons.png differ diff --git a/src/main/resources/static/dijit/tests/images/note.gif b/src/main/resources/static/dijit/tests/images/note.gif new file mode 100644 index 0000000000000000000000000000000000000000..ae5c62196b2b1823fc9e2bc4ebe6faf40106b522 Binary files /dev/null and b/src/main/resources/static/dijit/tests/images/note.gif differ diff --git a/src/main/resources/static/dijit/tests/images/paste.gif b/src/main/resources/static/dijit/tests/images/paste.gif new file mode 100644 index 0000000000000000000000000000000000000000..4862a28699cd54e6c94821cc26eaf1506d646b6e Binary files /dev/null and b/src/main/resources/static/dijit/tests/images/paste.gif differ diff --git a/src/main/resources/static/dijit/tests/images/plus.gif b/src/main/resources/static/dijit/tests/images/plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..0e92383a1bb2d7c55508eb9ea99a80da96dc774d Binary files /dev/null and b/src/main/resources/static/dijit/tests/images/plus.gif differ diff --git a/src/main/resources/static/dijit/tests/images/testsBodyBg.gif b/src/main/resources/static/dijit/tests/images/testsBodyBg.gif new file mode 100644 index 0000000000000000000000000000000000000000..4e0b4a7d6b16368281dd1278078b9e9904cc21b9 Binary files /dev/null and b/src/main/resources/static/dijit/tests/images/testsBodyBg.gif differ diff --git a/src/main/resources/static/dijit/tests/images/tube.gif b/src/main/resources/static/dijit/tests/images/tube.gif new file mode 100644 index 0000000000000000000000000000000000000000..b5065132cfacfa8dcf4a581d2b92307915083c90 Binary files /dev/null and b/src/main/resources/static/dijit/tests/images/tube.gif differ diff --git a/src/main/resources/static/dijit/tests/images/tubeTall.gif b/src/main/resources/static/dijit/tests/images/tubeTall.gif new file mode 100644 index 0000000000000000000000000000000000000000..e4fdb8b2d0fa9ac2041197a94d5b07ca2bd0210d Binary files /dev/null and b/src/main/resources/static/dijit/tests/images/tubeTall.gif differ diff --git a/src/main/resources/static/dijit/tests/infrastructure-module.js b/src/main/resources/static/dijit/tests/infrastructure-module.js new file mode 100644 index 0000000000000000000000000000000000000000..d6e1db08301949aa534c3696b14f141b0a5f0ed3 --- /dev/null +++ b/src/main/resources/static/dijit/tests/infrastructure-module.js @@ -0,0 +1,51 @@ +define(["doh/main", "require", "dojo/sniff"], function(doh, require, has){ + + var test_robot = has("trident") || has("ff") || has("chrome") < 45; + + // Utility methods (previously in dijit/_base) + doh.register("registry", require.toUrl("./registry.html"), 999999); + doh.register("focus", require.toUrl("./focus.html"), 999999); + doh.register("place", require.toUrl("./place.html"), 999999); + doh.register("place-margin", require.toUrl("./place-margin.html"), 999999); + doh.register("place-clip", require.toUrl("./place-clip.html"), 999999); + doh.register("popup", require.toUrl("./popup.html"), 999999); + doh.register("a11y", require.toUrl("./a11y.html"), 999999); + if(test_robot){ + doh.register("robot.typematic", require.toUrl("./robot/typematic.html"), 999999); + } + + // _Widget + doh.register("_Widget-lifecycle", require.toUrl("./_Widget-lifecycle.html"), 999999); + doh.register("_Widget-attr", require.toUrl("./_Widget-attr.html"), 999999); + doh.register("_Widget-subscribe", require.toUrl("./_Widget-subscribe.html"), 999999); + doh.register("_Widget-placeAt", require.toUrl("./_Widget-placeAt.html"), 999999); + doh.register("_Widget-on", require.toUrl("./_Widget-on.html"), 999999); + if(test_robot){ + doh.register("robot._Widget-deferredConnect", require.toUrl("./robot/_Widget-deferredConnect.html"), 999999); + doh.register("robot._Widget-ondijitclick_mouse", require.toUrl("./robot/_Widget-ondijitclick_mouse.html"), 999999); + doh.register("robot._Widget-ondijitclick_a11y", require.toUrl("./robot/_Widget-ondijitclick_a11y.html"), 999999); + } + + // _Templated and other mixins + doh.register("_AttachMixin", require.toUrl("./_AttachMixin.html"), 999999); + doh.register("_TemplatedMixin", require.toUrl("./_TemplatedMixin.html"), 999999); + doh.register("_WidgetsInTemplateMixin", require.toUrl("./_WidgetsInTemplateMixin.html"), 999999); + doh.register("_Templated-widgetsInTemplate1.x", require.toUrl("./_Templated-widgetsInTemplate1.x.html"), 999999); + doh.register("_Container", require.toUrl("./_Container.html"), 999999); + doh.register("_KeyNavContainer", require.toUrl("./_KeyNavContainer.html"), 999999); + if(test_robot){ + doh.register("robot._KeyNavContainer", require.toUrl("./robot/_KeyNavContainer.html"), 999999); + } + doh.register("_HasDropDown", require.toUrl("./_HasDropDown.html"), 999999); + + doh.register("Declaration", require.toUrl("./test_Declaration.html"), 999999); + doh.register("Declaration_1.x", require.toUrl("./test_Declaration_1.x.html"), 999999); + + // Miscellaneous + doh.register("NodeList-instantiate", require.toUrl("./NodeList-instantiate.html"), 999999); + doh.register("Destroyable", require.toUrl("./Destroyable.html"), 999999); + if(test_robot){ + doh.register("robot.BgIframe", require.toUrl("./robot/BgIframe.html"), 999999); + } + +}); diff --git a/src/main/resources/static/dijit/tests/layout/AccordionContainer.html b/src/main/resources/static/dijit/tests/layout/AccordionContainer.html new file mode 100644 index 0000000000000000000000000000000000000000..c0d97f01b9c26f37ad98ad67ea9ea23e00d15dd2 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/AccordionContainer.html @@ -0,0 +1,506 @@ + + + + + Accordion Widget Automated Test + + + + + + + +

          AccordionContainer Automated Tests

          + +

          Markup Accordion

          + +
          +
          +
          + + +
          +
          +
          + + +
          + + +
          + +
          + +

          Programmatic Accordions

          + + + diff --git a/src/main/resources/static/dijit/tests/layout/BorderContainer.html b/src/main/resources/static/dijit/tests/layout/BorderContainer.html new file mode 100644 index 0000000000000000000000000000000000000000..1e8070f0f276e3f4dcaeedd72fd25a66f9e4a8b2 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/BorderContainer.html @@ -0,0 +1,327 @@ + + + + +BorderContainer DOH Test + + + + + + +

          Headline layout (default), left is constrained - min:150, max:250

          +
          +
          + top bar (resizable) +
          +
          + left (resizable b/w 150 → 250) +
          +
          + with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + right (fixed size) +
          +
          + bottom bar (resizable) +
          +
          + +

          Sidebar layout, BiDi sensitive, liveSplitters: false

          +
          +
          + leading (fixed size) +
          +
          + top bar (fixed size) +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + bottom bar (resizable) +
          +
          + trailing (resizable) +
          +
          + +

          Programatically created, then destroyed

          +
          + +

          BorderContainer with MenuBar

          + + + + diff --git a/src/main/resources/static/dijit/tests/layout/ContentPane-auto-require.html b/src/main/resources/static/dijit/tests/layout/ContentPane-auto-require.html new file mode 100644 index 0000000000000000000000000000000000000000..398b97832dd1034ceba9dc1e7129a0b222f59ba0 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/ContentPane-auto-require.html @@ -0,0 +1,117 @@ + + + + + ContentPane Auto Require Tests + + + + + + +

          Dijit layout.ContentPane Auto-Require Tests

          + +

          ContentPane Loading Content that Requires Auto-Require

          + +
          +
          + +
          +
          + +
          +
          +
          + + hi +
          +
          +
          + + + diff --git a/src/main/resources/static/dijit/tests/layout/ContentPane-remote.html b/src/main/resources/static/dijit/tests/layout/ContentPane-remote.html new file mode 100644 index 0000000000000000000000000000000000000000..39f659f7571e55eb27bc793bc8350eb860221f56 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/ContentPane-remote.html @@ -0,0 +1,700 @@ + + + + + ContentPane Remote Loading Test + + + + + + + +

          Dijit layout.ContentPane (delayed) remote tests

          + +

          Plain ContentPane

          +
          + +

          preprocessContent ContentPane

          +
          + +

          StackContainer

          +
          + +

          TabContainer

          +

          These tabs are made up of external content. Loading is delayed to make it easier to see if refreshOnShow and preload = 'false' is working.
          + The tabs also tests to insert html in the Tab title +

          + +
          Create a Tab
          +
          +
          +
          +
          +
          +
          + +

          AccordionContainer

          +
          +
          +
          +
          +
          + +

          TooltipDialog

          +
          +
          + Show Preload TooltipDialog +
          +
          +
          +
          + +
          + Show No-Preload TooltipDialog +
          +
          +
          + + + diff --git a/src/main/resources/static/dijit/tests/layout/ContentPane.html b/src/main/resources/static/dijit/tests/layout/ContentPane.html new file mode 100644 index 0000000000000000000000000000000000000000..0f59a93dedced74e27d39eee8e5fc6f978da17bf --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/ContentPane.html @@ -0,0 +1,556 @@ + + + + + ContentPane DOH test + + + + + + + +

          dijit/layout/ContentPane DOH test

          +

          Test designed to run on localhost (minimize impact from network latency)

          + +

          This should NOT be parsed automatically

          +
          +
          If this has a different background and a red border, the page parsed when it shouldn't
          +
          +

          Testing ContentPane

          +
          + Even though the entire page isn't scanned for widgets, + any sub widgets of a ContentPane will be created when a ContentPane is created
          + This should have a backgroundcolor and a border +
          +
          +
          +
          +

          + + +
          +
          +
          +
          +
          +
          +
          +
          + + +
          + +
          + + +
          +
          +
          +
          +
          + + + diff --git a/src/main/resources/static/dijit/tests/layout/ContentPaneLayout.html b/src/main/resources/static/dijit/tests/layout/ContentPaneLayout.html new file mode 100644 index 0000000000000000000000000000000000000000..1ffae8098f1c935bf4e5da2eed2c224c87aa84b1 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/ContentPaneLayout.html @@ -0,0 +1,830 @@ + + + + + ContentPane layout-related DOH test + + + + + + + + +

          dijit/layout/ContentPane layout related DOH test

          + +

          + Tests ContentPane in it's role as a layout widget, including as child of another layout widgets (especially TabContainer). +

          + +

          Tests that href gets loaded when ContentPane is first made visible

          +
          +
          + initially selected pane +
          +
          + unselected pane +
          +
          +
          + initially selected inner pane +
          +
          + unselected pane +
          +
          +
          +
          + left pane +
          +
          + center pane + + +
          +
          +
          +
          +
          + +

          Tests for resizing in a layout container hierarchy

          +
          +
          + initially selected pane +
          +
          +
          +
          +
          +
          +
          + hide the second widget to see if ContentPane can still find it +
          + ending text +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + + +

          Size on Form, single nested layout widget

          +
          +
          +
          +
          + +
          resizable
          +
          +
          +

          Size on Form, multiple nested widgets

          + +
          +
          + child #1 (100x100) +
          +
          + child #2 (100x100) +
          +
          +
          +
          visible
          +
          resizable
          +
          + +

          No size on Form, single nested layout widgets

          +
          +
          +
          +
          + +

          No size on Form, multiple nested layout widget

          +
          +
          + child #1 (100x100) +
          +
          + child #2 (100x100) +
          +
          + +

          Tests that ContentPane resize doesn't trigger reload

          +
          +
          + initially selected pane +
          +
          + unselected pane +
          +
          + +

          Test the ContentPane loads href and resizes children (as per it's contract a layout widget) + when it's not a child of a layout container itself

          +
          +

          + +
          +

          + +
          +

          + +
          +

          + +
          + +
          +
          +
          +

          + +
          + +
          +
          +
          +

          + +
          + +
          + +
          +
          +
          + + + diff --git a/src/main/resources/static/dijit/tests/layout/LayoutContainer.html b/src/main/resources/static/dijit/tests/layout/LayoutContainer.html new file mode 100644 index 0000000000000000000000000000000000000000..10e6f5b788ecc2087f11ba55781cfc3c3a7f61af --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/LayoutContainer.html @@ -0,0 +1,211 @@ + + + + dijit/layout/LayoutContainer Test + + + + + + + +

          Dijit layout.LayoutContainer tests

          + +

          Basic layout. Tabindex="0" added to each pane to test for tab order matching source code order. Tab order + should be: left, right, top, middle/main, bottom

          + +
          +
          + left +
          +
          + right +
          +
          + top bar +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          + +
          + bottom bar +
          + +
          + +

          Advanced layout. Tabindex="0" added to each pane to test for tab order matching source code order. Tab order + should be: left, top, inner left, inner middle, inner right, bottom. This is not an ideal tab order. See below to use nested + layout containers to achieve a tab order which matches presentation and source code order.

          +
          +
          + left +
          +
          + top bar +
          +
          + inner left +
          + +
          + main panel with a link.
          + + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + inner right +
          +
          + + bottom bar +
          +
          + + diff --git a/src/main/resources/static/dijit/tests/layout/LayoutContainer_v1.html b/src/main/resources/static/dijit/tests/layout/LayoutContainer_v1.html new file mode 100644 index 0000000000000000000000000000000000000000..0d006ddbe96be1189a3e78068395e84631109102 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/LayoutContainer_v1.html @@ -0,0 +1,290 @@ + + + + dijit/layout/LayoutContainer Test + + + + + + + +

          Dijit layout.LayoutContainer Old API tests

          +

          + Tests for using layoutAlign property rather than region, so design setting (headline or sidebar) has no effect. + Remove for 2.0. +

          + +

          Basic layout. Tabindex="0" added to each pane to test for tab order matching source code order. Tab order + should be: left, right, top, middle/main, bottom

          + +
          +
          + left +
          +
          + right +
          +
          + top bar +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          + +
          + bottom bar +
          + +
          + +

          Advanced layout. Tabindex="0" added to each pane to test for tab order matching source code order. Tab order + should be: left, top, bottom, inner left, inner middle, inner right. This is not an ideal tab order. See below to use nested + layout containers to achieve a tab order which matches presentation and source code order.

          +
          +
          + left +
          +
          + top bar +
          +
          + + bottom bar +
          +
          + inner left +
          + +
          + main panel with a link.
          + + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + inner right +
          +
          + +

          Advanced layout with nested containers. Tabindex="0" added to content panes to show tab order. Order should be: + left, top, inner left, inner middle, inner right, bottom. This is the preferred tab order for this type of layout.

          +
          +
          + left +
          +
          +
          + +
          + top bar +
          +
          +
          +
          + inner left +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + inner right +
          +
          +
          +
          + bottom bar +
          +
          +
          +
          + +

          Goofy spiral layout. Match of source code order to tab order can not be achieved with this type of layout.

          +
          +
          + outer left +
          +
          + outer top +
          +
          + outer right +
          +
          + outer bottom +
          +
          + inner left +
          +
          + inner top +
          +
          + inner right +
          +
          + inner bottom +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + + + diff --git a/src/main/resources/static/dijit/tests/layout/StackContainer.html b/src/main/resources/static/dijit/tests/layout/StackContainer.html new file mode 100644 index 0000000000000000000000000000000000000000..8ef0a36d8d14feebacf00a3f71388a971f43461a --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/StackContainer.html @@ -0,0 +1,484 @@ + + + + + StackContainer Demo + + + + + + + + + + + +

          A Tale Of Two Cities

          + + + + + +
          +

          IT WAS the best of times, it of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to Heaven, we were all going direct the other way -- in short, the period was so far like the present period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only

          +

          There were a king with a large jaw and a queen with a plain face, on the throne of England; there were a king with a large jaw and a queen with a fair face, on the throne of France. In both countries it was clearer than crystal to the lords of the State preserves of loaves and fishes, that things in general were settled for ever.

          +

          It was the year of Our Lord one thousand seven hundred and seventy- five. Spiritual revelations were conceded to England at that favoured period, as at this. Mrs. Southcott had recently attained her five-and- twentieth blessed birthday, of whom a prophetic private in the Life Guards had heralded the sublime appearance by announcing that arrangements were made for the swallowing up of London and Westminster. Even the Cock-lane ghost had been laid only a round dozen of years, after rapping out its messages, as the spirits of this very year last past (supernaturally deficient in originality) rapped out theirs. Mere messages in the earthly order of events had lately come to the English Crown and People, from a congress of British subjects in America:

          +
          + + + + + + +

          Embedded layout widgets

          +

          This tests having layout widgets embedded in the StackContainer, making sure they render on the hidden pane.

          + + + + + +
          +
          +

          + The next pane should have some text, plus two embedded layout widgets, which should + appear correctly even though the pane is initially hidden +

          +
          +
          +

          + Here's a BorderContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + And a TabContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + That's it! +

          +
          +
          + + + + +

          Nested StackContainers w/doLayout=false

          +

          "hello world" inner text should be visible

          +
          +
          +
          +
          + hello world +
          +
          +
          +
          + + +

          Programmatic test

          + + Links: + +
          +
          + +
          + + diff --git a/src/main/resources/static/dijit/tests/layout/TabContainer.html b/src/main/resources/static/dijit/tests/layout/TabContainer.html new file mode 100644 index 0000000000000000000000000000000000000000..87cef13a29d953ddd45db20f3011ca71f45c7ba9 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/TabContainer.html @@ -0,0 +1,844 @@ + + + + + TabContainer DOH Test + + + + + + + + +

          Dijit layout.TabContainer DOH tests

          + + +
          +
          + Lorem ipsum and all around... + +
          +
          + Lorem ipsum and all around - second... +
          +
          + Lorem ipsum and all around - third... +
          +
          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +
          +
          + +
          +
          + Lorem ipsum and all around... +
          +
          + Lorem ipsum and all around - last... +
          +
          +
          + Hmmm even more expanding tabs...... +
          +
          + Lorem ipsum and all around - last... +
          +
          + Lorem ipsum and all around - last... +
          +
          + Lorem ipsum and all around - last... +
          +
          + Lorem ipsum and all around - last... +
          +
          + Lorem ipsum and all around - last... +
          +
          + +
          +
          +
          + Lorem ipsum and all around... +
          +
          + Lorem ipsum and all around - second... +
          +
          + Lorem ipsum and all around - last... +
          +
          +
          +
          + Lorem ipsum and all around... +
          +
          + Lorem ipsum and all around - second... +
          +
          + Lorem ipsum and all around - last... +
          +
          +
          + +
          +
          + Lorem ipsum and all around... +
          +
          + Lorem ipsum and all around - second... +
          + Hmmm expanding tabs...... +
          +
          + Lorem ipsum and all around - last... +
          +
          +
          + Hmmm even more expanding tabs...... +
          +
          +
          + +
          +
          + Left tabs +
          +
          + Lorem ipsum and all around - second... +
          +
          + Lorem ipsum and all around - last... +
          +
          +
          + +
          +
          + Right tabs +
          +
          + Lorem ipsum and all around - second... +
          +
          + Lorem ipsum and all around - last... +
          +
          +
          + +
          +
          + Bottom tabs +
          +
          + Lorem ipsum and all around - second... +
          +
          + Lorem ipsum and all around - last... +
          +
          + +
          +
          One
          +
          Two
          +
          Three
          +
          Four
          +
          Five
          +
          Six
          +
          Seven
          +
          Eight
          +
          Nine
          +
          + + + diff --git a/src/main/resources/static/dijit/tests/layout/TabContainerTitlePane.html b/src/main/resources/static/dijit/tests/layout/TabContainerTitlePane.html new file mode 100644 index 0000000000000000000000000000000000000000..f0dcbb3766798afc21eed504fb2825ec36643ca8 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/TabContainerTitlePane.html @@ -0,0 +1,126 @@ + + + + + TabContainer Nested TitlePane Test + + + + + + + + +

          Dijit layout.TabContainer nested TitlePane tests

          + +
          + +
          +

          I am tab 1

          +
          +

          This is a title pane, containing another tab container ...

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque iaculis, nulla id semper faucibus, pede tellus nonummy magna, vitae adipiscing orci arcu ut augue. Nunc condimentum, magna a vestibulum convallis, libero purus pulvinar orci, sed vestibulum urna sem ut pede. More Ipsum... +

          +
          +
          +
          +
          +
          +
          + +
          +

          I am tab 2

          +
          +

          This is a title pane, containing another tab container ...

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque iaculis, nulla id semper faucibus, pede tellus nonummy magna, vitae adipiscing orci arcu ut augue. Nunc condimentum, magna a vestibulum convallis, libero purus pulvinar orci, sed vestibulum urna sem ut pede. More Ipsum... +

          +
          +
          +
          +
          +
          +
          + +
          +

          I am tab 3

          +
          +

          This is a title pane, containing another tab container ...

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque iaculis, nulla id semper faucibus, pede tellus nonummy magna, vitae adipiscing orci arcu ut augue. Nunc condimentum, magna a vestibulum convallis, libero purus pulvinar orci, sed vestibulum urna sem ut pede. More Ipsum... +

          +
          +
          +
          +
          +
          +
          + +
          +
          + +

          Rendering time

          + + + diff --git a/src/main/resources/static/dijit/tests/layout/_lorem.html b/src/main/resources/static/dijit/tests/layout/_lorem.html new file mode 100644 index 0000000000000000000000000000000000000000..9b9d4c0566953887b66a9a52c3496dc4bf476951 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/_lorem.html @@ -0,0 +1,3 @@ +

          + lorem ipsum dolor. Check net tab for a new XHR. +

          \ No newline at end of file diff --git a/src/main/resources/static/dijit/tests/layout/borderContainer.php b/src/main/resources/static/dijit/tests/layout/borderContainer.php new file mode 100644 index 0000000000000000000000000000000000000000..098b5dd219483a3d2e8aed39a0af89e7983ca0c9 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/borderContainer.php @@ -0,0 +1,34 @@ + +
          +> +
          + This file contains a single top-level BorderContainer layout widget. +
          +
          + But it also has some nested layout widgets, and when this file is loaded the TabContainer and + BorderContainer below should get resize() called on them +
          +
          tab1
          +
          tab2
          +
          +
          +
          inner border container
          +
          +
          +
          diff --git a/src/main/resources/static/dijit/tests/layout/combotab.html b/src/main/resources/static/dijit/tests/layout/combotab.html new file mode 100644 index 0000000000000000000000000000000000000000..fe7754d250889805d4662f279948c44588055d71 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/combotab.html @@ -0,0 +1,9 @@ +
          +State: + + + diff --git a/src/main/resources/static/dijit/tests/layout/doc0.html b/src/main/resources/static/dijit/tests/layout/doc0.html new file mode 100644 index 0000000000000000000000000000000000000000..f77bdc702cb13b1f82f70e912cf5d96ad5d19418 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/doc0.html @@ -0,0 +1,14 @@ +

          Document 0

          +This document has a link.
          +(to check we're copying children around properly).
          +Plus some widgets and native fields:
          + + + +
          + +Here's some text that comes AFTER the button. diff --git a/src/main/resources/static/dijit/tests/layout/doc1.html b/src/main/resources/static/dijit/tests/layout/doc1.html new file mode 100644 index 0000000000000000000000000000000000000000..2bff8c56dd65e9bdf82572af49add2cd4bbf62b7 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/doc1.html @@ -0,0 +1,13 @@ + + +

          Document 1

          + +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus risus. Praesent eu lacus et enim laoreet sollicitudin. Quisque mollis mi a lectus. Cras ante. Aliquam tempus justo laoreet justo. Vestibulum egestas feugiat nisi. Nulla ultrices consequat felis. Curabitur dignissim augue vel enim. Fusce tempus tempor mauris. Praesent suscipit pede in nunc. Duis mi neque, malesuada non, volutpat et, nonummy et, ante. Aliquam neque. Nulla rhoncus, turpis eget mattis molestie, magna nulla dictum ligula, quis tempor odio justo vel pede. Donec sit amet tellus. Phasellus sapien. Nulla id massa at nunc condimentum fringilla. Fusce suscipit ipsum et lorem consequat pulvinar. Quisque lacinia sollicitudin tellus.

          + +

          Nulla massa lectus, porttitor vitae, dignissim vel, iaculis eget, mi. Vestibulum sed lorem. Nullam convallis elit id leo. Aliquam est purus, rutrum at, sodales non, nonummy a, justo. Proin at diam vel nibh dictum rhoncus. Duis nisl. Etiam orci. Integer hendrerit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In ac erat. Sed velit orci, sodales quis, commodo ut, elementum sed, nibh. Cras mattis vulputate nisl. Mauris eu nulla sed orci dignissim laoreet. Morbi commodo, est vitae pharetra ullamcorper, ante nisl ultrices velit, sit amet vulputate turpis elit id lacus. Vestibulum diam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

          + +

          Praesent rutrum nunc quis felis. Morbi tempor. Quisque porta magna imperdiet magna. Ut gravida, ipsum eu euismod consectetuer, nisl lectus posuere diam, vel dignissim elit nisi sit amet lorem. Curabitur non nunc. Morbi metus. Nulla facilisi. Sed et ante. Etiam ac lectus. Duis tristique molestie sem. Pellentesque nec quam. Nullam pellentesque ullamcorper sem.

          + +

          Duis ut massa eget arcu porttitor pharetra. Curabitur malesuada nisi id eros. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Vivamus massa. Donec quis justo ut tortor faucibus suscipit. Vivamus commodo neque eget nulla. Donec imperdiet lacus condimentum justo. In sollicitudin magna vitae libero. Curabitur scelerisque libero et eros imperdiet cursus. Maecenas adipiscing. Integer imperdiet, neque ut fringilla semper, leo nisi tincidunt enim, id accumsan leo nisi a libero. Morbi rutrum hendrerit eros. Vestibulum eget augue vel urna congue faucibus.

          + +

          Morbi ante sapien, consequat non, consectetuer vitae, pharetra non, dui. Cras tempus posuere quam. Vestibulum quis neque. Duis lobortis urna in elit. Aliquam non tellus. Etiam nisi eros, posuere vel, congue id, fringilla in, risus. Duis semper rutrum risus. Nullam felis massa, lobortis sit amet, posuere tempor, mattis id, tellus. Nulla id arcu interdum risus commodo tincidunt. Vivamus pretium pulvinar pede. Vivamus eget erat. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam bibendum, enim eu venenatis tempor, nunc elit convallis tortor, sit amet vulputate turpis arcu eu pede. Praesent molestie, lacus sed vehicula convallis, enim pede fringilla nunc, at porttitor justo ante a diam. Nunc magna eros, interdum vel, varius eget, volutpat eu, orci. Nunc nec mauris. Nulla facilisi. Vivamus dictum elementum risus. Nam placerat arcu.

          diff --git a/src/main/resources/static/dijit/tests/layout/doc2.html b/src/main/resources/static/dijit/tests/layout/doc2.html new file mode 100644 index 0000000000000000000000000000000000000000..1173b297c983fef93805363ea8a846f237db9de6 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/doc2.html @@ -0,0 +1,13 @@ + + +

          Document 2

          + +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Vivamus risus. Praesent eu lacus et enim laoreet sollicitudin. Quisque mollis mi a lectus. Cras ante. Aliquam tempus justo laoreet justo. Vestibulum egestas feugiat nisi. Nulla ultrices consequat felis. Curabitur dignissim augue vel enim. Fusce tempus tempor mauris. Praesent suscipit pede in nunc. Duis mi neque, malesuada non, volutpat et, nonummy et, ante. Aliquam neque. Nulla rhoncus, turpis eget mattis molestie, magna nulla dictum ligula, quis tempor odio justo vel pede. Donec sit amet tellus. Phasellus sapien. Nulla id massa at nunc condimentum fringilla. Fusce suscipit ipsum et lorem consequat pulvinar. Quisque lacinia sollicitudin tellus.

          + +

          Nulla massa lectus, porttitor vitae, dignissim vel, iaculis eget, mi. Vestibulum sed lorem. Nullam convallis elit id leo. Aliquam est purus, rutrum at, sodales non, nonummy a, justo. Proin at diam vel nibh dictum rhoncus. Duis nisl. Etiam orci. Integer hendrerit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In ac erat. Sed velit orci, sodales quis, commodo ut, elementum sed, nibh. Cras mattis vulputate nisl. Mauris eu nulla sed orci dignissim laoreet. Morbi commodo, est vitae pharetra ullamcorper, ante nisl ultrices velit, sit amet vulputate turpis elit id lacus. Vestibulum diam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit.

          + +

          Praesent rutrum nunc quis felis. Morbi tempor. Quisque porta magna imperdiet magna. Ut gravida, ipsum eu euismod consectetuer, nisl lectus posuere diam, vel dignissim elit nisi sit amet lorem. Curabitur non nunc. Morbi metus. Nulla facilisi. Sed et ante. Etiam ac lectus. Duis tristique molestie sem. Pellentesque nec quam. Nullam pellentesque ullamcorper sem.

          + +

          Duis ut massa eget arcu porttitor pharetra. Curabitur malesuada nisi id eros. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Vivamus massa. Donec quis justo ut tortor faucibus suscipit. Vivamus commodo neque eget nulla. Donec imperdiet lacus condimentum justo. In sollicitudin magna vitae libero. Curabitur scelerisque libero et eros imperdiet cursus. Maecenas adipiscing. Integer imperdiet, neque ut fringilla semper, leo nisi tincidunt enim, id accumsan leo nisi a libero. Morbi rutrum hendrerit eros. Vestibulum eget augue vel urna congue faucibus.

          + +

          Morbi ante sapien, consequat non, consectetuer vitae, pharetra non, dui. Cras tempus posuere quam. Vestibulum quis neque. Duis lobortis urna in elit. Aliquam non tellus. Etiam nisi eros, posuere vel, congue id, fringilla in, risus. Duis semper rutrum risus. Nullam felis massa, lobortis sit amet, posuere tempor, mattis id, tellus. Nulla id arcu interdum risus commodo tincidunt. Vivamus pretium pulvinar pede. Vivamus eget erat. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam bibendum, enim eu venenatis tempor, nunc elit convallis tortor, sit amet vulputate turpis arcu eu pede. Praesent molestie, lacus sed vehicula convallis, enim pede fringilla nunc, at porttitor justo ante a diam. Nunc magna eros, interdum vel, varius eget, volutpat eu, orci. Nunc nec mauris. Nulla facilisi. Vivamus dictum elementum risus. Nam placerat arcu.

          diff --git a/src/main/resources/static/dijit/tests/layout/doc3.html b/src/main/resources/static/dijit/tests/layout/doc3.html new file mode 100644 index 0000000000000000000000000000000000000000..32206d654e7587ee28bceacc9c24cbc792753525 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/doc3.html @@ -0,0 +1,2 @@ + + diff --git a/src/main/resources/static/dijit/tests/layout/getResponse.php b/src/main/resources/static/dijit/tests/layout/getResponse.php new file mode 100644 index 0000000000000000000000000000000000000000..ab79b4dbcd12e35a9635aa693eb3d7c450d587e1 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/getResponse.php @@ -0,0 +1,57 @@ +WARNING This should NEVER be seen, delayed by 2 sec!"; + $delay = 2; + break; + case 1: + echo "
          Testing attr('href', ...)
          "; + break; + case 2: + echo "
          Delayed attr('href', ...) test
          +
          Delayed by " . ($delay/1000000) . " sec.
          "; + break; + case 3: + echo "IT WAS the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of Light, it was the season of Darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to Heaven, we were all going direct the other way -- in short, the period was so far like the present period, that some of its noisiest authorities insisted on its being received, for good or for evil, in the superlative degree of comparison only"; + break; + case 4: + echo "There were a king with a large jaw and a queen with a plain face, on the throne of England; there were a king with a large jaw and a queen with a fair face, on the throne of France. In both countries it was clearer than crystal to the lords of the State preserves of loaves and fishes, that things in general were settled for ever."; + break; + case 5: + echo "It was the year of Our Lord one thousand seven hundred and seventy- five. Spiritual revelations were conceded to England at that favoured period, as at this. Mrs. Southcott had recently attained her five-and- twentieth blessed birthday, of whom a prophetic private in the Life Guards had heralded the sublime appearance by announcing that arrangements were made for the swallowing up of London and Westminster. Even the Cock-lane ghost had been laid only a round dozen of years, after rapping out its messages, as the spirits of this very year last past (supernaturally deficient in originality) rapped out theirs. Mere messages in the earthly order of events had lately come to the English Crown and People, from a congress of British subjects in America:"; + break; + default: + echo "unknown messId:". htmlentities($_GET['messId']); + } + } + + if(isset($_GET['bounceGetStr']) && $_GET['bounceGetStr']){ + echo "
          ".htmlentities($_SERVER["QUERY_STRING"])."
          "; + } + + if(isset($_GET['message']) && $_GET['message']){ + echo htmlentities($_GET['message']); + } + + usleep($delay); + +?> diff --git a/src/main/resources/static/dijit/tests/layout/mobile.html b/src/main/resources/static/dijit/tests/layout/mobile.html new file mode 100644 index 0000000000000000000000000000000000000000..db92fd092575f97e1eb3ce5f7f9d31e538086d30 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/mobile.html @@ -0,0 +1,145 @@ + + + + + + + Layout widgets mobile test page + + + + + + + + +

          Accordion

          +
          +
          +

          + Nunc consequat nisi vitae quam. Suspendisse sed nunc. Proin + suscipit porta magna. Duis accumsan nunc in velit. Nam et nibh. + Nulla facilisi. Cras venenatis urna et magna. Aenean magna mauris, + bibendum sit amet, semper quis, aliquet nec, sapien. Aliquam + aliquam odio quis erat. Etiam est nisi, condimentum non, lacinia + ac, vehicula laoreet, elit. Sed interdum augue sit amet quam + dapibus semper. Nulla facilisi. Pellentesque lobortis erat nec + quam. +

          +
          +
          + + +

          + Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +

          +
          +
          + + +

          BorderContainer

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + +

          TabContainer

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + Tab 3 contents +
          +
          + Tab 4 contents +
          +
          + Tab 5 contents +
          +
          + + diff --git a/src/main/resources/static/dijit/tests/layout/module.js b/src/main/resources/static/dijit/tests/layout/module.js new file mode 100644 index 0000000000000000000000000000000000000000..5302467a4eb67f0b19fc7bcd81e3a7fe71fb6ef1 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/module.js @@ -0,0 +1,43 @@ +define(["doh/main", "require", "dojo/sniff"], function(doh, require, has){ + + var test_robot = has("trident") || has("ff") || has("chrome") < 45; + + doh.register("layout.ContentPane", require.toUrl("./ContentPane.html"), 999999); + doh.register("layout.test_ContentPane", require.toUrl("./test_ContentPane.html"), 999999); + doh.register("layout.ContentPaneLayout", require.toUrl("./ContentPaneLayout.html"), 999999); + doh.register("layout.ContentPane-remote", require.toUrl("./ContentPane-remote.html"), 999999); + doh.register("layout.ContentPane-auto-require", require.toUrl("./ContentPane-auto-require.html"), 999999); + + if(test_robot){ + doh.register("layout.robot.GUI", require.toUrl("./robot/GUI.html"), 999999); + } + + doh.register("layout.LayoutContainer_v1", require.toUrl("./LayoutContainer_v1.html"), 999999); + doh.register("layout.LayoutContainer", require.toUrl("./LayoutContainer.html"), 999999); + + doh.register("layout.StackContainer", require.toUrl("./StackContainer.html"), 999999); + doh.register("layout.NestedStackContainer", require.toUrl("./nestedStack.html"), 999999); + + doh.register("layout.TabContainer", require.toUrl("./TabContainer.html"), 999999); + if(test_robot){ + doh.register("layout.robot.TabContainer_a11y", require.toUrl("./robot/TabContainer_a11y.html"), 999999); + doh.register("layout.robot.TabContainer_mouse", require.toUrl("./robot/TabContainer_mouse.html"), 999999); + doh.register("layout.robot.TabContainer_noLayout", require.toUrl("./robot/TabContainer_noLayout.html"), 999999); + } + doh.register("layout.TabContainerTitlePane", require.toUrl("./TabContainerTitlePane.html"), 999999); + + doh.register("layout.AccordionContainer", require.toUrl("./AccordionContainer.html"), 999999); + if(test_robot){ + doh.register("layout.robot.AccordionContainer_a11y", require.toUrl("./robot/AccordionContainer_a11y.html"), 999999); + doh.register("layout.robot.AccordionContainer_mouse", require.toUrl("./robot/AccordionContainer_mouse.html"), 999999); + } + + doh.register("layout.BorderContainer", require.toUrl("./BorderContainer.html"), 999999); + if(test_robot){ + doh.register("layout.robot.BorderContainer", require.toUrl("./robot/BorderContainer.html"), 999999); + doh.register("layout.robot.BorderContainer_full", require.toUrl("./robot/BorderContainer_full.html"), 999999); + doh.register("layout.robot.BorderContainer_complex", require.toUrl("./robot/BorderContainer_complex.html"), 999999); + doh.register("layout.robot.BorderContainer_nested", require.toUrl("./robot/BorderContainer_nested.html"), 999999); + } + +}); diff --git a/src/main/resources/static/dijit/tests/layout/multipleLayoutWidgets.php b/src/main/resources/static/dijit/tests/layout/multipleLayoutWidgets.php new file mode 100644 index 0000000000000000000000000000000000000000..016832b3ad775389654aecb188c3846c5e8ea36b --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/multipleLayoutWidgets.php @@ -0,0 +1,14 @@ + +This file has some nested layout widgets, and when this file is loaded the TabContainer and +BorderContainer below should get resize() called on them +
          +
          doc4 tab1
          +
          doc4 tab2
          +
          +
          +
          inner border container
          +
          diff --git a/src/main/resources/static/dijit/tests/layout/nestedStack.html b/src/main/resources/static/dijit/tests/layout/nestedStack.html new file mode 100644 index 0000000000000000000000000000000000000000..ca6574128b2f3be7a46d1877cd8a75d05d0b5433 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/nestedStack.html @@ -0,0 +1,201 @@ + + + + + + TabContainerLite in StackContainer + + + + + + +

          Integration: TabContainer in StackContainer

          +
          + + + +
          +
          + +
          + +
          +
          + +
          +
          +
          + +
          + +
          +
          + +
          +
          test nested layout widget
          +
          another test nested layout widget
          +
          +
          +
          +
          + + diff --git a/src/main/resources/static/dijit/tests/layout/robot/AccordionContainer_a11y.html b/src/main/resources/static/dijit/tests/layout/robot/AccordionContainer_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..477cc91ecb6ade030eaba14b950975b0cac7508d --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/robot/AccordionContainer_a11y.html @@ -0,0 +1,78 @@ + + + + robot AccordionContainer A11Y Test + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/tests/layout/robot/AccordionContainer_mouse.html b/src/main/resources/static/dijit/tests/layout/robot/AccordionContainer_mouse.html new file mode 100644 index 0000000000000000000000000000000000000000..d0bf94ba2b22e203a0e9a75b4995fe9b06463068 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/robot/AccordionContainer_mouse.html @@ -0,0 +1,61 @@ + + + + robot AccordionContainer Mouse Test + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/tests/layout/robot/BorderContainer.html b/src/main/resources/static/dijit/tests/layout/robot/BorderContainer.html new file mode 100644 index 0000000000000000000000000000000000000000..04634b164cced44738e10ff5f69b818b91add03f --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/robot/BorderContainer.html @@ -0,0 +1,176 @@ + + + + robot BorderContainer Test + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/tests/layout/robot/BorderContainer_complex.html b/src/main/resources/static/dijit/tests/layout/robot/BorderContainer_complex.html new file mode 100644 index 0000000000000000000000000000000000000000..c2ac0c7811a1e2fd37e00fa743cc8005091736f3 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/robot/BorderContainer_complex.html @@ -0,0 +1,320 @@ + + + + robot BorderContainer complex Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/layout/robot/BorderContainer_full.html b/src/main/resources/static/dijit/tests/layout/robot/BorderContainer_full.html new file mode 100644 index 0000000000000000000000000000000000000000..59945c4dcc1e27c85dbf0a7a0b9d712e05b3ad09 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/robot/BorderContainer_full.html @@ -0,0 +1,117 @@ + + + + robot BorderContainer full Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/layout/robot/BorderContainer_nested.html b/src/main/resources/static/dijit/tests/layout/robot/BorderContainer_nested.html new file mode 100644 index 0000000000000000000000000000000000000000..55ca48ee7901f11e9e35d63172e294ff86dac6ef --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/robot/BorderContainer_nested.html @@ -0,0 +1,157 @@ + + + + robot BorderContainer nested Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/layout/robot/GUI.html b/src/main/resources/static/dijit/tests/layout/robot/GUI.html new file mode 100644 index 0000000000000000000000000000000000000000..cf9b7df6c3a0d5a864a6486e8e2d5abdf4c34f18 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/robot/GUI.html @@ -0,0 +1,311 @@ + + + + robot GUI Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/layout/robot/TabContainer_a11y.html b/src/main/resources/static/dijit/tests/layout/robot/TabContainer_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..54b7ac27d05407796614a738d97b49d2a9508c76 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/robot/TabContainer_a11y.html @@ -0,0 +1,591 @@ + + + + robot TabContainer A11Y Test + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/tests/layout/robot/TabContainer_mouse.html b/src/main/resources/static/dijit/tests/layout/robot/TabContainer_mouse.html new file mode 100644 index 0000000000000000000000000000000000000000..fcc594cd31aa8bcd36a586da264dcc0e626c89e3 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/robot/TabContainer_mouse.html @@ -0,0 +1,343 @@ + + + + robot TabContainer Mouse Test + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/tests/layout/robot/TabContainer_noLayout.html b/src/main/resources/static/dijit/tests/layout/robot/TabContainer_noLayout.html new file mode 100644 index 0000000000000000000000000000000000000000..3b6eef2101844c152078ad1d873e2fc0775feb33 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/robot/TabContainer_noLayout.html @@ -0,0 +1,265 @@ + + + + robot TabContainer No Layout Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/layout/robot/borderContainerTestFunctions.js b/src/main/resources/static/dijit/tests/layout/robot/borderContainerTestFunctions.js new file mode 100644 index 0000000000000000000000000000000000000000..17325b582c607b3f70828443992c0ea9e9ffc3e4 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/robot/borderContainerTestFunctions.js @@ -0,0 +1,115 @@ +define(["dojo/_base/kernel", "dojo/_base/array", "dojo/dom-geometry", "dojo/json"], function(dojo, array, geom, json){ + + function dijitById(id){ + return dojo.global.require("dijit/registry").byId(id); + } + + var exports = { + checkInside: function(/*Widget*/ child, /*Widget*/ parent, /*String?*/ comment){ + // summary: + // Test that child is fully inside of parent + + child = dijitById(child); + parent = dijitById(parent); + + var cp = geom.position(child.domNode, true), + pp = geom.position(parent.domNode, true); + + // Adjust for IE10+ fractional values + pp.w = Math.ceil(pp.w); + + doh.t( + cp.y >= pp.y && cp.y+cp.h <= pp.y+pp.h && + cp.x >= pp.x && cp.x+cp.w <= pp.x+pp.w, + (comment ? comment + ": " : "") + child.region + " inside " + parent.id + json.stringify(cp) + json.stringify(pp) + ); + }, + + checkAbove: function(/*String*/ comment, /*Widget*/ above, /*Widget*/ below){ + // summary: + // Test that child is fully above parent + + above = dijitById(above); + below = dijitById(below); + + var ap = geom.position(above.domNode, true), + bp = geom.position(below.domNode, true); + + doh.t(ap.y+ap.h < bp.y, + comment + " " + above.region + " above " + below.region + json.stringify(ap) + json.stringify(bp) + ); + }, + + checkLeft: function(/*String*/ comment, /*Widget*/ left, /*Widget*/ right){ + // summary: + // Test that child is fully left of parent + + left = dijitById(left); + right = dijitById(right); + + var lp = geom.position(left.domNode, true), + rp = geom.position(right.domNode, true); + + doh.t(lp.x+lp.w < rp.x, + comment + " " + left.region + " to left of " + right.region + json.stringify(lp) + json.stringify(rp) + ); + }, + + checkBCpanes: function(/*BorderContainer*/ bc, /*String*/ comment){ + // summary: + // Check that all the panes in this BorderContainer are in sane + // positions relative to each other. Assumes at most one pane + // in each region. + var children = bc.getChildren(), + regions = {}; + + // Check all panes inside BorderContainer + array.forEach(children, function(child, comment){ + exports.checkInside(child, bc, comment); + regions[child.region] = child; + }); + + // Check pane positions relative to each other + array.forEach(children, function(child){ + switch(child.region){ + case "top": + array.forEach(bc.design == "sidebar" ? ["center", "bottom"] : ["left", "center", "right", "bottom"], function(region){ + if(regions[region]){ + exports.checkAbove(bc.id, child, regions[region], comment); + } + }); + break; + case "bottom": + array.forEach(bc.design == "sidebar" ? ["center", "top"] : ["left", "center", "right", "top"], function(region){ + if(regions[region]){ + exports.checkAbove(bc.id, regions[region], child, comment); + } + }); + break; + case "left": + array.forEach(bc.design == "sidebar" ? ["top", "center", "bottom", "right"] : ["right"], function(region){ + if(regions[region]){ + exports.checkLeft(bc.id, child, regions[region], comment); + } + }); + break; + case "right": + array.forEach(bc.design == "sidebar" ? ["top", "center", "bottom", "left"] : ["left"], function(region){ + if(regions[region]){ + exports.checkLeft(bc.id, regions[region], child, comment); + } + }); + break; + } + }); + }, + + within: function(/*Number*/ a, /*Number*/ b, /*Number*/ range){ + // summary: + // Returns true if a and b are within range + return Math.abs(a-b) <= range; + } + }; + + return exports; +}); \ No newline at end of file diff --git a/src/main/resources/static/dijit/tests/layout/runTests.html b/src/main/resources/static/dijit/tests/layout/runTests.html new file mode 100644 index 0000000000000000000000000000000000000000..afed0fe4f3a55fecd45d928244d94a9540765b8b --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/runTests.html @@ -0,0 +1,9 @@ + + + + Dijit Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/src/main/resources/static/dijit/tests/layout/tab1.html b/src/main/resources/static/dijit/tests/layout/tab1.html new file mode 100644 index 0000000000000000000000000000000000000000..a37b927ff8cb758accb95bf148628aa1e436ed89 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/tab1.html @@ -0,0 +1,6 @@ + +

          Tab 1

          + +

          I am tab 1. I was loaded externally. WebA11y(something to get focus)

          + +
          blah
          diff --git a/src/main/resources/static/dijit/tests/layout/tab2.html b/src/main/resources/static/dijit/tests/layout/tab2.html new file mode 100644 index 0000000000000000000000000000000000000000..ed1ad764ea32a8f7384fe691680e9a99fd0c5c66 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/tab2.html @@ -0,0 +1,3 @@ +

          Tab 2

          + +

          I am tab 2. I was loaded externally as well.

          diff --git a/src/main/resources/static/dijit/tests/layout/tab3.html b/src/main/resources/static/dijit/tests/layout/tab3.html new file mode 100644 index 0000000000000000000000000000000000000000..d3caa5da706997baf425433423d6121eb250c13f --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/tab3.html @@ -0,0 +1,39 @@ +
          +
          +

          This is a nested tab container BUT loaded via an href.

          +
          +
          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +
          +
          diff --git a/src/main/resources/static/dijit/tests/layout/tab3_noLayout.html b/src/main/resources/static/dijit/tests/layout/tab3_noLayout.html new file mode 100644 index 0000000000000000000000000000000000000000..f9bb61c1ee8340349db1db4f25c53b6938bf3445 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/tab3_noLayout.html @@ -0,0 +1,39 @@ +
          +
          +

          This is a nested tab container BUT loaded via an href.

          +
          +
          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +
          +
          diff --git a/src/main/resources/static/dijit/tests/layout/tab4.html b/src/main/resources/static/dijit/tests/layout/tab4.html new file mode 100644 index 0000000000000000000000000000000000000000..c919adad3e990d327b99e6a1fb9ed963927f13d2 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/tab4.html @@ -0,0 +1,40 @@ +
          +
          +

          Top of split container loaded via an href.

          +
          +
          +

          Bottom of split container loaded via an href.

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +
          +
          diff --git a/src/main/resources/static/dijit/tests/layout/test_AccordionContainer.html b/src/main/resources/static/dijit/tests/layout/test_AccordionContainer.html new file mode 100644 index 0000000000000000000000000000000000000000..64d977c01bf8e241d50df0dd21b376c384df209f --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/test_AccordionContainer.html @@ -0,0 +1,302 @@ + + + + + Accordion Widget Demo + + + + + + + + + +

          AccordionContainer Tests

          + +

          Accordion from markup:

          + + +
          +
          + +

          + Nunc consequat nisi vitae quam. Suspendisse sed nunc. Proin + suscipit porta magna. Duis accumsan nunc in velit. Nam et nibh. + Nulla facilisi. Cras venenatis urna et magna. Aenean magna mauris, + bibendum sit amet, semper quis, aliquet nec, sapien. Aliquam + aliquam odio quis erat. Etiam est nisi, condimentum non, lacinia + ac, vehicula laoreet, elit. Sed interdum augue sit amet quam + dapibus semper. Nulla facilisi. Pellentesque lobortis erat nec + quam. +

          +

          + Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +

          +
          + + +
          + +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + +
          +

          + The pane has some text, plus two embedded layout widgets, which should + appear correctly even though the pane is initially hidden. +

          +

          + Here's a BorderContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + And a TabContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + Text after the widgets. +

          +
          +
          + + + + + +

          +

          Accordion with padding

          +
          +
          +

          + Nunc consequat nisi vitae quam. Suspendisse sed nunc. Proin + suscipit porta magna. Duis accumsan nunc in velit. Nam et nibh. + Nulla facilisi. Cras venenatis urna et magna. Aenean magna mauris, + bibendum sit amet, semper quis, aliquet nec, sapien. Aliquam + aliquam odio quis erat. Etiam est nisi, condimentum non, lacinia + ac, vehicula laoreet, elit. Sed interdum augue sit amet quam + dapibus semper. Nulla facilisi. Pellentesque lobortis erat nec + quam. +

          +

          + Sed arcu magna, molestie at, eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +

          +
          +
          +

          + Nunc consequat nisi vitae quam. Suspendisse sed nunc. Proin + suscipit porta magna. Duis accumsan nunc in velit. Nam et nibh. + Nulla facilisi. Cras venenatis urna et magna. Aenean magna mauris, + bibendum sit amet, semper quis, aliquet nec, sapien. Aliquam + aliquam odio quis erat. Etiam est nisi, condimentum non, lacinia + ac, vehicula laoreet, elit. Sed interdum augue sit amet quam + dapibus semper. Nulla facilisi. Pellentesque lobortis erat nec + quam. +

          +

          + Sed arcu magna, molestie at, eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +

          +
          +
          +

          + Nunc consequat nisi vitae quam. Suspendisse sed nunc. Proin + suscipit porta magna. Duis accumsan nunc in velit. Nam et nibh. + Nulla facilisi. Cras venenatis urna et magna. Aenean magna mauris, + bibendum sit amet, semper quis, aliquet nec, sapien. Aliquam + aliquam odio quis erat. Etiam est nisi, condimentum non, lacinia + ac, vehicula laoreet, elit. Sed interdum augue sit amet quam + dapibus semper. Nulla facilisi. Pellentesque lobortis erat nec + quam. +

          +

          + Sed arcu magna, molestie at, eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +

          +
          +
          + +

          +

          Accordion container destroy

          +
          +
          + Click the button twice - it will work correctly unless there was a problem destroying the accordion, in which case the second time + the Accordion will not be created and you will see an error like Tried to register widget with id==first_button but that id is already registered
          + + + diff --git a/src/main/resources/static/dijit/tests/layout/test_BorderContainer.html b/src/main/resources/static/dijit/tests/layout/test_BorderContainer.html new file mode 100644 index 0000000000000000000000000000000000000000..761f1b09dcdc39bdefd99a6873a9c5218000f1ec --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/test_BorderContainer.html @@ -0,0 +1,268 @@ + + + + + dijit/layout/BorderContainer Test + + + + + + + + +

          dijit/layout/BorderContainer tests

          +

          Headline layout (default), left is constrained - min:150, max:250

          +
          +
          + top bar (resizable) +
          +
          + left (resizable b/w 150 → 250) +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + right (fixed size) +
          +
          + bottom bar (resizable) +
          +
          + + +
          + +

          Sidebar layout, BiDi sensitive, liveSplitters: false

          +
          +
          + leading (fixed size) +
          +
          + top bar (fixed size) +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + bottom bar (resizable) +
          +
          + trailing (resizable) +
          +
          + +

          gutters=false layout

          + +
          +
          + leading +
          +
          + top bar +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + bottom bar +
          +
          + trailing +
          +
          + +

          Vertical panels only with splitters

          + +
          +
          + top bar +
          + +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + bottom bar +
          +
          + +
          +

          More fun with layouts

          + +
          +
          +
          +
          top a
          +
          top b
          +
          +
          +
          +
          +
          bottom c
          +
          bottom d
          +
          +
          +
          +
          +
          leading e
          +
          leading f
          +
          +
          +
          trailing g
          +
          trailing g
          +
          + +
          +

          Watching the splitter events

          +
          +
          Top:
          +
          Left
          +
          Center
          +
          + +

          Splitter coords output:

          +
          nothing moving
          + + +

          dijit/layout/BorderContainer programmatic test

          +
          + + + + + + + diff --git a/src/main/resources/static/dijit/tests/layout/test_BorderContainer_complex.html b/src/main/resources/static/dijit/tests/layout/test_BorderContainer_complex.html new file mode 100644 index 0000000000000000000000000000000000000000..54efea90564c7b0cc507aebda17674837ffa4784 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/test_BorderContainer_complex.html @@ -0,0 +1,173 @@ + + + + + dijit/layout/BorderContainer Test - complex layout + + + + + + + +

          dijit/layout/BorderContainer complex layout test

          + +
          +
          +
          + left bar +
          +
          +

          + Nunc consequat nisi vitae quam. Suspendisse sed nunc. Proin + suscipit porta magna. Duis accumsan nunc in velit. Nam et nibh. + Nulla facilisi. Cras venenatis urna et magna. Aenean magna mauris, + bibendum sit amet, semper quis, aliquet nec, sapien. Aliquam + aliquam odio quis erat. Etiam est nisi, condimentum non, lacinia + ac, vehicula laoreet, elit. Sed interdum augue sit amet quam + dapibus semper. Nulla facilisi. Pellentesque lobortis erat nec + quam. +

          +

          + Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +

          +
          +
          +

          The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

          +
          +
          + +
          +
          + right bar +
          +
          +

          + Nunc consequat nisi vitae quam. Suspendisse sed nunc. Proin + suscipit porta magna. Duis accumsan nunc in velit. Nam et nibh. + Nulla facilisi. Cras venenatis urna et magna. Aenean magna mauris, + bibendum sit amet, semper quis, aliquet nec, sapien. Aliquam + aliquam odio quis erat. Etiam est nisi, condimentum non, lacinia + ac, vehicula laoreet, elit. Sed interdum augue sit amet quam + dapibus semper. Nulla facilisi. Pellentesque lobortis erat nec + quam. +

          +

          + Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +

          +
          +
          +

          The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.

          +
          +
          +
          + +
          + +
          + +
          + +
          +

          I am tab 3

          +

          And I was already part of the page! That's cool, no?

          +

          tooltip on this paragraph

          +
          I'm a tooltip!
          + +
          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +
          + +
          +
          +
          +
          + +
          + +
          + +
          +
          +
          +
          +

          bottom bar (edit me)

          +
          +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + + + diff --git a/src/main/resources/static/dijit/tests/layout/test_BorderContainer_experimental.html b/src/main/resources/static/dijit/tests/layout/test_BorderContainer_experimental.html new file mode 100644 index 0000000000000000000000000000000000000000..44e5b8d4e50b1836af7d2480bd597e8111da312e --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/test_BorderContainer_experimental.html @@ -0,0 +1,267 @@ + + + + + BorderContainer Experiments | The Dojo Toolkit + + + + + + + + + + + + +

          This is a test

          +

          This is only a test. An experiment in dynamically altering a BorderContainer's layout + (a seemingly unsupported feature just yet). It Demonstrates how to programatically alter/animate + the size of non-center regions though, and several simple layout configurations +

          + +
          +

          Layouts:

          +
          +
          + +
          +
          + pane0 +
          +
          + +
          +
          + Sinlge pane - l1 +
          +
          + +
          +

          two panes, vertical split:

          + + +
          +
          + Sinlge pane - left +
          +
          + Sinlge pane - center + +
          +
          + +
          +
          + Single pane - center (splitter) (this is unsupported, and does not work) +
          +
          + Single pane - right (no splitter) +
          +
          + +
          +
          + Single pane - center (no splitter) +
          +
          + Single pane - right (splitter) +
          +
          +
          + +
          +
          + Single pane - top (splitter) + +
          +
          + Single pane - center +
          +
          + +
          +
          + Single pane - center +
          +
          + Single Pane Bottom (splitter) +
          +
          + Single Pane Top (splitter) +
          +
          + + + + + diff --git a/src/main/resources/static/dijit/tests/layout/test_BorderContainer_full.html b/src/main/resources/static/dijit/tests/layout/test_BorderContainer_full.html new file mode 100644 index 0000000000000000000000000000000000000000..542993c81a062ccafbff4bed3d717e9694cd069a --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/test_BorderContainer_full.html @@ -0,0 +1,58 @@ + + + + + dijit/layout/BorderContainer Test - Full Screen + + + + + + + + +
          +
          + leading +
          +
          + top bar +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          + bottom bar +
          +
          + trailing +
          +
          + + diff --git a/src/main/resources/static/dijit/tests/layout/test_BorderContainer_nested.html b/src/main/resources/static/dijit/tests/layout/test_BorderContainer_nested.html new file mode 100644 index 0000000000000000000000000000000000000000..323bd172c1e15f780e14b50763314c730d7cb032 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/test_BorderContainer_nested.html @@ -0,0 +1,123 @@ + + + + + dijit/layout/BorderContainer Nested Test + + + + + + + +

          dijit/layout/BorderContainer Nested tests

          + +

          + The second tab holds a single BorderContainer but specifying layoutPriority on it's children to have multiple children + for each region. +

          +

          + The first tab holds a BorderContainer which nests another BorderContainer, simulating multiple children in a single region. +

          + +
          +
          +
          + left +
          +
          + right +
          +
          + top bar +
          +
          + bottom bar +
          + +
          +
          + left inner +
          +
          + right inner +
          +
          + inner top bar +
          +
          + inner bottom bar +
          +
          + main panel with a link.
          + (to check we're copying children around properly).
          + + Here's some text that comes AFTER the combo box. +
          +
          +
          + +
          +
          + + +
          +
          + + +
          +
          + + +
          +
          + + +
          +
          + + +
          +
          + + +
          +
          + + +
          +
          + + +
          +
          + + +
          +
          + + +
          +
          + + +
          +
          +
          + + diff --git a/src/main/resources/static/dijit/tests/layout/test_ContentPane.html b/src/main/resources/static/dijit/tests/layout/test_ContentPane.html new file mode 100644 index 0000000000000000000000000000000000000000..cac73ef5de17adc4b5845bdf3d04c439ac579ac1 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/test_ContentPane.html @@ -0,0 +1,204 @@ + + + + + ContentPane Test + + + + + + + + + + +

          Dijit layout.ContentPane tests

          +

          pre-container paragraph

          + +
          + some text (top-level container) + +
          + + text in the inner container (1) + +
          + hi +
          + + text in the inner container (2) + +
          + inner-inner 2 +
          + + text in the inner container (3) + +
          + inner-inner 3 +
          + + text in the inner container (4) + +
          + + some more text (top-level container) +
          + +

          mid-container paragraph

          + +
          + 2nd top-level container +
          + +

          post-container paragraph

          + +
          +

          This text should automatically be replaced by downloaded content from combotab.html

          +
          + +
          +

          ContentPanes used by the unit tests to verify functionality +

          + Some Content Here +
          +
          +
          +
          + + diff --git a/src/main/resources/static/dijit/tests/layout/test_Gui.html b/src/main/resources/static/dijit/tests/layout/test_Gui.html new file mode 100644 index 0000000000000000000000000000000000000000..4dbda5ad6c0c83336d4fe707b29b3b69060dde6d --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/test_Gui.html @@ -0,0 +1,255 @@ + + + + + Dijit UI Tester + + + + + + + + + + +
          +
          This test is to make sure nested layout elements work fine in regards to double borders etc. You need a screen with a very high resolution to not get cramped tabs and other weird visual effects
          + + +
          + +
          + +
          +
          + +
          +
          + +
          +
          + +
          +
          + +
          + +
          + +
          + +
          + Hi friends of dijit +
          +
          + +
          +
          + +
          +
          + +
          +
          + +
          +
          + +
          + +
          + +
          + +
          +
          + +
          + +
          + +
          + + +
          +
          + +
          +
          + +
          +
          + +
          +
          +
          + +
          +
          + +
          +
          + +
          + +
          + + +
          + + Here's some text, then a TitlePane: +
          + Hi friends of dijit +
          + ... and some more text. +
          + +
          +
          + Hi friends of dijit +
          +
          + Tab 2 content +
          +
          + +
          + +
          + +
          + Hi friends of dijit +
          +
          + Hi friends of dijit +
          +
          +
          +
          +
          +
          + + +
          + +
          + +
          + +
          + +
          + +
          + +
          +
          + + +
          + +
          + +
          + +
          + +
          + +
          + +
          +
          + +
          + + +
          +
          This test is to make sure nested layout elements work fine in regards to double borders etc. You need a screen with a very high resolution to not get cramped tabs and other weird visual effects
          +
          + + +
          Hi
          +
          + +
          This test is to make sure nested layout elements work fine in regards to double borders etc. You need a screen with a very high resolution to not get cramped tabs and other weird visual effects
          + +
          + +
          + +
          + +
          + +
          + +
          +
          +
          +
          Hi
          + +
          + + + diff --git a/src/main/resources/static/dijit/tests/layout/test_SplitContainer.html b/src/main/resources/static/dijit/tests/layout/test_SplitContainer.html new file mode 100644 index 0000000000000000000000000000000000000000..c6c9d1fafb5d7a1df8f66f686d007e3a28c5a558 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/test_SplitContainer.html @@ -0,0 +1,139 @@ + + + + SplitContainer Widget Demo + + + + + + + + + + + + + + + +

          Dijit Split Container Test - DEPRECATED!

          +

          dijit.layout.SplitContainer is deprecated use + BorderContainer with splitter instead -- will be removed in version: 2

          +

          HTML before

          + +
          +
          + this box has three split panes +
          +
          + in vertical mode +
          +
          + without active resizing +
          +
          + + + + +

          + +
          +
          + this box has two horizontal panes +
          +
          + with active resizing, a smaller sizer, different starting sizes and minimum sizes +
          +
          + +

          HTML after

          + +the following splitter contains two iframes, see whether the resizer works ok in this situation +
          +
          + +
          +
          + +
          +
          + +

          Programatic Example:

          +
          + + + diff --git a/src/main/resources/static/dijit/tests/layout/test_TabContainer.html b/src/main/resources/static/dijit/tests/layout/test_TabContainer.html new file mode 100644 index 0000000000000000000000000000000000000000..3025b65be63aa0a89e44aba3d6ec27387b073c92 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/test_TabContainer.html @@ -0,0 +1,1051 @@ + + + + + TabContainer Demo + + + + + + + + + +

          Dijit layout.TabContainer tests

          + +

          These tabs are made up of local and external content. Tab 1 and Tab 2 are loading + files tab1.html and tab2.html. Tab 3 and Another Tab are using content that is already + part of this page. Tab2 is initially selected. Attribute tabStrip is set to true +

          + +

          + More tabs can be displayed in the first two TabContainers by clicking the + drop down control to the right of the widget. If the tabs are not wider than + the widget, the scrolling controls should disappear - this can be tested by closing the + closable tabs. +

          + + + +

          + +
          + +
          + +
          + +
          +

          I am tab 3

          +

          And I was already part of the page! That's cool, no?

          +

          tooltip on this paragraph

          +
          I'm a tooltip!
          + +
          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +
          + +
          +
          +
          +
          +

          I am tab 3, inlined.

          +
          +
          +

          I am tab 4, inlined.

          +
          +
          + +
          +
          +
          +

          + The tab has some text, plus two embedded layout widgets, which should + appear correctly even though the tab is initially hidden. +

          +

          + Here's a BorderContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + And a TabContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + Text after the widgets. +

          +
          +
          + + + + + + +
          +

          + This tab container has the Menu function for selecting tabs disabled, using useMenu: false. + Also, "Tab 3" is initially disabled. +

          +
          +
          + +
          + +
          +

          I am tab 3

          +

          I was initially a disabled tab (button below TabContainer can enable/disable me).

          +

          tooltip on this paragraph

          +
          I'm a tooltip!
          + +
          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +
          + +
          +
          +
          +
          +

          I am tab 3, inlined.

          +
          +
          +

          I am tab 4, inlined.

          +
          +
          + +
          + +
          + +
          +

          + The tab has some text, plus two embedded layout widgets, which should + appear correctly even though the tab is initially hidden. +

          +

          + Here's a BorderContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + And a TabContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + Text after the widgets. +

          +
          +
          + + + +
          + +

          Tabs w/only icons (except in high-contrast mode where labels display):

          +
          +
          Cut icon tab
          +
          Copy icon tab
          +
          Paste icon tab
          +
          + + +

          + This tab container has the Slider function for selecting tabs disabled, using useSlider="false" +

          +
          + +
          + +
          + +
          +

          I am tab 3

          +

          And I was already part of the page! That's cool, no?

          +

          tooltip on this paragraph

          +
          I'm a tooltip!
          + +
          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +
          + +
          +
          +
          +
          +

          I am tab 3, inlined.

          +
          +
          +

          I am tab 4, inlined.

          +
          +
          + +
          + +
          + +
          +

          + The tab has some text, plus two embedded layout widgets, which should + appear correctly even though the tab is initially hidden. +

          +

          + Here's a BorderContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + And a TabContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + Text after the widgets. +

          +
          +
          +
          +

          + This tab container has the tab strip disabled, using tabStrip:false +

          +
          + +
          + +
          + +
          +

          I am tab 3

          +

          And I was already part of the page! That's cool, no?

          +

          tooltip on this paragraph

          +
          I'm a tooltip!
          + +
          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +
          + +
          +
          +
          +
          +

          I am tab 3, inlined.

          +
          +
          +

          I am tab 4, inlined.

          +
          +
          + +
          + +
          + +
          +

          + The tab has some text, plus two embedded layout widgets, which should + appear correctly even though the tab is initially hidden. +

          +

          + Here's a BorderContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + And a TabContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + Text after the widgets. +

          +
          +
          + +

          These tabs are made up of local and external content. Tab 1 and Tab 2 are loading + files tab1.html and tab2.html. Tab 3 and Another Tab are using content that is already + part of this page. Tab2 is initially selected. Attribute tabStrip is set to true, + and the tabPosition is "bottom" +

          + +
          + +
          + +
          + +
          +

          I am tab 3

          +

          And I was already part of the page! That's cool, no?

          +

          tooltip on this paragraph

          +
          I'm a tooltip!
          + +
          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +
          + +
          +
          +
          +
          +

          I am tab 3, inlined.

          +
          +
          +

          I am tab 4, inlined.

          +
          +
          + +
          + +
          + +
          +

          + The tab has some text, plus two embedded layout widgets, which should + appear correctly even though the tab is initially hidden. +

          +

          + Here's a BorderContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + And a TabContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + Text after the widgets. +

          +
          +
          +
          +

          + This tab container has its tabs at the bottom, and the tab strip disabled +

          + +
          + +
          + +
          + +
          +

          I am tab 3

          +

          And I was already part of the page! That's cool, no?

          +

          tooltip on this paragraph

          +
          I'm a tooltip!
          + +
          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +
          + +
          +
          +
          +
          +

          I am tab 3, inlined.

          +
          +
          +

          I am tab 4, inlined.

          +
          +
          + +
          + +
          + +
          +

          + The tab has some text, plus two embedded layout widgets, which should + appear correctly even though the tab is initially hidden. +

          +

          + Here's a BorderContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + And a TabContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + Text after the widgets. +

          +
          +
          + +

          + The next example is with closable tabs. + Tab 1 and Tab 3 can be closed; Tab 3 has a confirm box. +

          + +
          +
          +
          +
          +

          I am tab 3

          +

          And I was already part of the page! That's cool, no?

          +

          If you try to close me there should be a confirm dialog.

          +
          +
          +

          I am tab 4

          +

          I have no onClose function.

          +

          Clicking the X should close me.

          +
          +
          + +

          Tabs with titles on the bottom:

          + +
          +
          +
          +
          + +

          Tabs with titles on the left and tabStrip="false":

          + +
          +
          + Once upon a time there was a dear little girl who was loved by + every one who looked at her, but most of all by her grandmother, + and there was nothing that she would not have given to the child. +
          +
          + Hard by a great forest dwelt a poor wood-cutter with his wife + and his two children. The boy was called Hansel and the girl Gretel. + He had little to bite and to break, and once when great dearth fell + on the land, he could no longer procure even daily bread. +
          +
          + There was once upon a time a hermit who lived in a forest at the foot + of a mountain, and passed his time in prayer and good works, + and every evening he carried, to the glory of God, two pails of water + up the mountain. +
          +
          + +

          Tabs with titles on the left and tabStrip=true:

          + +
          +
          + Once upon a time there was a dear little girl who was loved by + every one who looked at her, but most of all by her grandmother, + and there was nothing that she would not have given to the child. +
          +
          + Hard by a great forest dwelt a poor wood-cutter with his wife + and his two children. The boy was called Hansel and the girl Gretel. + He had little to bite and to break, and once when great dearth fell + on the land, he could no longer procure even daily bread. +
          +
          + There was once upon a time a hermit who lived in a forest at the foot + of a mountain, and passed his time in prayer and good works, + and every evening he carried, to the glory of God, two pails of water + up the mountain. +
          +
          + +

          Tabs with titles on the right and tabStrip=true:

          + +
          +
          + Once upon a time there was a dear little girl who was loved by + every one who looked at her, but most of all by her grandmother, + and there was nothing that she would not have given to the child. +
          +
          + Hard by a great forest dwelt a poor wood-cutter with his wife + and his two children. The boy was called Hansel and the girl Gretel. + He had little to bite and to break, and once when great dearth fell + on the land, he could no longer procure even daily bread. +
          +
          + There was once upon a time a hermit who lived in a forest at the foot + of a mountain, and passed his time in prayer and good works, + and every evening he carried, to the glory of God, two pails of water + up the mountain. +
          +
          + +

          Tabs with titles on the right and tabStrip=false:

          + +
          +
          + Once upon a time there was a dear little girl who was loved by + every one who looked at her, but most of all by her grandmother, + and there was nothing that she would not have given to the child. +
          +
          + Hard by a great forest dwelt a poor wood-cutter with his wife + and his two children. The boy was called Hansel and the girl Gretel. + He had little to bite and to break, and once when great dearth fell + on the land, he could no longer procure even daily bread. +
          +
          + There was once upon a time a hermit who lived in a forest at the foot + of a mountain, and passed his time in prayer and good works, + and every evening he carried, to the glory of God, two pails of water + up the mountain. +
          +
          + +

          Typical rendering time

          + + + +
          IEFirefox (mac)
          1719922
          +

          Rendering time

          + + + diff --git a/src/main/resources/static/dijit/tests/layout/test_TabContainer_CSS.html b/src/main/resources/static/dijit/tests/layout/test_TabContainer_CSS.html new file mode 100644 index 0000000000000000000000000000000000000000..b240e0756c9061c5ef906aafb1a6deccdaec280a --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/test_TabContainer_CSS.html @@ -0,0 +1,107 @@ + + + + TabContainer CSS Glitch Tests + + + + + + + + + +

          TabContainer CSS Glitch Tests

          +

          + Collected tests for problems with missing borders for TabContainer, + in particular problems with the border between the tab buttons and the tab content. +

          + +

          Borders in TooltipDialog

          +

          + Open TooltipDialog and make sure the horizontal border between tab buttons and content + don't extend past the edge of the TabContainer. Also check that button for second tab + (unselected tab) is visible on IE6. +

          +
          + Show Tooltip Dialog with TabContainer +
          +
          +
          +

          + This is the first tab. +

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +
          +
          +

          + This is the second tab. +

          +

          + ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +
          +
          +
          +
          + +

          Initial missing border

          +

          + Make sure the TabContainers below show the border between tab buttons and tab content. + Previously it didn't show on initial page load, but showed after resize. +

          +
          + +

          Missing border on zoom

          +

          + Make sure separating border doesn't disappear on zoom + (not text-size increase/decrease but zoom). + Problem used to occur on FF/windows and IE8. +

          +
          +
          + Once upon a time there was a dear little girl who was loved by + every one who looked at her, but most of all by her grandmother, + and there was nothing that she would not have given to the child. +
          +
          + Some content here. +
          +
          + Yet more content. +
          +
          + + diff --git a/src/main/resources/static/dijit/tests/layout/test_TabContainer_noLayout.html b/src/main/resources/static/dijit/tests/layout/test_TabContainer_noLayout.html new file mode 100644 index 0000000000000000000000000000000000000000..01f7f75703aea68f429bb39c2883f9d6e3d2ded6 --- /dev/null +++ b/src/main/resources/static/dijit/tests/layout/test_TabContainer_noLayout.html @@ -0,0 +1,105 @@ + + + + + TabContainer doLayout=false Demo + + + + + + + + + +

          Dijit layout.TabContainer doLayout=false tests

          + +

          + This tests tabs in doLayout=false mode, in which case the tab container's height == + the height of the currently selected tab. +

          +

          + With doLayout=false mode tabs only (the default) tabPosition=top is supported. +

          + + + + +
          + +
          + +
          + +
          +

          I am tab 3

          +

          And I was already part of the page! That's cool, no?

          + tooltip on this span +
          I'm a tooltip!
          + +
          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +
          + +
          +
          +
          +
          + +
          +
          + +

          + Some text here. This should appear directly below the TabContainer, + and the position will change based on the current height of the TabContainer. +

          + + + diff --git a/src/main/resources/static/dijit/tests/loose.html b/src/main/resources/static/dijit/tests/loose.html new file mode 100644 index 0000000000000000000000000000000000000000..5bf592382ec9a2cf8cdc7e624dc4a4ffee5d99a6 --- /dev/null +++ b/src/main/resources/static/dijit/tests/loose.html @@ -0,0 +1,7 @@ + + + + + + diff --git a/src/main/resources/static/dijit/tests/loremIpsum.html b/src/main/resources/static/dijit/tests/loremIpsum.html new file mode 100644 index 0000000000000000000000000000000000000000..2f2f4ff9d72d599ed6b3611b1454a873df0a97bc --- /dev/null +++ b/src/main/resources/static/dijit/tests/loremIpsum.html @@ -0,0 +1,99 @@ +
          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus.

          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus.

          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus.

          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus.

          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus.

          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus.

          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus.

          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus.

          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus.

          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus.

          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus.

          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus.

          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus.

          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus.

          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus.

          +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus.

          +
          + diff --git a/src/main/resources/static/dijit/tests/mobile.html b/src/main/resources/static/dijit/tests/mobile.html new file mode 100644 index 0000000000000000000000000000000000000000..9144a48747e05ee4fb85fbbe20cb2c8c27e343af --- /dev/null +++ b/src/main/resources/static/dijit/tests/mobile.html @@ -0,0 +1,201 @@ + + + + + + General widgets mobile test page + + + + + + + + +
          +
          Cut
          +
          Bold2
          + +
          + TD +
          + + + + + + + + + + + + +
          +
          +
          +
          + CP +
          +
          + Menu +
          +
          Save
          +
          Save As
          +
          +
          +
          Dialog
          +
          + +
          +
          + +
          + +
          + + +
          + +
          + + +
          + +
          + + +
          + +
          + + +
          + +
          + + +
          + +
          +
          + + +
          +
          + +
          +
          +
          +
          +
          +
          +
          +
          + +
          +
          + +
          +
          +
          + +
          +
          + +
          + InlineEditBox: + + + diff --git a/src/main/resources/static/dijit/tests/module.js b/src/main/resources/static/dijit/tests/module.js new file mode 100644 index 0000000000000000000000000000000000000000..cd71ef18bb1fe54830bfceadcc602997976ad316 --- /dev/null +++ b/src/main/resources/static/dijit/tests/module.js @@ -0,0 +1,14 @@ +define([ + "./_base/module", + "./infrastructure-module", + + "./general-module", + "./tree/module", + "./editor/module", + "./form/module", + "./layout/module", + + "./_BidiSupport/module" +], 1); + + diff --git a/src/main/resources/static/dijit/tests/place-clip.html b/src/main/resources/static/dijit/tests/place-clip.html new file mode 100644 index 0000000000000000000000000000000000000000..b0002f9f73fca9c59e5d5e49980f43683b01fbdf --- /dev/null +++ b/src/main/resources/static/dijit/tests/place-clip.html @@ -0,0 +1,267 @@ + + + + dijit/place on clipped nodes unit test + + + + + + + + +

          Dijit Place Clipping Unit Test

          + + + + + +
          +
          123456789abcdef
          +
          + + +
          +
          +
          +
          +
          123456789abcdef
          +
          +
          +
          + + +
          +
          +
          +
          +
          123456789abcdef
          +
          +
          +
          + + +
          +
          +
          absolute
          +
          + + +
          +
          +
          +
          parent absolute
          +
          +
          + + +
          +
          +
          +
          grandparent relative
          +
          +
          + + diff --git a/src/main/resources/static/dijit/tests/place-margin.html b/src/main/resources/static/dijit/tests/place-margin.html new file mode 100644 index 0000000000000000000000000000000000000000..85e21dd12cc1ff8c040ec832c2b1a3f9c5da0e7c --- /dev/null +++ b/src/main/resources/static/dijit/tests/place-margin.html @@ -0,0 +1,104 @@ + + + + dijit/place with margin on body unit test + + + + + + + + +

          Dijit Place With Margin On BODY Unit Test

          +
          T
          +
          L
          +
          R
          + + +
          + +
          + + diff --git a/src/main/resources/static/dijit/tests/place.html b/src/main/resources/static/dijit/tests/place.html new file mode 100644 index 0000000000000000000000000000000000000000..2ae1507d713f95f9b2495d800ea2eff325237d7d --- /dev/null +++ b/src/main/resources/static/dijit/tests/place.html @@ -0,0 +1,251 @@ + + + + dijit/place unit test + + + + + + + + +

          Dijit Place Unit Test

          +
          T
          +
          L
          +
          R
          +
          B
          + + + + diff --git a/src/main/resources/static/dijit/tests/popup.html b/src/main/resources/static/dijit/tests/popup.html new file mode 100644 index 0000000000000000000000000000000000000000..fc80255ff51aa1589b325b1430ef2fb4b757557e --- /dev/null +++ b/src/main/resources/static/dijit/tests/popup.html @@ -0,0 +1,615 @@ + + + + popup and BackgroundIFrame unit test + + + + + + + + +

          popup and BackgroundIFrame Unit Test

          + +
          +

          Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis cursus odio eu nisl ultrices dictum. Sed tincidunt metus et magna placerat eget vehicula dolor faucibus. Nunc nec augue ac mi rutrum congue. Donec at augue felis. Proin et lectus at mauris adipiscing pulvinar tempor vitae lacus. Aliquam erat volutpat. Sed eget sem eu turpis ultrices ullamcorper sed ut augue. Nunc in augue lectus. Curabitur ac posuere libero. Duis luctus dignissim nisl suscipit vehicula. Cras ut augue odio. Integer blandit ligula congue erat pellentesque nec egestas mi hendrerit

          + +

          Nunc sollicitudin nisl sed est porta vitae viverra nulla rutrum. Praesent erat tortor, scelerisque sit amet gravida a, sodales a libero. Pellentesque nec arcu nulla, id laoreet orci. Vivamus sit amet quam eu ante pulvinar rhoncus sit amet non ipsum. Sed mattis felis sed risus tincidunt in sagittis justo rhoncus. Praesent ut justo feugiat neque gravida convallis eget mattis felis. Vestibulum vitae velit ante, sed convallis sem. Curabitur gravida volutpat odio eget tincidunt. Mauris pellentesque placerat massa ut venenatis. Mauris ultrices hendrerit dui vel fermentum.

          +
          + + + diff --git a/src/main/resources/static/dijit/tests/quirks.html b/src/main/resources/static/dijit/tests/quirks.html new file mode 100644 index 0000000000000000000000000000000000000000..21ecd833536d033c7c2decece26daf7638bce9c6 --- /dev/null +++ b/src/main/resources/static/dijit/tests/quirks.html @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/static/dijit/tests/registry.html b/src/main/resources/static/dijit/tests/registry.html new file mode 100644 index 0000000000000000000000000000000000000000..a593f95d7d66dbadbe1030a3c775c5aadb34413c --- /dev/null +++ b/src/main/resources/static/dijit/tests/registry.html @@ -0,0 +1,94 @@ + + + + + + dijit/registry unit test + + + + + + +

          Dijit/registry Unit Test

          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          +
          + + diff --git a/src/main/resources/static/dijit/tests/resources/TestContextRequireWidget.js b/src/main/resources/static/dijit/tests/resources/TestContextRequireWidget.js new file mode 100644 index 0000000000000000000000000000000000000000..223dc13a23788f281f0dc09bc1af164e1bc425d5 --- /dev/null +++ b/src/main/resources/static/dijit/tests/resources/TestContextRequireWidget.js @@ -0,0 +1,17 @@ +define([ + "require", + "dojo/_base/declare", + "dijit/_WidgetBase", + "dijit/_TemplatedMixin", + "dijit/_WidgetsInTemplateMixin", + "./TestWidget" +], function(require, declare, _WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin){ + + // This module requires utilises a relative MID in the template. Because of the synchronous nature of the widget + // lifecycle, you need to require in any modules in the template into the parent module (as auto-require will not + // work) as well as require in the context require and pass it as part of the declare. + return declare([_WidgetBase, _TemplatedMixin, _WidgetsInTemplateMixin], { + templateString: '
          ', + contextRequire: require + }); +}); \ No newline at end of file diff --git a/src/main/resources/static/dijit/tests/resources/TestWidget.js b/src/main/resources/static/dijit/tests/resources/TestWidget.js new file mode 100644 index 0000000000000000000000000000000000000000..4873302856861f05d4ae4fd4b5a41b203ed96527 --- /dev/null +++ b/src/main/resources/static/dijit/tests/resources/TestWidget.js @@ -0,0 +1,10 @@ +define([ + "dojo/_base/declare", + "dijit/_WidgetBase", + "dijit/_TemplatedMixin" +], function(declare, _WidgetBase, _TemplatedMixin){ + return declare([_WidgetBase, _TemplatedMixin], { + templateString: '
          TestWidget
          ', + foo: "bar" + }); +}); \ No newline at end of file diff --git a/src/main/resources/static/dijit/tests/resources/helloWorld.pdf b/src/main/resources/static/dijit/tests/resources/helloWorld.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cc648dd837f3f55c14a9fadd02a90360e061c7be Binary files /dev/null and b/src/main/resources/static/dijit/tests/resources/helloWorld.pdf differ diff --git a/src/main/resources/static/dijit/tests/robot/BgIframe.html b/src/main/resources/static/dijit/tests/robot/BgIframe.html new file mode 100644 index 0000000000000000000000000000000000000000..e60230c4e5b0cc2f54cec27f7d52196b01bfcef9 --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/BgIframe.html @@ -0,0 +1,173 @@ + + + + robot bgIframe Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/Calendar_a11y.html b/src/main/resources/static/dijit/tests/robot/Calendar_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..370b52ffb6853a72a7b2b17b951667760342933c --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/Calendar_a11y.html @@ -0,0 +1,402 @@ + + + + doh.robot Calendar A11Y Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/ColorPalette.html b/src/main/resources/static/dijit/tests/robot/ColorPalette.html new file mode 100644 index 0000000000000000000000000000000000000000..f256f2fb01b66069615497b7c93f73cdc6104202 --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/ColorPalette.html @@ -0,0 +1,280 @@ + + + + robot ColorPalette Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/ConfirmDialog_a11y.html b/src/main/resources/static/dijit/tests/robot/ConfirmDialog_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..b3ade4edae510ee835cac6d40d794ebca6768eb6 --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/ConfirmDialog_a11y.html @@ -0,0 +1,111 @@ + + + + robot ConfirmDialog A11Y Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/ConfirmTooltipDialog_a11y.html b/src/main/resources/static/dijit/tests/robot/ConfirmTooltipDialog_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..b5c582dc26e29d606d913fb4a2175a8163b3ac01 --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/ConfirmTooltipDialog_a11y.html @@ -0,0 +1,140 @@ + + + +robot ConfirmDialog A11Y Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/Dialog_a11y.html b/src/main/resources/static/dijit/tests/robot/Dialog_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..1e850690d9229d8be08244ee11181f387205554a --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/Dialog_a11y.html @@ -0,0 +1,621 @@ + + + + robot Dialog A11Y Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/Dialog_focusDestroy.html b/src/main/resources/static/dijit/tests/robot/Dialog_focusDestroy.html new file mode 100644 index 0000000000000000000000000000000000000000..4eec5199c67ad0d3c78f8af36943211d15e008ee --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/Dialog_focusDestroy.html @@ -0,0 +1,58 @@ + + + + robot dialog focus destroy Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/Dialog_mouse.html b/src/main/resources/static/dijit/tests/robot/Dialog_mouse.html new file mode 100644 index 0000000000000000000000000000000000000000..5f23e1c798b440d3da7a6cb2098177473f67ce5e --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/Dialog_mouse.html @@ -0,0 +1,381 @@ + + + +robot Dialog Mouse Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/Fieldset.html b/src/main/resources/static/dijit/tests/robot/Fieldset.html new file mode 100644 index 0000000000000000000000000000000000000000..b3b4281488d19a60c8377d7f1c6a0756c89205e2 --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/Fieldset.html @@ -0,0 +1,94 @@ + + + + robot Fieldset Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/InlineEditBox.html b/src/main/resources/static/dijit/tests/robot/InlineEditBox.html new file mode 100644 index 0000000000000000000000000000000000000000..f76e73fcdcf835adfcba329998e0317775782dba --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/InlineEditBox.html @@ -0,0 +1,430 @@ + + + + robot InlineEditBox Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/Menu_a11y.html b/src/main/resources/static/dijit/tests/robot/Menu_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..91d67f41200fda69c58da8a55e25d6c6ab81361c --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/Menu_a11y.html @@ -0,0 +1,1074 @@ + + + + robot Menu Keyboard Tests + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/Menu_iframe.html b/src/main/resources/static/dijit/tests/robot/Menu_iframe.html new file mode 100644 index 0000000000000000000000000000000000000000..84cfd3739bff87199244b066122449506094159a --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/Menu_iframe.html @@ -0,0 +1,240 @@ + + + + robot Menu iframe Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/Menu_mouse.html b/src/main/resources/static/dijit/tests/robot/Menu_mouse.html new file mode 100644 index 0000000000000000000000000000000000000000..137b97b9f4e4fa778d7216880188ff569f525b3a --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/Menu_mouse.html @@ -0,0 +1,662 @@ + + + + robot Menu Mouse Tests + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/TitlePane.html b/src/main/resources/static/dijit/tests/robot/TitlePane.html new file mode 100644 index 0000000000000000000000000000000000000000..b9edc6d2eda783a4f3f056ffdd300b30d72635b2 --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/TitlePane.html @@ -0,0 +1,307 @@ + + + + robot TitlePane Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/Toolbar.html b/src/main/resources/static/dijit/tests/robot/Toolbar.html new file mode 100644 index 0000000000000000000000000000000000000000..61fc8921bf3970a7b39702ce0428e6ac0bba87ba --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/Toolbar.html @@ -0,0 +1,287 @@ + + + + robot Toolbar Test + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/TooltipDialog_a11y.html b/src/main/resources/static/dijit/tests/robot/TooltipDialog_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..94d901faa3bab3ff394a892350fce898e38487d1 --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/TooltipDialog_a11y.html @@ -0,0 +1,448 @@ + + + + robot TooltipDialog A11y Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/TooltipDialog_mouse.html b/src/main/resources/static/dijit/tests/robot/TooltipDialog_mouse.html new file mode 100644 index 0000000000000000000000000000000000000000..838590f6c7a5bdab74132d867a2c7390ac0c79d3 --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/TooltipDialog_mouse.html @@ -0,0 +1,407 @@ + + + + robot TooltipDialog Mouse Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/Tooltip_a11y.html b/src/main/resources/static/dijit/tests/robot/Tooltip_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..ee73f6ca01706d7f28eceae6e860213960df797e --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/Tooltip_a11y.html @@ -0,0 +1,390 @@ + + + + robot Tooltip A11Y Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/Tooltip_mouse.html b/src/main/resources/static/dijit/tests/robot/Tooltip_mouse.html new file mode 100644 index 0000000000000000000000000000000000000000..3b6a7d29fbb400624aca4617d38302eb50b8492f --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/Tooltip_mouse.html @@ -0,0 +1,357 @@ + + + + robot Tooltip Mouse Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/Tooltip_mouse_quirks.html b/src/main/resources/static/dijit/tests/robot/Tooltip_mouse_quirks.html new file mode 100644 index 0000000000000000000000000000000000000000..c2a8765e85a450f5078904b47c02875b65ca298a --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/Tooltip_mouse_quirks.html @@ -0,0 +1,60 @@ + + + + robot Tooltip Mouse Quirks Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/_KeyNavContainer.html b/src/main/resources/static/dijit/tests/robot/_KeyNavContainer.html new file mode 100644 index 0000000000000000000000000000000000000000..772989995b1a9e5e55337bd6832045ccb0b89c32 --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/_KeyNavContainer.html @@ -0,0 +1,99 @@ + + + + + + + _KeyNavContainer robot test + + + + + + + + +
          + +
          zero
          +
          one
          +
          two
          +
          three
          +
          + +
          +
          Alabama
          +
          Alaska
          +
          Arizona
          +
          Arkansas
          +
          California
          +
          New Hampshire
          +
          New Jersey
          +
          New Mexico
          +
          New York
          +
          + + + diff --git a/src/main/resources/static/dijit/tests/robot/_Widget-deferredConnect.html b/src/main/resources/static/dijit/tests/robot/_Widget-deferredConnect.html new file mode 100644 index 0000000000000000000000000000000000000000..422eeb68854ba7c37b16474ee37de76e70e44f78 --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/_Widget-deferredConnect.html @@ -0,0 +1,69 @@ + + + + robot deferred connect tests + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/_Widget-ondijitclick_a11y.html b/src/main/resources/static/dijit/tests/robot/_Widget-ondijitclick_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..27b89981b6813caa8b69624c7d39dab27a0f575d --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/_Widget-ondijitclick_a11y.html @@ -0,0 +1,240 @@ + + + + + Test Dijit Internal Event: "ondijitclick" + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/_Widget-ondijitclick_mouse.html b/src/main/resources/static/dijit/tests/robot/_Widget-ondijitclick_mouse.html new file mode 100644 index 0000000000000000000000000000000000000000..62d4a4176a122e833158637688e014eff983922e --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/_Widget-ondijitclick_mouse.html @@ -0,0 +1,116 @@ + + + + + Test Dijit Internal Event: "ondijitclick" + + + + + diff --git a/src/main/resources/static/dijit/tests/robot/typematic.html b/src/main/resources/static/dijit/tests/robot/typematic.html new file mode 100644 index 0000000000000000000000000000000000000000..bd2746d2c78c77b7e9477aa55ee45c868ed35c74 --- /dev/null +++ b/src/main/resources/static/dijit/tests/robot/typematic.html @@ -0,0 +1,103 @@ + + + + typematic DOH Robot test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/runTests.html b/src/main/resources/static/dijit/tests/runTests.html new file mode 100644 index 0000000000000000000000000000000000000000..163bde12911c6f2d55a57f062eec6fa189ed9cb2 --- /dev/null +++ b/src/main/resources/static/dijit/tests/runTests.html @@ -0,0 +1,9 @@ + + + + Dijit Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/src/main/resources/static/dijit/tests/strict.html b/src/main/resources/static/dijit/tests/strict.html new file mode 100644 index 0000000000000000000000000000000000000000..37f8d75c55f524b53f2fdf3972564d8ec8d20d5e --- /dev/null +++ b/src/main/resources/static/dijit/tests/strict.html @@ -0,0 +1,7 @@ + + + + + + diff --git a/src/main/resources/static/dijit/tests/test_Calendar.html b/src/main/resources/static/dijit/tests/test_Calendar.html new file mode 100644 index 0000000000000000000000000000000000000000..f60f03f4059ab7d241ff3cd7160ba125df0d3a6b --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_Calendar.html @@ -0,0 +1,60 @@ + + + + + Calendar Widget Test + + + + + + + + + +

          Dijit Calendar Test

          + + + + +

          + disable weekends +

          + +

          Big Calendar

          + + + diff --git a/src/main/resources/static/dijit/tests/test_ColorPalette.html b/src/main/resources/static/dijit/tests/test_ColorPalette.html new file mode 100644 index 0000000000000000000000000000000000000000..4de8525768403a4f61ad3b49184f30a5958811c8 --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_ColorPalette.html @@ -0,0 +1,52 @@ + + + + + ColorPalette Test + + + + + + + + +

          dijit.ColorPalette test:

          + +

          Large color palette (7x10), English tooltips:

          + +
          + . + + +

          Small color palette (3x4), Spanish tooltips:

          + +
          + + +

          Default color palette (7x10) created programatically:

          +
          + +

          ColorPalette with value pre-selected, using old style parser parameters:

          + +
          + + + diff --git a/src/main/resources/static/dijit/tests/test_ColorPalette_quirks.html b/src/main/resources/static/dijit/tests/test_ColorPalette_quirks.html new file mode 100644 index 0000000000000000000000000000000000000000..fc06de9b7e73420917dc9aa45af8d2943b1b73ed --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_ColorPalette_quirks.html @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/static/dijit/tests/test_ConfirmDialog.html b/src/main/resources/static/dijit/tests/test_ConfirmDialog.html new file mode 100644 index 0000000000000000000000000000000000000000..8213d32a365e6deba455bd9290aaba286e8dac6b --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_ConfirmDialog.html @@ -0,0 +1,60 @@ + + + + + ConfirmDialog Widget Tests + + + + + + + +

          Dijit.ConfirmDialog tests

          + + + + +
          + + + + + + + + + + + +
          +
          + +
          + + + + diff --git a/src/main/resources/static/dijit/tests/test_ConfirmTooltipDialog.html b/src/main/resources/static/dijit/tests/test_ConfirmTooltipDialog.html new file mode 100644 index 0000000000000000000000000000000000000000..cda03ca37f5824e2bb6678005e1e16c6c4c239f4 --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_ConfirmTooltipDialog.html @@ -0,0 +1,75 @@ + + + + + ConfirmTooltipDialog Widget Tests + + + + + + +

          dijit.ConfirmTooltipDialog tests

          + +
          + Color +
          + + +
          +
          +
          + + + + | + +
          + Login +
          + + + + + + + + + + + +
          +
          +
          + + + + + + diff --git a/src/main/resources/static/dijit/tests/test_Declaration.html b/src/main/resources/static/dijit/tests/test_Declaration.html new file mode 100644 index 0000000000000000000000000000000000000000..174c61804eb7f405ab2778ac8c053f32191967a1 --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_Declaration.html @@ -0,0 +1,152 @@ + + + + + + + Dojo Toolkit - Declaration test + + + + + + + +

          Simple macro:

          +

          (Check to make sure that links contain employee number) +

          + ${name} + update + delete +
          +
          +
          +
          + +

          Using data-dojo-attach-event, data-dojo-attach-point

          +
          + XXXXXX + +
          + + + +

          Extending another widget

          +

          HideButton2 extends HideButton (above) and changes the template (but keeps the onclick handler).

          + + YYYYYY + + + + +

          Using dojo/method:

          +
          + + + +

          thinger blah stuff ${foo}

          + +
          +

          baz thud

          +
          + +
          +
          + +

          Using dojo/aspect:

          +
          + + +

          thinger blah stuff ${foo}

          + +
          +

          baz thud

          +
          + +
          +
          + +

          data-dojo-attach-event on root node

          +
          + + click me +
          + + + + diff --git a/src/main/resources/static/dijit/tests/test_Declaration_1.x.html b/src/main/resources/static/dijit/tests/test_Declaration_1.x.html new file mode 100644 index 0000000000000000000000000000000000000000..464f9dae21e3de8359d8448c1bd7d0494272e3ac --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_Declaration_1.x.html @@ -0,0 +1,131 @@ + + + + + Dojo Toolkit - Declaration test + + + + + + + + + + + + + + + +

          Simple macro:

          +

          (Check to make sure that links contain employee number) +

          + ${name} + update + delete +
          +
          +
          +
          + +

          Using dojoAttachEvent, dojoAttachPoint

          +
          + XXXXXX + +
          + + + +

          Extending another widget

          +

          HideButton2 extends HideButton (above) and changes the template (but keeps the onclick handler).

          + + YYYYYY + + + + +

          Using dojo/method:

          +
          + + +

          thinger blah stuff ${foo}

          + +
          +

          baz thud

          +
          + +
          +
          + +

          Using dojo/connect:

          +
          + + +

          thinger blah stuff ${foo}

          + +
          +

          baz thud

          +
          + +
          +
          + + + diff --git a/src/main/resources/static/dijit/tests/test_Dialog.html b/src/main/resources/static/dijit/tests/test_Dialog.html new file mode 100644 index 0000000000000000000000000000000000000000..88d21f7a89aed821d314c1ddd517129c975ec565 --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_Dialog.html @@ -0,0 +1,715 @@ + + + + + Dialog Widget Tests + + + + + + + + + + + +

          Dijit.Dialog tests

          + +

          General Dialogs:

          + | + +
          +
          Introductory information spoken by screen reader if aria-describedby is + added to the declaration of dialog above with value equal to the id of the container element for this text. This technique + will work in Dojo 1.4.
          + + + + + + + + + + + + + + + + + + + + + + + + +
          +
          +
          + +
          +
          Dialog1 Menu
          +
          Enabled Item
          +
          Disabled Item
          +
          +
          Cut
          +
          Copy
          +
          Paste
          +
          + + + | + + + + + | + +
          +
          +
          +

          + This is the first tab. +

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +
          +
          +

          + This is the second tab. +

          +

          + Make it overflow. ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +
          +
          +
          + + | + +
          + + + +
          + + + +
          + + + +
          +

          You should not be able to
          drag this dialog

          +
          + + + +
          + I am done entering data: + +
          + + | + +
          +

          + The pane has some text, plus two embedded layout widgets, which should + appear correctly even though the pane is initially hidden. +

          +

          + Here's a BorderContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + And a TabContainer: +

          +
          +
          + 1Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          + 2Sed arcu magna, molestie at, fringilla in, sodales eu, elit. + Curabitur mattis lorem et est. Quisque et tortor. Integer bibendum + vulputate odio. Nam nec ipsum. Vestibulum mollis eros feugiat + augue. Integer fermentum odio lobortis odio. Nullam mollis nisl non + metus. Maecenas nec nunc eget pede ultrices blandit. Ut non purus + ut elit convallis eleifend. Fusce tincidunt, justo quis tempus + euismod, magna nulla viverra libero, sit amet lacinia odio diam id + risus. Ut varius viverra turpis. Morbi urna elit, imperdiet eu, + porta ac, pharetra sed, nisi. Etiam ante libero, ultrices ac, + faucibus ac, cursus sodales, nisl. Praesent nisl sem, fermentum eu, + consequat quis, varius interdum, nulla. Donec neque tortor, + sollicitudin sed, consequat nec, facilisis sit amet, orci. Aenean + ut eros sit amet ante pharetra interdum. +
          +
          +

          + Text after the widgets. +

          +
          + + + + +
          +
          +
          Introductory information spoken by screen reader if aria-describedby is + added to the declaration of dialog above with value equal to the id of the container element for this text. This technique + will work in Dojo 1.4.
          +
          + + +
          + + +
          +
          + + +
          + +
          +
          Introductory information spoken by screen reader if aria-describedby is + added to the declaration of dialog above with value equal to the id of the container element for this text. This technique + will work in Dojo 1.4.
          + + + + + + + + + + + + + + + + + +
          +
          +
          + + + + + +
          + + +
          + + +
          +
          + +
          + Best Pet + + - + + +
          +
          +
          + + +
          Show Self-Destruct Dialog (unfocusable div)
          + + | + + | + +
          +
          + This dialog has no close icon and the ESCAPE key won't close it. You need to use the buttons. +
          +
          + + +
          +
          + + | +
          +

          Editor 1

          +
          + first text +
          + +

          Editor 2

          +
          + second text +
          + +

          Editor 3

          +
          + third text +
          + +
          + +

          Simulated Editor with Dialog:

          +
          + +

          + Enter text then hit OK. + Focus will be shifted to "editor" below and text will be inserted. +

          + +
          + +
          +
          + +
          + + +

          (scroll down to see more links to click, for testing positioning / scroll handling)

          + +

          + Here's a form. Try clicking the programatic dialog link, then focusing on the form. + After the dialog closes focus should be returned to the form +

          + +
          + + +
          + +
          + + +
          + + +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +
          +
          + + +
          +
          +

          Mauris pharetra lorem sit amet sapien. Nulla libero metus, tristique + et, dignissim a, tempus et, metus. Ut libero. Vivamus tempus purus vel + ipsum. Quisque mauris urna, vestibulum commodo, rutrum vitae, ultrices + vitae, nisl. Class aptent taciti sociosqu ad litora torquent per + conubia nostra, per inceptos hymenaeos. Nulla id erat sit amet odio + luctus eleifend. Proin massa libero, ultricies non, tincidunt a, + vestibulum non, tellus. Nunc nunc purus, lobortis a, pulvinar at, + egestas a, mi. Cras adipiscing velit a mauris. Morbi felis. Etiam at + felis. Cras eget eros et justo mattis pulvinar. Nullam at justo id + risus porttitor dignissim. Vestibulum sed velit vel metus tincidunt + tempus. Nunc euismod nisl id dolor tristique tincidunt. Nullam placerat + turpis sed odio. Curabitur in est id nibh tempus ultrices. Aliquam + consectetuer dapibus eros. Aliquam nisl. +

          +
          [spacer]
          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +
          +
          + + +
          +
          +

          Mauris pharetra lorem sit amet sapien. Nulla libero metus, tristique + et, dignissim a, tempus et, metus. Ut libero. Vivamus tempus purus vel + ipsum. Quisque mauris urna, vestibulum commodo, rutrum vitae, ultrices + vitae, nisl. Class aptent taciti sociosqu ad litora torquent per + conubia nostra, per inceptos hymenaeos. Nulla id erat sit amet odio + luctus eleifend. Proin massa libero, ultricies non, tincidunt a, + vestibulum non, tellus. Nunc nunc purus, lobortis a, pulvinar at, + egestas a, mi. Cras adipiscing velit a mauris. Morbi felis. Etiam at + felis. Cras eget eros et justo mattis pulvinar. Nullam at justo id + risus porttitor dignissim. Vestibulum sed velit vel metus tincidunt + tempus. Nunc euismod nisl id dolor tristique tincidunt. Nullam placerat + turpis sed odio. Curabitur in est id nibh tempus ultrices. Aliquam + consectetuer dapibus eros. Aliquam nisl. +

          + +

          + | + + Show Dialog +

          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +

          Mauris pharetra lorem sit amet sapien. Nulla libero metus, tristique + et, dignissim a, tempus et, metus. Ut libero. Vivamus tempus purus vel + ipsum. Quisque mauris urna, vestibulum commodo, rutrum vitae, ultrices + vitae, nisl. Class aptent taciti sociosqu ad litora torquent per + conubia nostra, per inceptos hymenaeos. Nulla id erat sit amet odio + luctus eleifend. Proin massa libero, ultricies non, tincidunt a, + vestibulum non, tellus. Nunc nunc purus, lobortis a, pulvinar at, + egestas a, mi. Cras adipiscing velit a mauris. Morbi felis. Etiam at + felis. Cras eget eros et justo mattis pulvinar. Nullam at justo id + risus porttitor dignissim. Vestibulum sed velit vel metus tincidunt + tempus. Nunc euismod nisl id dolor tristique tincidunt. Nullam placerat + turpis sed odio. Curabitur in est id nibh tempus ultrices. Aliquam + consectetuer dapibus eros. Aliquam nisl. +

          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +

          Mauris pharetra lorem sit amet sapien. Nulla libero metus, tristique + et, dignissim a, tempus et, metus. Ut libero. Vivamus tempus purus vel + ipsum. Quisque mauris urna, vestibulum commodo, rutrum vitae, ultrices + vitae, nisl. Class aptent taciti sociosqu ad litora torquent per + conubia nostra, per inceptos hymenaeos. Nulla id erat sit amet odio + luctus eleifend. Proin massa libero, ultricies non, tincidunt a, + vestibulum non, tellus. Nunc nunc purus, lobortis a, pulvinar at, + egestas a, mi. Cras adipiscing velit a mauris. Morbi felis. Etiam at + felis. Cras eget eros et justo mattis pulvinar. Nullam at justo id + risus porttitor dignissim. Vestibulum sed velit vel metus tincidunt + tempus. Nunc euismod nisl id dolor tristique tincidunt. Nullam placerat + turpis sed odio. Curabitur in est id nibh tempus ultrices. Aliquam + consectetuer dapibus eros. Aliquam nisl. +

          + + + diff --git a/src/main/resources/static/dijit/tests/test_Dialog_focusDestroy.html b/src/main/resources/static/dijit/tests/test_Dialog_focusDestroy.html new file mode 100644 index 0000000000000000000000000000000000000000..7fa0d214829fbcd74242caed8bc147ddd3a563f4 --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_Dialog_focusDestroy.html @@ -0,0 +1,60 @@ + + + + + Dialog Widget Dojo Tests + + + + + + + + + + +

          Dijit layout.Dialog tests

          + +

          If you input this box, you can type. You should be able to type and use backspace/etc + when you destroy the visible dialog. refs #5351 +

          + + + + + + + diff --git a/src/main/resources/static/dijit/tests/test_Fieldset.html b/src/main/resources/static/dijit/tests/test_Fieldset.html new file mode 100644 index 0000000000000000000000000000000000000000..ef53e3c03e3dd138a3f65b7fb153b1ddfe7e1dff --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_Fieldset.html @@ -0,0 +1,35 @@ + + + + + Fieldset Widget Tests + + + + + + +

          Fieldset Test

          + +
          +
          + +
          +
          +
          + +
          + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/tests/test_InlineEditBox.html b/src/main/resources/static/dijit/tests/test_InlineEditBox.html new file mode 100644 index 0000000000000000000000000000000000000000..7f0246d5063f29dbc17e185dea041e918c446a2d --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_InlineEditBox.html @@ -0,0 +1,256 @@ + + + + + Inline Edit Box Test + + + + + + + + + +

          Dijit InlineEditBox Test

          + + + + + + + +

          Form Letter with blanks

          +
          +

          +

          + Dear , +

          +

          + Thank you for your recent order. + Please remit +  for + your purchase of +  deluxe +  on +  in +   + (). +

          +

          +

          + Sincerely, +

          + +
          +
          + +

          Form Letter with predefined values, and no auto-save

          +
          +

          + Bob Vance Refrigeration +

          +

          + Dear John, +

          +

          + Thank you for your recent order. + Please remit + $2,000 + for your purchase of + 3 + deluxe + refrigerators + on + + 01/05/2007 + in + + Pennsylvania +   + (United States of America). +

          +

          + We sincerely appreciate your business and hope we can do business again. +

          +

          + Sincerely, +

          + Bob Vance +
          +
          + + +

          Inline-block Text (of 400px width)

          +
          + The following section uses inline block text of 400px. + When clicking the editable text it should bring up an editor which is also 400px wide. +
          + (before plain inline)
          hello world
          (after plain inline) +
          + (before editable inline) +
          + hello world +
          + (after editable inline) +
          + +

          Pararagraph

          + (before plain paragraph) +

          + Aliquam vitae enim. Duis scelerisque metus auctor est venenatis +imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem +nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in +massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In +pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra +quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, +felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut +quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla +rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut +semper velit ante id metus. Praesent massa dolor, porttitor sed, +pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit +tortor pharetra congue. Suspendisse pulvinar. +

          + (before editable paragraph. the editable paragraph has Save/Cancel buttons when open.) +

          + Aliquam vitae enim. Duis scelerisque metus auctor est venenatis +imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem +nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in +massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In +pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra +quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, +felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut +quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla +rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut +semper velit ante id metus. Praesent massa dolor, porttitor sed, +pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit +tortor pharetra congue. Suspendisse pulvinar. +

          + These buttons will + / + + the InlineEditBox above. +
          + +

          Editor

          +
          + Aliquam vitae enim. Duis scelerisque metus auctor est venenatis +imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem +nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in +massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In +pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra +quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, +felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut +quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla +rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut +semper velit ante id metus. Praesent massa dolor, porttitor sed, +pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit +tortor pharetra congue. Suspendisse pulvinar. +
          +

          + Note: since the Editor may return a result containing one or more <p> nodes, + don't make the InlineEditBox itself a <p> because that would cause nested + <p>s, which is illegal, and messes up IE +

          + +

          FilteringSelect (no down arrow, and save/cancel buttons):

          + before + + Indiana + + + after +
          + +

          Programmatically created:

          + + +
          + +
          +

          Complex renderAsHtml="false"

          +
          + <B>not bold</B>&lt;input&gt; +
          +
          +

          Complex renderAsHtml="true"

          +
          + <B>not bold</B>bold&lt;input&gt; +
          + + diff --git a/src/main/resources/static/dijit/tests/test_KeyNavContainer.html b/src/main/resources/static/dijit/tests/test_KeyNavContainer.html new file mode 100644 index 0000000000000000000000000000000000000000..080378aaa7752906033d39d7e7fc161ff226be26 --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_KeyNavContainer.html @@ -0,0 +1,66 @@ + + + + + + + KeyNavContainer test + + + + + + +

          _KeyNavContainer Tests

          + + + +
          +
          Alabama
          +
          Alaska
          +
          Arizona
          +
          Arkansas
          +
          California
          +
          New Hampshire
          +
          New Jersey
          +
          New Mexico
          +
          New York
          +
          + + a11yclick events: 0 + + diff --git a/src/main/resources/static/dijit/tests/test_Menu.html b/src/main/resources/static/dijit/tests/test_Menu.html new file mode 100644 index 0000000000000000000000000000000000000000..9f15e7c8f06b5f9549e525398cd2e9dfdfa9192a --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_Menu.html @@ -0,0 +1,480 @@ + + + + + + + Menu System Test + + + + + + + + + + +
          +
          Context Menu
          +
          +
          Disabled Item
          +
          Cut
          +
          Copy
          +
          Paste
          +
          +
          + Enabled Submenu + +
          +
          + Disabled Submenu + +
          +
          + Different popup +
          +
          +
          +
          Checked
          +
          Not Checked
          +
          Checked Disabled
          +
          +
          + Bigger Submenu +
          +
          Item One
          +
          Item Two
          +
          Item Three
          +
          Item Four
          +
          Item Five
          +
          Item Six
          +
          Item Seven
          +
          Item Eight
          +
          Item Nine
          +
          Item Ten
          +
          +
          +
          + +
          +
          Left Click Menu
          +
          Enabled Item
          +
          Disabled Item
          +
          +
          Cut
          +
          Copy
          +
          Paste
          +
          +
          + Enabled Submenu +
          +
          Submenu Item One
          +
          Submenu Item Two
          +
          + Deeper Submenu +
          +
          Sub-sub-menu Item One
          +
          Sub-sub-menu Item Two
          +
          +
          +
          +
          +
          + Disabled Submenu +
          +
          Submenu Item One
          +
          Submenu Item Two
          +
          +
          +
          + Different popup +
          +
          +
          + + + + + + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/test_Menu_iframe.html b/src/main/resources/static/dijit/tests/test_Menu_iframe.html new file mode 100644 index 0000000000000000000000000000000000000000..5ad0c637ca0c5debaf83b34f076284a2dfeea4f7 --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_Menu_iframe.html @@ -0,0 +1,44 @@ + + + + + Menu iframe test + + + + + + +
          filler div to offset iframe position (for testing)
          +
          + This is a position:relative div containing an iframe. + + End of div. +
          +
          + + + + + + diff --git a/src/main/resources/static/dijit/tests/test_TitlePane.html b/src/main/resources/static/dijit/tests/test_TitlePane.html new file mode 100644 index 0000000000000000000000000000000000000000..b809ef6dfdc44cb93ca9dd7ec8b1cf3399145f37 --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_TitlePane.html @@ -0,0 +1,188 @@ + + + + + TitlePane Test + + + + + + +

          Dijit TitlePane Test

          + + + +

          Test #1: plain title pane, width=300px

          +
          + Lorem Ipsum Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque + iaculis, nulla id semper faucibus, pede tellus nonummy magna, vitae adipiscing + orci arcu ut augue. Nunc condimentum, magna a vestibulum convallis, libero purus + pulvinar orci, sed vestibulum urna sem ut pede. More Ipsum... + Sed sollicitudin suscipit risus. Nam ullamcorper. Sed nisl lectus, pellentesque + nec, malesuada eget, ornare a, libero. Lorem ipsum dolor sit amet, + consectetuer adipiscing elit. +
          + + +

          Test #2: title pane with form, width=300px

          + +
          +
          +
          +
          +
          +
          +
          +
          + +

          Test #3: initially closed pane

          +
          +
          +
          +
          +
          +
          + +

          And a TabContainer, to make sure it lays out correctly:

          +
          +
          +
          +
          +
          + + +

          Test #4: title pane with href (initially closed)

          +

          The pane should open to "Loading..." message and then 3 seconds later it should slide open more to show loaded data.

          +
          + Loading... +
          + +

          Test #5: title pane with href (initially closed)

          +

          The pane should start to open to "Loading..." but halfway through href data will be loaded, and it should expand correctly.

          +
          + Loading... +
          + +

          Test #6: nested title pane

          +
          +

          This is a title pane, containing another title pane ... +

          Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque iaculis, nulla id semper faucibus, pede tellus nonummy magna, vitae adipiscing orci arcu ut augue. Nunc condimentum, magna a vestibulum convallis, libero purus pulvinar orci, sed vestibulum urna sem ut pede. +More Ipsum... + +

          +

          And this is the inner title pane... +

          Sed sollicitudin suscipit risus. Nam ullamcorper. Sed nisl lectus, pellentesque nec, malesuada eget, ornare a, libero. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. +

          + +

          And this is the closing line for the outer title pane. +

          + +

          Test #7: subclassed title pane (only arrow is selectable and focusable)

          +
          + Lorem Ipsum Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque + iaculis, nulla id semper faucibus, pede tellus nonummy magna, vitae adipiscing + orci arcu ut augue. Nunc condimentum, magna a vestibulum convallis, libero purus + pulvinar orci, sed vestibulum urna sem ut pede. More Ipsum... + Sed sollicitudin suscipit risus. Nam ullamcorper. Sed nisl lectus, pellentesque + nec, malesuada eget, ornare a, libero. Lorem ipsum dolor sit amet, + consectetuer adipiscing elit. +
          + + + + + +
          + Here's some text below the title panes (to make sure that closing a title pane releases the space that the content was taking up) +
          +

          Test #8: locked open title pane

          +
          + Lorem Ipsum Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque + iaculis, nulla id semper faucibus, pede tellus nonummy magna, vitae adipiscing + orci arcu ut augue. Nunc condimentum, magna a vestibulum convallis, libero purus + pulvinar orci, sed vestibulum urna sem ut pede. More Ipsum... + Sed sollicitudin suscipit risus. Nam ullamcorper. Sed nisl lectus, pellentesque + nec, malesuada eget, ornare a, libero. Lorem ipsum dolor sit amet, + consectetuer adipiscing elit. +
          + +

          Test #9: TitlePane in AccordionContainer

          +
          +
          + Here's a closed title pane: +
          +
          + and an open one: +
          +
          +
          +
          + Here's a closed title pane: +
          +
          + and an open one: +
          +
          +
          +
          +
          + hello world, my height should match this text, not the height of the containing ContentPane +
          +
          +
          + + + diff --git a/src/main/resources/static/dijit/tests/test_Toolbar.html b/src/main/resources/static/dijit/tests/test_Toolbar.html new file mode 100644 index 0000000000000000000000000000000000000000..5ca886140eb25a7e3ea793e397b2ab197deb0127 --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_Toolbar.html @@ -0,0 +1,152 @@ + + + + + Dojo Toolbar Widget Test + + + + + + +

          Toolbar test

          + + + ${label}: + + +

          Toolbar from markup

          + + +
          Cut
          Copy
          Bold
          Italic
          + +
          + TooltipDialog +
          + + + + + + + + + + + + +
          +
          +
          + ColorPalette +
          +
          + Foreground +
          +
          + Menu +
          +
          Save
          +
          Save As
          +
          +
          + Menu2 +
          +
          Save
          +
          Save As
          +
          +
          Ordered list
          + + +

          Toolbar from script with icons only

          +
          + +

          Toolbar from script with text and icons

          +
          + +

          Toolbar from script with text only

          +
          + + +

          + + diff --git a/src/main/resources/static/dijit/tests/test_Tooltip.html b/src/main/resources/static/dijit/tests/test_Tooltip.html new file mode 100644 index 0000000000000000000000000000000000000000..0ada689d329e26e5bf7d27c61872afa284924ece --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_Tooltip.html @@ -0,0 +1,271 @@ + + + + + Dojo Tooltip Widget Test + + + + + + + + + +

          Tooltip test

          + +

          Mouse-over or focus the items below to test tooltips.

          + + + + + + + + + + + + + + + + tooltip for cut + tooltip for copy + tooltip for paste + +
          + hover me for tooltip + tooltip on TitlePane span +
          + + +
          + focusable text + + + rich formatting + ! + + +
          + plain text (not focusable) + + keyboard users can not access this tooltip + + anchor + tooltip on a link +

          + + this text has a programmatically created tooltip +
          + + + tooltip on a button + tooltip from "button w/tooltip". + + + Test tooltip on right aligned element. Tooltip should flow to the left --> + + + + tooltip on a select
          + two line tooltip. +
          +
          + +

          + +
          +
          +
          +
          +
          +
          +
          +
          +
          + +
          + s1 text


          + s2 text


          + s3 text


          + s4 text


          + s5 text


          +
          + + + + tooltip for #1
          + long long long long long long long long long long long text
          + make sure that this works properly with a really narrow window +
          + + tooltip for #2 + tooltip for #3 + tooltip for #4 + tooltip for #5 + tooltip for #6 + + s1 tooltip + s2 tooltip + s3 tooltip + s4 tooltip + s5 tooltip + +

          One Tooltip for multiple connect nodes

          + multi tooltip + multi1
          multi2 + +

          One Tooltip for multiple connect nodes w/ dojoType

          + + multi1
          multi2 + + +

          Dynamic target tooltip

          +
          + + + t1 text
          + + + t2 text
          + + + t3 text
          + + + t4 text
          + + + t5 text
          +
          +
          + Tooltip hidden (initial) + + Dynamic target tooltip + +

          Nested div test:

          +
          + +
          + Mouse over the inner blue div should show the tooltip on this outer yellow div. +
          + inner blue div +
          + Likewise, focusing the input should put the tooltip on the outer yellow div +
          + +
          + + Tooltip on yellow outer div + +
          + +

          Delegation test:

          +

          Tooltip should appear for first three rows of the table, customized per row.

          + + + This text will never appear; instead getContent() will run. + + + + + + + +
          row1
          row2
          row3
          row4
          row5
          + + + diff --git a/src/main/resources/static/dijit/tests/test_TooltipDialog.html b/src/main/resources/static/dijit/tests/test_TooltipDialog.html new file mode 100644 index 0000000000000000000000000000000000000000..84b2b0548311d233c3937db24d5ac351319db5e6 --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_TooltipDialog.html @@ -0,0 +1,482 @@ + + + + + TooltipDialog Widget Tests + + + + + + + + + +

          dijit.TooltipDialog tests

          +
          + Show Tooltip Dialog +
          + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
          inline
          + +
          + +
          + +
          +
          Note: This tooltip dialog has a bunch of nested drop downs for testing keyboard and click handling
          +
          +
          | + +
          + Show Tooltip Dialog with TabContainer +
          +
          +
          +

          + This is the first tab. +

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +
          +
          +

          + This is the second tab. +

          +

          + ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +
          +
          +
          +
          | + +
          + Test slowloading HREF Tooltip Dialog +
          +
          | + +
          + What is this? +
          +
          [close] + +
          +
          + Important! This is a tooltip dialog with just text! It could be used + to provide help. It will stay open until the user explicitly closes it via pressing escape, clicking [close] or by + clicking somewhere else on the page. To make certain a screen reader will speak this text (at least in Firefox 3), + the div containing the text was given an + ARIA role of alert. In the future the tooltip + dialog may be given a role of alertdialog. +
          + +
          +
          + + + + + +
          + TooltipDialog w/ActionBar +
          +
          + + + +
          +
          + + +
          +
          +
          +
          + +
          + Centered TooltipDialog +
          +
          + + + +
          +
          + + +
          +
          +
          +
          + + +

          (scroll down to see more links to click, for testing positioning / scroll handling)

          + +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +
          +
          + +
          +
          +

          Mauris pharetra lorem sit amet sapien. Nulla libero metus, tristique + et, dignissim a, tempus et, metus. Ut libero. Vivamus tempus purus vel + ipsum. Quisque mauris urna, vestibulum commodo, rutrum vitae, ultrices + vitae, nisl. Class aptent taciti sociosqu ad litora torquent per + conubia nostra, per inceptos hymenaeos. Nulla id erat sit amet odio + luctus eleifend. Proin massa libero, ultricies non, tincidunt a, + vestibulum non, tellus. Nunc nunc purus, lobortis a, pulvinar at, + egestas a, mi. Cras adipiscing velit a mauris. Morbi felis. Etiam at + felis. Cras eget eros et justo mattis pulvinar. Nullam at justo id + risus porttitor dignissim. Vestibulum sed velit vel metus tincidunt + tempus. Nunc euismod nisl id dolor tristique tincidunt. Nullam placerat + turpis sed odio. Curabitur in est id nibh tempus ultrices. Aliquam + consectetuer dapibus eros. Aliquam nisl. +

          +
          + dropdown at right +
          +
          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis
          +
          +
          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          + +
          + Show Tooltip Dialog pointing upwards, with links +
          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +
          +
          + (will go up if there isn't enough space on the bottom of the screen) + +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +
          +
          + +
          +
          +

          Mauris pharetra lorem sit amet sapien. Nulla libero metus, tristique + et, dignissim a, tempus et, metus. Ut libero. Vivamus tempus purus vel + ipsum. Quisque mauris urna, vestibulum commodo, rutrum vitae, ultrices + vitae, nisl. Class aptent taciti sociosqu ad litora torquent per + conubia nostra, per inceptos hymenaeos. Nulla id erat sit amet odio + luctus eleifend. Proin massa libero, ultricies non, tincidunt a, + vestibulum non, tellus. Nunc nunc purus, lobortis a, pulvinar at, + egestas a, mi. Cras adipiscing velit a mauris. Morbi felis. Etiam at + felis. Cras eget eros et justo mattis pulvinar. Nullam at justo id + risus porttitor dignissim. Vestibulum sed velit vel metus tincidunt + tempus. Nunc euismod nisl id dolor tristique tincidunt. Nullam placerat + turpis sed odio. Curabitur in est id nibh tempus ultrices. Aliquam + consectetuer dapibus eros. Aliquam nisl. +

          +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +

          Mauris pharetra lorem sit amet sapien. Nulla libero metus, tristique + et, dignissim a, tempus et, metus. Ut libero. Vivamus tempus purus vel + ipsum. Quisque mauris urna, vestibulum commodo, rutrum vitae, ultrices + vitae, nisl. Class aptent taciti sociosqu ad litora torquent per + conubia nostra, per inceptos hymenaeos. Nulla id erat sit amet odio + luctus eleifend. Proin massa libero, ultricies non, tincidunt a, + vestibulum non, tellus. Nunc nunc purus, lobortis a, pulvinar at, + egestas a, mi. Cras adipiscing velit a mauris. Morbi felis. Etiam at + felis. Cras eget eros et justo mattis pulvinar. Nullam at justo id + risus porttitor dignissim. Vestibulum sed velit vel metus tincidunt + tempus. Nunc euismod nisl id dolor tristique tincidunt. Nullam placerat + turpis sed odio. Curabitur in est id nibh tempus ultrices. Aliquam + consectetuer dapibus eros. Aliquam nisl. +

          + +

          + Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean + semper sagittis velit. Cras in mi. Duis porta mauris ut ligula. Proin + porta rutrum lacus. Etiam consequat scelerisque quam. Nulla facilisi. + Maecenas luctus venenatis nulla. In sit amet dui non mi semper iaculis. + Sed molestie tortor at ipsum. Morbi dictum rutrum magna. Sed vitae + risus. +

          +

          Aliquam vitae enim. Duis scelerisque metus auctor est venenatis + imperdiet. Fusce dignissim porta augue. Nulla vestibulum. Integer lorem + nunc, ullamcorper a, commodo ac, malesuada sed, dolor. Aenean id mi in + massa bibendum suscipit. Integer eros. Nullam suscipit mauris. In + pellentesque. Mauris ipsum est, pharetra semper, pharetra in, viverra + quis, tellus. Etiam purus. Quisque egestas, tortor ac cursus lacinia, + felis leo adipiscing nisi, et rhoncus elit dolor eget eros. Fusce ut + quam. Suspendisse eleifend leo vitae ligula. Nulla facilisi. Nulla + rutrum, erat vitae lacinia dictum, pede purus imperdiet lacus, ut + semper velit ante id metus. Praesent massa dolor, porttitor sed, + pulvinar in, consequat ut, leo. Nullam nec est. Aenean id risus blandit + tortor pharetra congue. Suspendisse pulvinar. +

          +

          Vestibulum convallis eros ac justo. Proin dolor. Etiam aliquam. Nam + ornare elit vel augue. Suspendisse potenti. Etiam sed mauris eu neque + nonummy mollis. Vestibulum vel purus ac pede semper accumsan. Vivamus + lobortis, sem vitae nonummy lacinia, nisl est gravida magna, non cursus + est quam sed urna. Phasellus adipiscing justo in ipsum. Duis sagittis + dolor sit amet magna. Suspendisse suscipit, neque eu dictum auctor, + nisi augue tincidunt arcu, non lacinia magna purus nec magna. Praesent + pretium sollicitudin sapien. Suspendisse imperdiet. Class aptent taciti + sociosqu ad litora torquent per conubia nostra, per inceptos + hymenaeos. +

          +

          Mauris pharetra lorem sit amet sapien. Nulla libero metus, tristique + et, dignissim a, tempus et, metus. Ut libero. Vivamus tempus purus vel + ipsum. Quisque mauris urna, vestibulum commodo, rutrum vitae, ultrices + vitae, nisl. Class aptent taciti sociosqu ad litora torquent per + conubia nostra, per inceptos hymenaeos. Nulla id erat sit amet odio + luctus eleifend. Proin massa libero, ultricies non, tincidunt a, + vestibulum non, tellus. Nunc nunc purus, lobortis a, pulvinar at, + egestas a, mi. Cras adipiscing velit a mauris. Morbi felis. Etiam at + felis. Cras eget eros et justo mattis pulvinar. Nullam at justo id + risus porttitor dignissim. Vestibulum sed velit vel metus tincidunt + tempus. Nunc euismod nisl id dolor tristique tincidunt. Nullam placerat + turpis sed odio. Curabitur in est id nibh tempus ultrices. Aliquam + consectetuer dapibus eros. Aliquam nisl. +

          + + + diff --git a/src/main/resources/static/dijit/tests/test_UIWindowIssue_child.html b/src/main/resources/static/dijit/tests/test_UIWindowIssue_child.html new file mode 100644 index 0000000000000000000000000000000000000000..a4b5dd9034c5d180e3400afd2049415ed1646251 --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_UIWindowIssue_child.html @@ -0,0 +1,47 @@ + + + + + Focus Issue Child + + + + + + this frame is for loading script only + + diff --git a/src/main/resources/static/dijit/tests/test_UIWindowIssue_main.html b/src/main/resources/static/dijit/tests/test_UIWindowIssue_main.html new file mode 100644 index 0000000000000000000000000000000000000000..111302aa1350d4271fe334dc089949c9f467acdf --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_UIWindowIssue_main.html @@ -0,0 +1,75 @@ + + + + + Focus Issue + + + + + + + +

          To test: +

            +
          • Right mouse click anywhere on the page to see the context menu
          • +
          • Mouse-over "Enabled Submenu"
          • +
          • Make sure the submenu is positioned properly
          • +
          +

          + + diff --git a/src/main/resources/static/dijit/tests/test_bgIframe.html b/src/main/resources/static/dijit/tests/test_bgIframe.html new file mode 100644 index 0000000000000000000000000000000000000000..3398a00bab785a1ddfd3c7f4b9a6ca845f50a118 --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_bgIframe.html @@ -0,0 +1,132 @@ + + + + + + + Dojo Toolkit - Background Iframe test + + + + + + + + + This is one tooltip. + + + This is another tooltip. A little longer... + + + This is one tooltip. + + + This is another tooltip. A little longer... + + + + + + + + + + + +
          + + +
          +
          + This <select> will disappear on IE6 + when the dialog is displayed. + But the dialog's iframe shouldn't make it disappear because they shouldn't overlap. +
          + +

          + +
          Mouse over this to see the tooltip
          +
          +
          Mouse over this to see a different tooltip
          +
          + +
          + + + + + + + + + +
          + + +
          +
          + This select will disappear on IE6 + when the dialog is displayed. + But the dialog's iframe shouldn't make it disappear because they shouldn't overlap. +
          + +

          + +
          Mouse over this to see the tooltip
          +
          +
          Mouse over this to see a different tooltip
          +
          + +
          +
          + Hello! +
          + + diff --git a/src/main/resources/static/dijit/tests/test_typematic.html b/src/main/resources/static/dijit/tests/test_typematic.html new file mode 100644 index 0000000000000000000000000000000000000000..31c7e00ecb2e4c03d3ac859ea82e04637fdb77e3 --- /dev/null +++ b/src/main/resources/static/dijit/tests/test_typematic.html @@ -0,0 +1,68 @@ + + + + Typematic Test + + + + + + + +

          Dijit typematic tests

          +Press and hold the ctrl+F11 keys (ALT optional, but not Shift or Meta) to see a's typed (constant rate) in the +input field,
          +or left-mouse click the button and hold down to see b's typed (increasing rate) in the input field.
          + + + + + diff --git a/src/main/resources/static/dijit/tests/tree/CustomLabel.html b/src/main/resources/static/dijit/tests/tree/CustomLabel.html new file mode 100644 index 0000000000000000000000000000000000000000..e3ffd440bf9ba91a5518098b117a8bde835bdad5 --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/CustomLabel.html @@ -0,0 +1,82 @@ + + + + + Dijit Tree Custom Label Test + + + + + + + +

          Dijit Tree Custom Label Test

          + +
          + +

          Standard label (state names)

          +
          +
          + +

          LabelAttr (state abbreviation)

          +
          +
          + +

          Custom label via callback

          +
          + +
          +
          + + + diff --git a/src/main/resources/static/dijit/tests/tree/Tree_ForestStoreModel.html b/src/main/resources/static/dijit/tests/tree/Tree_ForestStoreModel.html new file mode 100644 index 0000000000000000000000000000000000000000..79f654e242a9b1f3ae5bd559b59963a2e82087d0 --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/Tree_ForestStoreModel.html @@ -0,0 +1,400 @@ + + + + + + + dijit.Tree against dijit.tree.ForestStoreModel Automated Tests + + + + + + + + + + +

          Dijit.Tree / dijit.tree.ForestStoreModel Automated Tests

          +
          +
          + + diff --git a/src/main/resources/static/dijit/tests/tree/Tree_ObjectStoreModel.html b/src/main/resources/static/dijit/tests/tree/Tree_ObjectStoreModel.html new file mode 100644 index 0000000000000000000000000000000000000000..9693c167fd85f3154b1ac42b13c690193f1df2d2 --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/Tree_ObjectStoreModel.html @@ -0,0 +1,1304 @@ + + + + + dijit.Tree / dijit.tree.ObjectStoreModel automated test + + + + + + + + +

          dijit/Tree using dijit/tree/ObjectStore (against dojo/store) Automated Test

          + + + diff --git a/src/main/resources/static/dijit/tests/tree/Tree_with_JRS.html b/src/main/resources/static/dijit/tests/tree/Tree_with_JRS.html new file mode 100644 index 0000000000000000000000000000000000000000..4e9de51bc460c8c7c0b4b6e3fd0eb2f31feec265 --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/Tree_with_JRS.html @@ -0,0 +1,96 @@ + + + + dijit/Tree with dojox/data/JsonRestStore automated test + + + + + + + +

          dijit/Tree with dojox/data/JsonRestStore automated test

          +
          +
          + + diff --git a/src/main/resources/static/dijit/tests/tree/module.js b/src/main/resources/static/dijit/tests/tree/module.js new file mode 100644 index 0000000000000000000000000000000000000000..01db07b3352235e67c376f714d4adaeeb2d5d8da --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/module.js @@ -0,0 +1,22 @@ +define(["doh/main", "require", "dojo/sniff"], function(doh, require, has){ + + var test_robot = has("trident") || has("ff") || has("chrome") < 45; + + doh.register("tree.CustomLabel", require.toUrl("./CustomLabel.html"), 999999); + doh.register("tree.Tree_ForestStoreModel", require.toUrl("./Tree_ForestStoreModel.html"), 999999); + doh.register("tree.Tree_with_JRS", require.toUrl("./Tree_with_JRS.html"), 999999); + doh.register("tree.Tree_ObjectStoreModel", require.toUrl("./Tree_ObjectStoreModel.html"), 999999); + + if(test_robot){ + doh.register("tree.robot.Tree_a11y", require.toUrl("./robot/Tree_a11y.html"), 999999); + doh.register("tree.robot.Tree_mouse", require.toUrl("./robot/Tree_mouse.html"), 999999); + doh.register("tree.robot.Tree_Custom_TreeNode", require.toUrl("./robot/Tree_Custom_TreeNode.html"), 999999); + doh.register("tree.robot.Tree_DnD", require.toUrl("./robot/Tree_dnd.html"), 999999); + doh.register("tree.robot.Tree_selector", require.toUrl("./robot/Tree_selector.html"), 999999); + doh.register("tree.robot.Tree_selector_only", + require.toUrl("./robot/Tree_selector.html?controller=selector"), 999999); + doh.register("tree/robot.Tree_DnD_multiParent", require.toUrl("./robot/Tree_dnd_multiParent.html"), 999999); + doh.register("tree.robot.Tree_v1", require.toUrl("./robot/Tree_v1.html"), 999999); + } + +}); diff --git a/src/main/resources/static/dijit/tests/tree/node1.1 b/src/main/resources/static/dijit/tests/tree/node1.1 new file mode 100644 index 0000000000000000000000000000000000000000..21d19236a91b2b23409800cbb0b4344ec1bb452b --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/node1.1 @@ -0,0 +1,4 @@ +{ id: 'node1.1',name:'node1.1', someProperty:'somePropertyA1', children: [ + { $ref: 'node1.1.1', name: 'node1.1.1'}, + { $ref: 'node1.1.2', name: 'node1.1.2'} +]} diff --git a/src/main/resources/static/dijit/tests/tree/node1.2 b/src/main/resources/static/dijit/tests/tree/node1.2 new file mode 100644 index 0000000000000000000000000000000000000000..b221fabb3aa949ce882f4f3e6c3525d6954ed5de --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/node1.2 @@ -0,0 +1 @@ +{ id: 'node1.2',name:'node1.2', someProperty:'somePropertyA2'} diff --git a/src/main/resources/static/dijit/tests/tree/places.json b/src/main/resources/static/dijit/tests/tree/places.json new file mode 100644 index 0000000000000000000000000000000000000000..064a4e5c46cd22ffb15da0ec365ee29a1e31bd82 --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/places.json @@ -0,0 +1,29 @@ +{ + "identifier": "id", + "label": "name", + "items": [ + { "id": "root", "children": [ + {"_reference": "h0"}, + {"_reference": "h1"}, + {"_reference": "h2"}, + {"_reference": "h3"}, + {"_reference": "h4"} ]}, + { "id": "h0", "name":"South Africa", "type": "header", "children":[ {"_reference": "p0"}] }, + { "id": "h1", "name":"Ireland", "type": "header", "children":[ {"_reference": "p1"}, {"_reference": "p2"}] }, + { "id": "h2", "name":"France", "type": "header", "children":[ {"_reference": "p3"}, {"_reference": "p4"}] }, + { "id": "h3", "name":"Canada", "type": "header", + "children":[ {"_reference": "p5"}, {"_reference": "p6"}, {"_reference": "p7"}, {"_reference": "p8"} ] }, + { "id": "h4", "name":"Korea", "type": "header", "children":[ {"_reference": "p9"}] }, + + { "id": "p0", "name":"Joburg", "type": "place"}, + { "id": "p1", "name":"Knocknahilan", "type": "place" }, + { "id": "p2", "name":"Kinsale", "type": "place" }, + { "id": "p3", "name":"Lyon", "type": "place" }, + { "id": "p4", "name":"Nice", "type": "place" }, + { "id": "p5", "name":"Toronto", "type": "place"}, + { "id": "p6", "name":"Hudson Bay", "type": "place"}, + { "id": "p7", "name":"Quebec", "type": "place" }, + { "id": "p8", "name":"Polar Bear County", "type": "place" }, + { "id": "p9", "name":"Jeonju", "type": "place" } + ] +} diff --git a/src/main/resources/static/dijit/tests/tree/robot/Tree_Custom_TreeNode.html b/src/main/resources/static/dijit/tests/tree/robot/Tree_Custom_TreeNode.html new file mode 100644 index 0000000000000000000000000000000000000000..7b440d50b9a16902711a5893cb73b231be53e1bb --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/robot/Tree_Custom_TreeNode.html @@ -0,0 +1,64 @@ + + + + robot Custom TreeNode Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/tree/robot/Tree_a11y.html b/src/main/resources/static/dijit/tests/tree/robot/Tree_a11y.html new file mode 100644 index 0000000000000000000000000000000000000000..92d148a177b6341b19ea39bc1f728e7c863a1e54 --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/robot/Tree_a11y.html @@ -0,0 +1,792 @@ + + + + robot Tree A11y Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/tree/robot/Tree_dnd.html b/src/main/resources/static/dijit/tests/tree/robot/Tree_dnd.html new file mode 100644 index 0000000000000000000000000000000000000000..15c8eb47d1dd3bffeb4a6a86e5d8dd9a5b58cdd8 --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/robot/Tree_dnd.html @@ -0,0 +1,783 @@ + + + + robot Tree DnD Test + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/tree/robot/Tree_dnd.js b/src/main/resources/static/dijit/tests/tree/robot/Tree_dnd.js new file mode 100644 index 0000000000000000000000000000000000000000..a238beddfffac041634866bcbf4a61c09123d7e9 --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/robot/Tree_dnd.js @@ -0,0 +1,130 @@ +/* + * Helper functions for Tree_dnd.html and Tree_dnd_multiParent.html tests + */ + +define([ + "doh/runner", "dojo/robotx", + "dojo/_base/array", "dojo/dnd/autoscroll", "dojo/dom", "dojo/dom-geometry", "dojo/query", "dojo/_base/window", + "dijit/tests/helpers" +], function(doh, robot, array, autoscroll, dom, domGeom, query, win, helpers){ + + var exports = { + setup: function setup(){ + doh.register("setup screen", function(){ + // Hide boilerplate text so it's easier to drag on small screen + query("h1,h2,p", robot.doc).style("display", "none"); + + // Disable auto-scrolling because otherwise the viewport scrolls as robot.mouseMoveAt() + // moves the mouse, literally making the the drop target a moving target + // (and mouseMoveAt() doesn't take this possibility into account). + autoscroll.autoScrollNodes = function(){}; + + // Scroll viewport to (try to) make sure that both tree and drag-source + // are simultaneously in view. + var scroll = domGeom.position(dom.byId("1001", robot.doc)).y; + win.body(robot.doc).parentNode.scrollTop = scroll; // works on FF + win.body(robot.doc).scrollTop = scroll; // works on safari + }); + + // Wait for trees to load + doh.register("wait for load", { + name: "wait for load", + timeout: 10000, + runTest: helpers.waitForLoad + }); + doh.register("setup vars", function(){ + registry = robot.window.require("dijit/registry"); + }); + }, + + findTreeNode: function findTreeNode(/*String*/ treeId, /*String*/ label){ + // summary: + // Find the TreeNode with the specified label in the given tree. + // Assumes that there's only one TreeNode w/that label (i.e. it + // breaks if certain items have multiple parents and appear in the + // tree multiple times) + var nodes = query(".dijitTreeLabel", dom.byId(treeId, robot.doc)); + for(var i=0; i + + + robot Tree DnD Multi-parent Test + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/tree/robot/Tree_mouse.html b/src/main/resources/static/dijit/tests/tree/robot/Tree_mouse.html new file mode 100644 index 0000000000000000000000000000000000000000..677fa04f8fe3e3c0152d113d105bc069971c965c --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/robot/Tree_mouse.html @@ -0,0 +1,230 @@ + + + + robot Tree Mouse Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/tree/robot/Tree_selector.html b/src/main/resources/static/dijit/tests/tree/robot/Tree_selector.html new file mode 100644 index 0000000000000000000000000000000000000000..179aa63c3c7b644e4a502d0a4ca29cd6da745ec0 --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/robot/Tree_selector.html @@ -0,0 +1,261 @@ + + + + robot Tree selector Test + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/tree/robot/Tree_v1.html b/src/main/resources/static/dijit/tests/tree/robot/Tree_v1.html new file mode 100644 index 0000000000000000000000000000000000000000..07d97173312b973852b8661edd93d08a571ab358 --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/robot/Tree_v1.html @@ -0,0 +1,183 @@ + + + + doh.robot Tree_v1 Test + + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/tree/runTests.html b/src/main/resources/static/dijit/tests/tree/runTests.html new file mode 100644 index 0000000000000000000000000000000000000000..5ecdbb1c05ee6f9290ad751cb8b9b851b2e7ce9e --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/runTests.html @@ -0,0 +1,9 @@ + + + + Dijit Unit Test Runner + + + Redirecting to D.O.H runner. + + diff --git a/src/main/resources/static/dijit/tests/tree/test_Custom_TreeNode.html b/src/main/resources/static/dijit/tests/tree/test_Custom_TreeNode.html new file mode 100644 index 0000000000000000000000000000000000000000..452a4e0a0a441a4e2c893c25d4d569434813d55f --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/test_Custom_TreeNode.html @@ -0,0 +1,95 @@ + + + + Custom TreeNode Test + + + + + + + +

          Please expand Continent node

          +
          +
          + Footer is here + + + diff --git a/src/main/resources/static/dijit/tests/tree/test_Tree.html b/src/main/resources/static/dijit/tests/tree/test_Tree.html new file mode 100644 index 0000000000000000000000000000000000000000..3b878a96504c1e59f50e4099f7a252842b9c0a3b --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/test_Tree.html @@ -0,0 +1,175 @@ + + + + + Dijit Tree Test + + + + + + + + + + +

          Dijit Tree Test

          + +
          +
          +
          + +

          Tree with hardcoded root node (not corresponding to any item in the store)

          +

          + Clicking a folder node will open/close it (openOnclick==true), + and clicking a leaf node will log a message to the console. +

          + +
          + + + + +
          + + + +

          A rootless tree (no "continents" node) with context menus, and custom icons

          + + +
          + + +
          + +
            +
          • + + Click Me +
          • +
          + + + + +

          Double click, expand on load, direct style setting, tooltip test tree

          +

          + Double-Clicking a folder node will open/close it (openOnDblClick==true), + and clicking or Double Clicking a leaf node will log a message to the console. +

          + +
          + + + + + +
          + +

          Tree w/horizontal scroll

          +

          + For checking that selection and highlighting effect goes all the way to the right. +

          +

          + Expand North America and check highlighting for United States, plus shorter labels. + Then collapse North America and make sure horizontal scrollbar disappears. +

          +

          + Also check whether the Tree's initial display is correct. + Since the Tree persists, try refreshing the page when the tree is in an open state, and when it's in a closed + state. +

          +
          + +
          + + + + + + + + diff --git a/src/main/resources/static/dijit/tests/tree/test_Tree_DnD.html b/src/main/resources/static/dijit/tests/tree/test_Tree_DnD.html new file mode 100644 index 0000000000000000000000000000000000000000..aacd21e786928673733ea3bf27a95f54831b82e9 --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/test_Tree_DnD.html @@ -0,0 +1,205 @@ + + + + + Dijit Tree Test + + + + + + + + + + + +

          Dijit Tree Test - Drag And Drop Support

          + +
          + +

          Items:

          +

          List of Items to be categorized

          +

          +
          Apple
          +
          Orange
          +
          Banana
          +
          Tomato
          +
          Pepper
          +
          Wheat
          +
          Corn
          +
          Spinach
          +
          Cucumber
          +
          Carrot
          +
          Potato
          +
          Grape
          +
          Lemon
          +
          Lettuce
          +
          Peanut
          +
          + +

          Collection Count Summary

          +

          + You can't drop items onto this tree, but you can reorder categories. The between threshold + is set to 5, so if you are near the top or bottom of a node the drop will be above or below it. +

          +
          + +

          Custom

          +

          Should add this category to the store. The second parameter is the value for numberOfItems.

          +
          +
          Add Category
          +
          +
          + +

          Collection

          +

          + Drop items from table on left onto this tree, only on to categories or between other items; should fail to let you drop on other items. + Can also move items within this tree. The drag threshold is set to 8, between threshold is set to 5, so you have a few pixels + of buffer before drag operations start. +

          +
          +
          + + + diff --git a/src/main/resources/static/dijit/tests/tree/test_Tree_v1.html b/src/main/resources/static/dijit/tests/tree/test_Tree_v1.html new file mode 100644 index 0000000000000000000000000000000000000000..62b1322b9b8a98c2d2d04d8d27d7e91ef11cf203 --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/test_Tree_v1.html @@ -0,0 +1,69 @@ + + + + + Dijit Tree V1 API Test + + + + + + + + + + + + + + + + +

          Dijit Tree V1 API Test

          +

          + This file is for testing the old Tree API's, where the store is specified directly + rather than specifying a model which connects to a store. +

          +
          + +

          Tree with hardcoded root node (not corresponding to any item in the store)

          +

          Clicking a folder node will open/close it (openOnclick==true), and clicking a leaf node will change the display name of the leaf node.

          +
          + +
          + + + +

          A rootless tree (no "continents" node) with custom icons

          + +
          + + +
          + + + diff --git a/src/main/resources/static/dijit/tests/tree/treeTestRoot b/src/main/resources/static/dijit/tests/tree/treeTestRoot new file mode 100644 index 0000000000000000000000000000000000000000..4a9adf10818c282fd829623904433356b2f4451b --- /dev/null +++ b/src/main/resources/static/dijit/tests/tree/treeTestRoot @@ -0,0 +1,10 @@ +[ + { id: 'node1', name:'node1', someProperty:'somePropertyA', children:[ + { $ref: 'node1.1', name: 'node1.1', children: true}, + { $ref: 'node1.2', name: 'node1.2'} + ]}, + { id: 'node2', name:'node2', someProperty:'somePropertyB'}, + { id: 'node3', name:'node3', someProperty:'somePropertyC'}, + { id: 'node4', name:'node4', someProperty:'somePropertyA'}, + { id: 'node5', name:'node5', someProperty:'somePropertyB'} +] diff --git a/src/main/resources/static/dijit/themes/a11y/README.txt b/src/main/resources/static/dijit/themes/a11y/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..a80935429ecc4312dc9a46447c3a10edaa324fac --- /dev/null +++ b/src/main/resources/static/dijit/themes/a11y/README.txt @@ -0,0 +1,3 @@ +This folder contains images used by all themes when in "high-contrast" mode. + +If you think you need to put something here, please talk to Becky or Bill first. \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/a11y/colors3x4.png b/src/main/resources/static/dijit/themes/a11y/colors3x4.png new file mode 100644 index 0000000000000000000000000000000000000000..5125cb6562adc096fe6bdc61372de8eb647c2359 Binary files /dev/null and b/src/main/resources/static/dijit/themes/a11y/colors3x4.png differ diff --git a/src/main/resources/static/dijit/themes/a11y/colors7x10.png b/src/main/resources/static/dijit/themes/a11y/colors7x10.png new file mode 100644 index 0000000000000000000000000000000000000000..d1354aff56d25062351d0d1b9d93d6e7dc296b28 Binary files /dev/null and b/src/main/resources/static/dijit/themes/a11y/colors7x10.png differ diff --git a/src/main/resources/static/dijit/themes/a11y/indeterminate_progress.gif b/src/main/resources/static/dijit/themes/a11y/indeterminate_progress.gif new file mode 100644 index 0000000000000000000000000000000000000000..66f535cd891a4500e799446bc321e7dbc226152e Binary files /dev/null and b/src/main/resources/static/dijit/themes/a11y/indeterminate_progress.gif differ diff --git a/src/main/resources/static/dijit/themes/claro/Calendar.css b/src/main/resources/static/dijit/themes/claro/Calendar.css new file mode 100644 index 0000000000000000000000000000000000000000..99c1dd2ceb0798c985f5699780c7fc6193c31c7c --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Calendar.css @@ -0,0 +1,301 @@ +/* Calendar + * + * Styling Calendar mainly includes: + * + * 1. Calendar container + * .dijitCalendar - main container + * .dijitCalendarHover / .dijitCalendarActive - states e.g. hover,active + * + * 2. Month + * .dijitCalendarMonthContainer + * .dijitCalendarMonthLabel + * .dijitCalendarDecrease / .dijitCalendarDecrease - icons for switching to previous/next month + * .dijitCalendarArrowActive .dijitCalendarDecrease - states e.g. hover,active + * + * 3. Date + * .dijitCalendarDayLabelTemplate - week day column header e.g. S M T W T F S + * .dijitCalendarDateTemplate - date label wrapper + * .dijitCalendarPreviousMonth .dijitCalendarDateLabel - special labels for previous or next month + * .dijitCalendarSelectedDate .dijitCalendarDateLabel - styles for selected date + * .dijitCalendarDisabledDate .dijitCalendarDateLabel - styles for disabled date + * .dijitCalendarActiveDate .dijitCalendarDateLabel - states e.g. hover,active + * + * 4. Year + * .dijitCalendarYearContainer + * .dijitCalendarYearLabel + * .dijitCalendarPreviousYear /.dijitCalendarNextYear + * .dijitCalendarNextYearHover / .dijitCalendarPreviousYearHover - states e.g. hover,active + * + * 5. Dropdown Month Menu + * .dijitCalendarMonthMenu - menu container + * .dijitCalendarMonthMenu .dijitCalendarMonthLabel - month label in menu item + * .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover - menu item hover state + */ +.claro .dijitCalendar { + border: solid 1px #b5bcc7; + -moz-border-radius: 4px; + border-radius: 4px; + background-color: #cfe5fa; + background-image: url("images/calendar.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0.4) 2px, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0.4) 2px, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0.4) 2px, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0.4) 2px, rgba(255, 255, 255, 0) 100%); + text-align: center; + padding: 6px 5px 3px 5px; +} +.dj_ie6 .claro .dijitCalendar { + background-image: none; +} +.claro .dijitCalendar img { + border: none; +} +.claro .dijitCalendarHover, +.claro .dijitCalendar:hover, +.claro .dijitCalendarActive { + /* treat dijitCalendarActive like hover since there's + * no concept of clicking a Calendar as a whole (although you can click things inside the calendar) + */ + + background-color: #abd6ff; + border: solid 1px #759dc0; +} +.claro .dijitCalendar table { + border-collapse: separate; +} +.claro .dijitCalendarMonthContainer th { + text-align: center; + padding-bottom: 4px; + vertical-align: middle; +} +.claro .dijitCalendarMonthLabel { + color: #000000; + font-size: 1.091em; + padding: 0 4px; +} +/* next/previous month arrows */ +.claro .dijitCalendarIncrementControl { + width: 18px; + height: 16px; + background-image: url("images/calendarArrows.png"); + background-repeat: no-repeat; +} +.dj_ie6 .claro .dijitCalendarIncrementControl { + background-image: url("images/calendarArrows8bit.png"); +} +.claro .dijitCalendarIncrease { + background-position: -18px 0; +} +.claro .dijitCalendarArrowHover .dijitCalendarDecrease, +.claro .dijitCalendarArrow:hover .dijitCalendarDecrease { + background-position: -36px 0; +} +.claro .dijitCalendarArrowHover .dijitCalendarIncrease, +.claro .dijitCalendarArrow:hover .dijitCalendarIncrease { + background-position: -55px 0; +} +.claro .dijitCalendarArrowActive .dijitCalendarDecrease, +.claro .dijitCalendarArrow:active .dijitCalendarDecrease { + background-position: -72px 0; +} +.claro .dijitCalendarArrowActive .dijitCalendarIncrease, +.claro .dijitCalendarArrow:active .dijitCalendarIncrease { + background-position: -91px 0; +} +.claro .dijitA11ySideArrow { + /* text +/- labels instead of arrow icons, for high contrast mode */ + + display: none; +} +.claro .dijitCalendarDayLabelTemplate { + padding-bottom: 0; + text-align: center; + border-bottom: 1px solid #b5bcc7; + padding: 0 3px 2px; +} +.claro .dijitCalendarDayLabel { + padding: 0 4px 0 4px; + font-weight: bold; + font-size: 0.909em; + text-align: center; + color: #000000; +} +.claro .dijitCalendarDateTemplate { + background-color: #ffffff; + border-bottom: 1px solid #d3d3d3; + padding-top: 0; + font-size: 0.909em; + font-family: Arial; + font-weight: bold; + letter-spacing: .05em; + text-align: center; + color: #000000; +} +.dj_ie6 .claro .dijitCalendarDateTemplate { + background-image: none; +} +.claro .dijitCalendarPreviousMonth, +.claro .dijitCalendarNextMonth { + background-color: #e5f2fe; + background-image: none; + border-bottom: solid 1px #d3d3d3; + /* todo: redundant with above .dijitCalendarDateTemplate rule */ +} +.claro .dijitCalendarDateTemplate .dijitCalendarDateLabel { + text-decoration: none; + display: block; + padding: 3px 5px 3px 4px; + border: solid 1px #ffffff; + /* intentionally matches background-color, no visible border until hover/selection */ + + background-color: rgba(171, 212, 251, 0); + /* transparent causes black-flash animation problem on webkit */ + + -webkit-transition-property: background-color, border; + -moz-transition-property: background-color, border; + transition-property: background-color, border; + -webkit-transition-duration: 0.35s; + -moz-transition-duration: 0.35s; + transition-duration: 0.35s; +} +.claro .dijitCalendarPreviousMonth .dijitCalendarDateLabel, +.claro .dijitCalendarNextMonth .dijitCalendarDateLabel { + color: #759dc0; + border-color: #e5f2fe; + /* intentionally matches background-color, no visible border until hover/selection */ + +} +.claro .dijitCalendarYearContainer { + vertical-align: middle; +} +.claro .dijitCalendarYearControl { + padding: 1px 2px 2px 2px; +} +.claro .dijitCalendarYearLabel { + padding: 2px 0 0 0; + margin: 0; + font-size: 1.17em; +} +.claro .dijitCalendarYearLabel span { + /* trying to center next/current/previous year vertically, doesn't work on IE6/7 though */ + + vertical-align: middle; +} +.claro .dijitCalendarSelectedYear { + padding: 0 3px; +} +.claro .dijitCalendarNextYear, +.claro .dijitCalendarPreviousYear { + padding: 1px 6px 1px 6px; + font-size: 0.909em; +} +.claro .dijitCalendarSelectedYear { + font-size: 1.091em; + color: #000000; +} +/* End Normal Calendar Style */ +/* Hovered Calendar Style */ +.claro .dijitCalendarHoveredDate .dijitCalendarDateLabel, +.claro .dijitCalendarLite .dijitCalendarEnabledDate:hover .dijitCalendarDateLabel { + background-color: #abd6ff; + border: solid 1px #759dc0; + color: #000000; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; +} +.claro .dijitCalendarNextYearHover, +.claro .dijitCalendarNextYear:hover, +.claro .dijitCalendarPreviousYearHover, +.claro .dijitCalendarPreviousYear:hover { + color: #000000; + border: solid 1px #ffffff; + padding: 0 5px 0 5px; + /* reduced by 1 to make room for border */ + + background-color: #e5f2fe; +} +/* End Hovered Calendar Style */ +/* Active Calendar Style */ +.claro .dijitCalendarNextYearActive, +.claro .dijitCalendarNextYear:active .claro .dijitCalendarPreviousYearActive, +.claro .dijitCalendarPreviousYear:active { + border: solid 1px #759dc0; + padding: 0 5px 0 5px; + /* reduced by 1 to make room for border */ + + background-color: #7dbdfa; +} +.claro .dijitCalendarActiveDate .dijitCalendarDateLabel, +.claro .dijitCalendarEnabledDate:active .dijitCalendarDateLabel { + background-color: #7dbdfa; + border: solid 1px #ffffff; + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} +.dj_ie6 .claro .dijitCalendarActiveDate .dijitCalendarDateLabel { + background-image: none; +} +/* End Active Calendar Style */ +/* Selected Calendar Style */ +.claro .dijitCalendarSelectedDate .dijitCalendarDateLabel { + color: #000000; + background-color: #abd6ff; + border-color: #759dc0; +} +/* End Selected Calendar Style */ +/* Disabled Calendar Style*/ +.claro .dijitCalendarDisabledDate .dijitCalendarDateLabel { + color: #818181; + text-decoration: line-through; +} +/* End Disabled Calendar Style */ +/* Styling for month DropDownButton */ +.claro .dijitCalendar .dijitDropDownButton { + margin: 0; +} +.claro .dijitCalendar .dijitButtonText { + padding: 1px 0 3px; + margin-right: -4px; +} +.claro .dijitCalendar .dijitDropDownButton .dijitButtonNode { + padding: 0 3px 0 2px; + border: solid 1px #b5bcc7; + -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + box-shadow: 0 0 0 rgba(0, 0, 0, 0); + background-color: transparent; + background-image: none; +} +.claro .dijitCalendar .dijitDropDownButtonHover .dijitButtonNode, +.claro .dijitCalendar .dijitDropDownButton:hover .dijitButtonNode { + background-color: #e5f2fe; + border: solid 1px #ffffff; +} +/* Styling for month drop down list */ +.claro .dijitCalendarMonthMenu { + border-color: #759dc0; + background-color: #ffffff; + text-align: center; + background-image: none; +} +.claro .dijitCalendarMonthMenu .dijitCalendarMonthLabel { + border-top: solid 1px #ffffff; + /* intentionally invisible until hover */ + + border-bottom: solid 1px #ffffff; + padding: 2px 0; +} +.claro .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover, +.claro .dijitCalendarMonthMenu .dijitCalendarMonthLabelActive { + border-color: #759dc0; + border-width: 1px 0; + background-color: #abd6ff; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0)); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0)); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0)); + background-image: linear-gradient(rgba(255, 255, 255, 0.7), rgba(255, 255, 255, 0)); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr= #ffffff , endColorstr= #abd6ff ); +} diff --git a/src/main/resources/static/dijit/themes/claro/Calendar.less b/src/main/resources/static/dijit/themes/claro/Calendar.less new file mode 100644 index 0000000000000000000000000000000000000000..266f60b44e4c23dfad9b324075ae68f7b1864b58 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Calendar.less @@ -0,0 +1,279 @@ +/* Calendar + * + * Styling Calendar mainly includes: + * + * 1. Calendar container + * .dijitCalendar - main container + * .dijitCalendarHover / .dijitCalendarActive - states e.g. hover,active + * + * 2. Month + * .dijitCalendarMonthContainer + * .dijitCalendarMonthLabel + * .dijitCalendarDecrease / .dijitCalendarDecrease - icons for switching to previous/next month + * .dijitCalendarArrowActive .dijitCalendarDecrease - states e.g. hover,active + * + * 3. Date + * .dijitCalendarDayLabelTemplate - week day column header e.g. S M T W T F S + * .dijitCalendarDateTemplate - date label wrapper + * .dijitCalendarPreviousMonth .dijitCalendarDateLabel - special labels for previous or next month + * .dijitCalendarSelectedDate .dijitCalendarDateLabel - styles for selected date + * .dijitCalendarDisabledDate .dijitCalendarDateLabel - styles for disabled date + * .dijitCalendarActiveDate .dijitCalendarDateLabel - states e.g. hover,active + * + * 4. Year + * .dijitCalendarYearContainer + * .dijitCalendarYearLabel + * .dijitCalendarPreviousYear /.dijitCalendarNextYear + * .dijitCalendarNextYearHover / .dijitCalendarPreviousYearHover - states e.g. hover,active + * + * 5. Dropdown Month Menu + * .dijitCalendarMonthMenu - menu container + * .dijitCalendarMonthMenu .dijitCalendarMonthLabel - month label in menu item + * .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover - menu item hover state + */ + +@import "variables"; + +.claro .dijitCalendar { + border: solid 1px @border-color; + .border-radius(4px); + + // Background color and alpha-gradient + background-color: @calendar-background-color; + background-image: url("images/calendar.png"); // fallback for browsers that don't support CSS gradients + background-repeat: repeat-x; // so bottom of calendar isn't affected by gradient image repeating + .alpha-white-gradient(1, 0px, 0.4, 2px, 0, 100%); + + text-align:center; + padding:6px 5px 3px 5px; +} +.dj_ie6 .claro .dijitCalendar { + background-image:none; // because on IE6 background-image overrides background-color +} +.claro .dijitCalendar img { + border:none; +} +.claro .dijitCalendarHover, .claro .dijitCalendar:hover, +.claro .dijitCalendarActive { + /* treat dijitCalendarActive like hover since there's + * no concept of clicking a Calendar as a whole (although you can click things inside the calendar) + */ + background-color: @hovered-background-color; + border:solid 1px @hovered-border-color; +} +.claro .dijitCalendar table { + border-collapse: separate; // in case user CSS has set border-collapse: collapse for tables +} +.claro .dijitCalendarMonthContainer th { + text-align:center; + padding-bottom:4px; + vertical-align:middle; +} +.claro .dijitCalendarMonthLabel { + color: @text-color; + font-size: 1.091em; + padding: 0 4px; +} + +/* next/previous month arrows */ +.claro .dijitCalendarIncrementControl { + width:18px; + height:16px; + background-image: url(@image-calendar-arrows); + background-repeat: no-repeat; +} +.dj_ie6 .claro .dijitCalendarIncrementControl { + background-image: url(@image-calendar-arrows-ie6); +} +.claro .dijitCalendarIncrease { + background-position:-18px 0; +} +.claro .dijitCalendarArrowHover .dijitCalendarDecrease, +.claro .dijitCalendarArrow:hover .dijitCalendarDecrease { + background-position:-36px 0; +} +.claro .dijitCalendarArrowHover .dijitCalendarIncrease, +.claro .dijitCalendarArrow:hover .dijitCalendarIncrease { + background-position:-55px 0; +} +.claro .dijitCalendarArrowActive .dijitCalendarDecrease, +.claro .dijitCalendarArrow:active .dijitCalendarDecrease { + background-position:-72px 0; +} +.claro .dijitCalendarArrowActive .dijitCalendarIncrease, +.claro .dijitCalendarArrow:active .dijitCalendarIncrease { + background-position:-91px 0; +} +.claro .dijitA11ySideArrow { + /* text +/- labels instead of arrow icons, for high contrast mode */ + display: none; +} + +.claro .dijitCalendarDayLabelTemplate { + padding-bottom:0; + text-align:center; + border-bottom:1px solid @border-color; + padding:0 3px 2px; +} +.claro .dijitCalendarDayLabel { + padding:0 4px 0 4px; + font-weight:bold; + font-size:0.909em; + text-align:center; + color: @text-color; +} +.claro .dijitCalendarDateTemplate { + text-align:center; + background-color:@calendar-currentmonth-background-color; + border-bottom: 1px solid @minor-border-color; + padding-top:0; + font-size:0.909em; + font-family: Arial; + font-weight:bold; + letter-spacing:.05em; + text-align:center; + color: @text-color; +} +.dj_ie6 .claro .dijitCalendarDateTemplate { + background-image: none; +} +.claro .dijitCalendarPreviousMonth, +.claro .dijitCalendarNextMonth { + background-color: @calendar-adjacentmonth-background-color; + background-image:none; + border-bottom:solid 1px @minor-border-color; /* todo: redundant with above .dijitCalendarDateTemplate rule */ +} +.claro .dijitCalendarDateTemplate .dijitCalendarDateLabel { + text-decoration:none; + display:block; + padding:3px 5px 3px 4px; + border:solid 1px @calendar-currentmonth-background-color; /* intentionally matches background-color, no visible border until hover/selection */ + background-color:rgba(171,212,251,0); /* transparent causes black-flash animation problem on webkit */ + .transition-property(background-color, border); + .transition-duration(.35s); +} +.claro .dijitCalendarPreviousMonth .dijitCalendarDateLabel, +.claro .dijitCalendarNextMonth .dijitCalendarDateLabel{ + color: @calendar-adjacentmonth-text-color; + border-color: @calendar-adjacentmonth-background-color; /* intentionally matches background-color, no visible border until hover/selection */ +} + +.claro .dijitCalendarYearContainer { + vertical-align:middle; +} +.claro .dijitCalendarYearControl { + padding: 1px 2px 2px 2px; +} +.claro .dijitCalendarYearLabel { + padding: 2px 0 0 0; + margin: 0; + font-size: 1.17em; +} +.claro .dijitCalendarYearLabel span { + /* trying to center next/current/previous year vertically, doesn't work on IE6/7 though */ + vertical-align:middle; +} +.claro .dijitCalendarSelectedYear { + padding:0 3px; +} +.claro .dijitCalendarNextYear, +.claro .dijitCalendarPreviousYear { + padding: 1px 6px 1px 6px; + font-size:0.909em; +} +.claro .dijitCalendarSelectedYear { + font-size:1.091em; + color:@selected-text-color; +} +/* End Normal Calendar Style */ +/* Hovered Calendar Style */ +.claro .dijitCalendarHoveredDate .dijitCalendarDateLabel, +.claro .dijitCalendarLite .dijitCalendarEnabledDate:hover .dijitCalendarDateLabel { + background-color:@hovered-background-color; + border:solid 1px @hovered-border-color; + color:@hovered-text-color; + .transition-duration(.2s); +} +.claro .dijitCalendarNextYearHover, .claro .dijitCalendarNextYear:hover, +.claro .dijitCalendarPreviousYearHover, .claro .dijitCalendarPreviousYear:hover { + color:@hovered-text-color; + border:solid 1px @calendar-button-hovered-border-color; + padding: 0 5px 0 5px; /* reduced by 1 to make room for border */ + background-color: @calendar-button-hovered-background-color; +} +/* End Hovered Calendar Style */ +/* Active Calendar Style */ +.claro .dijitCalendarNextYearActive, .claro .dijitCalendarNextYear:active +.claro .dijitCalendarPreviousYearActive, .claro .dijitCalendarPreviousYear:active { + border: solid 1px @calendar-button-pressed-border-color; + padding: 0 5px 0 5px; /* reduced by 1 to make room for border */ + background-color:@calendar-button-pressed-background-color; +} +.claro .dijitCalendarActiveDate .dijitCalendarDateLabel, +.claro .dijitCalendarEnabledDate:active .dijitCalendarDateLabel { + background-color: @calendar-date-pressed-background-color; + border:solid 1px @calendar-date-pressed-border-color; + .transition-duration(.1s); +} +.dj_ie6 .claro .dijitCalendarActiveDate .dijitCalendarDateLabel { + background-image:none; +} +/* End Active Calendar Style */ +/* Selected Calendar Style */ +.claro .dijitCalendarSelectedDate .dijitCalendarDateLabel { + color:@selected-text-color; + background-color: @calendar-date-selected-background-color; + border-color: @calendar-date-selected-border-color; +} +/* End Selected Calendar Style */ +/* Disabled Calendar Style*/ +.claro .dijitCalendarDisabledDate .dijitCalendarDateLabel { + color: @disabled-text-color; + text-decoration:line-through; +} + +/* End Disabled Calendar Style */ + +/* Styling for month DropDownButton */ + +.claro .dijitCalendar .dijitDropDownButton { + margin: 0; +} +.claro .dijitCalendar .dijitButtonText { + padding: 1px 0 3px; + margin-right:-4px; +} +.claro .dijitCalendar .dijitDropDownButton .dijitButtonNode { + padding: 0 3px 0 2px; + border:solid 1px @border-color; + .box-shadow(0 0 0 rgba(0,0,0,0)); + + // Override background settings from vanilla .dijitButtonNode. We want to inherit background of Calendar. + background-color: transparent; + background-image: none; +} +.claro .dijitCalendar .dijitDropDownButtonHover .dijitButtonNode, +.claro .dijitCalendar .dijitDropDownButton:hover .dijitButtonNode { + background-color: @calendar-button-hovered-background-color; + border:solid 1px @calendar-button-hovered-border-color; +} + +/* Styling for month drop down list */ + +.claro .dijitCalendarMonthMenu { + border-color: @popup-border-color; + background-color: @menu-background-color; + text-align:center; + background-image: none; +} +.claro .dijitCalendarMonthMenu .dijitCalendarMonthLabel { + border-top: solid 1px @menu-background-color; /* intentionally invisible until hover */ + border-bottom: solid 1px @menu-background-color; + padding: 2px 0; +} +.claro .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover, +.claro .dijitCalendarMonthMenu .dijitCalendarMonthLabelActive { + border-color: @hovered-border-color; + border-width:1px 0; + .gradient-and-filter(@hovered-background-color, 70, 0); +} diff --git a/src/main/resources/static/dijit/themes/claro/Calendar_rtl.css b/src/main/resources/static/dijit/themes/claro/Calendar_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..5892a64bf89d3a358738df2cdbf74e3fcb373d39 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Calendar_rtl.css @@ -0,0 +1,18 @@ +.claro .dijitCalendarRtl .dijitCalendarIncrease { + background-position: 0 0; +} +.claro .dijitCalendarRtl .dijitCalendarDecrease { + background-position: -18px 0; +} +.claro .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarIncrease { + background-position: -36px 0; +} +.claro .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarDecrease { + background-position: -55px 0; +} +.claro .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarIncrease { + background-position: -72px 0; +} +.claro .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarDecrease { + background-position: -91px 0; +} diff --git a/src/main/resources/static/dijit/themes/claro/Calendar_rtl.less b/src/main/resources/static/dijit/themes/claro/Calendar_rtl.less new file mode 100644 index 0000000000000000000000000000000000000000..713717bd7d4a89af9c033dccf5a1ee525c5e710f --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Calendar_rtl.less @@ -0,0 +1,19 @@ +.claro .dijitCalendarRtl .dijitCalendarIncrease{ + background-position: 0 0; +} +.claro .dijitCalendarRtl .dijitCalendarDecrease { + background-position: -18px 0; +} +.claro .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarIncrease { + background-position: -36px 0; +} +.claro .dijitCalendarRtl .dijitCalendarArrowHover .dijitCalendarDecrease { + background-position: -55px 0; +} +.claro .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarIncrease { + background-position: -72px 0; +} +.claro .dijitCalendarRtl .dijitCalendarArrowActive .dijitCalendarDecrease { + background-position: -91px 0; +} + diff --git a/src/main/resources/static/dijit/themes/claro/ColorPalette.css b/src/main/resources/static/dijit/themes/claro/ColorPalette.css new file mode 100644 index 0000000000000000000000000000000000000000..6b959200a23981e73bd27029888a6c0503212635 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/ColorPalette.css @@ -0,0 +1,42 @@ +/* ColorPalette + * + * Styling of the ColorPalette consists of the following: + * + * 1. the whole color palette + * .dijitColorPalette - for outline, border, and background color of the whole color palette + * Note: outline does not work for IE + * + * 2. the color swatch + * .dijitColorPalette .dijitPaletteImg + * transparent (but clickable) node inside of each , overlaying the color swatch. + * displays border around a color swatch + * + * 3. hovered swatch + * .dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg + * the hovered state of the color swatch - adds border + * + * 4. active and selected swatch + * .dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg + * .dijitColorPalette .dijitPaletteCellSelected .dijitPaletteImg + * adds border for active or selected state + */ +.claro .dijitColorPalette { + border: 1px solid #b5bcc7; + background: #ffffff; + -moz-border-radius: 0; + border-radius: 0; +} +.claro .dijitColorPalette .dijitPaletteImg { + /* transparent (but clickable) node inside of each , overlaying the color swatch. + * displays border around a color swatch + * overrides border color in dijit.css */ + + border: 1px solid #d3d3d3; +} +.claro .dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg { + border: 1px solid #000000; +} +.claro .dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg, +.claro .dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg { + border: 2px solid #000000; +} diff --git a/src/main/resources/static/dijit/themes/claro/ColorPalette.less b/src/main/resources/static/dijit/themes/claro/ColorPalette.less new file mode 100644 index 0000000000000000000000000000000000000000..ffa3ac051337adb317e2d4b21d620741a0f493fc --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/ColorPalette.less @@ -0,0 +1,44 @@ +/* ColorPalette + * + * Styling of the ColorPalette consists of the following: + * + * 1. the whole color palette + * .dijitColorPalette - for outline, border, and background color of the whole color palette + * Note: outline does not work for IE + * + * 2. the color swatch + * .dijitColorPalette .dijitPaletteImg + * transparent (but clickable) node inside of each , overlaying the color swatch. + * displays border around a color swatch + * + * 3. hovered swatch + * .dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg + * the hovered state of the color swatch - adds border + * + * 4. active and selected swatch + * .dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg + * .dijitColorPalette .dijitPaletteCellSelected .dijitPaletteImg + * adds border for active or selected state + */ + +@import "variables"; + +.claro .dijitColorPalette { + border: 1px solid @border-color; + background: @colorpalette-background-color; + .border-radius(0); +} + +.claro .dijitColorPalette .dijitPaletteImg { + /* transparent (but clickable) node inside of each , overlaying the color swatch. + * displays border around a color swatch + * overrides border color in dijit.css */ + border: 1px solid @minor-border-color; +} +.claro .dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg { + border: 1px solid @swatch-hovered-border-color; +} +.claro .dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg, +.claro .dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg { + border: 2px solid @swatch-selected-border-color; +} diff --git a/src/main/resources/static/dijit/themes/claro/Common.css b/src/main/resources/static/dijit/themes/claro/Common.css new file mode 100644 index 0000000000000000000000000000000000000000..ba9dcec039a6464f0d6491b092caf18c859c19c8 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Common.css @@ -0,0 +1,100 @@ +/* ========= Styling rules to affect widgets ========= */ +.claro .dijitPopup { + -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); +} +.claro .dijitTooltipDialogPopup { + /* exception popups: do not use a shadow on these because they aren't rectangular */ + + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} +/* The highlight is shown in the ComboBox menu. TODO: move to form/Common.less */ +.claro .dijitComboBoxHighlightMatch { + background-color: #abd6ff; +} +.claro .dijitFocusedLabel { + /* for checkboxes or radio buttons, hatch border around the corresponding label, to indicate focus */ + + outline: 1px dotted #494949; +} +/* Drag and Drop*/ +.claro .dojoDndItem { + border-color: rgba(0, 0, 0, 0); + -webkit-transition-duration: 0.25s; + -moz-transition-duration: 0.25s; + transition-duration: 0.25s; + -webkit-transition-property: background-color, border-color; + -moz-transition-property: background-color, border-color; + transition-property: background-color, border-color; +} +.claro .dojoDndItemOver { + background-color: #abd6ff; + background-image: url("images/standardGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + _background-image: none; + padding: 1px; + border: solid 1px #759dc0; + color: #000000; +} +.claro .dojoDndItemAnchor, +.claro .dojoDndItemSelected { + background-color: #cfe5fa; + background-image: url("images/standardGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + _background-image: none; + padding: 1px; + border: solid 1px #759dc0; + color: #000000; +} +.claro .dojoDndItemBefore, +.claro .dojoDndItemAfter { + border-color: #759dc0; +} +.claro table.dojoDndAvatar { + border: 1px solid #b5bcc7; + border-collapse: collapse; + background-color: #ffffff; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); +} +.claro .dojoDndAvatarHeader td { + height: 20px; + padding-left: 21px; +} +.claro.dojoDndMove .dojoDndAvatarHeader, +.claro.dojoDndCopy .dojoDndAvatarHeader { + background-image: url("images/dnd.png"); + background-repeat: no-repeat; + background-position: 2px -122px; +} +.claro .dojoDndAvatarItem td { + padding: 5px; +} +.claro.dojoDndMove .dojoDndAvatarHeader { + background-color: #f58383; + background-position: 2px -103px; +} +.claro.dojoDndCopy .dojoDndAvatarHeader { + background-color: #f58383; + background-position: 2px -68px; +} +.claro.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader { + background-color: #97e68d; + background-position: 2px -33px; +} +.claro.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader { + background-color: #97e68d; + background-position: 2px 2px; +} diff --git a/src/main/resources/static/dijit/themes/claro/Common.less b/src/main/resources/static/dijit/themes/claro/Common.less new file mode 100644 index 0000000000000000000000000000000000000000..078d6fdca807e884bd4855b0ac7153f9c521f094 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Common.less @@ -0,0 +1,86 @@ +/* ========= Styling rules to affect widgets ========= */ + +@import "variables"; + +.claro .dijitPopup { + .box-shadow(0 1px 5px rgba(0,0,0,0.25)); +} +.claro .dijitTooltipDialogPopup { + /* exception popups: do not use a shadow on these because they aren't rectangular */ + .box-shadow(none); +} + +/* The highlight is shown in the ComboBox menu. TODO: move to form/Common.less */ +.claro .dijitComboBoxHighlightMatch { + background-color: @select-matchedtext-background-color; +} + +.claro .dijitFocusedLabel { + /* for checkboxes or radio buttons, hatch border around the corresponding label, to indicate focus */ + outline: 1px dotted @focus-outline-color; +} + +/* Drag and Drop*/ +.claro .dojoDndItem { + border-color: rgba(0,0,0,0); // rgba() instead of none to prevent flash on hover fade-in + .transition-duration(.25s); + .transition-property(background-color, border-color) +} +.claro .dojoDndItemOver { + // Hovered item. Matches dijitTreeRowHover. + background-color:@hovered-background-color; + .standard-gradient; + padding: 1px; // reduce from 2px in dijit.css + border:solid 1px @hovered-border-color; + color:@hovered-text-color; +} +.claro .dojoDndItemAnchor, +.claro .dojoDndItemSelected { + // Selected items(s). Matches dijitTreeRowSelected. + background-color:@selected-background-color; + .standard-gradient; + padding: 1px; // reduce from 2px in dijit.css + border:solid 1px @selected-border-color; + color:@selected-text-color; +} + +.claro .dojoDndItemBefore, +.claro .dojoDndItemAfter { + // line to indicate that user is dropping before/after this dojoDndItem + border-color: @dnd-dropseparator-color; +} + +.claro table.dojoDndAvatar { + border: 1px solid @border-color; + border-collapse: collapse; + background-color: @dnd-avatar-background-color; + .box-shadow(0 1px 3px rgba(0, 0, 0, .25)); +} +.claro .dojoDndAvatarHeader td { + height: 20px; + padding-left:21px; +} +.claro.dojoDndMove .dojoDndAvatarHeader, .claro.dojoDndCopy .dojoDndAvatarHeader { + background-image: url(@image-dnd); + background-repeat: no-repeat; + background-position:2px -122px; +} +.claro .dojoDndAvatarItem td { + padding: 5px; +} +.claro.dojoDndMove .dojoDndAvatarHeader { + background-color: @dnd-avatar-header-background-color; + background-position:2px -103px; +} +.claro.dojoDndCopy .dojoDndAvatarHeader { + background-color: @dnd-avatar-header-background-color; + background-position:2px -68px; +} +.claro.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader { + background-color: @dnd-avatar-candrop-header-background-color; + background-position:2px -33px; +} +.claro.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader { + background-color: @dnd-avatar-candrop-header-background-color; + background-position:2px 2px; +} diff --git a/src/main/resources/static/dijit/themes/claro/Dialog.css b/src/main/resources/static/dijit/themes/claro/Dialog.css new file mode 100644 index 0000000000000000000000000000000000000000..c2460f470efa0e426a5e0ecb73bf449c881891e2 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Dialog.css @@ -0,0 +1,223 @@ +/* Dialog + * + * Styling Dialog includes two sections: Dialog and Tooltip & TooltipDialog + * + * Dialog: + * 1. Dialog (default styling): + * .dijitDialog - styles for dialog's bounding box + * + * 2. Dialog title + * .dijitDialogTitleBar - styles for the title container at the top of dialog + * .dijitDialogTitle - the text container in dialog title + * + * 3. Dialog content + * .dijitDialogPaneContent - main container for content area and action bar + * .dijitDialogPaneContentArea - styles for content container + * + * 4. Dialog action bar + * .dijitDialogPaneActionBar - styles for action buttons lie at the bottom of dialog pane content + * + * 5. Dialog underlay + * .dijitDialogUnderlay - div under the dialog which used for separate dialog and page content + * + * + * Tooltip & TooltipDialog: + * 1. tooltip content container: + * .dijitTooltipContainer - tooltip content container + * + * 2. tooltip connector: + * .dijitTooltipConnector - tooltip anchor includes 4 direction(up, down, left, right) + */ +.claro .dijitDialog { + border: 1px solid #759dc0; + -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.25); +} +.claro .dijitDialogPaneContent { + background: #ffffff repeat-x top left; + border-top: 1px solid #759dc0; + padding: 10px 8px; + position: relative; +} +.claro .dijitDialogPaneContentArea { + /* trick to get action bar (gray bar at bottom with OK/cancel buttons) to span from + * left to right but still indent dialog content + */ + margin: -10px -8px; + padding: 10px 8px; +} +.claro .dijitDialogPaneActionBar { + /* gray bar at bottom of dialog with OK/Cancel buttons */ + + background-color: #efefef; + padding: 3px 5px 2px 7px; + text-align: right; + border-top: 1px solid #d3d3d3; +} +.claro .dijitDialogPaneContent .dijitDialogPaneActionBar { + margin: 10px -8px -10px; +} +.claro .dijitTooltipDialog .dijitDialogPaneActionBar { + -webkit-border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + margin: 10px -10px -8px; +} +.claro .dijitDialogPaneActionBar .dijitButton { + float: none; +} +.claro .dijitDialogTitleBar { + /* outer container for the titlebar of the dialog */ + + border: 1px solid #ffffff; + border-top: none; + background-color: #abd6ff; + background-image: url("images/standardGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + _background-image: none; + padding: 5px 7px 4px 7px; +} +.claro .dijitDialogTitle { + /* typography and styling of the dialog title */ + + padding: 0 1px; + font-size: 1.091em; + color: #000000; +} +.claro .dijitDialogCloseIcon { + /* the default close icon for the dialog */ + + background: url("images/dialogCloseIcon.png"); + background-repeat: no-repeat; + position: absolute; + right: 5px; + height: 15px; + width: 21px; +} +.dj_ie6 .claro .dijitDialogCloseIcon { + background-image: url("images/dialogCloseIcon8bit.png"); +} +.claro .dijitDialogCloseIconHover { + background-position: -21px; +} +.claro .dijitDialogCloseIcon:active { + background-position: -42px; +} +/* Tooltip and TooltipDialog */ +.claro .dijitTooltip, +.claro .dijitTooltipDialog { + /* the outermost dom node, holding the connector and container */ + + background: transparent; + /* make the area on the sides of the arrow transparent */ + +} +.dijitTooltipBelow { + /* leave room for arrow above content */ + + padding-top: 13px; + padding-left: 3px; + padding-right: 3px; +} +.dijitTooltipAbove { + /* leave room for arrow below content */ + + padding-bottom: 13px; + padding-left: 3px; + padding-right: 3px; +} +.claro .dijitTooltipContainer { + /* the part with the text */ + + background-color: #ffffff; + background-image: -moz-linear-gradient(bottom, rgba(207, 229, 250, 0.1) 0px, #ffffff 10px); + background-image: -webkit-linear-gradient(bottom, rgba(207, 229, 250, 0.1) 0px, #ffffff 10px); + background-image: -o-linear-gradient(bottom, rgba(207, 229, 250, 0.1) 0px, #ffffff 10px); + background-image: linear-gradient(bottom, rgba(207, 229, 250, 0.1) 0px, #ffffff 10px); + background-position: bottom; + border: 1px solid #759dc0; + padding: 6px 8px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.25); + font-size: 1em; + color: #000000; +} +.claro .dijitTooltipConnector { + /* the arrow piece */ + + border: 0; + z-index: 2; + background-image: url("images/tooltip.png"); + background-repeat: no-repeat; + width: 16px; + height: 14px; +} +.dj_ie6 .claro .dijitTooltipConnector { + background-image: url("images/tooltip8bit.png"); +} +.claro .dijitTooltipBelow .dijitTooltipConnector { + /* the arrow piece for tooltips below an element */ + + top: 0; + left: 3px; + background-position: -31px 0; + width: 16px; + height: 14px; +} +.claro .dijitTooltipAbove .dijitTooltipConnector { + /* the arrow piece for tooltips above an element */ + + bottom: 0; + left: 3px; + background-position: -15px 0; + width: 16px; + height: 14px; +} +.dj_ie7 .claro .dijitTooltipAbove .dijitTooltipConnector, +.dj_ie6 .claro .dijitTooltipAbove .dijitTooltipConnector { + bottom: -1px; +} +.claro .dijitTooltipABRight .dijitTooltipConnector { + /* above or below tooltip, but the arrow appears on the right, + and the right edges of target and tooltip are aligned rather than the left. + Override above rules for .dijitTooltipBelow, .dijitTooltipAbove */ + + left: auto; + right: 3px; +} +.claro .dijitTooltipLeft { + padding-right: 14px; +} +.claro .dijitTooltipLeft .dijitTooltipConnector { + /* the arrow piece for tooltips to the left of an element, bottom borders aligned */ + + right: 0; + background-position: 0 0; + width: 16px; + height: 14px; +} +.claro .dijitTooltipRight { + padding-left: 14px; +} +.claro .dijitTooltipRight .dijitTooltipConnector { + /* the arrow piece for tooltips to the right of an element, bottom borders aligned */ + + left: 0; + background-position: -48px 0; + width: 16px; + height: 14px; +} +.claro .dijitDialogUnderlay { + background: #ffffff; +} diff --git a/src/main/resources/static/dijit/themes/claro/Dialog.less b/src/main/resources/static/dijit/themes/claro/Dialog.less new file mode 100644 index 0000000000000000000000000000000000000000..eee3cdaf7c8ea522ed4308e009617fa475105fdb --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Dialog.less @@ -0,0 +1,215 @@ +/* Dialog + * + * Styling Dialog includes two sections: Dialog and Tooltip & TooltipDialog + * + * Dialog: + * 1. Dialog (default styling): + * .dijitDialog - styles for dialog's bounding box + * + * 2. Dialog title + * .dijitDialogTitleBar - styles for the title container at the top of dialog + * .dijitDialogTitle - the text container in dialog title + * + * 3. Dialog content + * .dijitDialogPaneContent - main container for content area and action bar + * .dijitDialogPaneContentArea - styles for content container + * + * 4. Dialog action bar + * .dijitDialogPaneActionBar - styles for action buttons lie at the bottom of dialog pane content + * + * 5. Dialog underlay + * .dijitDialogUnderlay - div under the dialog which used for separate dialog and page content + * + * + * Tooltip & TooltipDialog: + * 1. tooltip content container: + * .dijitTooltipContainer - tooltip content container + * + * 2. tooltip connector: + * .dijitTooltipConnector - tooltip anchor includes 4 direction(up, down, left, right) + */ + +@import "variables"; + +.claro .dijitDialog { + border: 1px solid @popup-border-color; + .box-shadow(0 1px 5px rgba(0,0,0,0.25)); +} + +.claro .dijitDialogPaneContent { + background: @pane-background-color repeat-x top left; + border-top: 1px solid @popup-border-color; + padding:10px 8px; + position: relative; +} + +.claro .dijitDialogPaneContentArea { + /* trick to get action bar (gray bar at bottom with OK/cancel buttons) to span from + * left to right but still indent dialog content + */ + margin: -10px -8px; + padding: 10px 8px; +} + +.claro .dijitDialogPaneActionBar { + /* gray bar at bottom of dialog with OK/Cancel buttons */ + background-color: @bar-background-color; + padding: 3px 5px 2px 7px; + text-align: right; + border-top: 1px solid @minor-border-color; +} +.claro .dijitDialogPaneContent .dijitDialogPaneActionBar { + margin: 10px -8px -10px; // Offsets 10px padding on dijitDialogPaneContent +} + +.claro .dijitTooltipDialog .dijitDialogPaneActionBar { + -webkit-border-bottom-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; + -moz-border-radius-bottomright: 4px; + -moz-border-radius-bottomleft: 4px; + margin: 10px -10px -8px; +} +.claro .dijitDialogPaneActionBar .dijitButton { + float: none; +} + +.claro .dijitDialogTitleBar { + /* outer container for the titlebar of the dialog */ + border: 1px solid @dialog-titlebar-border-color; + border-top:none; + background-color: @dialog-titlebar-background-color; + .standard-gradient; + padding: 5px 7px 4px 7px; +} + +.claro .dijitDialogTitle { + /* typography and styling of the dialog title */ + padding: 0 1px; + font-size:1.091em; + color: @text-color; +} + +.claro .dijitDialogCloseIcon { + /* the default close icon for the dialog */ + background: url(@image-dialog-close); + background-repeat:no-repeat; + position: absolute; + right: 5px; + height: 15px; + width: 21px; +} +.dj_ie6 .claro .dijitDialogCloseIcon { + background-image: url(@image-dialog-close-ie6); +} +.claro .dijitDialogCloseIconHover { + background-position:-21px; +} +.claro .dijitDialogCloseIcon:active { + background-position:-42px; +} + +/* Tooltip and TooltipDialog */ + +.claro .dijitTooltip, +.claro .dijitTooltipDialog { + /* the outermost dom node, holding the connector and container */ + background: transparent; /* make the area on the sides of the arrow transparent */ +} +.dijitTooltipBelow { + /* leave room for arrow above content */ + padding-top: 13px; + padding-left:3px; + padding-right:3px; +} + +.dijitTooltipAbove { + /* leave room for arrow below content */ + padding-bottom: 13px; + padding-left:3px; + padding-right:3px; +} + +.claro .dijitTooltipContainer { + /* the part with the text */ + background-color:@popup-background-color; + .linear-gradient(bottom, @tooltip-gradient-color 0px, @popup-background-color 10px); + background-position:bottom; + border:1px solid @popup-border-color; + padding:6px 8px; + .border-radius(4px); + .box-shadow(0 1px 3px rgba(0,0,0,0.25)); + font-size: 1em; + color: @text-color; +} + +.claro .dijitTooltipConnector { + /* the arrow piece */ + border: 0; + z-index: 2; + background-image:url(@image-tooltip); + background-repeat:no-repeat; + width:16px; + height:14px; +} +.dj_ie6 .claro .dijitTooltipConnector { + background-image:url(@image-tooltip-ie6); +} + +.claro .dijitTooltipBelow .dijitTooltipConnector { + /* the arrow piece for tooltips below an element */ + top: 0; + left: 3px; + background-position:-31px 0; + width:16px; + height:14px; +} + +.claro .dijitTooltipAbove .dijitTooltipConnector { + /* the arrow piece for tooltips above an element */ + bottom: 0; + left: 3px; + background-position:-15px 0; + width:16px; + height:14px; +} +.dj_ie7 .claro .dijitTooltipAbove .dijitTooltipConnector, +.dj_ie6 .claro .dijitTooltipAbove .dijitTooltipConnector { + bottom: -1px; +} + +.claro .dijitTooltipABRight .dijitTooltipConnector { + /* above or below tooltip, but the arrow appears on the right, + and the right edges of target and tooltip are aligned rather than the left. + Override above rules for .dijitTooltipBelow, .dijitTooltipAbove */ + left: auto; + right: 3px; +} + + +.claro .dijitTooltipLeft { + padding-right: 14px; +} +.claro .dijitTooltipLeft .dijitTooltipConnector { + /* the arrow piece for tooltips to the left of an element, bottom borders aligned */ + right: 0; + background-position:0 0; + width:16px; + height:14px; +} + +.claro .dijitTooltipRight { + padding-left: 14px; +} +.claro .dijitTooltipRight .dijitTooltipConnector { + /* the arrow piece for tooltips to the right of an element, bottom borders aligned */ + left: 0; + background-position:-48px 0; + width:16px; + height:14px; +} + +.claro .dijitDialogUnderlay { + background: @dialog-underlay-color; +} diff --git a/src/main/resources/static/dijit/themes/claro/Dialog_rtl.css b/src/main/resources/static/dijit/themes/claro/Dialog_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..34930eb644962694322e95b4943ab1eccc145614 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Dialog_rtl.css @@ -0,0 +1,9 @@ +/* Dialog */ +.claro .dijitDialogRtl .dijitDialogCloseIcon { + right: auto; + left: 5px; +} +.claro .dijitDialogRtl .dijitDialogPaneActionBar { + text-align: left; + padding: 3px 7px 2px 5px; +} diff --git a/src/main/resources/static/dijit/themes/claro/Dialog_rtl.less b/src/main/resources/static/dijit/themes/claro/Dialog_rtl.less new file mode 100644 index 0000000000000000000000000000000000000000..452fe930b1d284481fe33582d9c7353bd99f4965 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Dialog_rtl.less @@ -0,0 +1,13 @@ +/* Dialog */ + +@import "variables"; + +.claro .dijitDialogRtl .dijitDialogCloseIcon { + right: auto; + left: 5px; +} + +.claro .dijitDialogRtl .dijitDialogPaneActionBar { + text-align: left; + padding: 3px 7px 2px 5px; +} diff --git a/src/main/resources/static/dijit/themes/claro/Editor.css b/src/main/resources/static/dijit/themes/claro/Editor.css new file mode 100644 index 0000000000000000000000000000000000000000..0d6f59c45b424340dbfd17c7c35977c11df7db32 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Editor.css @@ -0,0 +1,55 @@ +/* Editor + * + * Styling Editor means styling the Editor inside iframe container (dijitEditorIFrameContainer) + * + * 1. Editor iframe container (default styling): + * .dijitEditorIFrameContainer - normal state styles: background-color, border, padding + * + * 2. hovered Editor iframe container (ie, mouse hover on editor) + * .dijitEditorHover .dijitEditorIFrameContainer/dijitEditorIFrame - styles when mouse hover on the container + * + * 3. focused Editor iframe container (ie, mouse focus on the editor pane) + * .dijitEditorFocused .dijitEditorIFrameContainer/dijitEditorIFrame - styles when container focused + * + * 3. disabled Editor iframe container + * .dijitEditorDisabled - editor's inner iframe container disable status styles: background, border + */ +.claro .dijitEditorIFrameContainer { + padding: 3px 3px 1px 10px; +} +.claro .dijitEditorIFrame { + background-color: #ffffff; +} +.claro .dijitEditor { + border: 1px solid #b5bcc7; +} +.claro .dijitEditor .dijitEditorIFrameContainer { + background-color: #ffffff; + background-repeat: repeat-x; +} +.claro .dijitEditorHover .dijitEditorIFrameContainer, +.claro .dijitEditorHover .dijitEditorIFrameContainer .dijitEditorIFrame { + background-color: #e5f2fe; +} +.claro .dijitEditorFocused .dijitEditorIFrameContainer, +.claro .dijitEditorFocused .dijitEditorIFrameContainer .dijitEditorIFrame { + background-color: #ffffff; +} +.claro .dijitEditorHover .dijitEditorIFrameContainer, +.claro .dijitEditorFocused .dijitEditorIFrameContainer { + background-image: -moz-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); + background-image: -webkit-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); + background-image: -o-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); + background-image: linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); +} +/* Disabled */ +.claro .dijitEditorDisabled { + border: 1px solid #d3d3d3; + color: #818181; +} +.claro .dijitDisabled .dijitEditorIFrame, +.claro .dijitDisabled .dijitEditorIFrameContainer, +.claro .dijitDisabled .dijitEditorIFrameContainer .dijitEditorIFrame { + background-color: #efefef; + background-image: none; +} diff --git a/src/main/resources/static/dijit/themes/claro/Editor.less b/src/main/resources/static/dijit/themes/claro/Editor.less new file mode 100644 index 0000000000000000000000000000000000000000..ddc59ccb418ea5968567815af115250af3eec550 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Editor.less @@ -0,0 +1,57 @@ +/* Editor + * + * Styling Editor means styling the Editor inside iframe container (dijitEditorIFrameContainer) + * + * 1. Editor iframe container (default styling): + * .dijitEditorIFrameContainer - normal state styles: background-color, border, padding + * + * 2. hovered Editor iframe container (ie, mouse hover on editor) + * .dijitEditorHover .dijitEditorIFrameContainer/dijitEditorIFrame - styles when mouse hover on the container + * + * 3. focused Editor iframe container (ie, mouse focus on the editor pane) + * .dijitEditorFocused .dijitEditorIFrameContainer/dijitEditorIFrame - styles when container focused + * + * 3. disabled Editor iframe container + * .dijitEditorDisabled - editor's inner iframe container disable status styles: background, border + */ + +@import "variables"; + +.claro .dijitEditorIFrameContainer{ + padding:3px 3px 1px 10px; +} +.claro .dijitEditorIFrame { + background-color: @textbox-background-color; +} +.claro .dijitEditor { + border: 1px solid @border-color; +} +.claro .dijitEditor .dijitEditorIFrameContainer{ + background-color: @textbox-background-color; + background-repeat:repeat-x; +} +.claro .dijitEditorHover .dijitEditorIFrameContainer, +.claro .dijitEditorHover .dijitEditorIFrameContainer .dijitEditorIFrame{ + background-color: @textbox-hovered-background-color; +} +.claro .dijitEditorFocused .dijitEditorIFrameContainer, +.claro .dijitEditorFocused .dijitEditorIFrameContainer .dijitEditorIFrame{ + background-color: @textbox-focused-background-color; +} +.claro .dijitEditorHover .dijitEditorIFrameContainer, +.claro .dijitEditorFocused .dijitEditorIFrameContainer { + .textbox-background-image; +} + +/* Disabled */ +.claro .dijitEditorDisabled { + border: 1px solid @disabled-border-color; + color: @disabled-text-color; +} + +.claro .dijitDisabled .dijitEditorIFrame, +.claro .dijitDisabled .dijitEditorIFrameContainer, +.claro .dijitDisabled .dijitEditorIFrameContainer .dijitEditorIFrame { + background-color: @textbox-disabled-background-color; + background-image: none; +} diff --git a/src/main/resources/static/dijit/themes/claro/Editor_rtl.css b/src/main/resources/static/dijit/themes/claro/Editor_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..01ae2e55656cf3ea9d168dfca517935069f13e61 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Editor_rtl.css @@ -0,0 +1,11 @@ +/* Editor */ +.claro .dijitEditorRtl .dijitEditorIFrameContainer { + padding: 3px 10px 1px 3px; +} +.dj_ie6 .claro .dijitEditorRtl .dijitEditorIFrameContainer, +.dj_ie7 .claro .dijitEditorRtl .dijitEditorIFrameContainer, +.dj_ie8 .claro .dijitEditorRtl .dijitEditorIFrameContainer { + padding: 3px 0px 1px 10px; + margin-right: 0px; + border: 0px solid #d3d3d3; +} diff --git a/src/main/resources/static/dijit/themes/claro/Editor_rtl.less b/src/main/resources/static/dijit/themes/claro/Editor_rtl.less new file mode 100644 index 0000000000000000000000000000000000000000..3d79db4f09b93e8b36e93234fed2749221a26121 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Editor_rtl.less @@ -0,0 +1,16 @@ +/* Editor */ + +@import "variables"; + +.claro .dijitEditorRtl .dijitEditorIFrameContainer { + padding: 3px 10px 1px 3px; +} + +.dj_ie6 .claro .dijitEditorRtl .dijitEditorIFrameContainer, +.dj_ie7 .claro .dijitEditorRtl .dijitEditorIFrameContainer, +.dj_ie8 .claro .dijitEditorRtl .dijitEditorIFrameContainer { + // remove excessive right margin (due to IE bug) + padding: 3px 0px 1px 10px; + margin-right: 0px; + border: 0px solid #d3d3d3; +} diff --git a/src/main/resources/static/dijit/themes/claro/InlineEditBox.css b/src/main/resources/static/dijit/themes/claro/InlineEditBox.css new file mode 100644 index 0000000000000000000000000000000000000000..0cd14579d945ede7f0d22e44254ab09cc605f6c4 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/InlineEditBox.css @@ -0,0 +1,20 @@ +/* InlineEditBox + * + * Styling InlineEditBox mainly includes: + * + * 1. Normal state + * .dijitInlineEditBoxDisplayMode - for border + * + * 2. Hover state + * .dijitInlineEditBoxDisplayModeHover - for border and background color + */ +.claro .dijitInlineEditBoxDisplayMode { + border: 1px solid transparent; +} +.claro .dijitInlineEditBoxDisplayModeHover { + background-color: #e5f2fe; + border: solid 1px #759dc0; +} +.dj_ie6 .claro .dijitInlineEditBoxDisplayMode { + border: none; +} diff --git a/src/main/resources/static/dijit/themes/claro/InlineEditBox.less b/src/main/resources/static/dijit/themes/claro/InlineEditBox.less new file mode 100644 index 0000000000000000000000000000000000000000..a7162be1b3da31742c3e67b8b3560f56aa1ba054 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/InlineEditBox.less @@ -0,0 +1,25 @@ +/* InlineEditBox + * + * Styling InlineEditBox mainly includes: + * + * 1. Normal state + * .dijitInlineEditBoxDisplayMode - for border + * + * 2. Hover state + * .dijitInlineEditBoxDisplayModeHover - for border and background color + */ + +@import "variables"; + +.claro .dijitInlineEditBoxDisplayMode { + border: 1px solid transparent; +} + +.claro .dijitInlineEditBoxDisplayModeHover { + background-color: @textbox-hovered-background-color; + border: solid 1px @hovered-border-color; +} + +.dj_ie6 .claro .dijitInlineEditBoxDisplayMode { + border: none; +} diff --git a/src/main/resources/static/dijit/themes/claro/Menu.css b/src/main/resources/static/dijit/themes/claro/Menu.css new file mode 100644 index 0000000000000000000000000000000000000000..9716c3e821a90180be06969df2b46858304a231f --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Menu.css @@ -0,0 +1,183 @@ +/* Menu + +There are three areas of styling for the Menu: + + 1. The menu + There are three types of menus: + i) Context Menu + ii) Drop down Menu + iii) Navigation Menu + All three types of menus are affected by the .dijitMenu class in which you can set the background-color, padding and border + .dijitMenu affects the drop down menu in TimeTextBox, Calendar, ComboBox and FilteringSelect + .dijitMenuTable - for padding - also affects Select widget + + 2. The menu bar + .dijitMenuBar - for border, margins, padding, background-color of the menu bar + .dijitMenuBar .dijitMenuItem - for padding, text color of menu items in the menu bar (overrides .dijitMenuItem) + + 3. Menu items - items in the menu. + .dijitMenuItem - for color + .dijitMenuItemHover, .dijitMenuItemSelected - for background-color, border, text color, padding of a menu item or menubar item that has been hovered over or selected + .dijitMenuItemActive - for background-color of an active (mousedown) menu item + td.dijitMenuItemIconCell - for padding around a menu item's icon + td.dijitMenuItemLabel - for padding around a menu item's label + .dijitMenuSeparatorTop - for border, top border, of the separator + .dijitMenuSeparatorBottom - for bottom margin of the separator + + Styles specific to ComboBox and FilteringSelect widgets: + .dijitComboBoxMenu .dijitMenuItem - for padding and border of a menu item in a ComboBox or FilteringSelect widget's menu + .dijitComboBoxMenu .dijitMenuItemSelected- for text color, background-color and border of a menu item in a ComboBox or FilteringSelect widget's menu + +*/ +.claro .dijitMenuBar { + border: 1px solid #b5bcc7; + margin: 0; + padding: 0; + background-color: #efefef; + background-image: url("images/standardGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + _background-image: none; +} +.claro .dijitMenu { + background-color: #ffffff; + border: 1px solid #759dc0; +} +.claro .dijitMenuItem { + color: #000000; +} +.claro .dijitMenuBar .dijitMenuItem { + padding: 6px 10px 7px; + margin: -1px; +} +.claro .dijitMenuBar .dijitMenuItemHover, +.claro .dijitMenuBar .dijitMenuItemSelected { + border: solid 1px #759dc0; + padding: 5px 9px 6px; +} +/* this prevents jiggling upon hover of a menu item */ +.claro .dijitMenuTable { + border-collapse: separate; + border-spacing: 0 0; + padding: 0; +} +.claro .dijitMenu .dijitMenuItem td, +.claro .dijitComboBoxMenu .dijitMenuItem { + padding: 2px; + border-width: 1px 0 1px 0; + border-style: solid; + border-color: #ffffff; +} +/* hover over a MenuItem or MenuBarItem */ +.claro .dijitMenu .dijitMenuItemHover td, +.claro .dijitMenu .dijitMenuItemSelected td, +.claro .dijitMenuItemHover, +.claro .dijitComboBoxMenu .dijitMenuItemHover, +.claro .dijitMenuItemSelected { + border-color: #759dc0; + background-color: #abd6ff; + background-image: url("images/standardGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + _background-image: none; +} +.claro .dijitMenuItemActive { + background-image: url("images/activeGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + _background-image: none; +} +.dj_ie .claro .dijitMenuActive .dijitMenuItemHover, +.dj_ie .claro .dijitMenuActive .dijitMenuItemSelected, +.dj_ie .claro .dijitMenuPassive .dijitMenuItemHover, +.dj_ie .claro .dijitMenuPassive .dijitMenuItemSelected { + padding-top: 6px; + padding-bottom: 5px; + margin-top: -3px; +} +.claro td.dijitMenuItemIconCell { + padding: 2px; + margin: 0 0 0 4px; +} +.claro td.dijitMenuItemLabel { + padding-top: 5px; + padding-bottom: 5px; +} +.claro .dijitMenuExpand { + width: 7px; + height: 7px; + background-image: url("images/spriteArrows.png"); + background-position: -14px 0; + margin-right: 3px; + margin-bottom: 4px; +} +.claro .dijitMenuSeparatorTop { + height: auto; + margin-top: 1px; + /* prevents spacing above/below separator */ + + border-bottom: 1px solid #b5bcc7; +} +.claro .dijitMenuSeparatorBottom { + height: auto; + margin-bottom: 1px; +} +/* the checked menu item */ +.claro .dijitCheckedMenuItem .dijitMenuItemIcon, +.claro .dijitRadioMenuItem .dijitMenuItemIcon { + background-image: url("form/images/checkboxRadioButtonStates.png"); + background-repeat: no-repeat; + background-position: -15px 50%; + /* unchecked checkbox */ + + width: 15px; + height: 16px; +} +.dj_ie6 .claro .dijitCheckedMenuItem .dijitMenuItemIcon, +.dj_ie6 .claro .dijitRadioMenuItem .dijitMenuItemIcon { + background-image: url("form/images/checkboxAndRadioButtons_IE6.png"); +} +.claro .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon { + background-position: 0 50%; + /* checked checkbox */ + +} +.claro .dijitRadioMenuItem .dijitMenuItemIcon { + background-position: -105px 50%; + /* unfilled circle */ + +} +.claro .dijitRadioMenuItemChecked .dijitMenuItemIcon { + background-position: -90px 50%; + /* filled circle */ + +} +/*ComboBox Menu*/ +.claro .dijitComboBoxMenu { + margin-left: 0; + background-image: none; +} +.claro .dijitMenu .dijitMenuItemSelected td, +.claro .dijitComboBoxMenu .dijitMenuItemSelected { + color: #000000; + border-color: #759dc0; + background-color: #abd6ff; +} +.claro .dijitComboBoxMenuActive .dijitMenuItemSelected { + background-color: #7dbdfa; + /* TODO: why is this a different color than normal .dijitMenuItemSelected? */ + +} +.claro .dijitMenuPreviousButton, +.claro .dijitMenuNextButton { + font-style: italic; +} diff --git a/src/main/resources/static/dijit/themes/claro/Menu.less b/src/main/resources/static/dijit/themes/claro/Menu.less new file mode 100644 index 0000000000000000000000000000000000000000..86ab7b91d2338670645a88b645f8ed24a8b8e7c4 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Menu.less @@ -0,0 +1,176 @@ +/* Menu + +There are three areas of styling for the Menu: + + 1. The menu + There are three types of menus: + i) Context Menu + ii) Drop down Menu + iii) Navigation Menu + All three types of menus are affected by the .dijitMenu class in which you can set the background-color, padding and border + .dijitMenu affects the drop down menu in TimeTextBox, Calendar, ComboBox and FilteringSelect + .dijitMenuTable - for padding - also affects Select widget + + 2. The menu bar + .dijitMenuBar - for border, margins, padding, background-color of the menu bar + .dijitMenuBar .dijitMenuItem - for padding, text color of menu items in the menu bar (overrides .dijitMenuItem) + + 3. Menu items - items in the menu. + .dijitMenuItem - for color + .dijitMenuItemHover, .dijitMenuItemSelected - for background-color, border, text color, padding of a menu item or menubar item that has been hovered over or selected + .dijitMenuItemActive - for background-color of an active (mousedown) menu item + td.dijitMenuItemIconCell - for padding around a menu item's icon + td.dijitMenuItemLabel - for padding around a menu item's label + .dijitMenuSeparatorTop - for border, top border, of the separator + .dijitMenuSeparatorBottom - for bottom margin of the separator + + Styles specific to ComboBox and FilteringSelect widgets: + .dijitComboBoxMenu .dijitMenuItem - for padding and border of a menu item in a ComboBox or FilteringSelect widget's menu + .dijitComboBoxMenu .dijitMenuItemSelected- for text color, background-color and border of a menu item in a ComboBox or FilteringSelect widget's menu + +*/ + +@import "variables"; + +.claro .dijitMenuBar { + border: 1px solid @border-color; + margin: 0; + padding: 0; + background-color: @bar-background-color; + .standard-gradient; +} + +.claro .dijitMenu { + background-color:@menu-background-color; + border: 1px solid @popup-border-color; +} + +.claro .dijitMenuItem { + color: @text-color; +} +.claro .dijitMenuBar .dijitMenuItem { + padding: 6px 10px 7px; + margin:-1px; +} +.claro .dijitMenuBar .dijitMenuItemHover, +.claro .dijitMenuBar .dijitMenuItemSelected { + // on hover or selection of MenuBar item, add border and reduce padding to compensate + border:solid 1px @hovered-border-color; + padding: 5px 9px 6px; +} + +/* this prevents jiggling upon hover of a menu item */ +.claro .dijitMenuTable { + border-collapse:separate; + border-spacing:0 0; + padding:0; +} + +.claro .dijitMenu .dijitMenuItem td, +.claro .dijitComboBoxMenu .dijitMenuItem { + padding: @textbox-padding; // Make drop down menu text line up with text in . + border-width:1px 0 1px 0; + border-style:solid; + border-color: @select-dropdownitem-background-color; +} + +/* hover over a MenuItem or MenuBarItem */ +.claro .dijitMenu .dijitMenuItemHover td, +.claro .dijitMenu .dijitMenuItemSelected td, +.claro .dijitMenuItemHover, +.claro .dijitComboBoxMenu .dijitMenuItemHover, +.claro .dijitMenuItemSelected { + // note: seems like the selected MenuItem should use @pressed-background-color + // and .active-gradient, but claro didn't to that + border-color: @hovered-border-color; + background-color: @hovered-background-color; + .standard-gradient; +} + +.claro .dijitMenuItemActive { + // todo: seems like the selected MenuItem should come here + // todo: seems like should use @pressed-background-color + .active-gradient; +} +.dj_ie .claro .dijitMenuActive .dijitMenuItemHover, +.dj_ie .claro .dijitMenuActive .dijitMenuItemSelected, +.dj_ie .claro .dijitMenuPassive .dijitMenuItemHover, +.dj_ie .claro .dijitMenuPassive .dijitMenuItemSelected { + // Selectivity set to override ComboBox rules below. + // If this rule isn't present, on IE6 hovering an item in the ComboBox drop down causes two + // items to be highlighted (except when hovering the first item in the list) + padding-top: 6px; + padding-bottom: 5px; + margin-top: -3px; +} + +.claro td.dijitMenuItemIconCell { + padding: 2px; + margin: 0 0 0 4px; +} +.claro td.dijitMenuItemLabel { + padding-top: 5px; + padding-bottom: 5px; +} +.claro .dijitMenuExpand { + width: 7px; + height: 7px; + background-image: url(@image-arrow-sprite); + background-position: -14px 0; + margin-right:3px; + margin-bottom: 4px; +} +.claro .dijitMenuSeparatorTop { + height: auto; + margin-top:1px; /* prevents spacing above/below separator */ + border-bottom: 1px solid @border-color +} +.claro .dijitMenuSeparatorBottom{ + height: auto; + margin-bottom:1px; +} +/* the checked menu item */ +.claro .dijitCheckedMenuItem .dijitMenuItemIcon, +.claro .dijitRadioMenuItem .dijitMenuItemIcon { + background-image: url(@image-form-checkbox-and-radios); + background-repeat:no-repeat; + background-position: -15px 50%; /* unchecked checkbox */ + width:15px; + height:16px; +} +.dj_ie6 .claro .dijitCheckedMenuItem .dijitMenuItemIcon, +.dj_ie6 .claro .dijitRadioMenuItem .dijitMenuItemIcon { + background-image: url(@image-form-checkbox-and-radios-ie6); +} +.claro .dijitCheckedMenuItemChecked .dijitCheckedMenuItemIcon { + background-position: 0 50%; /* checked checkbox */ +} +.claro .dijitRadioMenuItem .dijitMenuItemIcon { + background-position: -105px 50%; /* unfilled circle */ +} +.claro .dijitRadioMenuItemChecked .dijitMenuItemIcon { + background-position: -90px 50%; /* filled circle */ +} + +/*ComboBox Menu*/ +.claro .dijitComboBoxMenu { + margin-left:0; + background-image: none; +} + +.claro .dijitMenu .dijitMenuItemSelected td, +.claro .dijitComboBoxMenu .dijitMenuItemSelected { + // TODO: combine with above rules for selected items? + // But the selected item in a Select drop down is different than when MenuBarItem "File" is highlighted + // because the user is on the file menu? + color:@selected-text-color; + border-color:@hovered-border-color; + background-color:@hovered-background-color; +} + +.claro .dijitComboBoxMenuActive .dijitMenuItemSelected { + background-color: @select-dropdownitem-hovered-background-color; /* TODO: why is this a different color than normal .dijitMenuItemSelected? */ +} +.claro .dijitMenuPreviousButton, .claro .dijitMenuNextButton { + font-style: italic; +} diff --git a/src/main/resources/static/dijit/themes/claro/Menu_rtl.css b/src/main/resources/static/dijit/themes/claro/Menu_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..2b96cbae730eeaf0b5ad49c2c7a0444bf4a8142b --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Menu_rtl.css @@ -0,0 +1,8 @@ +.claro .dijitMenuItemRtl .dijitMenuExpand { + background-position: -7px 0; + margin-right: 0; + margin-left: 3px; +} +.claro .dijitMenuItemRtl .dijitMenuItemIcon { + margin: 0 4px 0 0; +} diff --git a/src/main/resources/static/dijit/themes/claro/Menu_rtl.less b/src/main/resources/static/dijit/themes/claro/Menu_rtl.less new file mode 100644 index 0000000000000000000000000000000000000000..6f669f5fd8b44b610cb4d71ada9b0a9728a166c8 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Menu_rtl.less @@ -0,0 +1,11 @@ +@import "variables"; + +.claro .dijitMenuItemRtl .dijitMenuExpand { + background-position: -7px 0; + margin-right: 0; + margin-left: 3px; +} + +.claro .dijitMenuItemRtl .dijitMenuItemIcon { + margin:0 4px 0 0; +} diff --git a/src/main/resources/static/dijit/themes/claro/ProgressBar.css b/src/main/resources/static/dijit/themes/claro/ProgressBar.css new file mode 100644 index 0000000000000000000000000000000000000000..1b7cf675161d856f39d0c7ae807ac08f58ba4959 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/ProgressBar.css @@ -0,0 +1,71 @@ +/* ProgressBar + * + * Styling of the ProgressBar consists of the following: + * + * 1. the base progress bar + * .dijitProgressBar - sets margins for the progress bar + * + * 2. the empty bar + * .dijitProgressBarEmpty - sets background img and color for bar or parts of bar that are not finished yet + * Also sets border color for whole bar + * + * 3. tile mode + * .dijitProgressBarTile + * inner container for finished portion when in 'tile' (image) mode + * + * 4. full bar mode + * .dijitProgressBarFull + * adds border to right side of the filled portion of bar + * + * 5. text for label of bar + * .dijitProgressBarLabel - sets text color, which must contrast with both the "Empty" and "Full" parts. + * + * 6. indeterminate mode + * .dijitProgressBarIndeterminate .dijitProgressBarTile + * sets animated gif for the progress bar in 'indeterminate' mode + */ +.claro .dijitProgressBar { + margin: 2px 0 2px 0; +} +.claro .dijitProgressBarEmpty { + /* outer container and background of the bar that's not finished yet*/ + + background-color: #ffffff; + border-color: #759dc0; +} +.claro .dijitProgressBarTile { + /* inner container for finished portion when in 'tile' (image) mode */ + + background-color: #abd6ff; + background-image: url("images/progressBarFull.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.93) 0px, rgba(255, 255, 255, 0.41) 1px, rgba(255, 255, 255, 0.7) 2px, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.93) 0px, rgba(255, 255, 255, 0.41) 1px, rgba(255, 255, 255, 0.7) 2px, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.93) 0px, rgba(255, 255, 255, 0.41) 1px, rgba(255, 255, 255, 0.7) 2px, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.93) 0px, rgba(255, 255, 255, 0.41) 1px, rgba(255, 255, 255, 0.7) 2px, rgba(255, 255, 255, 0) 100%); + background-attachment: scroll; +} +.dj_ie6 .claro .dijitProgressBarTile { + background-image: none; +} +.claro .dijitProgressBarFull { + border: 0px solid #759dc0; + border-right-width: 1px; + -webkit-transition-property: width; + -moz-transition-property: width; + transition-property: width; + -webkit-transition-duration: 0.25s; + -moz-transition-duration: 0.25s; + transition-duration: 0.25s; +} +.claro .dijitProgressBarLabel { + /* Set to a color that contrasts with both the "Empty" and "Full" parts. */ + + color: #000000; +} +.claro .dijitProgressBarIndeterminate .dijitProgressBarTile { + /* use an animated gif for the progress bar in 'indeterminate' mode; + background-color won't appear unless user has turned off background images */ + + background: #efefef url("images/progressBarAnim.gif") repeat-x top; +} diff --git a/src/main/resources/static/dijit/themes/claro/ProgressBar.less b/src/main/resources/static/dijit/themes/claro/ProgressBar.less new file mode 100644 index 0000000000000000000000000000000000000000..2bc2914a9f160cc1c040b51e3178c8a932627cb2 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/ProgressBar.less @@ -0,0 +1,65 @@ +/* ProgressBar + * + * Styling of the ProgressBar consists of the following: + * + * 1. the base progress bar + * .dijitProgressBar - sets margins for the progress bar + * + * 2. the empty bar + * .dijitProgressBarEmpty - sets background img and color for bar or parts of bar that are not finished yet + * Also sets border color for whole bar + * + * 3. tile mode + * .dijitProgressBarTile + * inner container for finished portion when in 'tile' (image) mode + * + * 4. full bar mode + * .dijitProgressBarFull + * adds border to right side of the filled portion of bar + * + * 5. text for label of bar + * .dijitProgressBarLabel - sets text color, which must contrast with both the "Empty" and "Full" parts. + * + * 6. indeterminate mode + * .dijitProgressBarIndeterminate .dijitProgressBarTile + * sets animated gif for the progress bar in 'indeterminate' mode + */ + + @import "variables"; + +.claro .dijitProgressBar { + margin:2px 0 2px 0; +} +.claro .dijitProgressBarEmpty { + /* outer container and background of the bar that's not finished yet*/ + background-color: @progressbar-empty-background-color; + border-color: @progressbar-border-color; +} +.claro .dijitProgressBarTile { + /* inner container for finished portion when in 'tile' (image) mode */ + background-color: @progressbar-full-background-color; + + // gradient background using CSS gradient, with fallback to image for IE + background-image: url("images/progressBarFull.png"); + background-repeat: repeat-x; + .alpha-white-gradient(0.93,0px, 0.41,1px, 0.7,2px, 0,100%); + background-attachment: scroll; // override strange "fixed" setting from dijit.css +} +.dj_ie6 .claro .dijitProgressBarTile { + background-image: none; +} +.claro .dijitProgressBarFull { + border: 0px solid @progressbar-border-color; + border-right-width: 1px; + .transition-property(width); + .transition-duration(.25s); +} +.claro .dijitProgressBarLabel { + /* Set to a color that contrasts with both the "Empty" and "Full" parts. */ + color: @progressbar-text-color; +} +.claro .dijitProgressBarIndeterminate .dijitProgressBarTile { + /* use an animated gif for the progress bar in 'indeterminate' mode; + background-color won't appear unless user has turned off background images */ + background: @bar-background-color url(@image-progressbar-anim) repeat-x top; +} diff --git a/src/main/resources/static/dijit/themes/claro/ProgressBar_rtl.css b/src/main/resources/static/dijit/themes/claro/ProgressBar_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..c70d8e868aa1cae6b454840b3727b0c972078e31 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/ProgressBar_rtl.css @@ -0,0 +1,16 @@ +/* ProgressBar + * + * Styling of the ProgressBar when RTL direction is specified + */ +.claro .dijitProgressBarRtl .dijitProgressBarFull { + border-left-width: 1px; + border-right-width: 0px; +} +.claro .dijitProgressBarIndeterminateRtl .dijitProgressBarTile { + -moz-transform: scaleX(-1); + -o-transform: scaleX(-1); + -webkit-transform: scaleX(-1); + transform: scaleX(-1); + filter: FlipH; + -ms-filter: "FlipH"; +} diff --git a/src/main/resources/static/dijit/themes/claro/ProgressBar_rtl.less b/src/main/resources/static/dijit/themes/claro/ProgressBar_rtl.less new file mode 100644 index 0000000000000000000000000000000000000000..2091edc2c27e2f028f8104ce5d1011a0d18cfbb6 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/ProgressBar_rtl.less @@ -0,0 +1,20 @@ +/* ProgressBar + * + * Styling of the ProgressBar when RTL direction is specified + */ + +@import "variables"; + +.claro .dijitProgressBarRtl .dijitProgressBarFull { + border-left-width: 1px; + border-right-width: 0px; +} + +.claro .dijitProgressBarIndeterminateRtl .dijitProgressBarTile { + -moz-transform: scaleX(-1); + -o-transform: scaleX(-1); + -webkit-transform: scaleX(-1); + transform: scaleX(-1); + filter: FlipH; + -ms-filter: "FlipH"; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/claro/README b/src/main/resources/static/dijit/themes/claro/README new file mode 100644 index 0000000000000000000000000000000000000000..0a254623f29543781bdba4599aca6f89479de2a1 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/README @@ -0,0 +1,11 @@ +These are "less" files that compile into the CSS of claro. + +1. Install node from http://nodejs.org/#download + +2. To compile all the files: + + $ cd dijit/themes/claro + $ node compile.js + + +See http://lesscss.org/ and https://github.com/cloudhead/less.js/ for more information. diff --git a/src/main/resources/static/dijit/themes/claro/TimePicker.css b/src/main/resources/static/dijit/themes/claro/TimePicker.css new file mode 100644 index 0000000000000000000000000000000000000000..d1573b7a2271b68a6a522559894bdb0210c3638c --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/TimePicker.css @@ -0,0 +1,112 @@ +/* Time Picker + * + * Styling the Time Picker consists of the following: + * + * 1. minor time values + * .dijitTimePickerTick - set text color, size, background color of minor values + * .dijitTimePickerTickHover - set hover style of minor time values + * dijitTimePickerTickSelected - set selected style of minor time values + * + * 2. major time values - 1:00, 2:00, times on the hour + * set text color, size, background color, left/right margins for "zoom" affect + * .dijitTimePickerMarkerHover - to set hover style of major time values + * .dijitTimePickerMarkerSelected - set selected style of major time values + * + * 3. up and down arrow buttons + * .dijitTimePicker .dijitButtonNode - background-color, border + * .dijitTimePicker .dijitUpArrowHover, .dijitTimePicker .dijitDownArrowHover - set background-color for hover state + * + * Other classes provide the fundamental structure of the TimePicker and should not be modified. + */ +/* override Button.css */ +.claro .dijitTimePicker .dijitButtonNode { + padding: 0 0; + -moz-border-radius: 0; + border-radius: 0; +} +.claro .dijitTimePicker { + border: 1px #b5bcc7 solid; + border-top: none; + border-bottom: none; + background-color: #fff; + /* TODO: useless? Appears to be overridden by settings on individual elements */ + +} +.claro .dijitTimePickerItem { + /* dijitTimePickerItem refers to both Tick's (minor values like 2:15, 2:30, 2:45) and Marker's (major values like 2PM, 3PM) */ + + background-image: url("images/standardGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + _background-image: none; + border-top: solid 1px #b5bcc7; + border-bottom: solid 1px #b5bcc7; + margin-top: -1px; +} +.claro .dijitTimePickerTick { + /* minor value */ + + color: #818181; + background-color: #efefef; + font-size: 0.818em; +} +.claro .dijitTimePickerMarker { + /* major value - 1:00, 2:00, times on the hour */ + + background-color: #e5f2fe; + font-size: 1em; + white-space: nowrap; +} +.claro .dijitTimePickerTickHover, +.claro .dijitTimePickerMarkerHover, +.claro .dijitTimePickerMarkerSelected, +.claro .dijitTimePickerTickSelected { + background-color: #7dbdfa; + color: #000000; +} +.claro .dijitTimePickerMarkerSelected, +.claro .dijitTimePickerTickSelected { + font-size: 1em; +} +.claro .dijitTimePickerTick .dijitTimePickerItemInner { + padding: 1px; + margin: 0; +} +.claro .dijitTimePicker .dijitButtonNode { + border-left: none; + border-right: none; + border-color: #b5bcc7; + background-color: #efefef; + background-image: url("images/standardGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + _background-image: none; +} +.claro .dijitTimePicker .dijitArrowButtonInner { + height: 100%; + /* hack claro.button.css */ + + background-image: url("form/images/commonFormArrows.png"); + background-repeat: no-repeat; + background-position: -140px 45%; +} +.claro .dijitTimePicker .dijitDownArrowButton .dijitArrowButtonInner { + background-position: -35px 45%; +} +/* hover */ +.claro .dijitTimePicker .dijitUpArrowHover, +.claro .dijitTimePicker .dijitDownArrowHover { + background-color: #abd6ff; +} +.claro .dijitTimePicker .dijitUpArrowHover .dijitArrowButtonInner { + background-position: -175px 45%; +} +.claro .dijitTimePicker .dijitDownArrowHover .dijitArrowButtonInner { + background-position: -70px 45%; +} diff --git a/src/main/resources/static/dijit/themes/claro/TimePicker.less b/src/main/resources/static/dijit/themes/claro/TimePicker.less new file mode 100644 index 0000000000000000000000000000000000000000..caacbe987c07f834f3241d52f23763b53d106d09 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/TimePicker.less @@ -0,0 +1,98 @@ +/* Time Picker + * + * Styling the Time Picker consists of the following: + * + * 1. minor time values + * .dijitTimePickerTick - set text color, size, background color of minor values + * .dijitTimePickerTickHover - set hover style of minor time values + * dijitTimePickerTickSelected - set selected style of minor time values + * + * 2. major time values - 1:00, 2:00, times on the hour + * set text color, size, background color, left/right margins for "zoom" affect + * .dijitTimePickerMarkerHover - to set hover style of major time values + * .dijitTimePickerMarkerSelected - set selected style of major time values + * + * 3. up and down arrow buttons + * .dijitTimePicker .dijitButtonNode - background-color, border + * .dijitTimePicker .dijitUpArrowHover, .dijitTimePicker .dijitDownArrowHover - set background-color for hover state + * + * Other classes provide the fundamental structure of the TimePicker and should not be modified. + */ + +@import "variables"; + +/* override Button.css */ +.claro .dijitTimePicker .dijitButtonNode { + padding: 0 0; + .border-radius(0); +} +.claro .dijitTimePicker { + border:1px @border-color solid; + border-top:none; + border-bottom:none; + background-color:#fff; /* TODO: useless? Appears to be overridden by settings on individual elements */ +} +.claro .dijitTimePickerItem { + /* dijitTimePickerItem refers to both Tick's (minor values like 2:15, 2:30, 2:45) and Marker's (major values like 2PM, 3PM) */ + .standard-gradient; + border-top:solid 1px @border-color; + border-bottom:solid 1px @border-color; + margin-top:-1px; +} +.claro .dijitTimePickerTick { + /* minor value */ + color:@timepicker-minorvalue-text-color; + background-color:@timepicker-minorvalue-background-color; + font-size:0.818em; +} +.claro .dijitTimePickerMarker { + /* major value - 1:00, 2:00, times on the hour */ + background-color: @timepicker-majorvalue-background-color; + font-size: 1em; + white-space: nowrap; +} +.claro .dijitTimePickerTickHover, +.claro .dijitTimePickerMarkerHover, +.claro .dijitTimePickerMarkerSelected, +.claro .dijitTimePickerTickSelected { + background-color: @timepicker-value-hovered-background-color; + color:@timepicker-value-hovered-text-color; +} +.claro .dijitTimePickerMarkerSelected, +.claro .dijitTimePickerTickSelected { + font-size: 1em; +} + +.claro .dijitTimePickerTick .dijitTimePickerItemInner { + padding:1px; + margin:0; +} +.claro .dijitTimePicker .dijitButtonNode { + border-left:none; + border-right:none; + border-color:@border-color; + background-color: @unselected-background-color; + .standard-gradient; +} +.claro .dijitTimePicker .dijitArrowButtonInner { + height: 100%; /* hack claro.button.css */ + background-image: url(@image-form-common-arrows); + background-repeat: no-repeat; + background-position:-140px 45%; +} +.claro .dijitTimePicker .dijitDownArrowButton .dijitArrowButtonInner { + background-position:-35px 45%; +} +/* hover */ +.claro .dijitTimePicker .dijitUpArrowHover, +.claro .dijitTimePicker .dijitDownArrowHover { + background-color: @timepicker-arrow-hovered-background-color; +} +.claro .dijitTimePicker .dijitUpArrowHover .dijitArrowButtonInner { + background-position:-175px 45%; +} +.claro .dijitTimePicker .dijitDownArrowHover .dijitArrowButtonInner { + background-position:-70px 45%; +} + +// TODO: should have active rule, for clicking a .dijitTimePickerItem \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/claro/TitlePane.css b/src/main/resources/static/dijit/themes/claro/TitlePane.css new file mode 100644 index 0000000000000000000000000000000000000000..87d82a6da285a4858d3d7616529d28030b3ef579 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/TitlePane.css @@ -0,0 +1,93 @@ +/* TitlePane and Fieldset + * + * Styling TitlePane means styling the TitlePane title and its content container (dijitTitlePane) + * + * TitlePane title: + * 1. TitlePane title (default styling): + * .dijitTitlePaneTitle - TitlePane's title div style: background-color, border + * + * 2. hovered TitlePane title (ie, mouse hover on a title bar) + * .dijitTitlePaneTitleHover - styles when mouse hover on the title div + * + * 3. active TitlePane title (ie, mouse down on a title bar) + * .dijitTitlePaneTitleActive - styles when mouse down on the title div + * + * + * TitlePane Content Container: + * 1. outer/inner container: + * .dijitTitlePaneContentOuter / dijitTitlePaneContentInner - styles for the content outer div + */ +.claro .dijitTitlePaneTitle { + background-color: #efefef; + background-image: url("images/standardGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + _background-image: none; + border: 1px solid #b5bcc7; + padding: 0 7px 3px 7px; + min-height: 17px; + color: #494949; +} +.claro .dijitFieldset { + -moz-border-radius: 4px; + border-radius: 4px; +} +.claro .dijitTitlePaneTitleOpen, +.claro .dijitTitlePaneTitleFixedOpen { + background-color: #cfe5fa; + color: #000000; +} +.claro .dijitTitlePaneTitleHover { + background-color: #abd6ff; + border-color: #759dc0; +} +.claro .dijitTitlePaneTitleActive { + background-color: #7dbdfa; + border-color: #759dc0; + background-image: url("images/activeGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + _background-image: none; +} +.claro .dijitTitlePaneTitleFocus { + margin-top: 3px; + padding-bottom: 2px; +} +.claro .dijitTitlePane .dijitArrowNode, +.claro .dijitFieldset .dijitArrowNode { + background-image: url("images/spriteArrows.png"); + background-repeat: no-repeat; + height: 8px; + width: 7px; +} +.claro .dijitTitlePaneTitleOpen .dijitArrowNode, +.claro .dijitFieldsetTitleOpen .dijitArrowNode { + background-position: 0 0; +} +.claro .dijitTitlePaneTitleClosed .dijitArrowNode, +.claro .dijitFieldsetTitleClosed .dijitArrowNode { + background-position: -14px 0; +} +.claro .dijitTitlePaneContentOuter { + background: #ffffff; + border: 1px solid #b5bcc7; + border-top: none; +} +.claro .dijitTitlePaneContentInner { + padding: 10px; +} +.claro .dijitFieldsetContentInner { + padding: 4px; +} +.claro .dijitTitlePaneTextNode, +.claro .dijitFieldsetLegendNode { + margin-left: 4px; + margin-right: 4px; + vertical-align: text-top; +} diff --git a/src/main/resources/static/dijit/themes/claro/TitlePane.less b/src/main/resources/static/dijit/themes/claro/TitlePane.less new file mode 100644 index 0000000000000000000000000000000000000000..833fcccfc108de3e7144e533fdc46b49ae040cce --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/TitlePane.less @@ -0,0 +1,78 @@ +/* TitlePane and Fieldset + * + * Styling TitlePane means styling the TitlePane title and its content container (dijitTitlePane) + * + * TitlePane title: + * 1. TitlePane title (default styling): + * .dijitTitlePaneTitle - TitlePane's title div style: background-color, border + * + * 2. hovered TitlePane title (ie, mouse hover on a title bar) + * .dijitTitlePaneTitleHover - styles when mouse hover on the title div + * + * 3. active TitlePane title (ie, mouse down on a title bar) + * .dijitTitlePaneTitleActive - styles when mouse down on the title div + * + * + * TitlePane Content Container: + * 1. outer/inner container: + * .dijitTitlePaneContentOuter / dijitTitlePaneContentInner - styles for the content outer div + */ + +@import "variables"; + +.claro .dijitTitlePaneTitle { + background-color: @unselected-background-color; + .standard-gradient; + border:1px solid @border-color; + padding: 0 7px 3px 7px; + min-height:17px; + color: @unselected-text-color; +} +.claro .dijitFieldset { + .border-radius(4px); +} +.claro .dijitTitlePaneTitleOpen, .claro .dijitTitlePaneTitleFixedOpen { + background-color: @selected-background-color; + color: @text-color; +} +.claro .dijitTitlePaneTitleHover { + background-color: @hovered-background-color; + border-color: @hovered-border-color; +} +.claro .dijitTitlePaneTitleActive { + background-color: @pressed-background-color; + border-color: @pressed-border-color; + .active-gradient; +} +.claro .dijitTitlePaneTitleFocus { + margin-top:3px; + padding-bottom:2px; +} +.claro .dijitTitlePane .dijitArrowNode, .claro .dijitFieldset .dijitArrowNode { + background-image: url(@image-arrow-sprite); + background-repeat: no-repeat; + height: 8px; + width: 7px; +} +.claro .dijitTitlePaneTitleOpen .dijitArrowNode, .claro .dijitFieldsetTitleOpen .dijitArrowNode,{ + background-position: 0 0; +} +.claro .dijitTitlePaneTitleClosed .dijitArrowNode, .claro .dijitFieldsetTitleClosed .dijitArrowNode { + background-position: -14px 0; +} +.claro .dijitTitlePaneContentOuter { + background: @pane-background-color; + border:1px solid @border-color; + border-top:none; +} +.claro .dijitTitlePaneContentInner{ + padding:10px; +} +.claro .dijitFieldsetContentInner { + padding: 4px; +} +.claro .dijitTitlePaneTextNode, .claro .dijitFieldsetLegendNode { + margin-left: 4px; + margin-right: 4px; + vertical-align:text-top; +} diff --git a/src/main/resources/static/dijit/themes/claro/TitlePane_rtl.css b/src/main/resources/static/dijit/themes/claro/TitlePane_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..12d21bd6d90862d661a4b55f8144dd0165ead429 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/TitlePane_rtl.css @@ -0,0 +1,5 @@ +/* TitlePane */ +.claro .dijitTitlePaneRtl .dijitClosed .dijitArrowNode, +.claro .dijitFieldsetRtl .dijitFieldsetTitleClosed .dijitArrowNode { + background-position: -7px 0; +} diff --git a/src/main/resources/static/dijit/themes/claro/TitlePane_rtl.less b/src/main/resources/static/dijit/themes/claro/TitlePane_rtl.less new file mode 100644 index 0000000000000000000000000000000000000000..4481d90a2c062daebdb44694827424e9cc58ec93 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/TitlePane_rtl.less @@ -0,0 +1,7 @@ +/* TitlePane */ + +@import "variables"; + +.claro .dijitTitlePaneRtl .dijitClosed .dijitArrowNode, .claro .dijitFieldsetRtl .dijitFieldsetTitleClosed .dijitArrowNode { + background-position: -7px 0; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/claro/Toolbar.css b/src/main/resources/static/dijit/themes/claro/Toolbar.css new file mode 100644 index 0000000000000000000000000000000000000000..20ae6f286c64f00e44b512f34eb4aff17c45fdd0 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Toolbar.css @@ -0,0 +1,211 @@ +/* Toolbar + * + * Styling Toolbar means styling the toolbar container and the widget inside toolbar (dijitToolbar) + * + * 1. toolbar (default styling): + * .dijitToolbar - styles for outer container + * + * 2. widget inside toolbar + * .dijitToolbar .dijitButtonNode - Button widget + * .dijitComboButton - ComboButton widget + * .dijitDropDownButton - DropDownButton widget + * .dijitToggleButton - ToggleButton widget + * + * 3. hovered widget inside toolbar (ie, mouse hover on the widget inside) + * .dijitToolbar .dijitButtonNodeHover - styles for hovered Button widget + * + * 4. actived widget inside toolbar (ie, mouse down on the widget inside) + * .dijitToolbar .dijitButtonNodeActive - mouse down on Button widget + */ +.claro .dijitToolbar { + border-bottom: 1px solid #b5bcc7; + background-color: #efefef; + background-image: url("images/standardGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + _background-image: none; + padding: 2px 0 2px 4px; + zoom: 1; +} +.claro .dijitToolbar label { + padding: 0 3px 0 6px; +} +/** override claro/form/Button.css, and also ComboBox down arrow **/ +.claro .dijitToolbar .dijitButton .dijitButtonNode, +.claro .dijitToolbar .dijitDropDownButton .dijitButtonNode, +.claro .dijitToolbar .dijitComboButton .dijitButtonNode, +.claro .dijitToolbar .dijitToggleButton .dijitButtonNode, +.claro .dijitToolbar .dijitComboBox .dijitButtonNode { + border-width: 0; + /* on hover/active, border-->1px, padding-->1px */ + + padding: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + -webkit-transition-property: background-color; + -moz-transition-property: background-color; + transition-property: background-color; + -webkit-transition-duration: 0.3s; + -moz-transition-duration: 0.3s; + transition-duration: 0.3s; + background-color: rgba(171, 214, 255, 0); + background-image: none; + /* cancel gradient for normal buttons, we don't want any gradient besides toolbar's on non-hovered buttons */ + +} +.dj_ie .claro .dijitToolbar .dijitButton .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitDropDownButton .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitComboButton .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitToggleButton .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitComboBox .dijitButtonNode { + background-color: transparent; + /* for IE, which doesn't understand rgba(...) */ + +} +/* hover status */ +.dj_ie .claro .dijitToolbar .dijitButtonHover .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitDropDownButtonHover .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitComboButton .dijitButtonNodeHover, +.dj_ie .claro .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover, +.dj_ie .claro .dijitToolbar .dijitToggleButtonHover .dijitButtonNode { + /* button should still turn blue on hover, so need to override .dj_ie rules above */ + + background-color: #abd6ff; +} +/* active status */ +.dj_ie .claro .dijitToolbar .dijitButtonActive .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitDropDownButtonActive .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitComboButtonActive .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitToggleButtonActive .dijitButtonNode { + /* button should still turn blue on press, so need to override .dj_ie rules above */ + + background-color: #abd6ff; +} +.claro .dijitToolbar .dijitComboButton .dijitStretch { + /* no rounded border on side adjacent to arrow */ + + -moz-border-radius: 2px 0 0 2px; + border-radius: 2px 0 0 2px; +} +.claro .dijitToolbar .dijitComboButton .dijitArrowButton { + /* no rounded border on side adjacent to button */ + + -moz-border-radius: 0 2px 2px 0; + border-radius: 0 2px 2px 0; +} +.claro .dijitToolbar .dijitComboBox .dijitButtonNode { + padding: 0; +} +/* hover status */ +.claro .dijitToolbar .dijitButtonHover .dijitButtonNode, +.claro .dijitToolbar .dijitDropDownButtonHover .dijitButtonNode, +.claro .dijitToolbar .dijitToggleButtonHover .dijitButtonNode, +.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNode { + border-width: 1px; + background-color: #abd6ff; + background-image: url("images/standardGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + _background-image: none; + padding: 1px; +} +.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNode, +.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton { + background-color: #f3ffff; +} +.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNodeHover, +.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButtonHover { + background-color: #abd6ff; +} +/* active status */ +.claro .dijitToolbar .dijitButtonActive .dijitButtonNode, +.claro .dijitToolbar .dijitDropDownButtonActive .dijitButtonNode, +.claro .dijitToolbar .dijitToggleButtonActive .dijitButtonNode { + border-width: 1px; + background-color: #7dbdfa; + background-image: url("images/activeGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + _background-image: none; + padding: 1px; +} +.claro .dijitToolbar .dijitComboButtonActive { + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; + border-width: 1px; + padding: 0; +} +.claro .dijitToolbar .dijitComboButtonActive .dijitButtonNode, +.claro .dijitToolbar .dijitComboButtonActive .dijitDownArrowButton { + background-color: #f3ffff; + padding: 2px; +} +.claro .dijitToolbar .dijitComboButtonActive .dijitButtonNodeActive { + background-color: #7dbdfa; + background-image: url("images/activeGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + _background-image: none; +} +.claro .dijitToolbar .dijitComboButtonActive .dijitDownArrowButtonActive { + background-color: #7dbdfa; + background-image: url("images/activeGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + _background-image: none; +} +/* Avoid double border between button and arrow */ +.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton, +.claro .dijitToolbar .dijitComboButtonActive .dijitDownArrowButton { + border-left-width: 0; +} +.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton { + padding-left: 2px; + /* since there's no left border, don't reduce from 2px --> 1px */ + +} +/* toggle button checked status */ +.claro .dijitToolbar .dijitToggleButtonChecked .dijitButtonNode { + margin: 0; + /* remove margin and add a border */ + + border-width: 1px; + border-style: solid; + background-image: none; + border-color: #759dc0; + background-color: #ffffff; + padding: 1px; +} +.claro .dijitToolbarSeparator { + /* separator icon in the editor sprite */ + + background: url("../../icons/images/editorIconsEnabled.png"); +} +/* Toolbar inside of disabled Editor */ +.claro .dijitDisabled .dijitToolbar { + background: none; + background-color: #efefef; + border-bottom: 1px solid #d3d3d3; +} +.claro .dijitToolbar .dijitComboBoxDisabled .dijitArrowButtonInner { + background-position: 0 50%; +} diff --git a/src/main/resources/static/dijit/themes/claro/Toolbar.less b/src/main/resources/static/dijit/themes/claro/Toolbar.less new file mode 100644 index 0000000000000000000000000000000000000000..90b9009e2509846885b2297b7f61d21405c3de52 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Toolbar.less @@ -0,0 +1,173 @@ +/* Toolbar + * + * Styling Toolbar means styling the toolbar container and the widget inside toolbar (dijitToolbar) + * + * 1. toolbar (default styling): + * .dijitToolbar - styles for outer container + * + * 2. widget inside toolbar + * .dijitToolbar .dijitButtonNode - Button widget + * .dijitComboButton - ComboButton widget + * .dijitDropDownButton - DropDownButton widget + * .dijitToggleButton - ToggleButton widget + * + * 3. hovered widget inside toolbar (ie, mouse hover on the widget inside) + * .dijitToolbar .dijitButtonNodeHover - styles for hovered Button widget + * + * 4. actived widget inside toolbar (ie, mouse down on the widget inside) + * .dijitToolbar .dijitButtonNodeActive - mouse down on Button widget + */ + +@import "variables"; + +.claro .dijitToolbar { + border-bottom: 1px solid @border-color; + background-color: @bar-background-color; + .standard-gradient; + padding: 2px 0 2px 4px; + zoom: 1; +} + +.claro .dijitToolbar label { + padding: 0 3px 0 6px; +} + +/** override claro/form/Button.css, and also ComboBox down arrow **/ +.claro .dijitToolbar .dijitButton .dijitButtonNode, +.claro .dijitToolbar .dijitDropDownButton .dijitButtonNode, +.claro .dijitToolbar .dijitComboButton .dijitButtonNode, +.claro .dijitToolbar .dijitToggleButton .dijitButtonNode, +.claro .dijitToolbar .dijitComboBox .dijitButtonNode { + border-width: 0; /* on hover/active, border-->1px, padding-->1px */ + padding: 2px; + .border-radius(@toolbar-button-border-radius); + .box-shadow(none); + .transition-property(background-color); + .transition-duration(.3s); + + background-color:rgba(171,214,255,0); + background-image: none; /* cancel gradient for normal buttons, we don't want any gradient besides toolbar's on non-hovered buttons */ +} +.dj_ie .claro .dijitToolbar .dijitButton .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitDropDownButton .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitComboButton .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitToggleButton .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitComboBox .dijitButtonNode { + background-color: transparent; /* for IE, which doesn't understand rgba(...) */ +} + +/* hover status */ +.dj_ie .claro .dijitToolbar .dijitButtonHover .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitDropDownButtonHover .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitComboButton .dijitButtonNodeHover, +.dj_ie .claro .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover, +.dj_ie .claro .dijitToolbar .dijitToggleButtonHover .dijitButtonNode { + /* button should still turn blue on hover, so need to override .dj_ie rules above */ + background-color: @button-hovered-background-color; +} + +/* active status */ +.dj_ie .claro .dijitToolbar .dijitButtonActive .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitDropDownButtonActive .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitComboButtonActive .dijitButtonNode, +.dj_ie .claro .dijitToolbar .dijitToggleButtonActive .dijitButtonNode { + /* button should still turn blue on press, so need to override .dj_ie rules above */ + background-color: @button-pressed-background-color; +} + +.claro .dijitToolbar .dijitComboButton .dijitStretch { + /* no rounded border on side adjacent to arrow */ + .border-radius(@toolbar-button-border-radius 0 0 @toolbar-button-border-radius); +} +.claro .dijitToolbar .dijitComboButton .dijitArrowButton { + /* no rounded border on side adjacent to button */ + .border-radius(0 @toolbar-button-border-radius @toolbar-button-border-radius 0); +} + +.claro .dijitToolbar .dijitComboBox .dijitButtonNode { + padding: 0; +} + +/* hover status */ +.claro .dijitToolbar .dijitButtonHover .dijitButtonNode, +.claro .dijitToolbar .dijitDropDownButtonHover .dijitButtonNode, +.claro .dijitToolbar .dijitToggleButtonHover .dijitButtonNode, +.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNode { + border-width:1px; + background-color: @hovered-background-color; + .standard-gradient; + padding: 1px; +} +.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNode, +.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton { + background-color: @toolbar-combobutton-hovered-unhoveredsection-background-color; +} +.claro .dijitToolbar .dijitComboButtonHover .dijitButtonNodeHover, +.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButtonHover { + background-color: @hovered-background-color; +} + +/* active status */ +.claro .dijitToolbar .dijitButtonActive .dijitButtonNode, +.claro .dijitToolbar .dijitDropDownButtonActive .dijitButtonNode, +.claro .dijitToolbar .dijitToggleButtonActive .dijitButtonNode { + border-width: 1px; + background-color:@pressed-background-color; + .active-gradient; + padding: 1px; +} +.claro .dijitToolbar .dijitComboButtonActive { + .transition-duration(.2s); + border-width: 1px; + padding: 0; +} +.claro .dijitToolbar .dijitComboButtonActive .dijitButtonNode, +.claro .dijitToolbar .dijitComboButtonActive .dijitDownArrowButton { + background-color: @toolbar-combobutton-hovered-unhoveredsection-background-color; + padding: 2px; +} +.claro .dijitToolbar .dijitComboButtonActive .dijitButtonNodeActive { + background-color: @pressed-background-color; + .active-gradient; +} +.claro .dijitToolbar .dijitComboButtonActive .dijitDownArrowButtonActive { + background-color: @pressed-background-color; + .active-gradient; +} + +/* Avoid double border between button and arrow */ +.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton, +.claro .dijitToolbar .dijitComboButtonActive .dijitDownArrowButton { + border-left-width: 0; +} +.claro .dijitToolbar .dijitComboButtonHover .dijitDownArrowButton { + padding-left: 2px; /* since there's no left border, don't reduce from 2px --> 1px */ +} + +/* toggle button checked status */ +.claro .dijitToolbar .dijitToggleButtonChecked .dijitButtonNode { + margin: 0; /* remove margin and add a border */ + border-width: 1px; + border-style: solid; + background-image: none; + border-color: @selected-border-color; + background-color: @toolbar-button-checked-background-color; + padding: 1px; +} + +.claro .dijitToolbarSeparator { + /* separator icon in the editor sprite */ + background: url(@image-editor-icons-enabled); +} + +/* Toolbar inside of disabled Editor */ +.claro .dijitDisabled .dijitToolbar { + background:none; + background-color:@disabled-background-color; + border-bottom: 1px solid @disabled-border-color; +} + +.claro .dijitToolbar .dijitComboBoxDisabled .dijitArrowButtonInner { + background-position:0 50%; +} + diff --git a/src/main/resources/static/dijit/themes/claro/Toolbar_rtl.css b/src/main/resources/static/dijit/themes/claro/Toolbar_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..c54a34cc6c5c0d69d25cd833ddd36b896678007d --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Toolbar_rtl.css @@ -0,0 +1,32 @@ +/* Toolbar RTL */ +/* Repeated rules from Toolbar.css to override rule from Button_rtl.css, which is loaded after Toolbar.css */ +.claro .dijitToolbar .dijitComboButtonRtl .dijitButtonNode { + border-width: 0; + padding: 2px; +} +.claro .dijitToolbar .dijitComboButtonRtlHover .dijitButtonNode, +.claro .dijitToolbar .dijitComboButtonRtlActive .dijitButtonNode { + border-width: 1px; + padding: 1px; +} +.claro .dijitToolbar .dijitComboButtonRtl .dijitStretch { + /* no rounded border on side adjacent to arrow */ + + -moz-border-radius: 0 2px 2px 0; + border-radius: 0 2px 2px 0; +} +.claro .dijitToolbar .dijitComboButtonRtl .dijitArrowButton { + /* no rounded border on side adjacent to button */ + + -moz-border-radius: 2px 0 0 2px; + border-radius: 2px 0 0 2px; +} +.claro .dijitToolbar .dijitComboButtonRtlHover .dijitArrowButton, +.claro .dijitToolbar .dijitComboButtonRtlActive .dijitArrowButton { + /* border between button and arrow */ + + border-left-width: 1px; + border-right-width: 0; + padding-left: 1px; + padding-right: 2px; +} diff --git a/src/main/resources/static/dijit/themes/claro/Toolbar_rtl.less b/src/main/resources/static/dijit/themes/claro/Toolbar_rtl.less new file mode 100644 index 0000000000000000000000000000000000000000..8d31c88f4ab8c257293c77158bba92bf764c65ee --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Toolbar_rtl.less @@ -0,0 +1,32 @@ +/* Toolbar RTL */ + +@import "variables"; + +/* Repeated rules from Toolbar.css to override rule from Button_rtl.css, which is loaded after Toolbar.css */ +.claro .dijitToolbar .dijitComboButtonRtl .dijitButtonNode { + border-width: 0; + padding: 2px; +} +.claro .dijitToolbar .dijitComboButtonRtlHover .dijitButtonNode, +.claro .dijitToolbar .dijitComboButtonRtlActive .dijitButtonNode { + border-width: 1px; + padding: 1px; +} + +.claro .dijitToolbar .dijitComboButtonRtl .dijitStretch { + /* no rounded border on side adjacent to arrow */ + .border-radius(0 2px 2px 0); +} +.claro .dijitToolbar .dijitComboButtonRtl .dijitArrowButton { + /* no rounded border on side adjacent to button */ + .border-radius(2px 0 0 2px); +} + +.claro .dijitToolbar .dijitComboButtonRtlHover .dijitArrowButton, +.claro .dijitToolbar .dijitComboButtonRtlActive .dijitArrowButton { + /* border between button and arrow */ + border-left-width: 1px; + border-right-width: 0; + padding-left: 1px; + padding-right: 2px; +} diff --git a/src/main/resources/static/dijit/themes/claro/Tree.css b/src/main/resources/static/dijit/themes/claro/Tree.css new file mode 100644 index 0000000000000000000000000000000000000000..048902f9eedcce7d161781495a8fc16be33f91c7 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Tree.css @@ -0,0 +1,147 @@ +/* Tree + * + * Styling Tree mostly means styling the TreeRow (dijitTreeRow) + * There are 4 basic states to style: + * + * Tree Row: + * 1. tree row (default styling): + * .dijitTreeRow - styles for each row of the tree + * + * 2. hovered tree row (mouse hover on a tree row) + * .dijitTreeRowHover - styles when mouse over on one row + * + * 3. active tree row (mouse down on a tree row) + * .dijitTreeRowActive - styles when mouse down on one row + * + * 4. selected tree row + * dijitTreeRowSelected - style when the row has been selected + * + * Tree Expando: + * dijitTreeExpando - the expando at the left of the text of each tree row + * + * Drag and Drop on TreeNodes: (insert line on dijitTreeContent node so it'll aligned w/ target element) + * .dijitTreeNode .dojoDndItemBefore/.dojoDndItemAfter - use border style simulate a separate line + */ +.claro .dijitTreeNode { + zoom: 1; + /* force layout on IE (TODO: may not be needed anymore) */ + +} +.claro .dijitTreeIsRoot { + background-image: none; +} +/* Styling for basic tree node (unhovered, unselected) + * Also use this styling when dropping between items on the tree (in other words, don't + * use hover effect) + */ +.claro .dijitTreeRow, +.claro .dijitTreeNode .dojoDndItemBefore, +.claro .dijitTreeNode .dojoDndItemAfter { + /* so insert line shows up on IE when dropping after a target element */ + + padding: 4px 0 2px 0; + background-color: none; + background-color: transparent; + background-color: rgba(171, 214, 255, 0); + background-position: 0 0; + background-repeat: repeat-x; + border: solid 0 transparent; + color: #000000; + -webkit-transition-property: background-color, border-color; + -moz-transition-property: background-color, border-color; + transition-property: background-color, border-color; + -webkit-transition-duration: 0.25s; + -moz-transition-duration: 0.25s; + transition-duration: 0.25s; + -webkit-transition-timing-function: ease-out; + -moz-transition-timing-function: ease-out; + transition-timing-function: ease-out; +} +.claro .dijitTreeRowSelected { + background-color: #cfe5fa; + background-image: url("images/standardGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + _background-image: none; + padding: 3px 0 1px; + border-color: #759dc0; + border-width: 1px 0; + color: #000000; +} +.claro .dijitTreeRowHover { + background-color: #abd6ff; + background-image: url("images/standardGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + _background-image: none; + padding: 3px 0 1px; + border-color: #759dc0; + border-width: 1px 0; + color: #000000; + -webkit-transition-duration: 0.25s; + -moz-transition-duration: 0.25s; + transition-duration: 0.25s; +} +.claro .dijitTreeRowActive { + background-color: #7dbdfa; + background-image: url("images/activeGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + _background-image: none; + padding: 3px 0 1px; + border-color: #759dc0; + border-width: 1px 0; + color: #000000; +} +.claro .dijitTreeRowFocused { + background-repeat: repeat; +} +/* expando (open/closed) icon */ +.claro .dijitTreeExpando { + background-image: url("images/treeExpandImages.png"); + width: 16px; + height: 16px; + background-position: -35px 0; + /* for dijitTreeExpandoOpened */ + +} +.dj_ie6 .claro .dijitTreeExpando { + background-image: url("images/treeExpandImages8bit.png"); +} +.claro .dijitTreeRowHover .dijitTreeExpandoOpened { + background-position: -53px 0; +} +.claro .dijitTreeExpandoClosed { + background-position: 1px 0; +} +.claro .dijitTreeRowHover .dijitTreeExpandoClosed { + background-position: -17px 0; +} +.claro .dijitTreeExpandoLeaf, +.dj_ie6 .claro .dijitTreeExpandoLeaf { + background-image: none; +} +.claro .dijitTreeExpandoLoading { + background-image: url("../../icons/images/loadingAnimation.gif"); + background-position: 0 0; +} +/* Drag and Drop on TreeNodes + * Put insert line on dijitTreeContent node so it's aligned w/ + * (ie, indented equally with) target element, even + * though dijitTreeRowNode is the actual "drag object" + */ +.claro .dijitTreeNode .dojoDndItemBefore .dijitTreeContent { + border-top: 2px solid #759dc0; +} +.claro .dijitTreeNode .dojoDndItemAfter .dijitTreeContent { + border-bottom: 2px solid #759dc0; +} diff --git a/src/main/resources/static/dijit/themes/claro/Tree.less b/src/main/resources/static/dijit/themes/claro/Tree.less new file mode 100644 index 0000000000000000000000000000000000000000..0f2bc570089a52fda45ed90fc5f096cc52d8f223 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Tree.less @@ -0,0 +1,129 @@ +/* Tree + * + * Styling Tree mostly means styling the TreeRow (dijitTreeRow) + * There are 4 basic states to style: + * + * Tree Row: + * 1. tree row (default styling): + * .dijitTreeRow - styles for each row of the tree + * + * 2. hovered tree row (mouse hover on a tree row) + * .dijitTreeRowHover - styles when mouse over on one row + * + * 3. active tree row (mouse down on a tree row) + * .dijitTreeRowActive - styles when mouse down on one row + * + * 4. selected tree row + * dijitTreeRowSelected - style when the row has been selected + * + * Tree Expando: + * dijitTreeExpando - the expando at the left of the text of each tree row + * + * Drag and Drop on TreeNodes: (insert line on dijitTreeContent node so it'll aligned w/ target element) + * .dijitTreeNode .dojoDndItemBefore/.dojoDndItemAfter - use border style simulate a separate line + */ + +@import "variables"; + +.claro .dijitTreeNode { + zoom: 1; /* force layout on IE (TODO: may not be needed anymore) */ +} +.claro .dijitTreeIsRoot { + background-image: none; +} + +/* Styling for basic tree node (unhovered, unselected) + * Also use this styling when dropping between items on the tree (in other words, don't + * use hover effect) + */ +.claro .dijitTreeRow, +.claro .dijitTreeNode .dojoDndItemBefore, +.claro .dijitTreeNode .dojoDndItemAfter { + /* so insert line shows up on IE when dropping after a target element */ + padding: 4px 0 2px 0; + + background-color: none; // IE6 doesn't understand rgba() or transparent below + background-color: transparent; // IE8 doesn't understand rgba() below + background-color: rgba(171,214,255,0); // rgba() instead of transparent to prevent flash on hover fade-in + background-position:0 0; + background-repeat:repeat-x; + + border: solid 0 transparent; + + color: @text-color; + + .transition-property(background-color, border-color); + .transition-duration(.25s); + .transition-timing-function(ease-out); +} + +.claro .dijitTreeRowSelected { + background-color: @selected-background-color; + .standard-gradient; + padding: 3px 0 1px; + border-color: @selected-border-color; + border-width: 1px 0; + color: @selected-text-color; +} +.claro .dijitTreeRowHover { + background-color: @hovered-background-color; + .standard-gradient; + padding: 3px 0 1px; + border-color: @hovered-border-color; + border-width: 1px 0; + color: @hovered-text-color; + .transition-duration(.25s); +} +.claro .dijitTreeRowActive { + background-color:@pressed-background-color; + .active-gradient; + padding: 3px 0 1px; + border-color: @pressed-border-color; + border-width: 1px 0; + color: @selected-text-color; +} +.claro .dijitTreeRowFocused { + background-repeat: repeat; +} + +/* expando (open/closed) icon */ + +.claro .dijitTreeExpando { + background-image: url(@image-tree-expand); + width: 16px; + height: 16px; + background-position: -35px 0; /* for dijitTreeExpandoOpened */ +} +.dj_ie6 .claro .dijitTreeExpando { + background-image: url(@image-tree-expand-ie6); +} +.claro .dijitTreeRowHover .dijitTreeExpandoOpened { + background-position: -53px 0; +} +.claro .dijitTreeExpandoClosed { + background-position: 1px 0; +} +.claro .dijitTreeRowHover .dijitTreeExpandoClosed { + background-position: -17px 0; +} +.claro .dijitTreeExpandoLeaf, +.dj_ie6 .claro .dijitTreeExpandoLeaf { + background-image:none; +} + +.claro .dijitTreeExpandoLoading { + background-image: url(@image-loading-animation); + background-position: 0 0; +} + +/* Drag and Drop on TreeNodes + * Put insert line on dijitTreeContent node so it's aligned w/ + * (ie, indented equally with) target element, even + * though dijitTreeRowNode is the actual "drag object" + */ +.claro .dijitTreeNode .dojoDndItemBefore .dijitTreeContent { + border-top: 2px solid @dnd-dropseparator-color; // TODO: normal separator is just 1px, why is this 2px? +} +.claro .dijitTreeNode .dojoDndItemAfter .dijitTreeContent { + border-bottom: 2px solid @dnd-dropseparator-color; // TODO: normal separator is just 1px, why is this 2px? +} diff --git a/src/main/resources/static/dijit/themes/claro/Tree_rtl.css b/src/main/resources/static/dijit/themes/claro/Tree_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..85895a2d5699254d22fc37cb9df93e3db33ba6bd --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Tree_rtl.css @@ -0,0 +1,5 @@ +/* Tree_rtl */ +.claro .dijitTreeRtl .dijitTreeExpandoLoading { + background-image: url("../../icons/images/loadingAnimation_rtl.gif"); + background-position: 100% 0; +} diff --git a/src/main/resources/static/dijit/themes/claro/Tree_rtl.less b/src/main/resources/static/dijit/themes/claro/Tree_rtl.less new file mode 100644 index 0000000000000000000000000000000000000000..6044c46c1c1c88049d661b112220950c7b43b575 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/Tree_rtl.less @@ -0,0 +1,8 @@ +/* Tree_rtl */ + +@import "variables"; + +.claro .dijitTreeRtl .dijitTreeExpandoLoading { + background-image: url(@image-loading-animation-rtl); + background-position: 100% 0; +} diff --git a/src/main/resources/static/dijit/themes/claro/claro.css b/src/main/resources/static/dijit/themes/claro/claro.css new file mode 100644 index 0000000000000000000000000000000000000000..d3cb2688c36aa4a9d7d9414cb5d22f1e1e52458a --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/claro.css @@ -0,0 +1,28 @@ +@import url("../dijit.css"); +@import url("../../icons/commonIcons.css");/*sprite containing common icons to be used by all themes*/ +@import url("Common.css"); +@import url("form/Common.css"); +@import url("form/Button.css"); +@import url("form/Checkbox.css"); +@import url("form/RadioButton.css"); +@import url("form/Select.css"); +@import url("layout/TabContainer.css"); +@import url("Dialog.css"); +@import url("layout/AccordionContainer.css"); +@import url("layout/ContentPane.css"); +@import url("Calendar.css"); +@import url("Menu.css"); +@import url("form/Slider.css"); +@import url("ColorPalette.css"); +@import url("InlineEditBox.css"); +@import url("ProgressBar.css"); +@import url("TimePicker.css"); +@import url("layout/BorderContainer.css"); +@import url("Tree.css"); +@import url("Toolbar.css"); +@import url("Editor.css");/*in order to test button or menu item with icon */ +@import url("../../icons/editorIcons.css"); /*sprite for editor icons to be used by all themes*/ +@import url("TitlePane.css"); +@import url("form/NumberSpinner.css"); + +@import url("claro_rtl.css"); diff --git a/src/main/resources/static/dijit/themes/claro/claro_rtl.css b/src/main/resources/static/dijit/themes/claro/claro_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..fd050ed5aa1b13f4636f5920e0bab94da3fee951 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/claro_rtl.css @@ -0,0 +1,17 @@ +/* RTL files */ +@import url("../dijit_rtl.css"); +@import url("form/Common_rtl.css"); +@import url("form/Button_rtl.css"); +@import url("layout/TabContainer_rtl.css"); +@import url("form/Slider_rtl.css"); +@import url("Dialog_rtl.css"); +@import url("Editor_rtl.css"); +@import url("../../icons/editorIcons_rtl.css");/* RTL sprite for editor icons to be used by all themes*/ +@import url("../../icons/commonIcons_rtl.css");/* RTL sprite for common icons to be used by all themes*/ +@import url("TitlePane_rtl.css"); +@import url("Menu_rtl.css"); +@import url("Calendar_rtl.css"); +@import url("Toolbar_rtl.css"); +@import url("Tree_rtl.css"); +@import url("ProgressBar_rtl.css"); + diff --git a/src/main/resources/static/dijit/themes/claro/compile.js b/src/main/resources/static/dijit/themes/claro/compile.js new file mode 100644 index 0000000000000000000000000000000000000000..a5765b47db724be7cd18532ccecb2ccdb7275892 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/compile.js @@ -0,0 +1,52 @@ +// Script to process all the less files and convert them to CSS files +// Run from themes/dijit/claro like: +// +// $ node compile.js + +var fs = require('fs'), // file system access + path = require('path'), // get directory from file name + less = require('../../../util/less/lib/less'); // less processor + +var options = { + compress: false, + optimization: 1, + silent: false +}; + +var allFiles = [].concat( + fs.readdirSync("."), + fs.readdirSync("form").map(function(fname){ return "form/"+fname; }), + fs.readdirSync("layout").map(function(fname){ return "layout/"+fname; }) + ), + lessFiles = allFiles.filter(function(name){ return name && name != "variables.less" && /\.less$/.test(name); }); + +lessFiles.forEach(function(fname){ + console.log("=== " + fname); + fs.readFile(fname, 'utf-8', function(e, data){ + if(e){ + console.error("lessc: " + e.message); + process.exit(1); + } + + new(less.Parser)({ + paths: [path.dirname(fname)], + optimization: options.optimization, + filename: fname + }).parse(data, function(err, tree){ + if(err){ + less.writeError(err, options); + process.exit(1); + }else{ + try{ + var css = tree.toCSS({ compress: options.compress }), + outputFname = fname.replace('.less', '.css'); + var fd = fs.openSync(outputFname, "w"); + fs.writeSync(fd, css, 0, "utf8"); + }catch(e){ + less.writeError(e, options); + process.exit(2); + } + } + }); + }); +}); diff --git a/src/main/resources/static/dijit/themes/claro/document.css b/src/main/resources/static/dijit/themes/claro/document.css new file mode 100644 index 0000000000000000000000000000000000000000..ffaac44fa61dfc9fa353c84fdb0b39878abc7ae2 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/document.css @@ -0,0 +1,43 @@ +@import url("../../../dojo/resources/dojo.css"); +/* ======= Styling for the document itself (overriding dojo.css) ======== */ +.claro { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: .688em; + color: #131313; +} +/* Headings */ +.claro h1 { + font-size: 1.545em; + margin-bottom: 0.727em; +} +.claro h2 { + font-size: 1.364em; + line-height: 1.455em; + margin-top: 1em; + margin-bottom: 0.60em; + font-weight: normal; +} +.claro h3, +.claro h4, +.claro h5, +.claro h6 { + font-size: 1.091em; + font-weight: normal; +} +/* paragraphs, quotes and lists */ +.claro p { + line-height: 1.3em; +} +/* pre and code */ +.claro pre, +.claro code { + font-family: inherit; + background-color: #efefef; + border: 1px solid #d3d3d3; +} +/* tables */ +.claro table.dojoTabular thead, +.claro table.dojoTabular tfoot { + background-color: #efefef; + border: 1px solid #d3d3d3; +} diff --git a/src/main/resources/static/dijit/themes/claro/document.less b/src/main/resources/static/dijit/themes/claro/document.less new file mode 100644 index 0000000000000000000000000000000000000000..7f86356722ceeceac5e924034075d730db1aee54 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/document.less @@ -0,0 +1,45 @@ +/* ======= Styling for the document itself (overriding dojo.css) ======== */ + +@import "variables"; +@import url("../../../dojo/resources/dojo.css"); + +.claro { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: .688em; + color: @document-text-color; +} + +/* Headings */ +.claro h1 { + font-size: 1.545em; + margin-bottom:0.727em; +} +.claro h2 { + font-size: 1.364em; + line-height: 1.455em; + margin-top:1em; + margin-bottom:0.60em; + font-weight: normal; +} +.claro h3, .claro h4, .claro h5, .claro h6 { + font-size:1.091em; + font-weight: normal; +} + +/* paragraphs, quotes and lists */ +.claro p { + line-height: 1.3em; +} + +/* pre and code */ +.claro pre, .claro code { + font-family:inherit; + background-color: @document-shadedsection-background-color; + border: 1px solid @document-border-color; +} + +/* tables */ +.claro table.dojoTabular thead, .claro table.dojoTabular tfoot { + background-color: @document-shadedsection-background-color; + border: 1px solid @document-border-color; +} diff --git a/src/main/resources/static/dijit/themes/claro/form/Button.css b/src/main/resources/static/dijit/themes/claro/form/Button.css new file mode 100644 index 0000000000000000000000000000000000000000..f7718c105deed31e96a1852ee2f2fa984055d9ba --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/Button.css @@ -0,0 +1,168 @@ +/* Button | DropDownButton | ComboButton | ToggleButton + * + * Styling Buttons mainly includes: + * + * 1. Containers + * .dijitButton + * .dijitDropDownButton + * .dijitComboButton + * .dijitButtonNode - common button/arrow wrapper shared across all three button types + * + * 2. Button text + * .dijitButtonText + * + * 3. Arrows - only for DropDownButton and ComboButton + * There are total four directions arrows - down, left, right, up: + * .dijitArrowButtonInner - down arrow by default + * .dijitLeftArrowButton .dijitArrowButtonInner - left arrow + * .dijitRightArrowButton .dijitArrowButtonInner - right arrow + * .dijitUpArrowButton .dijitArrowButtonInner - up arrow + * + * 4. States - Hover, Active, Disabled, e.g. + * .dijitButtonHover .dijitButtonNode + * .dijitButtonActive .dijitButtonNode + * .dijitButtonDisabled .dijitButtonNode + * + * .dijitDisabled .dijitArrowButtonInner - disabled arrow states + */ +.claro .dijitButtonNode { + /* rules for dijit.form.*Button widgets and arrow nodes on ComboBox, Spinner etc. */ + + -webkit-transition-property: background-color; + -moz-transition-property: background-color; + transition-property: background-color; + -webkit-transition-duration: 0.3s; + -moz-transition-duration: 0.3s; + transition-duration: 0.3s; +} +.claro .dijitButton .dijitButtonNode, +.claro .dijitDropDownButton .dijitButtonNode, +.claro .dijitComboButton .dijitButtonNode, +.claro .dijitToggleButton .dijitButtonNode { + /* rules for the dijit.form.*Button widgets (see also ComboButton section below) */ + + border: 1px solid #759dc0; + padding: 2px 4px 4px 4px; + color: #000000; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.15); + background-color: #bcd8f4; + background-image: url("images/buttonEnabled.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0) 3px, rgba(255, 255, 255, 0.75) 100%); + background-image: -webkit-linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0) 3px, rgba(255, 255, 255, 0.75) 100%); + background-image: -o-linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0) 3px, rgba(255, 255, 255, 0.75) 100%); + background-image: linear-gradient(#ffffff 0px, rgba(255, 255, 255, 0) 3px, rgba(255, 255, 255, 0.75) 100%); + _background-image: none; +} +.claro .dijitComboButton .dijitArrowButton { + border-left-width: 0; + padding: 4px 2px 4px 2px; + /* TODO: still needed? */ + +} +/*arrow styles for down/up/left/right directions*/ +.claro .dijitArrowButtonInner { + width: 15px; + height: 15px; + margin: 0 auto; + background-image: url("../form/images/buttonArrows.png"); + background-repeat: no-repeat; + background-position: -51px 53%; +} +.claro .dijitLeftArrowButton .dijitArrowButtonInner { + background-position: -77px 53%; +} +.claro .dijitRightArrowButton .dijitArrowButtonInner { + background-position: -26px 53%; +} +.claro .dijitUpArrowButton .dijitArrowButtonInner { + background-position: 0 53%; +} +.claro .dijitDisabled .dijitArrowButtonInner { + background-position: -151px 53%; +} +.claro .dijitDisabled .dijitLeftArrowButton .dijitArrowButtonInner { + background-position: -177px 53%; +} +.claro .dijitDisabled .dijitRightArrowButton .dijitArrowButtonInner { + background-position: -126px 53%; +} +.claro .dijitDisabled .dijitUpArrowButton .dijitArrowButtonInner { + background-position: -100px 53%; +} +.claro .dijitButtonText { + padding: 0 0.3em; + text-align: center; +} +/* hover status */ +.claro .dijitButtonHover .dijitButtonNode, +.claro .dijitDropDownButtonHover .dijitButtonNode, +.claro .dijitComboButton .dijitButtonNodeHover, +.claro .dijitComboButton .dijitDownArrowButtonHover, +.claro .dijitToggleButtonHover .dijitButtonNode { + background-color: #86bdf2; + color: #000000; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; +} +/* active, checked status */ +.claro .dijitButtonActive .dijitButtonNode, +.claro .dijitDropDownButtonActive .dijitButtonNode, +.claro .dijitComboButtonActive .dijitButtonNode, +.claro .dijitToggleButtonActive .dijitButtonNode, +.claro .dijitToggleButtonChecked .dijitButtonNode { + background-color: #86bdf2; + -webkit-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); + -moz-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); + box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} +/* disabled status */ +.claro .dijitButtonDisabled, +.claro .dijitDropDownButtonDisabled, +.claro .dijitComboButtonDisabled, +.claro .dijitToggleButtonDisabled { + background-image: none; + outline: none; +} +.claro .dijitButtonDisabled .dijitButtonNode, +.claro .dijitDropDownButtonDisabled .dijitButtonNode, +.claro .dijitComboButtonDisabled .dijitButtonNode, +.claro .dijitToggleButtonDisabled .dijitButtonNode { + background-color: #efefef; + border: solid 1px #d3d3d3; + color: #818181; + -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0); + box-shadow: 0 0 0 rgba(0, 0, 0, 0); + background-image: url("images/buttonDisabled.png"); + background-image: -moz-linear-gradient(#ffffff 0%, rgba(255, 255, 255, 0) 40%); + background-image: -webkit-linear-gradient(#ffffff 0%, rgba(255, 255, 255, 0) 40%); + background-image: -o-linear-gradient(#ffffff 0%, rgba(255, 255, 255, 0) 40%); + background-image: linear-gradient(#ffffff 0%, rgba(255, 255, 255, 0) 40%); + _background-image: none; +} +.claro .dijitComboButtonDisabled .dijitArrowButton { + border-left-width: 0; +} +/* for ComboButton */ +.claro table.dijitComboButton { + border-collapse: separate; + /* override dijit.css so that ComboBox rounded corners work */ + +} +.claro .dijitComboButton .dijitStretch { + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} +.claro .dijitComboButton .dijitArrowButton { + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} diff --git a/src/main/resources/static/dijit/themes/claro/form/Button.less b/src/main/resources/static/dijit/themes/claro/form/Button.less new file mode 100644 index 0000000000000000000000000000000000000000..5d59532371b2545e5897b2bff828cef5647142a6 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/Button.less @@ -0,0 +1,164 @@ +/* Button | DropDownButton | ComboButton | ToggleButton + * + * Styling Buttons mainly includes: + * + * 1. Containers + * .dijitButton + * .dijitDropDownButton + * .dijitComboButton + * .dijitButtonNode - common button/arrow wrapper shared across all three button types + * + * 2. Button text + * .dijitButtonText + * + * 3. Arrows - only for DropDownButton and ComboButton + * There are total four directions arrows - down, left, right, up: + * .dijitArrowButtonInner - down arrow by default + * .dijitLeftArrowButton .dijitArrowButtonInner - left arrow + * .dijitRightArrowButton .dijitArrowButtonInner - right arrow + * .dijitUpArrowButton .dijitArrowButtonInner - up arrow + * + * 4. States - Hover, Active, Disabled, e.g. + * .dijitButtonHover .dijitButtonNode + * .dijitButtonActive .dijitButtonNode + * .dijitButtonDisabled .dijitButtonNode + * + * .dijitDisabled .dijitArrowButtonInner - disabled arrow states + */ + +@import "../variables"; + +.claro .dijitButtonNode { + /* rules for dijit.form.*Button widgets and arrow nodes on ComboBox, Spinner etc. */ + .transition-property(background-color); + .transition-duration(.3s); +} + +.claro .dijitButton .dijitButtonNode, +.claro .dijitDropDownButton .dijitButtonNode, +.claro .dijitComboButton .dijitButtonNode, +.claro .dijitToggleButton .dijitButtonNode { + /* rules for the dijit.form.*Button widgets (see also ComboButton section below) */ + border: 1px solid @button-border-color; + padding: 2px 4px 4px 4px; + color: @text-color; + .border-radius(@button-border-radius); + .box-shadow(0 1px 1px rgba(0,0,0,0.15)); + + background-color: desaturate(darken(@button-background-color, 10), 20); + + // Alpha transparency layer to add gradient to above background color. + // Use CSS gradient with fallback to image for IE. + background-image: url("images/buttonEnabled.png"); + background-repeat: repeat-x; + .alpha-white-gradient(1, 0px, 0, 3px, 0.75, 100%); + _background-image: none; // IE6 can't handle background-color and background-image at once. +} + + +.claro .dijitComboButton .dijitArrowButton { + border-left-width: 0; + padding: 4px 2px 4px 2px; /* TODO: still needed? */ +} + +/*arrow styles for down/up/left/right directions*/ +.claro .dijitArrowButtonInner { + width: 15px; + height: 15px; + margin: 0 auto; + background-image:url("../@{image-form-button-arrows}"); + background-repeat:no-repeat; + background-position:-51px 53%; +} +.claro .dijitLeftArrowButton .dijitArrowButtonInner { + background-position: -77px 53%; +} +.claro .dijitRightArrowButton .dijitArrowButtonInner { + background-position: -26px 53%; +} +.claro .dijitUpArrowButton .dijitArrowButtonInner { + background-position: 0 53%; +} +.claro .dijitDisabled .dijitArrowButtonInner { + background-position: -151px 53%; +} +.claro .dijitDisabled .dijitLeftArrowButton .dijitArrowButtonInner { + background-position: -177px 53%; +} +.claro .dijitDisabled .dijitRightArrowButton .dijitArrowButtonInner { + background-position: -126px 53%; +} +.claro .dijitDisabled .dijitUpArrowButton .dijitArrowButtonInner { + background-position: -100px 53%; +} + +.claro .dijitButtonText { + padding: 0 0.3em; + text-align: center; +} + + + + + +/* hover status */ +.claro .dijitButtonHover .dijitButtonNode, +.claro .dijitDropDownButtonHover .dijitButtonNode, +.claro .dijitComboButton .dijitButtonNodeHover, +.claro .dijitComboButton .dijitDownArrowButtonHover, +.claro .dijitToggleButtonHover .dijitButtonNode { + background-color: desaturate(darken(@button-hovered-background-color, 10), 20); + color:@text-color; + .transition-duration(.2s); +} + +/* active, checked status */ +.claro .dijitButtonActive .dijitButtonNode, +.claro .dijitDropDownButtonActive .dijitButtonNode, +.claro .dijitComboButtonActive .dijitButtonNode, +.claro .dijitToggleButtonActive .dijitButtonNode, +.claro .dijitToggleButtonChecked .dijitButtonNode { + background-color: desaturate(darken(@button-pressed-background-color, 10), 20); + .box-shadow(inset 0px 1px 1px rgba(0, 0, 0, 0.2)); + .transition-duration(.1s); +} + +/* disabled status */ +.claro .dijitButtonDisabled, +.claro .dijitDropDownButtonDisabled, +.claro .dijitComboButtonDisabled, +.claro .dijitToggleButtonDisabled { + background-image: none; + outline: none; +} + +.claro .dijitButtonDisabled .dijitButtonNode, +.claro .dijitDropDownButtonDisabled .dijitButtonNode, +.claro .dijitComboButtonDisabled .dijitButtonNode, +.claro .dijitToggleButtonDisabled .dijitButtonNode { + background-color: @disabled-background-color; + border: solid 1px @disabled-border-color; + color: @disabled-text-color; + .box-shadow(0 0 0 rgba(0,0,0,0)); + + // Change the gradient from light to dark. + // Again using CSS gradient with fallback to image for IE. + background-image: url("images/buttonDisabled.png"); + .alpha-white-gradient(1, 0%, 0, 40%); + _background-image: none; // IE6 can't handle background-color and background-image at once. +} + +.claro .dijitComboButtonDisabled .dijitArrowButton{ + border-left-width: 0; +} +/* for ComboButton */ +.claro table.dijitComboButton { + border-collapse: separate; /* override dijit.css so that ComboBox rounded corners work */ +} + +.claro .dijitComboButton .dijitStretch { + .border-radius(@button-border-radius 0 0 @button-border-radius); +} +.claro .dijitComboButton .dijitArrowButton { + .border-radius(0 @button-border-radius @button-border-radius 0); +} diff --git a/src/main/resources/static/dijit/themes/claro/form/Button_rtl.css b/src/main/resources/static/dijit/themes/claro/form/Button_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..2d5b08bff078f6d77d561d5b978aee300423f4fd --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/Button_rtl.css @@ -0,0 +1,13 @@ +/* Combo Button */ +.claro .dijitComboButtonRtl .dijitStretch { + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} +.claro .dijitComboButtonRtl .dijitArrowButton { + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; + padding: 3px 0 4px; + border-left-width: 1px; + border-right-width: 0; +} +/* End Combo Button */ \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/claro/form/Button_rtl.less b/src/main/resources/static/dijit/themes/claro/form/Button_rtl.less new file mode 100644 index 0000000000000000000000000000000000000000..6225d6847ba9eab19d5f7b3e2a6b8f0137a2519c --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/Button_rtl.less @@ -0,0 +1,16 @@ +@import "../variables"; + +/* Combo Button */ + +.claro .dijitComboButtonRtl .dijitStretch { + .border-radius(0 @button-border-radius @button-border-radius 0); +} + +.claro .dijitComboButtonRtl .dijitArrowButton { + .border-radius(@button-border-radius 0 0 @button-border-radius); + padding:3px 0 4px; + border-left-width: 1px; + border-right-width: 0; +} + +/* End Combo Button */ \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/claro/form/Checkbox.css b/src/main/resources/static/dijit/themes/claro/form/Checkbox.css new file mode 100644 index 0000000000000000000000000000000000000000..fb4e726b6628e6f96b296ee862dbd0c50527acf3 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/Checkbox.css @@ -0,0 +1,75 @@ +/* CheckBox + * + * Styling CheckBox mainly includes: + * + * 1. Containers + * .dijitCheckBox|.dijitCheckBoxIcon - for border, padding, width|height and background image + * + * 2. CheckBox within ToggleButton + * .dijitToggleButton|.dijitToggleButtonChecked .* - for background image + * + * 3. Checked state + * .dijitCheckBoxChecked - for checked background-color|image + * .dijitToggleButtonChecked - for border, background-color|image, display and width|height + * + * 4. Hover state + * .dijitCheckBoxHover|.dijitCheckBoxCheckedHover - for background image + * + * 5. Disabled state + * .dijitCheckBoxDisabled|.dijitCheckBoxCheckedDisabled - for background image + */ +.claro .dijitToggleButton .dijitCheckBoxIcon { + background-image: url("../images/checkmarkNoBorder.png"); +} +.dj_ie6 .claro .dijitToggleButton .dijitCheckBoxIcon { + background-image: url("../images/checkmarkNoBorder.gif"); +} +.claro .dijitCheckBox, +.claro .dijitCheckBoxIcon { + background-image: url("../form/images/checkboxRadioButtonStates.png"); + /* checkbox sprite image */ + + background-repeat: no-repeat; + width: 15px; + height: 16px; + margin: 0 2px 0 0; + padding: 0; +} +.dj_ie6 .claro .dijitCheckBox, +.dj_ie6 .claro .dijitCheckBoxIcon { + background-image: url("../form/images/checkboxAndRadioButtons_IE6.png"); + /* checkbox sprite image */ + +} +.claro .dijitCheckBox, +.claro .dijitToggleButton .dijitCheckBoxIcon { + /* unchecked */ + + background-position: -15px; +} +.claro .dijitCheckBoxChecked, +.claro .dijitToggleButtonChecked .dijitCheckBoxIcon { + /* checked */ + + background-position: 0; +} +.claro .dijitCheckBoxDisabled { + /* disabled */ + + background-position: -75px; +} +.claro .dijitCheckBoxCheckedDisabled { + /* disabled but checked */ + + background-position: -60px; +} +.claro .dijitCheckBoxHover { + /* hovering over an unchecked enabled checkbox */ + + background-position: -45px; +} +.claro .dijitCheckBoxCheckedHover { + /* hovering over an checked enabled checkbox */ + + background-position: -30px; +} diff --git a/src/main/resources/static/dijit/themes/claro/form/Checkbox.less b/src/main/resources/static/dijit/themes/claro/form/Checkbox.less new file mode 100644 index 0000000000000000000000000000000000000000..6ce444800fff61aa17a34a5b6d3dfd09cb148f7d --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/Checkbox.less @@ -0,0 +1,79 @@ +/* CheckBox + * + * Styling CheckBox mainly includes: + * + * 1. Containers + * .dijitCheckBox|.dijitCheckBoxIcon - for border, padding, width|height and background image + * + * 2. CheckBox within ToggleButton + * .dijitToggleButton|.dijitToggleButtonChecked .* - for background image + * + * 3. Checked state + * .dijitCheckBoxChecked - for checked background-color|image + * .dijitToggleButtonChecked - for border, background-color|image, display and width|height + * + * 4. Hover state + * .dijitCheckBoxHover|.dijitCheckBoxCheckedHover - for background image + * + * 5. Disabled state + * .dijitCheckBoxDisabled|.dijitCheckBoxCheckedDisabled - for background image + */ + +@import "../variables"; + +.claro .dijitToggleButton .dijitCheckBoxIcon { + background-image: url("../@{image-checkmark}"); +} + +.dj_ie6 .claro .dijitToggleButton .dijitCheckBoxIcon { + background-image: url("../@{image-checkmark-ie6}"); +} + +.claro .dijitCheckBox, +.claro .dijitCheckBoxIcon /* inside a toggle button */ { + background-image: url("../@{image-form-checkbox-and-radios}"); /* checkbox sprite image */ + background-repeat: no-repeat; + width: 15px; + height: 16px; + margin: 0 2px 0 0; + padding: 0; +} + +.dj_ie6 .claro .dijitCheckBox, +.dj_ie6 .claro .dijitCheckBoxIcon /* inside a toggle button */ { + background-image: url("../@{image-form-checkbox-and-radios-ie6}"); /* checkbox sprite image */ +} + +.claro .dijitCheckBox, +.claro .dijitToggleButton .dijitCheckBoxIcon { + /* unchecked */ + background-position: -15px; +} + +.claro .dijitCheckBoxChecked, +.claro .dijitToggleButtonChecked .dijitCheckBoxIcon { + /* checked */ + background-position: -0; +} + +.claro .dijitCheckBoxDisabled { + /* disabled */ + background-position: -75px; +} + +.claro .dijitCheckBoxCheckedDisabled { + /* disabled but checked */ + background-position: -60px; +} + +.claro .dijitCheckBoxHover { + /* hovering over an unchecked enabled checkbox */ + background-position: -45px; +} + +.claro .dijitCheckBoxCheckedHover { + /* hovering over an checked enabled checkbox */ + background-position: -30px; +} + + diff --git a/src/main/resources/static/dijit/themes/claro/form/Common.css b/src/main/resources/static/dijit/themes/claro/form/Common.css new file mode 100644 index 0000000000000000000000000000000000000000..4194871b6f9c3bbc6c1d32c05297b3a76ab4c1b6 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/Common.css @@ -0,0 +1,227 @@ +/* claro/form/Common.css */ +/*========================= common css =========================*/ +/* 'dijitTextBox' refers to 'dijit(TextBox|DateTextBox|CurrencyTextBox|...)' */ +.claro .dijitTextBox, +.claro .dijitInputInner { + color: #000000; +} +.claro .dijitValidationTextBoxError .dijitValidationContainer { + background-color: #d46464; + background-image: url("../form/images/error.png"); + background-position: top center; + border: solid #d46464 0; + width: 9px; +} +.claro .dijitTextBoxError .dijitValidationContainer { + border-left-width: 1px; +} +.claro .dijitValidationTextBoxError .dijitValidationIcon { + width: 0; + background-color: transparent; + /* so the INPUT doesn't obscure the border in rtl+a11y */ + +} +/* Padding for the input area of TextBox based widgets, and corresponding padding for the + * down arrow button and the placeholder. placeholder is explicitly listed because + * dijitPlaceHolder is absolutely positioned, so padding set on dijitInputField + * won't affect it + */ +.claro .dijitTextArea, +.claro .dijitInputField .dijitPlaceHolder { + padding: 2px; +} +.claro .dijitSelect .dijitInputField, +.claro .dijitTextBox .dijitInputField { + padding: 1px 2px; +} +.dj_gecko .claro .dijitTextBox .dijitInputInner, +.dj_webkit .claro .dijitTextBox .dijitInputInner { + padding-left: 1px; + padding-right: 1px; +} +.claro .dijitSelect, +.claro .dijitSelect .dijitButtonContents, +.claro .dijitTextBox, +.claro .dijitTextBox .dijitButtonNode { + /* color for (outer) border on *TextBox widgets, and border between input and buttons on ComboBox and Spinner */ + + border-color: #b5bcc7; + -webkit-transition-property: background-color, border; + -moz-transition-property: background-color, border; + transition-property: background-color, border; + -webkit-transition-duration: 0.35s; + -moz-transition-duration: 0.35s; + transition-duration: 0.35s; +} +.claro .dijitSelect, +.claro .dijitTextBox { + background-color: #ffffff; +} +/* hover */ +.claro .dijitSelectHover, +.claro .dijitSelectHover .dijitButtonContents, +.claro .dijitTextBoxHover, +.claro .dijitTextBoxHover .dijitButtonNode { + border-color: #759dc0; + -webkit-transition-duration: 0.25s; + -moz-transition-duration: 0.25s; + transition-duration: 0.25s; +} +.claro .dijitTextBoxHover { + background-color: #e5f2fe; + background-image: -moz-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); + background-image: -webkit-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); + background-image: -o-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); + background-image: linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); +} +/* error state */ +.claro .dijitSelectError, +.claro .dijitSelectError .dijitButtonContents, +.claro .dijitTextBoxError, +.claro .dijitTextBoxError .dijitButtonNode { + border-color: #d46464; +} +/* focused state */ +.claro .dijitSelectFocused, +.claro .dijitSelectFocused .dijitButtonContents, +.claro .dijitTextBoxFocused, +.claro .dijitTextBoxFocused .dijitButtonNode { + border-color: #759dc0; + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} +.claro .dijitTextBoxFocused { + background-color: #ffffff; + background-image: -moz-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); + background-image: -webkit-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); + background-image: -o-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); + background-image: linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); +} +.claro .dijitTextBoxFocused .dijitInputContainer { + background: #ffffff; +} +.claro .dijitSelectErrorFocused, +.claro .dijitSelectErrorFocused .dijitButtonContents, +.claro .dijitTextBoxErrorFocused, +.claro .dijitTextBoxErrorFocused .dijitButtonNode { + border-color: #ce5050; +} +/* disabled state */ +.claro .dijitSelectDisabled, +.claro .dijitSelectDisabled .dijitButtonContents, +.claro .dijitTextBoxDisabled, +.claro .dijitTextBoxDisabled .dijitButtonNode { + border-color: #d3d3d3; +} +.claro .dijitSelectDisabled, +.claro .dijitTextBoxDisabled, +.claro .dijitTextBoxDisabled .dijitInputContainer { + background-color: #efefef; + background-image: none; +} +.claro .dijitSelectDisabled, +.claro .dijitTextBoxDisabled, +.claro .dijitTextBoxDisabled .dijitInputInner { + color: #818181; +} +.dj_webkit .claro .dijitDisabled input { + /* because WebKit lightens disabled input/textarea no matter what color you specify */ + + color: #757575; +} +.dj_webkit .claro textarea.dijitTextAreaDisabled { + /* because WebKit lightens disabled input/textarea no matter what color you specify */ + + color: #1b1b1b; +} +/*========================= for special widgets =========================*/ +/* Input boxes with an arrow (for a drop down) */ +.claro .dijitSelect .dijitArrowButtonInner, +.claro .dijitComboBox .dijitArrowButtonInner { + background-image: url("../form/images/commonFormArrows.png"); + background-position: -35px 53%; + background-repeat: no-repeat; + margin: 0; + width: 16px; +} +.claro .dijitComboBox .dijitArrowButtonInner { + border: 1px solid #ffffff; +} +.claro .dijitToolbar .dijitComboBox .dijitArrowButtonInner { + border: none; +} +.claro .dijitToolbar .dijitComboBox .dijitArrowButtonInner { + border: none; +} +/* Add 1px vertical padding to the where user types and the validation icon, + to match the 1px border on arrow button */ +.claro .dijitSelectLabel, +.claro .dijitTextBox .dijitInputInner, +.claro .dijitValidationTextBox .dijitValidationContainer { + padding: 1px 0; +} +.claro .dijitComboBox .dijitButtonNode { + background-color: #efefef; + background-image: url("../images/standardGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + _background-image: none; +} +/* Arrow "hover" effect: + * The arrow button should change color whenever the mouse is in a position such that clicking it + * will toggle the drop down. That's either (1) anywhere over the ComboBox or (2) over the arrow + * button, depending on the openOnClick setting for the widget. + */ +.claro .dijitComboBoxOpenOnClickHover .dijitButtonNode, +.claro .dijitComboBox .dijitDownArrowButtonHover, +.claro .dijitComboBoxFocused .dijitArrowButton { + background-color: #abd6ff; +} +.claro .dijitComboBoxOpenOnClickHover .dijitArrowButtonInner, +.claro .dijitComboBox .dijitDownArrowButtonHover .dijitArrowButtonInner { + background-position: -70px 53%; +} +/* Arrow Button change when drop down is open */ +.claro .dijitComboBox .dijitHasDropDownOpen { + background-color: #7dbdfa; + background-image: url("../images/activeGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + _background-image: none; + padding: 1px; +} +.dj_iequirks .claro .dijitComboBox .dijitHasDropDownOpen { + padding: 1px 0; +} +.claro .dijitComboBox .dijitHasDropDownOpen .dijitArrowButtonInner { + background-position: -70px 53%; + border: 0 none; +} +/* disabled state */ +.claro div.dijitComboBoxDisabled .dijitArrowButtonInner { + /* specific selector set to override background-position setting from Button.js + * (.claro .dijitComboBoxDisabled .dijitArrowButtonInner) */ + + background-position: 0 50%; + background-color: #efefef; +} +/*========================= hacks for browsers =========================*/ +/* it seems the input[type="hidden"] has a height (16px) too... this may cause the widget's height calculate error */ +.dj_ff3 .claro .dijitInputField input[type="hidden"] { + display: none; + height: 0; + width: 0; +} +.dj_borderbox .claro .dijitComboBox .dijitHasDropDownOpen .dijitArrowButtonInner { + width: 18px; +} +.dj_borderbox .claro .dijitComboBoxFocused .dijitHasDropDownOpen .dijitArrowButtonInner { + width: 16px; +} diff --git a/src/main/resources/static/dijit/themes/claro/form/Common.less b/src/main/resources/static/dijit/themes/claro/form/Common.less new file mode 100644 index 0000000000000000000000000000000000000000..30ba3e3d6274c091a14f6a0e93e563559f4d6f6d --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/Common.less @@ -0,0 +1,243 @@ +/* claro/form/Common.css */ + +/*========================= common css =========================*/ + +@import "../variables"; + +/* 'dijitTextBox' refers to 'dijit(TextBox|DateTextBox|CurrencyTextBox|...)' */ + +.claro .dijitTextBox, +.claro .dijitInputInner { + // .dijitInputInner selector needed for ValidationTextBox on IE6 because doesn't inherit + // the color setting from the ancestor div.dijitTextBox + color: @text-color; +} + +.claro .dijitValidationTextBoxError .dijitValidationContainer { + background-color: @erroricon-background-color; + background-image: url("../@{image-form-error}"); + background-position: top center; + border: solid @erroricon-background-color 0; + width: 9px; +} + +.claro .dijitTextBoxError .dijitValidationContainer { + border-left-width: 1px; +} + +.claro .dijitValidationTextBoxError .dijitValidationIcon { + width: 0; + background-color: transparent; /* so the INPUT doesn't obscure the border in rtl+a11y */ +} + +/* Padding for the input area of TextBox based widgets, and corresponding padding for the + * down arrow button and the placeholder. placeholder is explicitly listed because + * dijitPlaceHolder is absolutely positioned, so padding set on dijitInputField + * won't affect it + */ +.claro .dijitTextArea, +.claro .dijitInputField .dijitPlaceHolder { + padding: @textbox-padding; +} + +.claro .dijitSelect .dijitInputField, +.claro .dijitTextBox .dijitInputField { + // Subtract 1px from top/bottom because we add 1px to other nodes, see rules below. + // Although we are theoretically only adding 1px to top/bottom browsers seem to pad inputs by 1px on left/right, + // although that varies by so compensate for that too. + padding: @textbox-padding - 1px @textbox-padding; +} + +.dj_gecko .claro .dijitTextBox .dijitInputInner, +.dj_webkit .claro .dijitTextBox .dijitInputInner { + // Although we are theoretically only adding 1px to top/bottom, some browsers seem to pad inputs by 1px on left/right, + // so compensate for that too. + padding-left: @textbox-padding - 1px; + padding-right: @textbox-padding - 1px; +} + +.claro .dijitSelect, +.claro .dijitSelect .dijitButtonContents, +.claro .dijitTextBox, +.claro .dijitTextBox .dijitButtonNode { + /* color for (outer) border on *TextBox widgets, and border between input and buttons on ComboBox and Spinner */ + border-color: @border-color; + .transition-property(background-color, border); + .transition-duration(.35s); +} + +.claro .dijitSelect, +.claro .dijitTextBox { + background-color: @textbox-background-color; +} + +/* hover */ +.claro .dijitSelectHover, +.claro .dijitSelectHover .dijitButtonContents, +.claro .dijitTextBoxHover, +.claro .dijitTextBoxHover .dijitButtonNode { + border-color: @hovered-border-color; + .transition-duration(.25s); +} + +.claro .dijitTextBoxHover { + background-color: @textbox-hovered-background-color; + .textbox-background-image; +} + +/* error state */ +.claro .dijitSelectError, +.claro .dijitSelectError .dijitButtonContents, +.claro .dijitTextBoxError, +.claro .dijitTextBoxError .dijitButtonNode { + border-color: @error-border-color; +} + +/* focused state */ +.claro .dijitSelectFocused, +.claro .dijitSelectFocused .dijitButtonContents, +.claro .dijitTextBoxFocused, +.claro .dijitTextBoxFocused .dijitButtonNode { + border-color:@focused-border-color; + .transition-duration(.1s); +} + +.claro .dijitTextBoxFocused { + background-color: @textbox-focused-background-color; + .textbox-background-image; +} +.claro .dijitTextBoxFocused .dijitInputContainer { + background: @textbox-focused-background-color; +} + +.claro .dijitSelectErrorFocused, +.claro .dijitSelectErrorFocused .dijitButtonContents, +.claro .dijitTextBoxErrorFocused, +.claro .dijitTextBoxErrorFocused .dijitButtonNode { + border-color: @error-focused-border-color; +} + +/* disabled state */ +.claro .dijitSelectDisabled, +.claro .dijitSelectDisabled .dijitButtonContents, +.claro .dijitTextBoxDisabled, +.claro .dijitTextBoxDisabled .dijitButtonNode { + border-color: @disabled-border-color; +} + +.claro .dijitSelectDisabled, +.claro .dijitTextBoxDisabled, +.claro .dijitTextBoxDisabled .dijitInputContainer { + background-color: @textbox-disabled-background-color; + background-image: none; +} + +.claro .dijitSelectDisabled, +.claro .dijitTextBoxDisabled, +.claro .dijitTextBoxDisabled .dijitInputInner { + color: @disabled-text-color; +} + +.dj_webkit .claro .dijitDisabled input { + /* because WebKit lightens disabled input/textarea no matter what color you specify */ + color: darken(@disabled-text-color, 5%) +} + +.dj_webkit .claro textarea.dijitTextAreaDisabled { + /* because WebKit lightens disabled input/textarea no matter what color you specify */ + color: darken(@disabled-text-color, 40%) +} + +/*========================= for special widgets =========================*/ + +/* Input boxes with an arrow (for a drop down) */ + +.claro .dijitSelect .dijitArrowButtonInner, +.claro .dijitComboBox .dijitArrowButtonInner { + background-image: url("../@{image-form-common-arrows}"); + background-position:-35px 53%; + background-repeat: no-repeat; + margin: 0; + width:16px; +} + +.claro .dijitComboBox .dijitArrowButtonInner { + border: 1px solid @arrowbutton-inner-border-color; // white gutter around the arrow button +} + +.claro .dijitToolbar .dijitComboBox .dijitArrowButtonInner { + border: none; +} + +.claro .dijitToolbar .dijitComboBox .dijitArrowButtonInner { + border: none; +} + +/* Add 1px vertical padding to the where user types and the validation icon, + to match the 1px border on arrow button */ +.claro .dijitSelectLabel, +.claro .dijitTextBox .dijitInputInner, +.claro .dijitValidationTextBox .dijitValidationContainer { + padding: 1px 0; +} + +.claro .dijitComboBox .dijitButtonNode { + background-color: @arrowbutton-background-color; + .standard-gradient("../"); +} + +/* Arrow "hover" effect: + * The arrow button should change color whenever the mouse is in a position such that clicking it + * will toggle the drop down. That's either (1) anywhere over the ComboBox or (2) over the arrow + * button, depending on the openOnClick setting for the widget. + */ +.claro .dijitComboBoxOpenOnClickHover .dijitButtonNode, +.claro .dijitComboBox .dijitDownArrowButtonHover, +.claro .dijitComboBoxFocused .dijitArrowButton { + background-color:@arrowbutton-hovered-background-color; +} + +.claro .dijitComboBoxOpenOnClickHover .dijitArrowButtonInner, +.claro .dijitComboBox .dijitDownArrowButtonHover .dijitArrowButtonInner { + background-position:-70px 53%; +} + +/* Arrow Button change when drop down is open */ +.claro .dijitComboBox .dijitHasDropDownOpen { // .dijitHasDropDown is on dijitArrowButton node + background-color: @pressed-background-color; + .active-gradient("../"); + padding: 1px; // Since no border on arrow button (see rule below) +} + +.dj_iequirks .claro .dijitComboBox .dijitHasDropDownOpen { + padding: 1px 0; +} + +.claro .dijitComboBox .dijitHasDropDownOpen .dijitArrowButtonInner { + background-position:-70px 53%; + border: 0 none; +} + +/* disabled state */ +.claro div.dijitComboBoxDisabled .dijitArrowButtonInner { + /* specific selector set to override background-position setting from Button.js + * (.claro .dijitComboBoxDisabled .dijitArrowButtonInner) */ + background-position:0 50%; + background-color:@disabled-background-color; +} + +/*========================= hacks for browsers =========================*/ +/* it seems the input[type="hidden"] has a height (16px) too... this may cause the widget's height calculate error */ +.dj_ff3 .claro .dijitInputField input[type="hidden"] { + display: none; + height: 0; + width: 0; +} + +.dj_borderbox .claro .dijitComboBox .dijitHasDropDownOpen .dijitArrowButtonInner { + width:18px; // quirks mode means border-box sizing, so 18px with the border (same as 16px without border) +} + +.dj_borderbox .claro .dijitComboBoxFocused .dijitHasDropDownOpen .dijitArrowButtonInner { + width:16px; // when no border, then back to 16px just like content-box sizing +} diff --git a/src/main/resources/static/dijit/themes/claro/form/Common_rtl.css b/src/main/resources/static/dijit/themes/claro/form/Common_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..62e7be5cbcf34af1af6282ab61f21320d5774a6e --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/Common_rtl.css @@ -0,0 +1,5 @@ +/* claro/form/Common_rtl.css */ +.claro .dijitTextBoxRtlError .dijitValidationContainer { + border-left-width: 0; + border-right-width: 1px; +} diff --git a/src/main/resources/static/dijit/themes/claro/form/Common_rtl.less b/src/main/resources/static/dijit/themes/claro/form/Common_rtl.less new file mode 100644 index 0000000000000000000000000000000000000000..342ad46448d80220907ed82df8699eead47c5e83 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/Common_rtl.less @@ -0,0 +1,8 @@ +/* claro/form/Common_rtl.css */ + +@import "../variables"; + +.claro .dijitTextBoxRtlError .dijitValidationContainer { + border-left-width: 0; + border-right-width: 1px; +} diff --git a/src/main/resources/static/dijit/themes/claro/form/NumberSpinner.css b/src/main/resources/static/dijit/themes/claro/form/NumberSpinner.css new file mode 100644 index 0000000000000000000000000000000000000000..94a3e50a05d2789a188403cda967d69aa900e575 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/NumberSpinner.css @@ -0,0 +1,156 @@ +/* NumberSpinner - namespace "dijitSpinner" + * + * Styling NumberSpinner mainly includes: + * + * 1. Arrows + * Outer containers: .dijitSpinnerButtonContainer|.dijitSpinnerButtonInner - for border, padding and position + * Arrows: .dijitArrowButton|.dijitUpArrowButton.|dijitDownArrowButton + * Inner container: .dijitArrowButtonInner - for border, padding, width|height and background image + * + * 2. Hover state + * .dijitUpArrowButtonHover|.dijitDownArrowButtonHover .* - for background color|image + * + * 3. Active state + * .dijitUpArrowButtonActive|.dijitDownArrowButtonActive .* - for border, padding, margin and background color|image + * + * 4. Focused state + * .dijitSpinnerFocused .* - for background color|image + * + * 5. Disabled state + * .dijitSpinnerDisabled .* - for background color|image + */ +.claro .dijitSpinnerButtonContainer { + overflow: hidden; + position: relative; + width: auto; + padding: 0 2px; +} +.claro .dijitSpinnerButtonContainer .dijitSpinnerButtonInner { + border-width: 1px 0; + /* reserve space to match the claro combobox button border with border and not padding to make IE happier */ + + border-style: solid none; +} +/* button */ +.claro .dijitSpinner .dijitArrowButton { + width: auto; + background-color: #efefef; + background-image: url("../images/standardGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + _background-image: none; + overflow: hidden; +} +.dj_iequirks .claro .dijitSpinner .dijitArrowButton { + overflow: visible; + /* 0 height w/o this */ + +} +.claro .dijitSpinner .dijitSpinnerButtonInner { + width: 15px; +} +/* up & down button icons */ +.claro .dijitSpinner .dijitArrowButtonInner { + border: solid 1px #ffffff; + border-bottom-width: 0; + /* 2 top borders = 1 top+bottom border in ComboBox */ + + background-image: url("../form/images/commonFormArrows.png"); + background-repeat: no-repeat; + height: 100%; + width: 15px; + padding-left: 1px; + padding-right: 1px; + /* for up arrow */ + + background-position: -139px center; + /* override button.css (TODO: move to Common.css since ComboBox needs this too) */ + + display: block; + margin: -1px 0 -1px 0; + /* compensate for inner border */ + +} +.dj_iequirks .claro .dijitSpinner .dijitArrowButtonInner, +.dj_ie6 .claro .dijitSpinner .dijitArrowButtonInner, +.dj_ie7 .claro .dijitSpinner .dijitArrowButtonInner, +.dj_ie8 .claro .dijitSpinner .dijitArrowButtonInner { + margin-top: 0; + /* since its bottom aligned */ + +} +.dj_iequirks .claro .dijitSpinner .dijitArrowButtonInner { + width: 19px; +} +.claro .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner { + background-position: -34px; +} +.claro .dijitSpinner .dijitArrowButtonInner .dijitInputField { + padding: 0; +} +/** hover & focused status **/ +.claro .dijitUpArrowButtonActive, +.claro .dijitDownArrowButtonActive { + background-color: #abd6ff; +} +.claro .dijitSpinner .dijitUpArrowButtonHover, +.claro .dijitSpinner .dijitDownArrowButtonHover, +.claro .dijitSpinnerFocused .dijitArrowButton { + background-color: #abd6ff; +} +.claro .dijitSpinner .dijitUpArrowButtonHover .dijitArrowButtonInner { + background-position: -174px; +} +.claro .dijitSpinner .dijitDownArrowButtonHover .dijitArrowButtonInner { + background-position: -69px; +} +.claro .dijitSpinnerFocused { + background-color: #ffffff; + background-image: none; +} +/* mouse down status */ +.claro .dijitSpinner .dijitDownArrowButtonActive, +.claro .dijitSpinner .dijitUpArrowButtonActive { + background-color: #7dbefa; + background-image: url("../images/activeGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + _background-image: none; +} +.claro .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner, +.claro .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner { + /* hide inner border while button is depressed */ + + border: 0; + padding: 1px; + margin-right: 2px; + margin-bottom: 1px; +} +.claro .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner { + background-position: -173px; +} +.claro .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner { + background-position: -68px; +} +/* disabled */ +.claro .dijitSpinnerDisabled .dijitArrowButtonInner { + background-color: #efefef; +} +.claro .dijitSpinnerDisabled .dijitUpArrowButton .dijitArrowButtonInner { + background-position: -104px; +} +.claro .dijitSpinnerDisabled .dijitDownArrowButton .dijitArrowButtonInner { + background-position: 1px; +} +/** hacks for browsers **/ +/* for IE 7, when div is enlarged, + * should be no empty space between dijitInputLayoutContainer and dijitSpinner*/ +.dj_ie7 .claro .dijitSpinner { + overflow: visible; +} diff --git a/src/main/resources/static/dijit/themes/claro/form/NumberSpinner.less b/src/main/resources/static/dijit/themes/claro/form/NumberSpinner.less new file mode 100644 index 0000000000000000000000000000000000000000..e15c7821d85fd46adb4901333c1346b6912a1718 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/NumberSpinner.less @@ -0,0 +1,150 @@ +/* NumberSpinner - namespace "dijitSpinner" + * + * Styling NumberSpinner mainly includes: + * + * 1. Arrows + * Outer containers: .dijitSpinnerButtonContainer|.dijitSpinnerButtonInner - for border, padding and position + * Arrows: .dijitArrowButton|.dijitUpArrowButton.|dijitDownArrowButton + * Inner container: .dijitArrowButtonInner - for border, padding, width|height and background image + * + * 2. Hover state + * .dijitUpArrowButtonHover|.dijitDownArrowButtonHover .* - for background color|image + * + * 3. Active state + * .dijitUpArrowButtonActive|.dijitDownArrowButtonActive .* - for border, padding, margin and background color|image + * + * 4. Focused state + * .dijitSpinnerFocused .* - for background color|image + * + * 5. Disabled state + * .dijitSpinnerDisabled .* - for background color|image + */ + +@import "../variables"; + +.claro .dijitSpinnerButtonContainer { + overflow: hidden; + position: relative; + width: auto; + padding: 0 2px; +} +.claro .dijitSpinnerButtonContainer .dijitSpinnerButtonInner { + border-width: 1px 0; /* reserve space to match the claro combobox button border with border and not padding to make IE happier */ + border-style: solid none; +} + +/* button */ +.claro .dijitSpinner .dijitArrowButton { + width:auto; + background-color: @arrowbutton-background-color; + .standard-gradient("../"); + overflow: hidden; +} +.dj_iequirks .claro .dijitSpinner .dijitArrowButton { + overflow: visible; /* 0 height w/o this */ +} + +.claro .dijitSpinner .dijitSpinnerButtonInner { + width: 15px; +} +/* up & down button icons */ +.claro .dijitSpinner .dijitArrowButtonInner { + border:solid 1px @arrowbutton-inner-border-color; + border-bottom-width: 0; /* 2 top borders = 1 top+bottom border in ComboBox */ + background-image: url("../@{image-form-common-arrows}"); + background-repeat: no-repeat; + height: 100%; + width:15px; + padding-left: 1px; + padding-right: 1px; + + /* for up arrow */ + background-position:-139px center; + + /* override button.css (TODO: move to Common.css since ComboBox needs this too) */ + display: block; + margin: -1px 0 -1px 0; /* compensate for inner border */ +} + +.dj_iequirks .claro .dijitSpinner .dijitArrowButtonInner, +.dj_ie6 .claro .dijitSpinner .dijitArrowButtonInner, +.dj_ie7 .claro .dijitSpinner .dijitArrowButtonInner, +.dj_ie8 .claro .dijitSpinner .dijitArrowButtonInner { + margin-top: 0; /* since its bottom aligned */ +} + +.dj_iequirks .claro .dijitSpinner .dijitArrowButtonInner { + width: 19px; +} +.claro .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner { + background-position:-34px; +} +.claro .dijitSpinner .dijitArrowButtonInner .dijitInputField { + padding: 0; +} + +/** hover & focused status **/ + +.claro .dijitUpArrowButtonActive, +.claro .dijitDownArrowButtonActive { + background-color:@arrowbutton-pressed-background-color; +} + +.claro .dijitSpinner .dijitUpArrowButtonHover, +.claro .dijitSpinner .dijitDownArrowButtonHover, +.claro .dijitSpinnerFocused .dijitArrowButton { + background-color: @arrowbutton-hovered-background-color; +} + +.claro .dijitSpinner .dijitUpArrowButtonHover .dijitArrowButtonInner { + background-position:-174px; +} +.claro .dijitSpinner .dijitDownArrowButtonHover .dijitArrowButtonInner { + background-position:-69px; +} + +.claro .dijitSpinnerFocused { + background-color: @textbox-focused-background-color; + background-image: none; +} + +/* mouse down status */ +.claro .dijitSpinner .dijitDownArrowButtonActive, +.claro .dijitSpinner .dijitUpArrowButtonActive { + background-color: #7dbefa; // TODO. Mailed Jason about inconsistent ComboBox/Spinner behavior. + .active-gradient("../"); +} +.claro .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner, +.claro .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner { + /* hide inner border while button is depressed */ + border: 0; + padding: 1px; + margin-right:2px; + margin-bottom:1px; +} +.claro .dijitSpinner .dijitUpArrowButtonActive .dijitArrowButtonInner { + background-position:-173px; +} +.claro .dijitSpinner .dijitDownArrowButtonActive .dijitArrowButtonInner { + background-position:-68px; +} + +/* disabled */ + +.claro .dijitSpinnerDisabled .dijitArrowButtonInner { + background-color: @disabled-background-color; +} +.claro .dijitSpinnerDisabled .dijitUpArrowButton .dijitArrowButtonInner { + background-position:-104px; +} +.claro .dijitSpinnerDisabled .dijitDownArrowButton .dijitArrowButtonInner { + background-position:1px; +} + +/** hacks for browsers **/ + +/* for IE 7, when div is enlarged, + * should be no empty space between dijitInputLayoutContainer and dijitSpinner*/ +.dj_ie7 .claro .dijitSpinner { + overflow:visible; +} diff --git a/src/main/resources/static/dijit/themes/claro/form/RadioButton.css b/src/main/resources/static/dijit/themes/claro/form/RadioButton.css new file mode 100644 index 0000000000000000000000000000000000000000..063e1db8aa8f3f3db314b01c153e32a88a4fcd19 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/RadioButton.css @@ -0,0 +1,83 @@ +/* RadioButton + * + * Styling RadioButton mainly includes: + * + * 1. Containers + * .dijitRadio|.dijitRadioIcon - for border, padding, width|height and background image + * + * 2. RadioButton within ToggleButton + * .dijitToggleButton|.dijitToggleButtonChecked .* - for background image + * + * 3. Checked state + * .dijitRadioChecked - for checked background-color|image + * .dijitToggleButtonChecked - for border, background-color|image, display and width|height + * + * 4. Hover state + * .dijitRadioHover|.dijitRadioCheckedHover - for background image + * + * 5. Disabled state + * .dijitRadioDisabled|.dijitRadioCheckedDisabled - for background image + */ +.claro .dijitToggleButton .dijitRadio, +.claro .dijitToggleButton .dijitRadioIcon { + background-image: url("../form/images/checkboxRadioButtonStates.png"); +} +.dj_ie6 .claro .dijitToggleButton .dijitRadio, +.dj_ie6 .claro .dijitToggleButton .dijitRadioIcon { + background-image: url("../form/images/checkboxAndRadioButtons_IE6.png"); +} +.claro .dijitRadio, +.claro .dijitRadioIcon { + /* inside a toggle button */ + + background-image: url("../form/images/checkboxRadioButtonStates.png"); + /* checkbox sprite image */ + + background-repeat: no-repeat; + width: 15px; + height: 15px; + margin: 0 2px 0 0; + padding: 0; +} +.dj_ie6 .claro .dijitRadio, +.dj_ie6 .claro .dijitRadioIcon { + /* inside a toggle button */ + + background-image: url("../form/images/checkboxAndRadioButtons_IE6.png"); + /* checkbox sprite image */ + +} +.claro .dijitRadio { + /* unselected */ + + background-position: -105px; +} +.claro .dijitToggleButton .dijitRadioIcon { + /* unselected */ + + background-position: -107px; +} +.claro .dijitRadioDisabled { + /* unselected and disabled */ + + background-position: -165px; +} +.claro .dijitRadioHover { + /* hovering over an unselected enabled radio button */ + + background-position: -135px; +} +.claro .dijitRadioChecked { + background-position: -90px; +} +.claro .dijitToggleButtonChecked .dijitRadioIcon { + background-position: -92px; +} +.claro .dijitRadioCheckedHover { + background-position: -120px; +} +.claro .dijitRadioCheckedDisabled { + /* selected but disabled */ + + background-position: -150px; +} diff --git a/src/main/resources/static/dijit/themes/claro/form/RadioButton.less b/src/main/resources/static/dijit/themes/claro/form/RadioButton.less new file mode 100644 index 0000000000000000000000000000000000000000..f48cb67ecf40f40b30ce5221b94b7063057a6ddf --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/RadioButton.less @@ -0,0 +1,84 @@ +/* RadioButton + * + * Styling RadioButton mainly includes: + * + * 1. Containers + * .dijitRadio|.dijitRadioIcon - for border, padding, width|height and background image + * + * 2. RadioButton within ToggleButton + * .dijitToggleButton|.dijitToggleButtonChecked .* - for background image + * + * 3. Checked state + * .dijitRadioChecked - for checked background-color|image + * .dijitToggleButtonChecked - for border, background-color|image, display and width|height + * + * 4. Hover state + * .dijitRadioHover|.dijitRadioCheckedHover - for background image + * + * 5. Disabled state + * .dijitRadioDisabled|.dijitRadioCheckedDisabled - for background image + */ + +@import "../variables"; + +.claro .dijitToggleButton .dijitRadio, +.claro .dijitToggleButton .dijitRadioIcon { + background-image: url("../@{image-form-checkbox-and-radios}"); +} + +.dj_ie6 .claro .dijitToggleButton .dijitRadio, +.dj_ie6 .claro .dijitToggleButton .dijitRadioIcon { + background-image: url("../@{image-form-checkbox-and-radios-ie6}"); +} + +.claro .dijitRadio, +.claro .dijitRadioIcon { /* inside a toggle button */ + background-image: url("../@{image-form-checkbox-and-radios}"); /* checkbox sprite image */ + background-repeat: no-repeat; + width: 15px; + height: 15px; + margin: 0 2px 0 0; + padding: 0; +} + +.dj_ie6 .claro .dijitRadio, +.dj_ie6 .claro .dijitRadioIcon { /* inside a toggle button */ + background-image: url("../@{image-form-checkbox-and-radios-ie6}"); /* checkbox sprite image */ +} + +.claro .dijitRadio{ + /* unselected */ + background-position: -105px; +} + +.claro .dijitToggleButton .dijitRadioIcon { + /* unselected */ + background-position: -107px; +} + +.claro .dijitRadioDisabled { + /* unselected and disabled */ + background-position: -165px; +} + +.claro .dijitRadioHover { + /* hovering over an unselected enabled radio button */ + background-position: -135px; +} + +.claro .dijitRadioChecked{ + background-position: -90px; +} + +.claro .dijitToggleButtonChecked .dijitRadioIcon { + background-position: -92px; +} + +.claro .dijitRadioCheckedHover{ + background-position: -120px; +} + +.claro .dijitRadioCheckedDisabled { + /* selected but disabled */ + background-position: -150px; +} diff --git a/src/main/resources/static/dijit/themes/claro/form/Select.css b/src/main/resources/static/dijit/themes/claro/form/Select.css new file mode 100644 index 0000000000000000000000000000000000000000..3ed970f887a7d4e4dc3e57fee9c91aff8355ea6f --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/Select.css @@ -0,0 +1,94 @@ +/* Select + * + * Styling Select mainly includes: + * + * 1. Containers + * .dijitSelect - for border, background-color + * .dijitButtonContents - for border + * + * 2. Arrow + * .dijitArrowButton - for border, padding and background-color|image + * .dijitArrowButtonInner - for border, background-color|image, display and width|height + * + * 3. Menu + * .dijitSelectMenu .* - for border, padding + * + * 4. Various states + * .dijitSelectHover|.dijitSelectFocused|.dijitSelectDisabled .* - for border, padding and background-color|image + */ +/* normal status */ +.claro .dijitSelect .dijitArrowButtonContainer { + border: 1px solid #ffffff; +} +.claro .dijitSelect .dijitArrowButton { + padding: 0; + background-color: #efefef; + background-image: url("../images/standardGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + _background-image: none; +} +.claro .dijitSelect .dijitArrowButton .dijitArrowButtonInner { + height: 16px; +} +/* hover status */ +.claro .dijitSelectHover { + background-color: #e5f2fe; + background-image: -moz-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); + background-image: -webkit-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); + background-image: -o-linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); + background-image: linear-gradient(rgba(127, 127, 127, 0.2) 0%, rgba(127, 127, 127, 0) 2px); + background-repeat: repeat-x; +} +.claro .dijitSelectHover .dijitArrowButton { + background-color: #abd6ff; +} +.claro .dijitSelectHover .dijitArrowButton .dijitArrowButtonInner { + background-position: -70px 53%; +} +/* focused status */ +.claro .dijitSelectFocused .dijitArrowButton { + background-color: #7dbefa; + background-image: url("../images/activeGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + _background-image: none; +} +.claro .dijitSelectFocused .dijitArrowButton { + border: none; + padding: 1px; +} +.claro .dijitSelectFocused .dijitArrowButton .dijitArrowButtonInner { + background-position: -70px 53%; +} +/* disable status */ +.claro .dijitSelectDisabled { + border-color: #d3d3d3; + background-color: #efefef; + background-image: none; + color: #818181; +} +.claro .dijitSelectDisabled .dijitArrowButton .dijitArrowButtonInner { + background-position: 0 53%; +} +/* Dropdown menu style for select */ +.claro .dijitSelectMenu td.dijitMenuItemIconCell, +.claro .dijitSelectMenu td.dijitMenuArrowCell { + /* so that arrow and icon cells from MenuItem are not displayed */ + + display: none; +} +.claro .dijitSelectMenu td.dijitMenuItemLabel { + /* line up menu text with text in select box (in LTR and RTL modes) */ + + padding: 2px; +} +.claro .dijitSelectMenu .dijitMenuSeparatorTop { + border-bottom: 1px solid #759dc0; +} diff --git a/src/main/resources/static/dijit/themes/claro/form/Select.less b/src/main/resources/static/dijit/themes/claro/form/Select.less new file mode 100644 index 0000000000000000000000000000000000000000..72e1534a2e77fe789e42e815f107521355ff16b3 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/Select.less @@ -0,0 +1,93 @@ +/* Select + * + * Styling Select mainly includes: + * + * 1. Containers + * .dijitSelect - for border, background-color + * .dijitButtonContents - for border + * + * 2. Arrow + * .dijitArrowButton - for border, padding and background-color|image + * .dijitArrowButtonInner - for border, background-color|image, display and width|height + * + * 3. Menu + * .dijitSelectMenu .* - for border, padding + * + * 4. Various states + * .dijitSelectHover|.dijitSelectFocused|.dijitSelectDisabled .* - for border, padding and background-color|image + */ + +@import "../variables"; + +/* normal status */ +.claro .dijitSelect .dijitArrowButtonContainer { + border: 1px solid @arrowbutton-inner-border-color; +} + +.claro .dijitSelect .dijitArrowButton { + padding: 0; + background-color: @arrowbutton-background-color; + .standard-gradient("../"); +} + +.claro .dijitSelect .dijitArrowButton .dijitArrowButtonInner { + height:16px; +} + +/* hover status */ +.claro .dijitSelectHover { + background-color: @textbox-hovered-background-color; + .textbox-background-image; + background-repeat: repeat-x; +} + +.claro .dijitSelectHover .dijitArrowButton { + background-color:@arrowbutton-hovered-background-color; +} + +.claro .dijitSelectHover .dijitArrowButton .dijitArrowButtonInner { + background-position:-70px 53%; +} + +/* focused status */ +.claro .dijitSelectFocused .dijitArrowButton { + background-color:#7dbefa; // TODO. Mailed Jason about inconsistent ComboBox/Spinner behavior. + .active-gradient("../"); +} + +.claro .dijitSelectFocused .dijitArrowButton { + border: none; + padding: 1px; +} + +.claro .dijitSelectFocused .dijitArrowButton .dijitArrowButtonInner { + background-position:-70px 53%; +} + +/* disable status */ +.claro .dijitSelectDisabled { + border-color: @disabled-border-color; + background-color: @disabled-background-color; + background-image: none; + color: @disabled-text-color; +} + +.claro .dijitSelectDisabled .dijitArrowButton .dijitArrowButtonInner { + background-position:0 53% +} + +/* Dropdown menu style for select */ +.claro .dijitSelectMenu td.dijitMenuItemIconCell, +.claro .dijitSelectMenu td.dijitMenuArrowCell { + /* so that arrow and icon cells from MenuItem are not displayed */ + display: none; +} + +.claro .dijitSelectMenu td.dijitMenuItemLabel { + /* line up menu text with text in select box (in LTR and RTL modes) */ + padding: @textbox-padding; +} + +.claro .dijitSelectMenu .dijitMenuSeparatorTop { + border-bottom:1px solid @focused-border-color; +} diff --git a/src/main/resources/static/dijit/themes/claro/form/Slider.css b/src/main/resources/static/dijit/themes/claro/form/Slider.css new file mode 100644 index 0000000000000000000000000000000000000000..3ffcda1d7a763ab3b2447677f90a13ba215b2e3c --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/Slider.css @@ -0,0 +1,348 @@ +/* Slider + * + * Styling Slider mainly includes styling the Slider progress bar (dijitSliderProgressBar) + * + * Slider progress bar: + * 1. Slider progress bar (default styling): + * .dijitSliderProgressBarH - progress bar at the middle of horizontal slider + * .dijitSliderLeftBumper - bar at the left of horizontal slider + * .dijitSliderRightBumper - bar at the right of horizontal slider + * .dijitSliderProgressBarV - progress bar at the middle of vertical slider + * .dijitSliderTopBumper - bar at the top of vertical slider + * .dijitSliderBottomtBumper - bar at the bottom of vertical slider + * + * 2. hovered Slider progress bar (ie, mouse hover on progress bar) + * .dijitSliderHover .dijitSliderProgressBarH(horizontal) - hovered bar style: background, border + * + * 3. focused Slider progress bar (ie, mouse focused on progress bar) + * .dijitSliderFocused .dijitSliderProgressBarH(horizontal) - focus bar style: background, border + * + * 4. disabled/read-only Slider progress bar + * .dijitSliderDisabled .dijitSliderProgressBarH(horizontal) - bar styles when slider is disabled + * + * + * Slider Thumbs: + * 1. Slider Thumbs (default styling): + * .dijitSliderImageHandleH / .dijitSliderImageHandleV - styles for the controller on the progress bar + * + * 2. hovered Slider Thumbs (ie, mouse hover on slider thumbs) + * .dijitSliderHover .dijitSliderImageHandleH - hovered controller style + * + * 3. focused Slider progress bar (ie, mouse focused on slider thumbs) + * .dijitSliderFocused .dijitSliderImageHandleV - focused controller style + * + * + * Slider Increment/Decrement Buttons: + * 1. Slider Increment/Decrement Buttons (default styling): + * .dijitSliderDecrementIconH - decrement icon which lies at the left of horizontal slider + * .dijitSliderIncrementIconH - increment icon which lies at the right of horizontal slider + * .dijitSliderDecrementIconV - decrement icon which lies at the bottom of vertical slider + * .dijitSliderIncrementIconV - increment icon which lies at the top of vertical slider + * + * 2. hovered Slider Increment/Decrement Buttons (mouse hover on the icons) + * .dijitSliderHover .dijitSliderDecrementIconH - for background, border + * + * 3. active Slider Increment/Decrement Buttons (mouse down on the icons) + * .dijitSliderActive .dijitSliderIncrementIconV - for background, border + * + * 4. disabled/read-only Slider Increment/Decrement Buttons + * .dijitSliderDisabled .dijitSliderDecrementIconH - styles for the icons in disabled slider + * .dijitSliderReadOnly .dijitSliderIncrementIconV - styles for the icons in read-only slider + */ +.claro .dijitSliderBar { + border-style: solid; + outline: 1px; +} +.claro .dijitSliderFocused .dijitSliderBar { + border-color: #759dc0; +} +.claro .dijitSliderHover .dijitSliderBar { + border-color: #759dc0; +} +.claro .dijitSliderDisabled .dijitSliderBar { + background-image: none; + border-color: #d3d3d3; +} +.claro .dijitRuleLabelsContainer { + color: #000000; +} +/* Horizontal Slider */ +.claro .dijitRuleLabelsContainerH { + padding: 2px 0; +} +.claro .dijitSlider .dijitSliderProgressBarH, +.claro .dijitSlider .dijitSliderLeftBumper { + border-color: #b5bcc7; + background-color: #cfe5fa; + background-image: -moz-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px); + background-image: -webkit-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px); + background-image: -o-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px); + background-image: linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px); +} +.claro .dijitSlider .dijitSliderRemainingBarH, +.claro .dijitSlider .dijitSliderRightBumper { + border-color: #b5bcc7; + background-color: #ffffff; +} +.claro .dijitSliderRightBumper { + border-right: solid 1px #b5bcc7; +} +.claro .dijitSliderLeftBumper { + border-left: solid 1px #b5bcc7; +} +.claro .dijitSliderHover .dijitSliderProgressBarH, +.claro .dijitSliderHover .dijitSliderLeftBumper { + background-color: #abd6ff; + border-color: #759dc0; +} +.claro .dijitSliderHover .dijitSliderRemainingBarH, +.claro .dijitSliderHover .dijitSliderRightBumper { + background-color: #ffffff; + border-color: #759dc0; +} +.claro .dijitSliderFocused .dijitSliderProgressBarH, +.claro .dijitSliderFocused .dijitSliderLeftBumper { + background-color: #abd6ff; + border-color: #759dc0; + -webkit-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); + -moz-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); + box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); +} +.claro .dijitSliderFocused .dijitSliderRemainingBarH, +.claro .dijitSliderFocused .dijitSliderRightBumper { + background-color: #ffffff; + border-color: #759dc0; + -webkit-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); + -moz-box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); + box-shadow: inset 0px 1px 1px rgba(0, 0, 0, 0.2); +} +.claro .dijitSliderDisabled .dijitSliderProgressBarH, +.claro .dijitSliderDisabled .dijitSliderLeftBumper { + background-color: #d3d3d3; + /* left side of slider, fill matches border */ + + background-image: none; +} +.claro .dijitSliderDisabled .dijitSliderRemainingBarH, +.claro .dijitSliderDisabled .dijitSliderRightBumper { + background-color: #efefef; +} +/* Vertical Slider */ +.claro .dijitRuleLabelsContainerV { + padding: 0 2px; +} +.claro .dijitSlider .dijitSliderProgressBarV, +.claro .dijitSlider .dijitSliderBottomBumper { + border-color: #b5bcc7; + background-color: #cfe5fa; + background-image: -moz-linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 1px); + background-image: -webkit-linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 1px); + background-image: -o-linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 1px); + background-image: linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 1px); +} +.claro .dijitSlider .dijitSliderRemainingBarV, +.claro .dijitSlider .dijitSliderTopBumper { + border-color: #b5bcc7; + background-color: #ffffff; +} +.claro .dijitSliderBottomBumper { + border-bottom: solid 1px #b5bcc7; +} +.claro .dijitSliderTopBumper { + border-top: solid 1px #b5bcc7; +} +.claro .dijitSliderHover .dijitSliderProgressBarV, +.claro .dijitSliderHover .dijitSliderBottomBumper { + background-color: #abd6ff; + border-color: #759dc0; +} +.claro .dijitSliderHover .dijitSliderRemainingBarV, +.claro .dijitSliderHover .dijitSliderTopBumper { + background-color: #ffffff; + border-color: #759dc0; +} +.claro .dijitSliderFocused .dijitSliderProgressBarV, +.claro .dijitSliderFocused .dijitSliderBottomBumper { + background-color: #abd6ff; + border-color: #759dc0; + -webkit-box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 0.2); + -moz-box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 0.2); + box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 0.2); +} +.claro .dijitSliderFocused .dijitSliderRemainingBarV, +.claro .dijitSliderFocused .dijitSliderTopBumper { + background-color: #ffffff; + border-color: #759dc0; + -webkit-box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 0.2); + -moz-box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 0.2); + box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 0.2); +} +.claro .dijitSliderDisabled .dijitSliderProgressBarV, +.claro .dijitSliderDisabled .dijitSliderBottomBumper { + background-color: #d3d3d3; + /* bottom side of slider, fill matches border */ + +} +.claro .dijitSliderDisabled .dijitSliderRemainingBarV, +.claro .dijitSliderDisabled .dijitSliderTopBumper { + background-color: #efefef; +} +/* ------- Thumbs ------- */ +.claro .dijitSliderImageHandleH { + border: 0; + width: 18px; + height: 16px; + background-image: url("../form/images/sliderThumbs.png"); + background-repeat: no-repeat; + background-position: 0 0; +} +.claro .dijitSliderHover .dijitSliderImageHandleH { + background-position: -18px 0; +} +.claro .dijitSliderFocused .dijitSliderImageHandleH { + background-position: -36px 0; +} +.claro .dijitSliderProgressBarH .dijitSliderThumbHover { + background-position: -36px 0; +} +.claro .dijitSliderProgressBarH .dijitSliderThumbActive { + background-position: -36px 0; +} +.claro .dijitSliderReadOnly .dijitSliderImageHandleH, +.claro .dijitSliderDisabled .dijitSliderImageHandleH { + background-position: -54px 0; +} +.claro .dijitSliderImageHandleV { + border: 0; + width: 18px; + height: 16px; + background-image: url("../form/images/sliderThumbs.png"); + background-repeat: no-repeat; + background-position: -289px 0; +} +.claro .dijitSliderHover .dijitSliderImageHandleV { + background-position: -307px 0; +} +.claro .dijitSliderFocused .dijitSliderImageHandleV { + background-position: -325px 0; +} +.claro .dijitSliderProgressBarV .dijitSliderThumbHover { + background-position: -325px 0; +} +.claro .dijitSliderProgressBarV .dijitSliderThumbActive { + background-position: -325px 0; +} +.claro .dijitSliderReadOnly .dijitSliderImageHandleV, +.claro .dijitSliderDisabled .dijitSliderImageHandleV { + background-position: -343px 0; +} +/* ---- Increment/Decrement Buttons ---- */ +.claro .dijitSliderButtonContainerH { + padding: 1px 3px 1px 2px; +} +.claro .dijitSliderButtonContainerV { + padding: 3px 1px 2px 1px; +} +.claro .dijitSliderDecrementIconH, +.claro .dijitSliderIncrementIconH, +.claro .dijitSliderDecrementIconV, +.claro .dijitSliderIncrementIconV { + background-image: url("../form/images/commonFormArrows.png"); + background-repeat: no-repeat; + background-color: #efefef; + -moz-border-radius: 2px; + border-radius: 2px; + border: solid 1px #b5bcc7; + font-size: 1px; +} +.claro .dijitSliderDecrementIconH, +.claro .dijitSliderIncrementIconH { + height: 12px; + width: 9px; +} +.claro .dijitSliderDecrementIconV, +.claro .dijitSliderIncrementIconV { + height: 9px; + width: 12px; +} +.claro .dijitSliderActive .dijitSliderDecrementIconH, +.claro .dijitSliderActive .dijitSliderIncrementIconH, +.claro .dijitSliderActive .dijitSliderDecrementIconV, +.claro .dijitSliderActive .dijitSliderIncrementIconV, +.claro .dijitSliderHover .dijitSliderDecrementIconH, +.claro .dijitSliderHover .dijitSliderIncrementIconH, +.claro .dijitSliderHover .dijitSliderDecrementIconV, +.claro .dijitSliderHover .dijitSliderIncrementIconV { + /* dijitSliderActive should be treated as dijitSliderHover since "clicking the slider" has no meaning */ + + border: solid 1px #759dc0; + background-color: #ffffff; +} +.claro .dijitSliderDecrementIconH { + background-position: -357px 50%; +} +.claro .dijitSliderActive .dijitSliderDecrementIconH .claro .dijitSliderHover .dijitSliderDecrementIconH { + background-position: -393px 50%; +} +.claro .dijitSliderIncrementIconH { + background-position: -251px 50%; +} +.claro .dijitSliderActive .dijitSliderIncrementIconH .claro .dijitSliderHover .dijitSliderIncrementIconH { + background-position: -283px 50%; +} +.claro .dijitSliderDecrementIconV { + background-position: -38px 50%; +} +.claro .dijitSliderActive .dijitSliderDecrementIconV .claro .dijitSliderHover .dijitSliderDecrementIconV { + background-position: -73px 50%; +} +.claro .dijitSliderIncrementIconV { + background-position: -143px 49%; +} +.claro .dijitSliderActive .dijitSliderIncrementIconV .claro .dijitSliderHover .dijitSliderIncrementIconV { + background-position: -178px 49%; +} +.claro .dijitSliderButtonContainerV .dijitSliderDecrementButtonHover, +.claro .dijitSliderButtonContainerH .dijitSliderDecrementButtonHover, +.claro .dijitSliderButtonContainerV .dijitSliderIncrementButtonHover, +.claro .dijitSliderButtonContainerH .dijitSliderIncrementButtonHover { + background-color: #cfe5fa; +} +.claro .dijitSliderButtonContainerV .dijitSliderDecrementButtonActive, +.claro .dijitSliderButtonContainerH .dijitSliderDecrementButtonActive, +.claro .dijitSliderButtonContainerV .dijitSliderIncrementButtonActive, +.claro .dijitSliderButtonContainerH .dijitSliderIncrementButtonActive { + background-color: #abd6ff; + border-color: #759dc0; +} +.claro .dijitSliderButtonInner { + visibility: hidden; +} +.claro .dijitSliderDisabled .dijitSliderBar { + border-color: #d3d3d3; +} +.claro .dijitSliderReadOnly *, +.claro .dijitSliderDisabled * { + border-color: #d3d3d3; + color: #818181; +} +.claro .dijitSliderReadOnly .dijitSliderDecrementIconH, +.claro .dijitSliderDisabled .dijitSliderDecrementIconH { + background-position: -321px 50%; + background-color: #efefef; +} +.claro .dijitSliderReadOnly .dijitSliderIncrementIconH, +.claro .dijitSliderDisabled .dijitSliderIncrementIconH { + background-position: -215px 50%; + background-color: #efefef; +} +.claro .dijitSliderReadOnly .dijitSliderDecrementIconV, +.claro .dijitSliderDisabled .dijitSliderDecrementIconV { + background-position: -3px 49%; + background-color: #efefef; +} +.claro .dijitSliderReadOnly .dijitSliderIncrementIconV, +.claro .dijitSliderDisabled .dijitSliderIncrementIconV { + background-position: -107px 49%; + background-color: #efefef; +} diff --git a/src/main/resources/static/dijit/themes/claro/form/Slider.less b/src/main/resources/static/dijit/themes/claro/form/Slider.less new file mode 100644 index 0000000000000000000000000000000000000000..2c5bfe914de8ecfee79ac0a74789c008301b8250 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/Slider.less @@ -0,0 +1,344 @@ +/* Slider + * + * Styling Slider mainly includes styling the Slider progress bar (dijitSliderProgressBar) + * + * Slider progress bar: + * 1. Slider progress bar (default styling): + * .dijitSliderProgressBarH - progress bar at the middle of horizontal slider + * .dijitSliderLeftBumper - bar at the left of horizontal slider + * .dijitSliderRightBumper - bar at the right of horizontal slider + * .dijitSliderProgressBarV - progress bar at the middle of vertical slider + * .dijitSliderTopBumper - bar at the top of vertical slider + * .dijitSliderBottomtBumper - bar at the bottom of vertical slider + * + * 2. hovered Slider progress bar (ie, mouse hover on progress bar) + * .dijitSliderHover .dijitSliderProgressBarH(horizontal) - hovered bar style: background, border + * + * 3. focused Slider progress bar (ie, mouse focused on progress bar) + * .dijitSliderFocused .dijitSliderProgressBarH(horizontal) - focus bar style: background, border + * + * 4. disabled/read-only Slider progress bar + * .dijitSliderDisabled .dijitSliderProgressBarH(horizontal) - bar styles when slider is disabled + * + * + * Slider Thumbs: + * 1. Slider Thumbs (default styling): + * .dijitSliderImageHandleH / .dijitSliderImageHandleV - styles for the controller on the progress bar + * + * 2. hovered Slider Thumbs (ie, mouse hover on slider thumbs) + * .dijitSliderHover .dijitSliderImageHandleH - hovered controller style + * + * 3. focused Slider progress bar (ie, mouse focused on slider thumbs) + * .dijitSliderFocused .dijitSliderImageHandleV - focused controller style + * + * + * Slider Increment/Decrement Buttons: + * 1. Slider Increment/Decrement Buttons (default styling): + * .dijitSliderDecrementIconH - decrement icon which lies at the left of horizontal slider + * .dijitSliderIncrementIconH - increment icon which lies at the right of horizontal slider + * .dijitSliderDecrementIconV - decrement icon which lies at the bottom of vertical slider + * .dijitSliderIncrementIconV - increment icon which lies at the top of vertical slider + * + * 2. hovered Slider Increment/Decrement Buttons (mouse hover on the icons) + * .dijitSliderHover .dijitSliderDecrementIconH - for background, border + * + * 3. active Slider Increment/Decrement Buttons (mouse down on the icons) + * .dijitSliderActive .dijitSliderIncrementIconV - for background, border + * + * 4. disabled/read-only Slider Increment/Decrement Buttons + * .dijitSliderDisabled .dijitSliderDecrementIconH - styles for the icons in disabled slider + * .dijitSliderReadOnly .dijitSliderIncrementIconV - styles for the icons in read-only slider + */ + +@import "../variables"; + +.claro .dijitSliderBar { + border-style: solid; + outline: 1px; +} +.claro .dijitSliderFocused .dijitSliderBar { + border-color: @focused-border-color; +} +.claro .dijitSliderHover .dijitSliderBar { + border-color: @hovered-border-color; +} +.claro .dijitSliderDisabled .dijitSliderBar { + background-image: none; + border-color: @disabled-border-color; +} +.claro .dijitRuleLabelsContainer { + color: @text-color; +} + +/* Horizontal Slider */ + +.claro .dijitRuleLabelsContainerH { + padding: 2px 0; +} +.claro .dijitSlider .dijitSliderProgressBarH, +.claro .dijitSlider .dijitSliderLeftBumper{ + border-color: @border-color; + background-color: @slider-fullbar-background-color; + .alpha-white-gradient (top, 1,0px, 1,1px, 0,2px); +} +.claro .dijitSlider .dijitSliderRemainingBarH, +.claro .dijitSlider .dijitSliderRightBumper{ + border-color: @border-color; + background-color: @slider-remainingbar-background-color; +} +.claro .dijitSliderRightBumper { + border-right: solid 1px @border-color; +} +.claro .dijitSliderLeftBumper { + border-left: solid 1px @border-color; +} +.claro .dijitSliderHover .dijitSliderProgressBarH, +.claro .dijitSliderHover .dijitSliderLeftBumper{ + background-color: @slider-hovered-fullbar-background-color; + border-color: @hovered-border-color; +} +.claro .dijitSliderHover .dijitSliderRemainingBarH, +.claro .dijitSliderHover .dijitSliderRightBumper{ + background-color: @slider-hovered-remainingbar-background-color; + border-color: @hovered-border-color; +} +.claro .dijitSliderFocused .dijitSliderProgressBarH, +.claro .dijitSliderFocused .dijitSliderLeftBumper{ + background-color: @slider-focused-fullbar-background-color; + border-color: @focused-border-color; + .box-shadow(inset 0px 1px 1px rgba(0, 0, 0, 0.2)); +} +.claro .dijitSliderFocused .dijitSliderRemainingBarH, +.claro .dijitSliderFocused .dijitSliderRightBumper{ + background-color: @slider-focused-remainingbar-background-color; + border-color: @focused-border-color; + .box-shadow(inset 0px 1px 1px rgba(0, 0, 0, 0.2)); +} +.claro .dijitSliderDisabled .dijitSliderProgressBarH, +.claro .dijitSliderDisabled .dijitSliderLeftBumper{ + background-color: @disabled-border-color; /* left side of slider, fill matches border */ + background-image:none; +} +.claro .dijitSliderDisabled .dijitSliderRemainingBarH, +.claro .dijitSliderDisabled .dijitSliderRightBumper{ + background-color: @disabled-background-color; +} + +/* Vertical Slider */ + +.claro .dijitRuleLabelsContainerV { + padding: 0 2px; +} +.claro .dijitSlider .dijitSliderProgressBarV, +.claro .dijitSlider .dijitSliderBottomBumper{ + border-color: @border-color; + background-color: @slider-fullbar-background-color; + .alpha-white-gradient (left, 1,0px, 0,1px); +} +.claro .dijitSlider .dijitSliderRemainingBarV, +.claro .dijitSlider .dijitSliderTopBumper{ + border-color: @border-color; + background-color: @slider-remainingbar-background-color; +} +.claro .dijitSliderBottomBumper { + border-bottom: solid 1px @border-color; +} +.claro .dijitSliderTopBumper { + border-top: solid 1px @border-color; +} +.claro .dijitSliderHover .dijitSliderProgressBarV, +.claro .dijitSliderHover .dijitSliderBottomBumper{ + background-color: @slider-hovered-fullbar-background-color; + border-color: @hovered-border-color; +} +.claro .dijitSliderHover .dijitSliderRemainingBarV, +.claro .dijitSliderHover .dijitSliderTopBumper{ + background-color: @slider-hovered-remainingbar-background-color; + border-color: @hovered-border-color; +} +.claro .dijitSliderFocused .dijitSliderProgressBarV, +.claro .dijitSliderFocused .dijitSliderBottomBumper{ + background-color: @slider-focused-fullbar-background-color; + border-color: @focused-border-color; + .box-shadow(inset 1px 0px 1px rgba(0, 0, 0, 0.2)); +} +.claro .dijitSliderFocused .dijitSliderRemainingBarV, +.claro .dijitSliderFocused .dijitSliderTopBumper{ + background-color: @slider-focused-remainingbar-background-color; + border-color: @focused-border-color; + .box-shadow(inset 1px 0px 1px rgba(0, 0, 0, 0.2)); +} +.claro .dijitSliderDisabled .dijitSliderProgressBarV, +.claro .dijitSliderDisabled .dijitSliderBottomBumper{ + background-color: @disabled-border-color; /* bottom side of slider, fill matches border */ +} +.claro .dijitSliderDisabled .dijitSliderRemainingBarV, +.claro .dijitSliderDisabled .dijitSliderTopBumper{ + background-color: @disabled-background-color; +} + + +/* ------- Thumbs ------- */ + +.claro .dijitSliderImageHandleH { + border: 0; + width: 18px; + height: 16px; + background-image: url("../@{image-form-slider-thumbs}"); + background-repeat:no-repeat; + background-position:0 0; +} +.claro .dijitSliderHover .dijitSliderImageHandleH { + background-position:-18px 0; +} +.claro .dijitSliderFocused .dijitSliderImageHandleH { + background-position:-36px 0; +} +.claro .dijitSliderProgressBarH .dijitSliderThumbHover{ + background-position:-36px 0; +} +.claro .dijitSliderProgressBarH .dijitSliderThumbActive{ + background-position:-36px 0; +} +.claro .dijitSliderReadOnly .dijitSliderImageHandleH, +.claro .dijitSliderDisabled .dijitSliderImageHandleH { + background-position:-54px 0; +} +.claro .dijitSliderImageHandleV { + border: 0; + width: 18px; + height: 16px; + background-image: url("../@{image-form-slider-thumbs}"); + background-repeat:no-repeat; + background-position:-289px 0; +} +.claro .dijitSliderHover .dijitSliderImageHandleV { + background-position:-307px 0; +} +.claro .dijitSliderFocused .dijitSliderImageHandleV { + background-position:-325px 0; +} +.claro .dijitSliderProgressBarV .dijitSliderThumbHover{ + background-position:-325px 0; +} +.claro .dijitSliderProgressBarV .dijitSliderThumbActive{ + background-position:-325px 0; +} +.claro .dijitSliderReadOnly .dijitSliderImageHandleV, +.claro .dijitSliderDisabled .dijitSliderImageHandleV { + background-position:-343px 0; +} + +/* ---- Increment/Decrement Buttons ---- */ + +.claro .dijitSliderButtonContainerH{ + padding: 1px 3px 1px 2px; +} +.claro .dijitSliderButtonContainerV{ + padding: 3px 1px 2px 1px; +} +.claro .dijitSliderDecrementIconH, +.claro .dijitSliderIncrementIconH, +.claro .dijitSliderDecrementIconV, +.claro .dijitSliderIncrementIconV { + background-image: url("../@{image-form-common-arrows}"); + background-repeat:no-repeat; + background-color: @arrowbutton-background-color; + .border-radius(2px); + border: solid 1px @border-color; + font-size: 1px; +} +.claro .dijitSliderDecrementIconH, +.claro .dijitSliderIncrementIconH { + height: 12px; + width: 9px; +} +.claro .dijitSliderDecrementIconV, +.claro .dijitSliderIncrementIconV { + height: 9px; + width: 12px; +} +.claro .dijitSliderActive .dijitSliderDecrementIconH, +.claro .dijitSliderActive .dijitSliderIncrementIconH, +.claro .dijitSliderActive .dijitSliderDecrementIconV, +.claro .dijitSliderActive .dijitSliderIncrementIconV, +.claro .dijitSliderHover .dijitSliderDecrementIconH, +.claro .dijitSliderHover .dijitSliderIncrementIconH, +.claro .dijitSliderHover .dijitSliderDecrementIconV, +.claro .dijitSliderHover .dijitSliderIncrementIconV { + /* dijitSliderActive should be treated as dijitSliderHover since "clicking the slider" has no meaning */ + border: solid 1px @hovered-border-color; + background-color: @slider-hoveredButton-background-color; +} + +.claro .dijitSliderDecrementIconH { + background-position:-357px 50%; +} +.claro .dijitSliderActive .dijitSliderDecrementIconH +.claro .dijitSliderHover .dijitSliderDecrementIconH { + background-position:-393px 50%; +} +.claro .dijitSliderIncrementIconH { + background-position:-251px 50%; +} +.claro .dijitSliderActive .dijitSliderIncrementIconH +.claro .dijitSliderHover .dijitSliderIncrementIconH { + background-position:-283px 50%; +} +.claro .dijitSliderDecrementIconV { + background-position:-38px 50%; +} +.claro .dijitSliderActive .dijitSliderDecrementIconV +.claro .dijitSliderHover .dijitSliderDecrementIconV { + background-position:-73px 50%; +} +.claro .dijitSliderIncrementIconV { + background-position:-143px 49%; +} +.claro .dijitSliderActive .dijitSliderIncrementIconV +.claro .dijitSliderHover .dijitSliderIncrementIconV { + background-position:-178px 49%; +} +.claro .dijitSliderButtonContainerV .dijitSliderDecrementButtonHover, +.claro .dijitSliderButtonContainerH .dijitSliderDecrementButtonHover, +.claro .dijitSliderButtonContainerV .dijitSliderIncrementButtonHover, +.claro .dijitSliderButtonContainerH .dijitSliderIncrementButtonHover { + background-color: @slider-button-hovered-background-color; +} +.claro .dijitSliderButtonContainerV .dijitSliderDecrementButtonActive, +.claro .dijitSliderButtonContainerH .dijitSliderDecrementButtonActive, +.claro .dijitSliderButtonContainerV .dijitSliderIncrementButtonActive, +.claro .dijitSliderButtonContainerH .dijitSliderIncrementButtonActive { + background-color: @slider-button-pressed-background-color; + border-color:@pressed-border-color; +} +.claro .dijitSliderButtonInner { + visibility: hidden; +} +.claro .dijitSliderDisabled .dijitSliderBar{ + border-color: @disabled-border-color; +} +.claro .dijitSliderReadOnly *,.claro .dijitSliderDisabled * { + border-color: @disabled-border-color; + color: @disabled-text-color; +} +.claro .dijitSliderReadOnly .dijitSliderDecrementIconH, +.claro .dijitSliderDisabled .dijitSliderDecrementIconH { + background-position:-321px 50%; + background-color:@disabled-background-color; +} +.claro .dijitSliderReadOnly .dijitSliderIncrementIconH, +.claro .dijitSliderDisabled .dijitSliderIncrementIconH { + background-position:-215px 50%; + background-color:@disabled-background-color; +} +.claro .dijitSliderReadOnly .dijitSliderDecrementIconV, +.claro .dijitSliderDisabled .dijitSliderDecrementIconV { + background-position:-3px 49%; + background-color:@disabled-background-color; +} +.claro .dijitSliderReadOnly .dijitSliderIncrementIconV, +.claro .dijitSliderDisabled .dijitSliderIncrementIconV { + background-position:-107px 49%; + background-color:@disabled-background-color; +} diff --git a/src/main/resources/static/dijit/themes/claro/form/Slider_rtl.css b/src/main/resources/static/dijit/themes/claro/form/Slider_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..0f390936c8dfd852aacdb012707f1f165daf5ceb --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/Slider_rtl.css @@ -0,0 +1,26 @@ +.claro .dijitSliderRtl .dijitSliderProgressBarH, +.claro .dijitSliderRtl .dijitSliderRemainingBarH, +.claro .dijitSliderRtl .dijitSliderLeftBumper, +.claro .dijitSliderRtl .dijitSliderRightBumper, +.claro .dijitSliderRtl .dijitSliderTopBumper { + background-position: top right; +} +.claro .dijitSliderRtl .dijitSliderProgressBarV, +.claro .dijitSliderRtl .dijitSliderRemainingBarV, +.claro .dijitSliderRtl .dijitSliderBottomBumper { + background-position: bottom right; +} +.claro .dijitSliderRtl .dijitSliderLeftBumper { + border-left-width: 0; + border-right-width: 1px; +} +.claro .dijitSliderRtl .dijitSliderRightBumper { + border-left-width: 1px; + border-right-width: 0; +} +.claro .dijitSliderRtl .dijitSliderIncrementIconH { + background-position: -357px 50%; +} +.claro .dijitSliderRtl .dijitSliderDecrementIconH { + background-position: -251px 50%; +} diff --git a/src/main/resources/static/dijit/themes/claro/form/Slider_rtl.less b/src/main/resources/static/dijit/themes/claro/form/Slider_rtl.less new file mode 100644 index 0000000000000000000000000000000000000000..66a711668d305081595b901d600ac9a53f2903b7 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/Slider_rtl.less @@ -0,0 +1,33 @@ +@import "../variables"; + +.claro .dijitSliderRtl .dijitSliderProgressBarH, +.claro .dijitSliderRtl .dijitSliderRemainingBarH, +.claro .dijitSliderRtl .dijitSliderLeftBumper, +.claro .dijitSliderRtl .dijitSliderRightBumper, +.claro .dijitSliderRtl .dijitSliderTopBumper { + background-position: top right; +} + +.claro .dijitSliderRtl .dijitSliderProgressBarV, +.claro .dijitSliderRtl .dijitSliderRemainingBarV, +.claro .dijitSliderRtl .dijitSliderBottomBumper { + background-position: bottom right; +} + +.claro .dijitSliderRtl .dijitSliderLeftBumper { + border-left-width: 0; + border-right-width: 1px; +} + +.claro .dijitSliderRtl .dijitSliderRightBumper { + border-left-width: 1px; + border-right-width: 0; +} + +.claro .dijitSliderRtl .dijitSliderIncrementIconH { + background-position:-357px 50%; +} + +.claro .dijitSliderRtl .dijitSliderDecrementIconH { + background-position:-251px 50%; +} diff --git a/src/main/resources/static/dijit/themes/claro/form/images/buttonArrows.png b/src/main/resources/static/dijit/themes/claro/form/images/buttonArrows.png new file mode 100644 index 0000000000000000000000000000000000000000..642eff39becbd2ff04cd0d5a612e362fbf5502af Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/form/images/buttonArrows.png differ diff --git a/src/main/resources/static/dijit/themes/claro/form/images/buttonDisabled.png b/src/main/resources/static/dijit/themes/claro/form/images/buttonDisabled.png new file mode 100644 index 0000000000000000000000000000000000000000..faf57ba1dc8063532533618b3c7300ff217da1a4 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/form/images/buttonDisabled.png differ diff --git a/src/main/resources/static/dijit/themes/claro/form/images/buttonDisabled.svg b/src/main/resources/static/dijit/themes/claro/form/images/buttonDisabled.svg new file mode 100644 index 0000000000000000000000000000000000000000..72a51a01799fb03497c0c83aeb7fc7b97e788f7a --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/images/buttonDisabled.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/claro/form/images/buttonEnabled.png b/src/main/resources/static/dijit/themes/claro/form/images/buttonEnabled.png new file mode 100644 index 0000000000000000000000000000000000000000..0932a99475940467ea1eca547eff3633ca0f4750 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/form/images/buttonEnabled.png differ diff --git a/src/main/resources/static/dijit/themes/claro/form/images/buttonEnabled.svg b/src/main/resources/static/dijit/themes/claro/form/images/buttonEnabled.svg new file mode 100644 index 0000000000000000000000000000000000000000..d9e564ab855c6fc991aaa694b03ff2d339f45645 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/form/images/buttonEnabled.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/claro/form/images/checkboxAndRadioButtons_IE6.png b/src/main/resources/static/dijit/themes/claro/form/images/checkboxAndRadioButtons_IE6.png new file mode 100644 index 0000000000000000000000000000000000000000..92d222178d538f4b1b551e643edc2faad413196e Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/form/images/checkboxAndRadioButtons_IE6.png differ diff --git a/src/main/resources/static/dijit/themes/claro/form/images/checkboxRadioButtonStates.png b/src/main/resources/static/dijit/themes/claro/form/images/checkboxRadioButtonStates.png new file mode 100644 index 0000000000000000000000000000000000000000..2d06a82883c7d31be0191e592f1dcafec8cf5def Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/form/images/checkboxRadioButtonStates.png differ diff --git a/src/main/resources/static/dijit/themes/claro/form/images/commonFormArrows.png b/src/main/resources/static/dijit/themes/claro/form/images/commonFormArrows.png new file mode 100644 index 0000000000000000000000000000000000000000..6d04742edd283b7415ea9a404fcab04d2e30d7d8 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/form/images/commonFormArrows.png differ diff --git a/src/main/resources/static/dijit/themes/claro/form/images/error.png b/src/main/resources/static/dijit/themes/claro/form/images/error.png new file mode 100644 index 0000000000000000000000000000000000000000..46de1cd8bbe3d1ea9fc30907497469d20901aeee Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/form/images/error.png differ diff --git a/src/main/resources/static/dijit/themes/claro/form/images/sliderThumbs.png b/src/main/resources/static/dijit/themes/claro/form/images/sliderThumbs.png new file mode 100644 index 0000000000000000000000000000000000000000..70ab2fe2982de32c1945dfe06679c618d703a7fb Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/form/images/sliderThumbs.png differ diff --git a/src/main/resources/static/dijit/themes/claro/images/activeGradient.png b/src/main/resources/static/dijit/themes/claro/images/activeGradient.png new file mode 100644 index 0000000000000000000000000000000000000000..e70daaa86158f48934986937c115ce65021bf283 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/images/activeGradient.png differ diff --git a/src/main/resources/static/dijit/themes/claro/images/activeGradient.svg b/src/main/resources/static/dijit/themes/claro/images/activeGradient.svg new file mode 100644 index 0000000000000000000000000000000000000000..8ab6ce9c13603a189cd8d7d49a33829549b2df98 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/images/activeGradient.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/claro/images/calendar.png b/src/main/resources/static/dijit/themes/claro/images/calendar.png new file mode 100644 index 0000000000000000000000000000000000000000..d892e495492dc520c37941f8e1542d61c2647b59 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/images/calendar.png differ diff --git a/src/main/resources/static/dijit/themes/claro/images/calendarArrows.png b/src/main/resources/static/dijit/themes/claro/images/calendarArrows.png new file mode 100644 index 0000000000000000000000000000000000000000..73333ada9d79c59f5d39cce4c4956a471db18d5c Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/images/calendarArrows.png differ diff --git a/src/main/resources/static/dijit/themes/claro/images/calendarArrows8bit.png b/src/main/resources/static/dijit/themes/claro/images/calendarArrows8bit.png new file mode 100644 index 0000000000000000000000000000000000000000..c8652600f2491d83aab286229e20250b90400465 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/images/calendarArrows8bit.png differ diff --git a/src/main/resources/static/dijit/themes/claro/images/checkmarkNoBorder.gif b/src/main/resources/static/dijit/themes/claro/images/checkmarkNoBorder.gif new file mode 100644 index 0000000000000000000000000000000000000000..324bfb3cd35ca828bb25b3d690f8a29a902a4cb7 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/images/checkmarkNoBorder.gif differ diff --git a/src/main/resources/static/dijit/themes/claro/images/checkmarkNoBorder.png b/src/main/resources/static/dijit/themes/claro/images/checkmarkNoBorder.png new file mode 100644 index 0000000000000000000000000000000000000000..ae3271a17b87a3c70010f57ffd12cd213c82068d Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/images/checkmarkNoBorder.png differ diff --git a/src/main/resources/static/dijit/themes/claro/images/dialogCloseIcon.png b/src/main/resources/static/dijit/themes/claro/images/dialogCloseIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..f69a1e7d197341798fda4218bf241d162f5202b0 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/images/dialogCloseIcon.png differ diff --git a/src/main/resources/static/dijit/themes/claro/images/dialogCloseIcon8bit.png b/src/main/resources/static/dijit/themes/claro/images/dialogCloseIcon8bit.png new file mode 100644 index 0000000000000000000000000000000000000000..200c0afb0f0877c04d09894f842d0ef772a02126 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/images/dialogCloseIcon8bit.png differ diff --git a/src/main/resources/static/dijit/themes/claro/images/dnd.png b/src/main/resources/static/dijit/themes/claro/images/dnd.png new file mode 100644 index 0000000000000000000000000000000000000000..6e1d89902be7b632d91ae3056cd27912008a2216 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/images/dnd.png differ diff --git a/src/main/resources/static/dijit/themes/claro/images/progressBarAnim.gif b/src/main/resources/static/dijit/themes/claro/images/progressBarAnim.gif new file mode 100644 index 0000000000000000000000000000000000000000..30c0d9d873856b0cd82beff409cc2383461c0560 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/images/progressBarAnim.gif differ diff --git a/src/main/resources/static/dijit/themes/claro/images/progressBarFull.png b/src/main/resources/static/dijit/themes/claro/images/progressBarFull.png new file mode 100644 index 0000000000000000000000000000000000000000..90c9eaa2c291439472ec6edcd21541fc711f27bb Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/images/progressBarFull.png differ diff --git a/src/main/resources/static/dijit/themes/claro/images/spriteArrows.png b/src/main/resources/static/dijit/themes/claro/images/spriteArrows.png new file mode 100644 index 0000000000000000000000000000000000000000..e9d99ab16f1a67a6680eb9ab045c4113ed71b854 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/images/spriteArrows.png differ diff --git a/src/main/resources/static/dijit/themes/claro/images/standardGradient.png b/src/main/resources/static/dijit/themes/claro/images/standardGradient.png new file mode 100644 index 0000000000000000000000000000000000000000..72241f1f8e78be4213e449cab152eddeba945b91 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/images/standardGradient.png differ diff --git a/src/main/resources/static/dijit/themes/claro/images/standardGradient.svg b/src/main/resources/static/dijit/themes/claro/images/standardGradient.svg new file mode 100644 index 0000000000000000000000000000000000000000..807c3c70b8e05e64967a694fe5ac3fa55fb71e43 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/images/standardGradient.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/claro/images/tooltip.png b/src/main/resources/static/dijit/themes/claro/images/tooltip.png new file mode 100644 index 0000000000000000000000000000000000000000..9d279cdef8794c03d3b41adbc529ba3d4783f975 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/images/tooltip.png differ diff --git a/src/main/resources/static/dijit/themes/claro/images/tooltip8bit.png b/src/main/resources/static/dijit/themes/claro/images/tooltip8bit.png new file mode 100644 index 0000000000000000000000000000000000000000..00350722acf4cf8fa35be3bacc80b41b6dc79c2e Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/images/tooltip8bit.png differ diff --git a/src/main/resources/static/dijit/themes/claro/images/treeExpandImages.png b/src/main/resources/static/dijit/themes/claro/images/treeExpandImages.png new file mode 100644 index 0000000000000000000000000000000000000000..350a1ddefeea8f808ebf08489ecb90a466a1b628 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/images/treeExpandImages.png differ diff --git a/src/main/resources/static/dijit/themes/claro/images/treeExpandImages8bit.png b/src/main/resources/static/dijit/themes/claro/images/treeExpandImages8bit.png new file mode 100644 index 0000000000000000000000000000000000000000..294ce7a8bd98f228bbd6c3aa11a862e5244471b5 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/images/treeExpandImages8bit.png differ diff --git a/src/main/resources/static/dijit/themes/claro/layout/AccordionContainer.css b/src/main/resources/static/dijit/themes/claro/layout/AccordionContainer.css new file mode 100644 index 0000000000000000000000000000000000000000..be0c851a1879ea89984eb41880b35cc6b576f91f --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/layout/AccordionContainer.css @@ -0,0 +1,123 @@ +/* Accordion + * + * Styling AccordionContainer basically means styling the accordion pane (dijitAccordionInnerContainer) + * and the title inside of it (dijitAccordionTitle). There are 4 basic states to style: + * + * 1. closed pane (and default styling): + * .dijitAccordionInnerContainer - container for each accordion child + * .dijitAccordionTitle - title for each accordion child + * + * 2. active closed pane (ie, mouse down on a title bar) + * .dijitAccordionInnerContainerActive - for background-color, border + * .dijitAccordionInnerContainerActive dijitAccordionTitle - for text color + * + * 3. open pane (expanded child) + * .dijitAccordionChildWrapper - wraps around the child widget (typically ContentPane) + * setting a margin so that there's blue trim all the way around the child + * + * These rules need to override the closed pane active: + * + * .dijitAccordionInnerContainerSelected - for background-color, border + * .dijitAccordionInnerContainerSelected .dijitAccordionTitle - for text color + * + * 4. hovered pane, open or closed + * The selectors below affect hovering over both a closed pane (ie, hovering a title bar), + * and hovering over an open pane. Also, treat mouse down on an open pane as a hover: + * + * .dijitAccordionInnerContainerHover, .dijitAccordionInnerContainerSelectedActive - for background-color, border + * .dijitAccordionInnerContainerHover .dijitAccordionTitle - for text color + */ +.claro .dijitAccordionContainer { + border: none; +} +.claro .dijitAccordionInnerContainer { + background-color: #efefef; + /* gray, for closed pane */ + + border: solid 1px #b5bcc7; + margin-bottom: 1px; + -webkit-transition-property: background-color, border; + -moz-transition-property: background-color, border; + transition-property: background-color, border; + -webkit-transition-duration: 0.3s; + -moz-transition-duration: 0.3s; + transition-duration: 0.3s; + -webkit-transition-timing-function: linear; + -moz-transition-timing-function: linear; + transition-timing-function: linear; +} +.claro .dijitAccordionTitle { + background-color: transparent; + /* pick up color from dijitAccordionInnerContainer */ + + background-image: url("../images/standardGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + _background-image: none; + padding: 5px 7px 2px 7px; + min-height: 17px; + color: #494949; +} +.claro .dijitAccordionContainer .dijitAccordionChildWrapper { + /* this extends the blue trim styling of the title bar to wrapping around the node. + * done by setting margin + */ + + background-color: #ffffff; + border: 1px solid #759dc0; + margin: 0 2px 2px; +} +.claro .dijitAccordionContainer .dijitAccordionContainer-child { + /* this is affecting the child widget itself */ + + padding: 9px; +} +/* Hover state for closed pane */ +.claro .dijitAccordionInnerContainerHover { + border: 1px solid #759dc0; + background-color: #abd6ff; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; +} +.claro .dijitAccordionInnerContainerHover .dijitAccordionTitle { + color: #000000; +} +/* Active state for closed pane */ +.claro .dijitAccordionInnerContainerActive { + border: 1px solid #759dc0; + background-color: #7dbdfa; + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} +.claro .dijitAccordionInnerContainerActive .dijitAccordionTitle { + background-image: url("../images/activeGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(190, 190, 190, 0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%); + _background-image: none; + color: #000000; +} +/* Open (a.k.a. selected) pane */ +.claro .dijitAccordionInnerContainerSelected { + border-color: #759dc0; + background-color: #cfe5fa; +} +.claro .dijitAccordionInnerContainerSelected .dijitAccordionTitle { + color: #000000; + background-image: url("../images/standardGradient.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.7) 0%, rgba(255, 255, 255, 0) 100%); + _background-image: none; + /* avoid effect when clicking the title of the open pane */ + +} diff --git a/src/main/resources/static/dijit/themes/claro/layout/AccordionContainer.less b/src/main/resources/static/dijit/themes/claro/layout/AccordionContainer.less new file mode 100644 index 0000000000000000000000000000000000000000..f0668a2316bbb8bd763e685a653ac0a9f9a7b0e0 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/layout/AccordionContainer.less @@ -0,0 +1,100 @@ +/* Accordion + * + * Styling AccordionContainer basically means styling the accordion pane (dijitAccordionInnerContainer) + * and the title inside of it (dijitAccordionTitle). There are 4 basic states to style: + * + * 1. closed pane (and default styling): + * .dijitAccordionInnerContainer - container for each accordion child + * .dijitAccordionTitle - title for each accordion child + * + * 2. active closed pane (ie, mouse down on a title bar) + * .dijitAccordionInnerContainerActive - for background-color, border + * .dijitAccordionInnerContainerActive dijitAccordionTitle - for text color + * + * 3. open pane (expanded child) + * .dijitAccordionChildWrapper - wraps around the child widget (typically ContentPane) + * setting a margin so that there's blue trim all the way around the child + * + * These rules need to override the closed pane active: + * + * .dijitAccordionInnerContainerSelected - for background-color, border + * .dijitAccordionInnerContainerSelected .dijitAccordionTitle - for text color + * + * 4. hovered pane, open or closed + * The selectors below affect hovering over both a closed pane (ie, hovering a title bar), + * and hovering over an open pane. Also, treat mouse down on an open pane as a hover: + * + * .dijitAccordionInnerContainerHover, .dijitAccordionInnerContainerSelectedActive - for background-color, border + * .dijitAccordionInnerContainerHover .dijitAccordionTitle - for text color + */ + +@import "../variables"; + +.claro .dijitAccordionContainer { + border:none; +} +.claro .dijitAccordionInnerContainer { + background-color: @unselected-background-color; /* gray, for closed pane */ + border:solid 1px @border-color; + margin-bottom:1px; + .transition-property(background-color,border); + .transition-duration(.3s); + .transition-timing-function(linear); +} +.claro .dijitAccordionTitle { + background-color: transparent; /* pick up color from dijitAccordionInnerContainer */ + .standard-gradient("../"); + padding: 5px 7px 2px 7px; + min-height:17px; + color:@unselected-text-color; +} + +.claro .dijitAccordionContainer .dijitAccordionChildWrapper { + /* this extends the blue trim styling of the title bar to wrapping around the node. + * done by setting margin + */ + background-color:@pane-background-color; + border:1px solid @selected-border-color; + margin: 0 2px 2px; +} + +.claro .dijitAccordionContainer .dijitAccordionContainer-child { + /* this is affecting the child widget itself */ + padding: 9px; +} + +/* Hover state for closed pane */ + +.claro .dijitAccordionInnerContainerHover { + border:1px solid @hovered-border-color; + background-color:@hovered-background-color; + .transition-duration(.2s); +} + +.claro .dijitAccordionInnerContainerHover .dijitAccordionTitle { + color:@hovered-text-color; +} + +/* Active state for closed pane */ + +.claro .dijitAccordionInnerContainerActive { + border:1px solid @selected-border-color; + background-color:@pressed-background-color; + .transition-duration(.1s); +} +.claro .dijitAccordionInnerContainerActive .dijitAccordionTitle { + .active-gradient("../"); + color:@selected-text-color; +} + +/* Open (a.k.a. selected) pane */ + +.claro .dijitAccordionInnerContainerSelected { + border-color:@selected-border-color; + background-color: @selected-background-color; +} +.claro .dijitAccordionInnerContainerSelected .dijitAccordionTitle { + color:@selected-text-color; + .standard-gradient("../"); /* avoid effect when clicking the title of the open pane */ +} + diff --git a/src/main/resources/static/dijit/themes/claro/layout/BorderContainer.css b/src/main/resources/static/dijit/themes/claro/layout/BorderContainer.css new file mode 100644 index 0000000000000000000000000000000000000000..ede0b501091ff8bf52b42d7aab986c69ca022b17 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/layout/BorderContainer.css @@ -0,0 +1,133 @@ +/* BorderContainer + +Splitters and gutters separate panes within a BorderContainer. Splitters can be moved up and down (horizonal splitters) or left and right (vertical splitters), while Gutters are static. A "thumb" is the slit on a Splitter that indicates it is movable. + +Styling the BorderContainer widget consists of the following: + +.dijitBorderContainer - for border and padding of the entire border container + +.dijitSplitContainer-child, .dijitBorderContainer-child - for border or child panes of the border container. By default borders are put on all children of BorderContainer. + +.dijitBorderContainer-dijitTabContainerTop, +.dijitBorderContainer-dijitTabContainerBottom, +.dijitBorderContainer-dijitTabContainerLeft, +.dijitBorderContainer-dijitTabContainerRight, +.dijitBorderContainer-dijitAccordionContainer -for border of the border containers within TabContainer or AccordionContainer widget + +.dijitBorderContainer-dijitBorderContainer - for border and padding of nested BorderContainers + +Splitters and gutters: + +.dijitSplitterH, .dijitGutterH - for height, background, and border of a horizontal splitter and gutter +.dijitSplitterH .dijitSplitterThumb - for color, height/width of the thumb on a horizontal splitter +.dijitSplitterV, .dijitGutterV - - for height, background, and border of a vertical splitter and gutter +.dijitSplitterV .dijitSplitterThumb - for color, height/width of the thumb on a vertical splitter +.dijitSplitterHHover - for background-color of a hovered horizontal splitter +.dijitSplitterHHover .dijitSplitterThumb - for background-color of a hovered thumb on a horizontal splitter +.dijitSplitterVHover - for background-color of a hovered vertical splitter +.dijitSplitterVHover .dijitSplitterThumb - for background-color of a hovered thumb on a vertical splitter +.dijitSplitterHActive - for background-color of an active horizontal splitter +.dijitSplitterVActive - for background-color of an active horizontal splitter +*/ +.claro .dijitBorderContainer { + /* matches the width of the splitters between panes */ + + padding: 5px; +} +.claro .dijitSplitContainer-child, +.claro .dijitBorderContainer-child { + /* By default put borders on all children of BorderContainer, + * to give illusion of borders on the splitters themselves. + */ + + border: 1px #b5bcc7 solid; +} +.claro .dijitBorderContainer-dijitTabContainerTop, +.claro .dijitBorderContainer-dijitTabContainerBottom, +.claro .dijitBorderContainer-dijitTabContainerLeft, +.claro .dijitBorderContainer-dijitTabContainerRight, +.claro .dijitBorderContainer-dijitAccordionContainer { + /* except that TabContainer defines borders on it's sub-nodes (tablist and dijitTabPaneWrapper), + * so override rule setting border on domNode + */ + + border: none; +} +.claro .dijitBorderContainer-dijitBorderContainer { + /* make nested BorderContainers look like a single big widget with lots of splitters */ + + border: 0; + padding: 0; +} +/* Splitters and gutters */ +.claro .dijitSplitterH, +.claro .dijitGutterH { + background: none; + border: 0; + height: 5px; +} +.dj_ios .claro .dijitSplitterH, +.dj_android .claro .dijitSplitterH { + height: 11px; +} +.claro .dijitSplitterH .dijitSplitterThumb { + background: #b5bcc7 none; + height: 1px; + top: 2px; + width: 19px; +} +.dj_ios .claro .dijitSplitterH .dijitSplitterThumb, +.dj_android .claro .dijitSplitterH .dijitSplitterThumb { + top: 5px; +} +.claro .dijitSplitterV, +.claro .dijitGutterV { + background: none; + border: 0; + width: 5px; + margin: 0; +} +.dj_ios .claro .dijitSplitterV, +.dj_android .claro .dijitSplitterV { + width: 11px; +} +.claro .dijitSplitterV .dijitSplitterThumb { + background: #b5bcc7 none; + height: 19px; + left: 2px; + width: 1px; + margin: 0; +} +.dj_ios .claro .dijitSplitterV .dijitSplitterThumb, +.dj_android .claro .dijitSplitterV .dijitSplitterThumb { + left: 5px; +} +/* hovered splitter */ +.claro .dijitSplitterHHover, +.claro .dijitSplitterVHover { + font-size: 1px; + background-color: #cfe5fa; +} +.claro .dijitSplitterHHover { + background-image: -moz-linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); + background-image: -webkit-linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); + background-image: -o-linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); + background-image: linear-gradient(left, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); +} +.claro .dijitSplitterVHover { + background-image: -moz-linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); + background-image: -webkit-linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); + background-image: -o-linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); + background-image: linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0) 50%, #ffffff 100%); +} +.claro .dijitSplitterHHover .dijitSplitterThumb, +.claro .dijitSplitterVHover .dijitSplitterThumb { + background: #759dc0 none; +} +/* active splitter */ +.claro .dijitSplitterHActive, +.claro .dijitSplitterVActive { + font-size: 1px; + background-color: #abd6ff; + background-image: none; +} diff --git a/src/main/resources/static/dijit/themes/claro/layout/BorderContainer.less b/src/main/resources/static/dijit/themes/claro/layout/BorderContainer.less new file mode 100644 index 0000000000000000000000000000000000000000..194daf297731d4ba46fde447cfd480a3e8027796 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/layout/BorderContainer.less @@ -0,0 +1,135 @@ +/* BorderContainer + +Splitters and gutters separate panes within a BorderContainer. Splitters can be moved up and down (horizonal splitters) or left and right (vertical splitters), while Gutters are static. A "thumb" is the slit on a Splitter that indicates it is movable. + +Styling the BorderContainer widget consists of the following: + +.dijitBorderContainer - for border and padding of the entire border container + +.dijitSplitContainer-child, .dijitBorderContainer-child - for border or child panes of the border container. By default borders are put on all children of BorderContainer. + +.dijitBorderContainer-dijitTabContainerTop, +.dijitBorderContainer-dijitTabContainerBottom, +.dijitBorderContainer-dijitTabContainerLeft, +.dijitBorderContainer-dijitTabContainerRight, +.dijitBorderContainer-dijitAccordionContainer -for border of the border containers within TabContainer or AccordionContainer widget + +.dijitBorderContainer-dijitBorderContainer - for border and padding of nested BorderContainers + +Splitters and gutters: + +.dijitSplitterH, .dijitGutterH - for height, background, and border of a horizontal splitter and gutter +.dijitSplitterH .dijitSplitterThumb - for color, height/width of the thumb on a horizontal splitter +.dijitSplitterV, .dijitGutterV - - for height, background, and border of a vertical splitter and gutter +.dijitSplitterV .dijitSplitterThumb - for color, height/width of the thumb on a vertical splitter +.dijitSplitterHHover - for background-color of a hovered horizontal splitter +.dijitSplitterHHover .dijitSplitterThumb - for background-color of a hovered thumb on a horizontal splitter +.dijitSplitterVHover - for background-color of a hovered vertical splitter +.dijitSplitterVHover .dijitSplitterThumb - for background-color of a hovered thumb on a vertical splitter +.dijitSplitterHActive - for background-color of an active horizontal splitter +.dijitSplitterVActive - for background-color of an active horizontal splitter +*/ + +@import "../variables"; + +.claro .dijitBorderContainer { + /* matches the width of the splitters between panes */ + padding: 5px; +} + +.claro .dijitSplitContainer-child, +.claro .dijitBorderContainer-child { + /* By default put borders on all children of BorderContainer, + * to give illusion of borders on the splitters themselves. + */ + border: 1px @border-color solid; +} + +.claro .dijitBorderContainer-dijitTabContainerTop, +.claro .dijitBorderContainer-dijitTabContainerBottom, +.claro .dijitBorderContainer-dijitTabContainerLeft, +.claro .dijitBorderContainer-dijitTabContainerRight, +.claro .dijitBorderContainer-dijitAccordionContainer { + /* except that TabContainer defines borders on it's sub-nodes (tablist and dijitTabPaneWrapper), + * so override rule setting border on domNode + */ + border: none; + +} +.claro .dijitBorderContainer-dijitBorderContainer { + /* make nested BorderContainers look like a single big widget with lots of splitters */ + border: 0; + padding: 0; +} + +/* Splitters and gutters */ + +.claro .dijitSplitterH, +.claro .dijitGutterH { + background:none; + border:0; + height:5px; +} +.dj_ios .claro .dijitSplitterH, .dj_android .claro .dijitSplitterH { + height: 11px; +} + +.claro .dijitSplitterH .dijitSplitterThumb { + background:@border-color none; + height:1px; + top:2px; + width:19px; +} +.dj_ios .claro .dijitSplitterH .dijitSplitterThumb, .dj_android .claro .dijitSplitterH .dijitSplitterThumb{ + top:5px; +} +.claro .dijitSplitterV, +.claro .dijitGutterV { + background:none; + border:0; + width:5px; + margin: 0; +} +.dj_ios .claro .dijitSplitterV, .dj_android .claro .dijitSplitterV { + width: 11px; +} + +.claro .dijitSplitterV .dijitSplitterThumb { + background:@border-color none; + height:19px; + left:2px; + width:1px; + margin: 0; +} +.dj_ios .claro .dijitSplitterV .dijitSplitterThumb, .dj_android .claro .dijitSplitterV .dijitSplitterThumb{ + left:5px; +} + +/* hovered splitter */ +.claro .dijitSplitterHHover, +.claro .dijitSplitterVHover { + font-size: 1px; + background-color: @splitter-hovered-background-color; +} + +.claro .dijitSplitterHHover { + .alpha-white-gradient (left, 1,0px, 0,50%, 1,100%); +} + +.claro .dijitSplitterVHover { + .alpha-white-gradient (top, 1,0px, 0,50%, 1,100%); +} + +.claro .dijitSplitterHHover .dijitSplitterThumb, +.claro .dijitSplitterVHover .dijitSplitterThumb { + background:@hovered-border-color none; +} + + +/* active splitter */ +.claro .dijitSplitterHActive, +.claro .dijitSplitterVActive { + font-size: 1px; + background-color:@splitter-dragged-background-color; + background-image: none; // color all the way across, not gradient like in hover mode +} diff --git a/src/main/resources/static/dijit/themes/claro/layout/ContentPane.css b/src/main/resources/static/dijit/themes/claro/layout/ContentPane.css new file mode 100644 index 0000000000000000000000000000000000000000..7499a53d18ac71c101741a42f4a4c3beda598c95 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/layout/ContentPane.css @@ -0,0 +1,39 @@ +/* ContentPane + * + * .dijitContentPane + * set padding for basic content pane + * + * Nested layouts: + * + * .dijitTabContainerTop-dijitContentPane, + * .dijitTabContainerLeft-dijitContentPane, + * .dijitTabContainerBottom-dijitContentPane, + * .dijitTabContainerRight-dijitContentPane + * set background-color and padding of ContentPanes nested within TabContainer (can do top, left, bottom, or right) or Accordion Container + * + * .dijitAccordionContainer-dijitContentPane + * set background-color and padding of ContentPane nested within Accordion + * + * .dijitSplitContainer-dijitContentPane, + * set background-color and padding of ContentPane nested within a SplitContainer + * + * .dijitBorderContainer-dijitContentPane + * set background-color and padding of ContentPane nested within a BorderContainer + */ +.claro .dijitContentPane { + padding: 8px; +} +/* nested layouts */ +.claro .dijitTabContainerTop-dijitContentPane, +.claro .dijitTabContainerLeft-dijitContentPane, +.claro .dijitTabContainerBottom-dijitContentPane, +.claro .dijitTabContainerRight-dijitContentPane, +.claro .dijitAccordionContainer-dijitContentPane { + background-color: #ffffff; + padding: 8px; +} +.claro .dijitSplitContainer-dijitContentPane, +.claro .dijitBorderContainer-dijitContentPane { + background-color: #ffffff; + padding: 8px; +} diff --git a/src/main/resources/static/dijit/themes/claro/layout/ContentPane.less b/src/main/resources/static/dijit/themes/claro/layout/ContentPane.less new file mode 100644 index 0000000000000000000000000000000000000000..83329bdb7c9c243c93c992df1c09f9f326bc3a68 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/layout/ContentPane.less @@ -0,0 +1,43 @@ +/* ContentPane + * + * .dijitContentPane + * set padding for basic content pane + * + * Nested layouts: + * + * .dijitTabContainerTop-dijitContentPane, + * .dijitTabContainerLeft-dijitContentPane, + * .dijitTabContainerBottom-dijitContentPane, + * .dijitTabContainerRight-dijitContentPane + * set background-color and padding of ContentPanes nested within TabContainer (can do top, left, bottom, or right) or Accordion Container + * + * .dijitAccordionContainer-dijitContentPane + * set background-color and padding of ContentPane nested within Accordion + * + * .dijitSplitContainer-dijitContentPane, + * set background-color and padding of ContentPane nested within a SplitContainer + * + * .dijitBorderContainer-dijitContentPane + * set background-color and padding of ContentPane nested within a BorderContainer + */ + +@import "../variables"; + +.claro .dijitContentPane { + padding: 8px; +} + +/* nested layouts */ +.claro .dijitTabContainerTop-dijitContentPane, +.claro .dijitTabContainerLeft-dijitContentPane, +.claro .dijitTabContainerBottom-dijitContentPane, +.claro .dijitTabContainerRight-dijitContentPane, +.claro .dijitAccordionContainer-dijitContentPane { + background-color: @pane-background-color; + padding: 8px; +} +.claro .dijitSplitContainer-dijitContentPane, +.claro .dijitBorderContainer-dijitContentPane { + background-color: @pane-background-color; + padding: 8px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/claro/layout/TabContainer.css b/src/main/resources/static/dijit/themes/claro/layout/TabContainer.css new file mode 100644 index 0000000000000000000000000000000000000000..50ac4ad681e7875834c9b0e27fff5f91b5c897ab --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/layout/TabContainer.css @@ -0,0 +1,398 @@ +/* TabContainer + * + * Styling TabContainer means styling the TabList and Its content container (dijitTitlePane) + * + * Tab List: (including 4 kinds of tab location) + * .dijitTabContainerTop-tabs - tablist container at top + * .dijitTabContainerBottom-tabs - tablist container at bottom + * .dijitTabContainerLeft-tabs - tablist container at left + * .dijitTabContainerRight-tabs - tablist container at right + * + * Tab Strip Button: + * .dijitTabStripIcon - tab strip button icon + * .dijitTabStripMenuIcon - down arrow icon position + * .dijitTabStripSlideLeftIcon - left arrow icon position + * .dijitTabStripSlideRightIcon - right arrow icon position + * + * .tabStripButtonDisabled - styles for disabled tab strip buttons + * + * Tab Button: + * .dijitTabContainerTop-tabs .dijitTab - styles for top tab button container + * .dijitTabContainerBottom-tabs .dijitTab - styles for bottom tab button container + * .dijitTabContainerLeft-tabs .dijitTab - styles for left tab button container + * .dijitTabContainerRight-tabs .dijitTab - styles for right tab button container + * + * .dijitTabContainerTop-tabs .dijitTabChecked .dijitTab + * - styles for selected status of top tab button + * same to Bottom, Left, Right Tabs + * + * .dijitTabHover .dijitTab - styles when mouse hover on tab buttons + * .dijitTabActive .dijitTab - styles when mouse down on tab buttons + * .dijitTabChecked .dijitTab - styles when on buttons of selected tab + * + * .dijitTabCloseButton - the close action buttons lie at the right top of each tab button on closable tabs + * .dijitTabCloseButtonHover - styles when mouse hover on close action button + * .dijitTabCloseButtonActive - styles when mouse down on close action button + * + * Tab Button: (checked status) + * + * Tab Content Container: + * .dijitTabContainerTop-dijitContentPane + * .dijitTabContainerBottom-dijitContentPane + * .dijitTabContainerLeft-dijitContentPane + * .dijitTabContainerRight-dijitContentPane - for background and padding + * + * Nested Tabs: + * .dijitTabContainerNested - Container for nested tabs + * .dijitTabContainerTabListNested - tab list container for nested tabs + */ +/*** some common features ***/ +.claro .dijitTabPaneWrapper { + background: #ffffff; +} +.claro .dijitTabPaneWrapper, +.claro .dijitTabContainerTop-tabs, +.claro .dijitTabContainerBottom-tabs, +.claro .dijitTabContainerLeft-tabs, +.claro .dijitTabContainerRight-tabs { + /* todo: add common class name for this div */ + + border-color: #b5bcc7; +} +.claro .dijitTabCloseButton { + background: url("../layout/images/tabClose.png") no-repeat; + width: 14px; + height: 14px; + margin-left: 5px; + margin-right: -5px; +} +.claro .dijitTabCloseButtonHover { + background-position: -14px; +} +.claro .dijitTabCloseButtonActive { + background-position: -28px; +} +.claro .dijitTabSpacer { + /* set the spacer invisible. note that height:0 doesn't work on IE/quirks, it's still 10px. */ + + display: none; +} +.claro .dijitTab { + border: 1px solid #b5bcc7; + background-color: #efefef; + -webkit-transition-property: background-color, border; + -moz-transition-property: background-color, border; + transition-property: background-color, border; + -webkit-transition-duration: 0.35s; + -moz-transition-duration: 0.35s; + transition-duration: 0.35s; + color: #494949; +} +.claro .dijitTabHover { + border-color: #759dc0; + background-color: #abd6ff; + -webkit-transition-duration: 0.25s; + -moz-transition-duration: 0.25s; + transition-duration: 0.25s; + color: #000000; +} +.claro .dijitTabActive { + border-color: #759dc0; + background-color: #7dbdfa; + color: #000000; + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} +.claro .dijitTabChecked { + border-color: #b5bcc7; + background-color: #cfe5fa; + color: #000000; +} +.claro .dijitTabDisabled { + background-color: #d3d3d3; +} +.claro .tabStripButton { + background-color: transparent; + border: none; +} +/*** end common ***/ +/*************** top tab ***************/ +.claro .dijitTabContainerTop-tabs .dijitTab { + /* unselected (and not hovered/pressed) tab */ + + top: 1px; + /* used for overlap */ + + margin-right: 1px; + padding: 3px 6px; + border-bottom-width: 0; + min-width: 60px; + text-align: center; + background-image: url("images/tabTopUnselected.png"); + background-repeat: repeat-x; + background-image: -moz-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); + -webkit-box-shadow: 0 -1px 1px rgba(0, 0, 0, 0.04); + -moz-box-shadow: 0 -1px 1px rgba(0, 0, 0, 0.04); + box-shadow: 0 -1px 1px rgba(0, 0, 0, 0.04); +} +.claro .dijitTabContainerTop-tabs .dijitTabChecked { + /* selected tab */ + + padding-bottom: 4px; + padding-top: 9px; + background-image: url("images/tabTopSelected.png"); + background-image: -moz-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); + background-image: -webkit-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); + background-image: -o-linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); + background-image: linear-gradient(top, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); + -webkit-box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.05); +} +/** end top tab **/ +/*************** bottom tab ***************/ +.claro .dijitTabContainerBottom-tabs .dijitTab { + /* unselected (and not hovered/pressed) tab */ + + top: -1px; + /* used for overlap */ + + margin-right: 1px; + padding: 3px 6px; + border-top-width: 0; + min-width: 60px; + text-align: center; + background-image: url("images/tabBottomUnselected.png"); + background-repeat: repeat-x; + background-position: bottom; + background-image: -moz-linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04); +} +/* selected tab */ +.claro .dijitTabContainerBottom-tabs .dijitTabChecked { + padding-bottom: 9px; + padding-top: 4px; + background-image: url("images/tabBottomSelected.png"); + background-image: -moz-linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); + background-image: -webkit-linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); + background-image: -o-linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); + background-image: linear-gradient(bottom, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0) 2px, #ffffff 7px); + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); +} +/** end bottom tab **/ +/*************** left tab ***************/ +.claro .dijitTabContainerLeft-tabs .dijitTab { + /* unselected (and not hovered/pressed) tab */ + + left: 1px; + /* used for overlap */ + + margin-bottom: 1px; + padding: 3px 8px 4px 4px; + background-image: url("images/tabLeftUnselected.png"); + background-repeat: repeat-y; + background-image: -moz-linear-gradient(left, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(left, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(left, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(left, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); +} +/* selected tab */ +.claro .dijitTabContainerLeft-tabs .dijitTabChecked { + border-right-width: 0; + padding-right: 9px; + background-image: url("images/tabLeftSelected.png"); + background-image: -moz-linear-gradient(left, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); + background-image: -webkit-linear-gradient(left, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); + background-image: -o-linear-gradient(left, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); + background-image: linear-gradient(left, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); + -webkit-box-shadow: -1px 0 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: -1px 0 2px rgba(0, 0, 0, 0.05); + box-shadow: -1px 0 2px rgba(0, 0, 0, 0.05); +} +/** end left tab **/ +/*************** right tab ***************/ +.claro .dijitTabContainerRight-tabs .dijitTab { + /* unselected (and not hovered/pressed) tab */ + + left: -1px; + /* used for overlap */ + + margin-bottom: 1px; + padding: 3px 8px 4px 4px; + background-image: url("images/tabRightUnselected.png"); + background-repeat: repeat-y; + background-position: right; + background-image: -moz-linear-gradient(right, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(right, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(right, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(right, #ffffff 0px, #ffffff 1px, rgba(255, 255, 255, 0.1) 2px, rgba(255, 255, 255, 0.6) 7px, rgba(255, 255, 255, 0) 100%); +} +.claro .dijitTabContainerRight-tabs .dijitTabChecked { + /* selected tab */ + + padding-left: 5px; + border-left-width: 0; + background-image: url("images/tabRightSelected.png"); + background-image: -moz-linear-gradient(right, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); + background-image: -webkit-linear-gradient(right, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); + background-image: -o-linear-gradient(right, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); + background-image: linear-gradient(right, rgba(255, 255, 255, 0.5) 0px, #ffffff 30px); + -webkit-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.07); + -moz-box-shadow: 1px 0 2px rgba(0, 0, 0, 0.07); + box-shadow: 1px 0 2px rgba(0, 0, 0, 0.07); +} +/** end right tab **/ +/** round corner **/ +.claro .dijitTabContainerTop-tabs .dijitTab { + -moz-border-radius: 2px 2px 0 0; + border-radius: 2px 2px 0 0; +} +.claro .dijitTabContainerBottom-tabs .dijitTab { + -moz-border-radius: 0 0 2px 2px; + border-radius: 0 0 2px 2px; +} +.claro .dijitTabContainerLeft-tabs .dijitTab { + -moz-border-radius: 2px 0 0 2px; + border-radius: 2px 0 0 2px; +} +.claro .dijitTabContainerRight-tabs .dijitTab { + -moz-border-radius: 0 2px 2px 0; + border-radius: 0 2px 2px 0; +} +/************ left/right scroll buttons + menu button ************/ +.claro .tabStripButton { + background-color: #e5f2fe; + border: 1px solid #b5bcc7; +} +.claro .dijitTabListContainer-top .tabStripButton { + padding: 4px 3px; + margin-top: 7px; + background-image: -moz-linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(top, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); +} +.claro .dijitTabListContainer-bottom .tabStripButton { + padding: 4px 3px; + margin-bottom: 7px; + background-image: -moz-linear-gradient(bottom, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); + background-image: -webkit-linear-gradient(bottom, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); + background-image: -o-linear-gradient(bottom, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); + background-image: linear-gradient(bottom, #ffffff 0px, rgba(255, 255, 255, 0.1) 1px, rgba(255, 255, 255, 0.6) 6px, rgba(255, 255, 255, 0) 100%); +} +.claro .tabStripButtonHover { + background-color: #abd6ff; +} +.claro .tabStripButtonActive { + background-color: #7dbdfa; +} +.claro .dijitTabStripIcon { + height: 15px; + width: 15px; + margin: 0 auto; + background: url("../form/images/buttonArrows.png") no-repeat -75px 50%; + background-color: transparent; +} +.claro .dijitTabStripSlideRightIcon { + background-position: -24px 50%; +} +.claro .dijitTabStripMenuIcon { + background-position: -51px 50%; +} +/*disabled styles for tab strip buttons*/ +.claro .dijitTabListContainer-top .tabStripButtonDisabled, +.claro .dijitTabListContainer-bottom .tabStripButtonDisabled { + background-color: #d3d3d3; + border: 1px solid #b5bcc7; + /* to match border of TabContainer itself */ + +} +.claro .tabStripButtonDisabled .dijitTabStripSlideLeftIcon { + background-position: -175px 50%; +} +.claro .tabStripButtonDisabled .dijitTabStripSlideRightIcon { + background-position: -124px 50%; +} +.claro .tabStripButtonDisabled .dijitTabStripMenuIcon { + background-position: -151px 50%; +} +/* Nested Tabs */ +.claro .dijitTabContainerNested .dijitTabListWrapper { + height: auto; +} +.claro .dijitTabContainerNested .dijitTabContainerTop-tabs { + border-bottom: solid 1px #b5bcc7; + padding: 2px 2px 4px; +} +.claro .dijitTabContainerTabListNested .dijitTab { + background-color: rgba(255, 255, 255, 0); + border: none; + padding: 4px; + border-color: rgba(118, 157, 192, 0); + -webkit-transition-property: background-color, border-color; + -moz-transition-property: background-color, border-color; + transition-property: background-color, border-color; + -webkit-transition-duration: 0.3s; + -moz-transition-duration: 0.3s; + transition-duration: 0.3s; + -moz-border-radius: 2px; + border-radius: 2px; + top: 0; + /* to override top: 1px/-1px for normal tabs */ + + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + background-image: url("images/tabNested.png") repeat-x; + background-image: -moz-linear-gradient(rgba(255, 255, 255, 0.61) 0%, rgba(255, 255, 255, 0) 17%, rgba(255, 255, 255, 0) 83%, rgba(255, 255, 255, 0.61) 100%); + background-image: -webkit-linear-gradient(rgba(255, 255, 255, 0.61) 0%, rgba(255, 255, 255, 0) 17%, rgba(255, 255, 255, 0) 83%, rgba(255, 255, 255, 0.61) 100%); + background-image: -o-linear-gradient(rgba(255, 255, 255, 0.61) 0%, rgba(255, 255, 255, 0) 17%, rgba(255, 255, 255, 0) 83%, rgba(255, 255, 255, 0.61) 100%); + background-image: linear-gradient(rgba(255, 255, 255, 0.61) 0%, rgba(255, 255, 255, 0) 17%, rgba(255, 255, 255, 0) 83%, rgba(255, 255, 255, 0.61) 100%); +} +.claro .dijitTabContainerTabListNested .dijitTabHover { + background-color: #e5f2fe; + border: solid 1px #cfe5fa; + padding: 3px; + -webkit-transition-duration: 0.2s; + -moz-transition-duration: 0.2s; + transition-duration: 0.2s; +} +.claro .dijitTabContainerTabListNested .dijitTabHover .tabLabel { + text-decoration: none; +} +.claro .dijitTabContainerTabListNested .dijitTabActive { + border: solid 1px #759dc0; + padding: 3px; + -webkit-transition-duration: 0.1s; + -moz-transition-duration: 0.1s; + transition-duration: 0.1s; +} +.claro .dijitTabContainerTabListNested .dijitTabChecked { + padding: 3px; + border: solid 1px #759dc0; + background-color: #cfe5fa; +} +.claro .dijitTabContainerTabListNested .dijitTabChecked .tabLabel { + text-decoration: none; + background-image: none; +} +.claro .dijitTabPaneWrapperNested { + border: none; + /* prevent double border */ + +} +.claro .dijitTabContainer .dijitTab, +.claro .dijitTabContainer .tabStripButton { + _background-image: none; +} diff --git a/src/main/resources/static/dijit/themes/claro/layout/TabContainer.less b/src/main/resources/static/dijit/themes/claro/layout/TabContainer.less new file mode 100644 index 0000000000000000000000000000000000000000..daa067d9a69328b65bc29167142333690abdb83b --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/layout/TabContainer.less @@ -0,0 +1,360 @@ +/* TabContainer + * + * Styling TabContainer means styling the TabList and Its content container (dijitTitlePane) + * + * Tab List: (including 4 kinds of tab location) + * .dijitTabContainerTop-tabs - tablist container at top + * .dijitTabContainerBottom-tabs - tablist container at bottom + * .dijitTabContainerLeft-tabs - tablist container at left + * .dijitTabContainerRight-tabs - tablist container at right + * + * Tab Strip Button: + * .dijitTabStripIcon - tab strip button icon + * .dijitTabStripMenuIcon - down arrow icon position + * .dijitTabStripSlideLeftIcon - left arrow icon position + * .dijitTabStripSlideRightIcon - right arrow icon position + * + * .tabStripButtonDisabled - styles for disabled tab strip buttons + * + * Tab Button: + * .dijitTabContainerTop-tabs .dijitTab - styles for top tab button container + * .dijitTabContainerBottom-tabs .dijitTab - styles for bottom tab button container + * .dijitTabContainerLeft-tabs .dijitTab - styles for left tab button container + * .dijitTabContainerRight-tabs .dijitTab - styles for right tab button container + * + * .dijitTabContainerTop-tabs .dijitTabChecked .dijitTab + * - styles for selected status of top tab button + * same to Bottom, Left, Right Tabs + * + * .dijitTabHover .dijitTab - styles when mouse hover on tab buttons + * .dijitTabActive .dijitTab - styles when mouse down on tab buttons + * .dijitTabChecked .dijitTab - styles when on buttons of selected tab + * + * .dijitTabCloseButton - the close action buttons lie at the right top of each tab button on closable tabs + * .dijitTabCloseButtonHover - styles when mouse hover on close action button + * .dijitTabCloseButtonActive - styles when mouse down on close action button + * + * Tab Button: (checked status) + * + * Tab Content Container: + * .dijitTabContainerTop-dijitContentPane + * .dijitTabContainerBottom-dijitContentPane + * .dijitTabContainerLeft-dijitContentPane + * .dijitTabContainerRight-dijitContentPane - for background and padding + * + * Nested Tabs: + * .dijitTabContainerNested - Container for nested tabs + * .dijitTabContainerTabListNested - tab list container for nested tabs + */ + +@import "../variables"; + +.unselected-tab-gradient (@direction) { + // white line, dark line, then fade from light to dark + .alpha-white-gradient (@direction, 1,0px, 1,1px, 0.1,2px, 0.6,7px, 0,100%); +} +.topBottom-selected-tab-gradient (@direction) { + .alpha-white-gradient (@direction, 1,0px, 1,1px, 0,2px, 1,7px); // white line, blue line, remainder white +} +/*** some common features ***/ +.claro .dijitTabPaneWrapper { + background:@pane-background-color; +} +.claro .dijitTabPaneWrapper, +.claro .dijitTabContainerTop-tabs, +.claro .dijitTabContainerBottom-tabs, +.claro .dijitTabContainerLeft-tabs, +.claro .dijitTabContainerRight-tabs { + /* todo: add common class name for this div */ + border-color: @border-color; +} +.claro .dijitTabCloseButton { + background: url("../@{image-layout-tab-close}") no-repeat; + width: 14px; + height: 14px; + margin-left: 5px; + margin-right:-5px; +} +.claro .dijitTabCloseButtonHover { + background-position:-14px; +} +.claro .dijitTabCloseButtonActive { + background-position:-28px; +} +.claro .dijitTabSpacer { + /* set the spacer invisible. note that height:0 doesn't work on IE/quirks, it's still 10px. */ + display: none; +} +.claro .dijitTab { + border: 1px solid @border-color; + background-color:@unselected-background-color; + .transition-property(background-color, border); + .transition-duration(.35s); + color:@unselected-text-color; +} +.claro .dijitTabHover { + border-color: @hovered-border-color; + background-color:@hovered-background-color; + .transition-duration(.25s); + color:@hovered-text-color; +} +.claro .dijitTabActive { + border-color: @pressed-border-color; + background-color:@pressed-background-color; + color:@selected-text-color; + .transition-duration(.1s); +} +.claro .dijitTabChecked { + // selected tab + border-color: @border-color; // don't use @selected-border-color because need to match border of TabContainer + background-color: @selected-background-color; + color: @selected-text-color; +} +.claro .dijitTabDisabled { + background-color: @tab-disabled-background-color; +} + +.claro .tabStripButton { + background-color: transparent; + border: none; +} +/*** end common ***/ + + +/*************** top tab ***************/ +.claro .dijitTabContainerTop-tabs .dijitTab { + /* unselected (and not hovered/pressed) tab */ + top: 1px; /* used for overlap */ + margin-right: 1px; + padding:3px 6px; + border-bottom-width: 0; + min-width: 60px; + text-align: center; + + // gradient (CSS gradient, with backup image for IE6-9) + background-image: url("images/tabTopUnselected.png"); + background-repeat: repeat-x; + .unselected-tab-gradient(top); + + .box-shadow(0 -1px 1px rgba(0, 0, 0, 0.04)); +} + +.claro .dijitTabContainerTop-tabs .dijitTabChecked { + /* selected tab */ + padding-bottom: 4px; + padding-top: 9px; + + // gradient (CSS gradient, with backup image for IE6-9) + background-image: url("images/tabTopSelected.png"); + .topBottom-selected-tab-gradient (top); + + .box-shadow(0 -1px 2px rgba(0, 0, 0, 0.05)); +} + +/** end top tab **/ + + +/*************** bottom tab ***************/ +.claro .dijitTabContainerBottom-tabs .dijitTab { + /* unselected (and not hovered/pressed) tab */ + top: -1px; /* used for overlap */ + margin-right: 1px; + padding:3px 6px; + border-top-width: 0; + min-width: 60px; + text-align: center; + + // gradient (CSS gradient, with backup image for IE6-9) + background-image: url("images/tabBottomUnselected.png"); + background-repeat: repeat-x; + background-position: bottom; + .unselected-tab-gradient(bottom); + + .box-shadow(0 1px 1px rgba(0, 0, 0, 0.04)); +} + +/* selected tab */ +.claro .dijitTabContainerBottom-tabs .dijitTabChecked { + padding-bottom: 9px; + padding-top: 4px; + + // gradient (CSS gradient, with backup image for IE6-9) + background-image: url("images/tabBottomSelected.png"); + .topBottom-selected-tab-gradient (bottom); + + .box-shadow(0 1px 2px rgba(0, 0, 0, 0.05)); +} +/** end bottom tab **/ + +/*************** left tab ***************/ +.claro .dijitTabContainerLeft-tabs .dijitTab { + /* unselected (and not hovered/pressed) tab */ + left: 1px; /* used for overlap */ + margin-bottom: 1px; + padding:3px 8px 4px 4px; + + // gradient (CSS gradient, with backup image for IE6-9) + background-image: url("images/tabLeftUnselected.png"); + background-repeat: repeat-y; + .unselected-tab-gradient(left); +} + +/* selected tab */ +.claro .dijitTabContainerLeft-tabs .dijitTabChecked { + border-right-width: 0; + padding-right: 9px; + + // gradient (CSS gradient, with backup image for IE6-9) + background-image: url("images/tabLeftSelected.png"); + .alpha-white-gradient (left, 0.5,0px, 1,30px); // 1/2 inch blue gradient, remainder white + + .box-shadow(-1px 0 2px rgba(0, 0, 0, .05)); +} +/** end left tab **/ + +/*************** right tab ***************/ +.claro .dijitTabContainerRight-tabs .dijitTab { + /* unselected (and not hovered/pressed) tab */ + left: -1px; /* used for overlap */ + margin-bottom: 1px; + padding:3px 8px 4px 4px; + + // gradient (CSS gradient, with backup image for IE6-9) + background-image: url("images/tabRightUnselected.png"); + background-repeat: repeat-y; + background-position: right; + .unselected-tab-gradient(right); +} +.claro .dijitTabContainerRight-tabs .dijitTabChecked { + /* selected tab */ + padding-left: 5px; + border-left-width: 0; + + // gradient (CSS gradient, with backup image for IE6-9) + background-image: url("images/tabRightSelected.png"); + .alpha-white-gradient (right, 0.5,0px, 1,30px); // 1/2 inch blue gradient, remainder white + + .box-shadow(1px 0 2px rgba(0, 0, 0, 0.07)); +} +/** end right tab **/ + +/** round corner **/ +.claro .dijitTabContainerTop-tabs .dijitTab { + .border-radius(2px 2px 0 0); +} +.claro .dijitTabContainerBottom-tabs .dijitTab { + .border-radius(0 0 2px 2px); +} +.claro .dijitTabContainerLeft-tabs .dijitTab { + .border-radius(2px 0 0 2px); +} + +.claro .dijitTabContainerRight-tabs .dijitTab { + .border-radius(0 2px 2px 0); +} + +/************ left/right scroll buttons + menu button ************/ +.claro .tabStripButton { + background-color:@button-background-color; + border: 1px solid @border-color; +} +.claro .dijitTabListContainer-top .tabStripButton { + padding: 4px 3px; + margin-top:7px; + .alpha-white-gradient (top, 1,0px, 0.1,1px, 0.6,6px, 0,100%); // to match unselected tab, but had to tweak numbers +} +.claro .dijitTabListContainer-bottom .tabStripButton { + padding:4px 3px; + margin-bottom:7px; + .alpha-white-gradient (bottom, 1,0px, 0.1,1px, 0.6,6px, 0,100%); // to match unselected tab, but had to tweak numbers +} +.claro .tabStripButtonHover { + background-color:@hovered-background-color; +} +.claro .tabStripButtonActive { + background-color:@pressed-background-color; +} +.claro .dijitTabStripIcon { + height:15px; + width:15px; + margin: 0 auto; + background:url("../@{image-form-button-arrows}") no-repeat -75px 50%; + background-color: transparent; +} +.claro .dijitTabStripSlideRightIcon{ + background-position: -24px 50%; +} +.claro .dijitTabStripMenuIcon { + background-position: -51px 50%; +} + +/*disabled styles for tab strip buttons*/ +.claro .dijitTabListContainer-top .tabStripButtonDisabled, +.claro .dijitTabListContainer-bottom .tabStripButtonDisabled { + background-color:@tab-disabled-background-color; + border:1px solid @border-color; /* to match border of TabContainer itself */ +} +.claro .tabStripButtonDisabled .dijitTabStripSlideLeftIcon { + background-position:-175px 50%; +} +.claro .tabStripButtonDisabled .dijitTabStripSlideRightIcon { + background-position: -124px 50%; +} +.claro .tabStripButtonDisabled .dijitTabStripMenuIcon { + background-position: -151px 50%; +} +/* Nested Tabs */ +.claro .dijitTabContainerNested .dijitTabListWrapper { + height: auto; +} +.claro .dijitTabContainerNested .dijitTabContainerTop-tabs { + border-bottom:solid 1px @border-color; + padding:2px 2px 4px; +} +.claro .dijitTabContainerTabListNested .dijitTab { + background-color:rgba(255, 255, 255, 0); + border: none; + padding: 4px; + border-color: rgba(118,157,192,0); + .transition-property(background-color, border-color); + .transition-duration(.3s); + .border-radius(2px); + top: 0;/* to override top: 1px/-1px for normal tabs */ + .box-shadow(none); + + // CSS gradient with fallback to image for IE + background-image: url("images/tabNested.png") repeat-x; + .alpha-white-gradient (0.61,0%, 0,17%, 0,83%, 0.61,100%); +} +.claro .dijitTabContainerTabListNested .dijitTabHover { + background-color: @nestedtab-hovered-background-color; + border:solid 1px @nestedtab-hovered-border-color; + padding: 3px; // 4px above padding - 1px compensation for border + .transition-duration(.2s); +} +.claro .dijitTabContainerTabListNested .dijitTabHover .tabLabel { + text-decoration: none; +} +.claro .dijitTabContainerTabListNested .dijitTabActive { + border:solid 1px @nestedtab-selected-border-color; + padding: 3px; + .transition-duration(.1s); +} +.claro .dijitTabContainerTabListNested .dijitTabChecked { + padding: 3px; + border:solid 1px @selected-border-color; + background-color:@selected-background-color; +} +.claro .dijitTabContainerTabListNested .dijitTabChecked .tabLabel { + text-decoration: none; + background-image:none; +} +.claro .dijitTabPaneWrapperNested { + border: none;/* prevent double border */ +} + +.claro .dijitTabContainer .dijitTab, +.claro .dijitTabContainer .tabStripButton { + // IE6 can't handle background-image and background-color on same node + _background-image: none; +} diff --git a/src/main/resources/static/dijit/themes/claro/layout/TabContainer_rtl.css b/src/main/resources/static/dijit/themes/claro/layout/TabContainer_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..130dc13c8e0b49e2a14be92a62e445be0fb99390 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/layout/TabContainer_rtl.css @@ -0,0 +1,5 @@ +.claro .dijitTabContainerTop-tabs .dijitTabRtl, +.claro .dijitTabContainerBottom-tabs .dijitTabRtl { + margin-right: 0; + margin-left: 1px; +} diff --git a/src/main/resources/static/dijit/themes/claro/layout/TabContainer_rtl.less b/src/main/resources/static/dijit/themes/claro/layout/TabContainer_rtl.less new file mode 100644 index 0000000000000000000000000000000000000000..c6cec49fdf6800bfe2c12abf14080443c64479d6 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/layout/TabContainer_rtl.less @@ -0,0 +1,7 @@ +@import "../variables"; + +.claro .dijitTabContainerTop-tabs .dijitTabRtl, +.claro .dijitTabContainerBottom-tabs .dijitTabRtl { + margin-right: 0; + margin-left: 1px; +} diff --git a/src/main/resources/static/dijit/themes/claro/layout/images/tabBottomSelected.png b/src/main/resources/static/dijit/themes/claro/layout/images/tabBottomSelected.png new file mode 100644 index 0000000000000000000000000000000000000000..f92b05f45175ec4ad5467ee880c99885e6357d17 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/layout/images/tabBottomSelected.png differ diff --git a/src/main/resources/static/dijit/themes/claro/layout/images/tabBottomSelected.svg b/src/main/resources/static/dijit/themes/claro/layout/images/tabBottomSelected.svg new file mode 100644 index 0000000000000000000000000000000000000000..4e6ff6d430bb620f13e4d6ec81294312889a53c7 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/layout/images/tabBottomSelected.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/claro/layout/images/tabBottomUnselected.png b/src/main/resources/static/dijit/themes/claro/layout/images/tabBottomUnselected.png new file mode 100644 index 0000000000000000000000000000000000000000..7815d9cfb6995e24d16a65cc2cf81c7c53136966 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/layout/images/tabBottomUnselected.png differ diff --git a/src/main/resources/static/dijit/themes/claro/layout/images/tabBottomUnselected.svg b/src/main/resources/static/dijit/themes/claro/layout/images/tabBottomUnselected.svg new file mode 100644 index 0000000000000000000000000000000000000000..4193238e80276a61d146cc910839e1266c8229c6 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/layout/images/tabBottomUnselected.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/claro/layout/images/tabClose.png b/src/main/resources/static/dijit/themes/claro/layout/images/tabClose.png new file mode 100644 index 0000000000000000000000000000000000000000..f3b23639381f2808499778b66b86f728a64c7f5e Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/layout/images/tabClose.png differ diff --git a/src/main/resources/static/dijit/themes/claro/layout/images/tabLeftSelected.png b/src/main/resources/static/dijit/themes/claro/layout/images/tabLeftSelected.png new file mode 100644 index 0000000000000000000000000000000000000000..9700afb3783708688a6cb82d64631579dc0271de Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/layout/images/tabLeftSelected.png differ diff --git a/src/main/resources/static/dijit/themes/claro/layout/images/tabLeftSelected.svg b/src/main/resources/static/dijit/themes/claro/layout/images/tabLeftSelected.svg new file mode 100644 index 0000000000000000000000000000000000000000..12e7d8a64ddf0c2e784b732855e6ceacd3a92814 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/layout/images/tabLeftSelected.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/claro/layout/images/tabLeftUnselected.png b/src/main/resources/static/dijit/themes/claro/layout/images/tabLeftUnselected.png new file mode 100644 index 0000000000000000000000000000000000000000..412390e08ef051fc95ba65bc0671c2c229c99047 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/layout/images/tabLeftUnselected.png differ diff --git a/src/main/resources/static/dijit/themes/claro/layout/images/tabLeftUnselected.svg b/src/main/resources/static/dijit/themes/claro/layout/images/tabLeftUnselected.svg new file mode 100644 index 0000000000000000000000000000000000000000..e31c211b715c3641117e025c5f4c8dfd2824be37 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/layout/images/tabLeftUnselected.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/claro/layout/images/tabNested.png b/src/main/resources/static/dijit/themes/claro/layout/images/tabNested.png new file mode 100644 index 0000000000000000000000000000000000000000..0140cf45b47b057b7e0c20735afea2385a0d0166 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/layout/images/tabNested.png differ diff --git a/src/main/resources/static/dijit/themes/claro/layout/images/tabRightSelected.png b/src/main/resources/static/dijit/themes/claro/layout/images/tabRightSelected.png new file mode 100644 index 0000000000000000000000000000000000000000..1a2843499317cef81459b655e3ecdc196dd64729 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/layout/images/tabRightSelected.png differ diff --git a/src/main/resources/static/dijit/themes/claro/layout/images/tabRightSelected.svg b/src/main/resources/static/dijit/themes/claro/layout/images/tabRightSelected.svg new file mode 100644 index 0000000000000000000000000000000000000000..d8d3d674a3b67b9e70ad47c836880808feab84b5 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/layout/images/tabRightSelected.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/claro/layout/images/tabRightUnselected.png b/src/main/resources/static/dijit/themes/claro/layout/images/tabRightUnselected.png new file mode 100644 index 0000000000000000000000000000000000000000..2bdd00e4d9490bf4b4f28875448263609d969f7c Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/layout/images/tabRightUnselected.png differ diff --git a/src/main/resources/static/dijit/themes/claro/layout/images/tabRightUnselected.svg b/src/main/resources/static/dijit/themes/claro/layout/images/tabRightUnselected.svg new file mode 100644 index 0000000000000000000000000000000000000000..d1379a7179aa1319f84454e2509b8c4f8938ecd7 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/layout/images/tabRightUnselected.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/claro/layout/images/tabTopSelected.png b/src/main/resources/static/dijit/themes/claro/layout/images/tabTopSelected.png new file mode 100644 index 0000000000000000000000000000000000000000..f4d57725814ce6e9468f030e48c6a093fcab1791 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/layout/images/tabTopSelected.png differ diff --git a/src/main/resources/static/dijit/themes/claro/layout/images/tabTopSelected.svg b/src/main/resources/static/dijit/themes/claro/layout/images/tabTopSelected.svg new file mode 100644 index 0000000000000000000000000000000000000000..d06e646ea16dba5156039c7b45a43fa72daaba37 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/layout/images/tabTopSelected.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/claro/layout/images/tabTopUnselected.png b/src/main/resources/static/dijit/themes/claro/layout/images/tabTopUnselected.png new file mode 100644 index 0000000000000000000000000000000000000000..8c34545f52a67c6453f50f01ce8d43b5df9c04e3 Binary files /dev/null and b/src/main/resources/static/dijit/themes/claro/layout/images/tabTopUnselected.png differ diff --git a/src/main/resources/static/dijit/themes/claro/layout/images/tabTopUnselected.svg b/src/main/resources/static/dijit/themes/claro/layout/images/tabTopUnselected.svg new file mode 100644 index 0000000000000000000000000000000000000000..c55e92532d529f34e2a9ce461995b02ad3e31ec2 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/layout/images/tabTopUnselected.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/claro/variables.less b/src/main/resources/static/dijit/themes/claro/variables.less new file mode 100644 index 0000000000000000000000000000000000000000..bdc8bf68f7ad8761e6f8356430d0ba072bb9efc2 --- /dev/null +++ b/src/main/resources/static/dijit/themes/claro/variables.less @@ -0,0 +1,379 @@ +// General + +@primary-color: #cfe5fa; // Base color for entire theme +@secondary-color: #efefef; // Base color for bar-backgrounds +@text-color: #000; // Text color for enabled widgets +@disabled-color: #d3d3d3; // Base for disabled backgrounds and borders +@error-color: #d46464; + +@container-background-color:#fff; // Backgrounds for various content areas such as TitlePane, ContentPane and Inputs (if changed, adjust selected tab to match) + +@minor-selected-color: spin(saturate(darken(@primary-color, 6), 19), 0); // Color for various arrows and buttons +@base-border-color: spin(desaturate(darken(@primary-color, 29), 44), -1); // Augmented and used directly by variables to create border colors for various widgets +@unfocused-clickable-color: spin(saturate(lighten(@primary-color, 5), 10), 0); // Background color for enabled buttons, text inputs +@border-color: spin(desaturate(darken(@primary-color, 15), 67), 8); // Border color for (enabled, unhovered) TextBox, Slider, Accordion, BorderContainer, TabContainer +@minor-border-color: @disabled-color; // Color of borders inside widgets: horizontal line in Calendar between weeks, around color swatches in ColorPalette, above Dialog action bar +@popup-border-color: @base-border-color; // Border for Dialog, Menu, Tooltip. Must also update tooltip.png (the arrow image file) to match + + +@disabled-border-color: @disabled-color; // Border color for disabled/readonly Button, TextBox etc. widgets +@disabled-background-color: @secondary-color; // Disabled button, textbox, etc. +@disabled-text-color: darken(@secondary-color, 43); // Text color for disabled/readonly widgets + +@unselected-background-color: @secondary-color; // Background color for unselected/unopened tab button, accordion pane, TitlePane, Menu items +@unselected-text-color: darken(@secondary-color, 65); // Text color for unselected/unopened tab button, accordion pane, TitlePane, Menu items + +@hovered-border-color: @base-border-color; // Hover of textbox, tab label, BorderContainer splitter, Calendar, etc. +@hovered-background-color: @minor-selected-color; // Background color for hover of Button, MenuBar, Accordion pane, Calendar... anything that has a (non-white) color to start with and gets darker on hover +@hovered-text-color: @text-color; // Used for title of select Accordion pane, label of select tab, hovered Menu item, etc. + +@pressed-border-color: @base-border-color; // During click on Calendar day, Slider up/down buttons, tab button, etc. +@pressed-background-color: spin(saturate(darken(@primary-color, 16), 12), 0); // Background color while clicking on Accordion/TitlePane title bar, tab button, Calendar day, Toolbar button, Tree row. + +@selected-border-color: @base-border-color; // Selected AccordionPane, tab of nested TabContainer (but plain TabContainer is special) +@selected-background-color: @primary-color; // Selected Accordion pane, nested tab label, Tree row +@selected-text-color: @text-color; // title of selected Accordion pane, label of selected tab, hovered Menu item, etc. + +@bar-background-color: @secondary-color; // MenuBar, Toolbar, action bar at bottom of dialog +@pane-background-color: @container-background-color; // Background color of Accordion panes, Dialogs, etc. +@popup-background-color: @container-background-color; // Background for Dialog. TODO: currently use for ColorPalette, maybe should change. + + + +// Buttons +@button-border-color: @base-border-color; // Border for (stand-alone) buttons in normal, hovered, or active state +@button-background-color: @unfocused-clickable-color; // Background color for (unhovered) buttons +@button-hovered-background-color: @minor-selected-color; // Background color for hovered buttons +@button-pressed-background-color: @minor-selected-color; // Background color for active buttons +@button-border-radius: 4px; // Rounded corner radius for buttons (except in toolbar) + +// Input widgets +@focused-border-color: @base-border-color; // Focused textbox, editor, select, etc. +@error-border-color: @error-color; // Border for textbox in error state +@error-focused-border-color: darken(@error-color, 5); // Border of textbox in error state, and focused +@erroricon-background-color: @error-color; // Background color for exclamation point validation icon (for TextBox in error state) +@textbox-background-color: @container-background-color; // Default background color of TextBox based widgets +@textbox-hovered-background-color: @unfocused-clickable-color; // Background color when hovering a unfocused TextBox, Select, Editor, or other input widget +@textbox-focused-background-color: @textbox-background-color; +@textbox-error-background-color: @textbox-background-color; +@textbox-disabled-background-color: @disabled-background-color; + +@textbox-padding: 2px; // Padding for Textbox, Textarea, etc. + +// CheckBox, RadioButton +@focus-outline-color: darken(@secondary-color, 65); // Color for artificial focus outline around labels of checkboxes + +// TabContainer +@nestedtab-hovered-background-color: @unfocused-clickable-color; +@nestedtab-hovered-border-color: @primary-color; +@nestedtab-selected-border-color: @selected-border-color; +@nestedtab-selected-background-color: @minor-selected-color; +@tab-disabled-background-color: @disabled-color; // For disabled tabs of a TabContainer (not officially supported) + +// Arrow buttons (stand alone, or inside ComboBox / ComboButton / Spinner / etc. +@arrowbutton-background-color: @secondary-color; +@arrowbutton-hovered-background-color: @minor-selected-color; // Color of arrow when hovering ComboBox. But hovering Spinner doesn't change arrow color (TODO) +@arrowbutton-pressed-background-color: @minor-selected-color; +@arrowbutton-inner-border-color: @container-background-color; // Typically the arrows have an inner white border (a.k.a. padding) and then an outer black-ish border + +// Slider +// Note: any changes here require corresponding changes in form/images/sliderThumbs.png +@slider-fullbar-background-color: @primary-color; // Background color for part of slider bar before (to the left or below) the handle +@slider-remainingbar-background-color: @container-background-color; // Background color for part of slider bar after (to the right or above) the handle +@slider-hovered-fullbar-background-color: @minor-selected-color; // Background color for part of bar of hovered slider before (to the left or below) the handle +@slider-hovered-remainingbar-background-color: @container-background-color; // Background color for part of bar of hovered slider after (to the right or above) the handle +@slider-hoveredButton-background-color: @container-background-color; // Background color of slider increment/decrement buttons when mouse is over slider but not over the buttons +@slider-focused-fullbar-background-color: @minor-selected-color; // Background color for part of bar of focused slider before (to the left or below) the handle +@slider-focused-remainingbar-background-color: @container-background-color; // Background color for part of bar of focused slider after (to the right or above) the handle +@slider-button-hovered-background-color: @primary-color; // Background color of slider increment/decrement buttons when mouse is over the buttons +@slider-button-pressed-background-color: @minor-selected-color; // Background color of slider increment/decrement buttons while button is depressed + +// Select, ComboBox +@select-dropdownitem-background-color: @container-background-color; // Background color for items in the drop down list of a ComboBox/Select +@select-dropdownitem-hovered-background-color: @pressed-background-color; // Background color for the hovered item in the drop down list of a ComboBox/Select +@select-matchedtext-background-color: @minor-selected-color; // Background color of text in ComboBox drop down that matches typed in phrase + +// Menus +@menu-background-color: @popup-background-color; + +// Calendar +@calendar-background-color: @primary-color; +@calendar-currentmonth-background-color: @container-background-color; // Background color for days of the current month +@calendar-adjacentmonth-background-color: @unfocused-clickable-color; // Background color used for days from previous or next month +@calendar-adjacentmonth-text-color: @base-border-color; // Text color used for days from previous or next month +@calendar-date-pressed-border-color: @container-background-color; // For some reason pressing a day of the month (as opposed to hovering it) makes the border go away, is this intentional? +@calendar-date-pressed-background-color: @pressed-background-color; +@calendar-date-selected-border-color: @selected-border-color; +@calendar-date-selected-background-color: @minor-selected-color; +@calendar-button-hovered-background-color: @unfocused-clickable-color; // for hover or next/previous year, and month drop down (TODO: border and background are built in to calendarArrows.png, can't control from here) +@calendar-button-hovered-border-color: @container-background-color; // for hover or next/previous year, and month drop down +@calendar-button-pressed-background-color: @pressed-background-color; +@calendar-button-pressed-border-color: @pressed-border-color; + + +// ProgressBar +@progressbar-border-color: @popup-border-color; // Border color of progress bar +@progressbar-full-background-color:@minor-selected-color; // Background color for part of progress bar indicating amount completed +@progressbar-empty-background-color: @container-background-color; // Background color for part of progress bar indicating amount remaining +@progressbar-text-color: @text-color; // Color of progress bar text (ex: "35%"). Must contrast with both empty and full background colors. + +// TimePicker +@timepicker-minorvalue-background-color: @secondary-color; // For 3:15, 3:30, 3:45 but not 3:00 or 4:00 +@timepicker-minorvalue-text-color: darken(@secondary-color, 43); +@timepicker-majorvalue-background-color: @unfocused-clickable-color; // For 3:00, 4:00, 5:00, etc. +@timepicker-value-hovered-background-color: @pressed-background-color; +@timepicker-value-hovered-text-color: @hovered-text-color; +@timepicker-arrow-hovered-background-color: @minor-selected-color; + +// ColorPalette +@colorpalette-background-color: @container-background-color; +@swatch-border-color: @minor-border-color; +@swatch-hovered-border-color: #000; +@swatch-selected-border-color: #000; + +// Dialog +@dialog-underlay-color: @container-background-color; // the thing that grays out the screen when a dialog is shown +@dialog-titlebar-border-color: @container-background-color; // Inner border around the title sectionof a Dialog, inside the main border of the Dialog and the border between title and content +@dialog-titlebar-background-color: @minor-selected-color; + +// Tooltip +@tooltip-gradient-color: fade(@primary-color,10%); // a little swath of color at the bottom of tooltips + +// BorderContainer +@splitter-hovered-background-color: @primary-color; // Color of splitter when user hovers it, before mouse down +@splitter-dragged-background-color: @minor-selected-color; // Color of splitter while it's being dragged + +// Toolbar +@toolbar-button-checked-background-color: @container-background-color; // a toggled-on button in the toolbar +@toolbar-combobutton-hovered-unhoveredsection-background-color: spin(saturate(lighten(@primary-color, 8), 19), -29); // when user hovers a ComboButton in a Toolbar, the other half of the button turns this color +@toolbar-button-border-radius: 2px; // Rounded corner radius for buttons for buttons in toolbar + +// DnD +@dnd-avatar-background-color: @container-background-color; // Background color of little Dialog-type box indicating dragged items +@dnd-avatar-header-background-color: #f58383; // Title bar for dragged items +@dnd-avatar-candrop-header-background-color: #97e68d;// Title bar for dragged items when they can be dropped +@dnd-dropseparator-color: @base-border-color; // Color of line indicating that user is about to drop between items A & B + +// Document level +@document-text-color: #131313; // Text color for document itself (text outside of widgets) +@document-shadedsection-background-color: @bar-background-color;// background color used for
          , , and table header rows
          +@document-border-color: @disabled-color;								// Border for 
          , , tables, etc.
          +
          +// Icons, arrows, etc.
          +@image-arrow-sprite: "images/spriteArrows.png";
          +@image-calendar-arrows: "images/calendarArrows.png";
          +@image-calendar-arrows-ie6: "images/calendarArrows8bit.png";
          +@image-checkmark: "images/checkmarkNoBorder.png";
          +@image-checkmark-ie6: "images/checkmarkNoBorder.gif";
          +@image-dialog-close: "images/dialogCloseIcon.png";
          +@image-dialog-close-ie6: "images/dialogCloseIcon8bit.png";
          +@image-dnd: "images/dnd.png";
          +@image-editor-icons-enabled: "../../icons/images/editorIconsEnabled.png";
          +@image-form-button-arrows: "form/images/buttonArrows.png";
          +@image-form-checkbox-and-radios: "form/images/checkboxRadioButtonStates.png";
          +@image-form-checkbox-and-radios-ie6: "form/images/checkboxAndRadioButtons_IE6.png";
          +@image-form-common-arrows: "form/images/commonFormArrows.png";
          +@image-form-error: "form/images/error.png";
          +@image-form-slider-thumbs: "form/images/sliderThumbs.png";
          +@image-layout-tab-close: "layout/images/tabClose.png";	// [x] icon to close a tab
          +@image-loading-animation: "../../icons/images/loadingAnimation.gif";
          +@image-loading-animation-rtl: "../../icons/images/loadingAnimation_rtl.gif";
          +@image-tooltip: "images/tooltip.png";	// arrow connectors
          +@image-tooltip-ie6: "images/tooltip8bit.png";	// arrow connectors (8 bit)
          +@image-tree-expand: "images/treeExpandImages.png";
          +@image-tree-expand-ie6: "images/treeExpandImages8bit.png";
          +@image-progressbar-anim: "images/progressBarAnim.gif";
          +
          +// Mixins
          +
          +.border-radius (@radius) {
          +	-moz-border-radius: @radius;
          +	border-radius: @radius;
          +}
          +
          +.box-shadow (@value) {
          +	-webkit-box-shadow: @value;
          +	-moz-box-shadow: @value;
          +	box-shadow: @value;
          +}
          +
          +.transition-property (@value) {
          +	-webkit-transition-property: @value;
          +	-moz-transition-property: @value;
          +	transition-property: @value;
          +}
          +
          +.transition-property (@value1, @value2) {
          +	-webkit-transition-property: @value1, @value2;
          +	-moz-transition-property: @value1, @value2;
          +	transition-property: @value1, @value2;
          +}
          +
          +.transition-duration (@value) {
          +	-webkit-transition-duration: @value;
          +	-moz-transition-duration: @value;
          +	transition-duration: @value;
          +}
          +
          +.transition-duration (@value1, @value2) {
          +	-webkit-transition-duration: @value1, @value2;
          +	-moz-transition-duration: @value1, @value2;
          +	transition-duration: @value1, @value2;
          +}
          +
          +.transition-timing-function (@value) {
          +	-webkit-transition-timing-function: @value;
          +	-moz-transition-timing-function: @value;
          +	transition-timing-function: @value;
          +}
          +
          +.linear-gradient (@value1, @value2) {
          +	// summary:
          +	//		Expands to browser specific background-image specifications for a linear-gradient (2 stops)
          + 	background-image: -moz-linear-gradient(@value1, @value2); // FF3.6 - FF15 (FF16+ supports linear-gradient)
          + 	background-image: -webkit-linear-gradient(@value1, @value2); // Chrome10+, Safari5.1+
          + 	background-image: -o-linear-gradient(@value1, @value2); // Opera 11.10+
          + 	background-image: linear-gradient(@value1, @value2);
          +}
          +.linear-gradient (@value1, @value2, @value3) {
          + 	background-image: -moz-linear-gradient(@value1, @value2, @value3); // FF3.6 - FF15 (FF16+ supports linear-gradient)
          + 	background-image: -webkit-linear-gradient(@value1, @value2, @value3); // Chrome10+, Safari5.1+
          + 	background-image: -o-linear-gradient(@value1, @value2, @value3); // Opera 11.10+
          + 	background-image: linear-gradient(@value1, @value2, @value3);
          +}
          +.linear-gradient (@value1, @value2, @value3, @value4) {
          + 	background-image: -moz-linear-gradient(@value1, @value2, @value3, @value4); // FF3.6 - FF15 (FF16+ supports linear-gradient)
          + 	background-image: -webkit-linear-gradient(@value1, @value2, @value3, @value4); // Chrome10+, Safari5.1+
          + 	background-image: -o-linear-gradient(@value1, @value2, @value3, @value4); // Opera 11.10+
          + 	background-image: linear-gradient(@value1, @value2, @value3, @value4);
          +}
          +.linear-gradient (@value1, @value2, @value3, @value4, @value5) {
          + 	background-image: -moz-linear-gradient(@value1, @value2, @value3, @value4, @value5); // FF3.6 - FF15 (FF16+ supports linear-gradient)
          + 	background-image: -webkit-linear-gradient(@value1, @value2, @value3, @value4, @value5); // Chrome10+, Safari5.1+
          + 	background-image: -o-linear-gradient(@value1, @value2, @value3, @value4, @value5); // Opera 11.10+
          + 	background-image: linear-gradient(@value1, @value2, @value3, @value4, @value5);
          +}
          +.linear-gradient (@value1, @value2, @value3, @value4, @value5, @value6) {
          + 	background-image: -moz-linear-gradient(@value1, @value2, @value3, @value4, @value5, @value6); // FF3.6 - FF15 (FF16+ supports linear-gradient)
          + 	background-image: -webkit-linear-gradient(@value1, @value2, @value3, @value4, @value5, @value6); // Chrome10+, Safari5.1+
          + 	background-image: -o-linear-gradient(@value1, @value2, @value3, @value4, @value5, @value6); // Opera 11.10+
          + 	background-image: linear-gradient(@value1, @value2, @value3, @value4, @value5, @value6);
          +}
          +.linear-gradient (@value1, @value2, @value3, @value4, @value5, @value6, @value7) {
          + 	background-image: -moz-linear-gradient(@value1, @value2, @value3, @value4, @value5, @value6, @value7); // FF3.6 - FF15 (FF16+ supports linear-gradient)
          + 	background-image: -webkit-linear-gradient(@value1, @value2, @value3, @value4, @value5, @value6, @value7); // Chrome10+, Safari5.1+
          + 	background-image: -o-linear-gradient(@value1, @value2, @value3, @value4, @value5, @value6, @value7); // Opera 11.10+
          + 	background-image: linear-gradient(@value1, @value2, @value3, @value4, @value5, @value6, @value7);
          +}
          +
          +.alpha-white-gradient (@opacity1, @stop1, @opacity2, @stop2) {
          +	// summary:
          +	//		For setting up white background-image with variable transparency.
          +	// example:
          +	//		Gradient starts at top (0%) with 30% opacity, and then ends at bottom (100%) with full transparency
          +	//		|	.alpha-white-gradient(0.3, 0%, 0, 100%)
          +	//
          +	.linear-gradient(rgba(255,255,255,@opacity1) @stop1, rgba(255,255,255,@opacity2) @stop2);
          +}
          +.alpha-white-gradient (@start, @opacity1, @stop1, @opacity2, @stop2) {
          +	.linear-gradient(@start, rgba(255,255,255,@opacity1) @stop1, rgba(255,255,255,@opacity2) @stop2);
          +}
          +.alpha-white-gradient (@opacity1, @stop1, @opacity2, @stop2, @opacity3, @stop3) {
          +	.linear-gradient(rgba(255,255,255,@opacity1) @stop1, rgba(255,255,255,@opacity2) @stop2, rgba(255,255,255, @opacity3) @stop3);
          +}
          +.alpha-white-gradient (@start, @opacity1, @stop1, @opacity2, @stop2, @opacity3, @stop3) {
          +	.linear-gradient(@start, rgba(255,255,255,@opacity1) @stop1, rgba(255,255,255,@opacity2) @stop2, rgba(255,255,255, @opacity3) @stop3);
          +}
          +.alpha-white-gradient (@opacity1, @stop1, @opacity2, @stop2, @opacity3, @stop3, @opacity4, @stop4) {
          +	.linear-gradient(rgba(255,255,255,@opacity1) @stop1, rgba(255,255,255,@opacity2) @stop2, rgba(255,255,255, @opacity3) @stop3, rgba(255,255,255, @opacity4) @stop4);
          +}
          +.alpha-white-gradient (@start, @opacity1, @stop1, @opacity2, @stop2, @opacity3, @stop3, @opacity4, @stop4) {
          +	.linear-gradient(@start, rgba(255,255,255,@opacity1) @stop1, rgba(255,255,255,@opacity2) @stop2, rgba(255,255,255, @opacity3) @stop3, rgba(255,255,255, @opacity4) @stop4);
          +}
          +.alpha-white-gradient (@start, @opacity1, @stop1, @opacity2, @stop2, @opacity3, @stop3, @opacity4, @stop4, @opacity5, @stop5) {
          +	.linear-gradient(@start, rgba(255,255,255,@opacity1) @stop1, rgba(255,255,255,@opacity2) @stop2, rgba(255,255,255, @opacity3) @stop3, rgba(255,255,255, @opacity4) @stop4, rgba(255,255,255, @opacity5) @stop5);
          +}
          +.alpha-white-gradient (@start, @opacity1, @stop1, @opacity2, @stop2, @opacity3, @stop3, @opacity4, @stop4, @opacity5, @stop5, @opacity6, @stop6) {
          +	.linear-gradient(@start, rgba(255,255,255,@opacity1) @stop1, rgba(255,255,255,@opacity2) @stop2, rgba(255,255,255, @opacity3) @stop3, rgba(255,255,255, @opacity4) @stop4, rgba(255,255,255, @opacity5) @stop5, rgba(255,255,255, @opacity6) @stop6);
          +}
          +
          +.gradient-and-filter (@color, @fade1, @fade2) {
          +	// summary:
          +	//		Sets up a background color with a vertical gradient.
          +	//		In order to make transitions work properly on mozilla and webkit, this is done by combining
          +	//		a background-color which will be changed based on state (ex: hover) with a constant
          +	//		white alpha-transparency background-image.  On IE it creates a DXImageTransform filter.
          +	// @color:
          +	//		The color
          +	// @fade1:
          +	//		The percent to fade at the top
          +	// @fade2:
          +	//		The percent to fade at the bottom
          +	background-color: @color; // the base color
          +	.linear-gradient(fadeout(#fff, 100-@fade1), fadeout(#fff, 100-@fade2));
          +	filter: ~"progid:DXImageTransform.Microsoft.gradient(startColorstr="lighten(@color, @fade1)~", endColorstr="lighten(@color, @fade2)~")"; // IE
          +}
          +.horizontal-gradient-and-filter (@color, @fade1, @fade2) {
          +	// summary:
          +	//		Sets up a background color with a horizontal gradient.
          +	//		In order to make transitions work properly on mozilla and webkit, this is done by combining
          +	//		a background-color which will be changed based on state (ex: hover) with a constant
          +	//		white alpha-transparency background-image.  On IE it creates a DXImageTransform filter.
          +	// @color:
          +	//		The color
          +	// @fade1:
          +	//		The percent to fade at the top
          +	// @fade2:
          +	//		The percent to fade at the bottom
          +	background-color: @color; // the base color
          +	.linear-gradient(left, fadeout(#fff, 100-@fade1), fadeout(#fff, 100-@fade2));
          +	filter: ~"progid:DXImageTransform.Microsoft.gradient(startColorstr="lighten(@color, @fade1)~", endColorstr="lighten(@color, @fade2)~"gradientType=1)"; // IE
          +}
          +
          +
          +// Mixins defining gradients
          +
          +.textbox-background-image () {
          +	// summary:
          +	//		Background image used for hovered TextBoxes and similar controls.
          +	//		It's just a small inset shadow below the top border (inside of the TextBox).
          +	.linear-gradient(rgba(127,127,127,0.2) 0%, rgba(127,127,127,0) 2px);
          +}
          +
          +.standard-gradient (@pathToRoot: "") {
          +	// summary:
          +	//		Light to dark background-image used by widgets with short height (~16px) including:
          +	//			- MenuBar, and hovered MenuItem/MenuBarItem
          +	//			- arrow icon wrapper for Select, ComboBox, Spinner
          +	//			- Toolbar and hovered Toolbar buttons
          +	//			- TitlePane title bar, AccordionContainer title bar, Dialog title bar
          +
          +	// Fallback for IE
          +	background-image: url("@{pathToRoot}images/standardGradient.png");
          +	background-repeat: repeat-x;
          +
          +	// CSS gradient for other browsers
          +	.alpha-white-gradient(0.7, 0%, 0, 100%);
          +
          +	// IE6 can't handle a background-image with transparency and a background-color; the color is blocked out
          +	_background-image: none;
          +}
          +.active-gradient (@pathToRoot: "") {
          +	// summary:
          +	//		Light to dark background-image with an inset gray shadow at the top,
          +	//		used by widgets when they are active (ie: mousedown) or selected, including:
          +	//			- active MenuItem/MenuBarItem
          +	//			- arrow icon wrapper for Select, ComboBox, Spinner when active or drop down is open
          +	//			- active Toolbar buttons
          +	//			- active TitlePane title bar, AccordionContainer title bar
          +
          +	// Fallback for IE
          +	background-image: url("@{pathToRoot}images/activeGradient.png");
          +	background-repeat: repeat-x;
          +
          +	// CSS gradient for other browsers
          +	.linear-gradient(rgba(190,190,190,0.98) 0px, rgba(255, 255, 255, 0.65) 3px, rgba(255, 255, 255, 0) 100%);
          +
          +	// IE6 can't handle a background-image with transparency and a background-color; the color is blocked out
          +	_background-image: none;
          +}
          diff --git a/src/main/resources/static/dijit/themes/dijit.css b/src/main/resources/static/dijit/themes/dijit.css
          new file mode 100644
          index 0000000000000000000000000000000000000000..3d2118e58d15a22b246357208ac334bdfee5c0ee
          --- /dev/null
          +++ b/src/main/resources/static/dijit/themes/dijit.css
          @@ -0,0 +1,2248 @@
          +/*
          +	Essential styles that themes can inherit.
          +	In other words, works but doesn't look great.
          +*/
          +
          +
          +
          +/****
          +		GENERIC PIECES
          + ****/
          +
          +.dijitReset {
          +	/* Use this style to null out padding, margin, border in your template elements
          +		so that page specific styles don't break them.
          +		- Use in all TABLE, TR and TD tags.
          +	*/
          +	margin:0;
          +	border:0;
          +	padding:0;
          +	font: inherit;
          +	line-height:normal;
          +	color: inherit;
          +}
          +.dj_a11y .dijitReset {
          +	-moz-appearance: none; /* remove predefined high-contrast styling in Firefox */
          +}
          +
          +.dijitInline {
          +	/*  To inline block elements.
          +		Similar to InlineBox below, but this has fewer side-effects in Moz.
          +		Also, apparently works on a DIV as well as a FIELDSET.
          +	*/
          +	display:inline-block;			/* webkit and FF3 */
          +	#zoom: 1; /* set hasLayout:true to mimic inline-block */
          +	#display:inline; /* don't use .dj_ie since that increases the priority */
          +	border:0;
          +	padding:0;
          +	vertical-align:middle;
          +	#vertical-align: auto;	/* makes TextBox,Button line up w/native counterparts on IE6 */
          +}
          +
          +table.dijitInline {
          +	/* To inline tables with a given width set */
          +	display:inline-table;
          +	box-sizing: content-box; -moz-box-sizing: content-box;
          +}
          +
          +.dijitHidden {
          +	/* To hide unselected panes in StackContainer etc. */
          +	position: absolute; /* remove from normal document flow to simulate display: none */
          +	visibility: hidden; /* hide element from view, but don't break scrolling, see #18612 */
          +}
          +.dijitHidden * {
          +	visibility: hidden !important; /* hide visibility:visible descendants of class=dijitHidden nodes, see #18799 */
          +}
          +
          +.dijitVisible {
          +	/* To show selected pane in StackContainer etc. */
          +	display: block !important;	/* override user's display:none setting via style setting or indirectly via class */
          +	position: relative;			/* to support setting width/height, see #2033 */
          +	visibility: visible;
          +}
          +
          +.dj_ie6 .dijitComboBox .dijitInputContainer,
          +.dijitInputContainer {
          +	/* for positioning of placeHolder */
          +	#zoom: 1;
          +	overflow: hidden;
          +	float: none !important; /* needed to squeeze the INPUT in */
          +	position: relative;
          +}
          +.dj_ie7 .dijitInputContainer {
          +	float: left !important; /* needed by IE to squeeze the INPUT in */
          +	clear: left;
          +	display: inline-block !important; /* to fix wrong text alignment in textdir=rtl text box */
          +}
          +
          +.dj_ie .dijitSelect input,
          +.dj_ie input.dijitTextBox,
          +.dj_ie .dijitTextBox input {
          +	font-size: 100%;
          +}
          +.dijitSelect .dijitButtonText {
          +	float: left;
          +	vertical-align: top;
          +}
          +TABLE.dijitSelect {
          +	padding: 0 !important; /* messes up border alignment */
          +	border-collapse: separate; /* so jsfiddle works with Normalized CSS checked */
          +}
          +.dijitTextBox .dijitSpinnerButtonContainer,
          +.dijitTextBox .dijitArrowButtonContainer,
          +.dijitValidationTextBox .dijitValidationContainer {
          +	float: right;
          +	text-align: center;
          +}
          +.dijitSelect input.dijitInputField,
          +.dijitTextBox input.dijitInputField {
          +	/* override unreasonable user styling of buttons and icons */
          +	padding-left: 0 !important;
          +	padding-right: 0 !important;
          +}
          +.dijitValidationTextBox .dijitValidationContainer {
          +	display: none;
          +}
          +
          +.dijitTeeny {
          +	font-size:1px;
          +	line-height:1px;
          +}
          +
          +.dijitOffScreen { /* these class attributes should supersede any inline positioning style */
          +	position: absolute !important;
          +	left: -10000px !important;
          +	top: -10000px !important;
          +}
          +
          +/*
          + * Popup items have a wrapper div (dijitPopup)
          + * with the real popup inside, and maybe an iframe too
          + */
          +.dijitPopup {
          +	position: absolute;
          +	background-color: transparent;
          +	margin: 0;
          +	border: 0;
          +	padding: 0;
          +	-webkit-overflow-scrolling: touch;
          +}
          +
          +.dijitPositionOnly {
          +	/* Null out all position-related properties */
          +	padding: 0 !important;
          +	border: 0 !important;
          +	background-color: transparent !important;
          +	background-image: none !important;
          +	height: auto !important;
          +	width: auto !important;
          +}
          +
          +.dijitNonPositionOnly {
          +	/* Null position-related properties */
          +	float: none !important;
          +	position: static !important;
          +	margin: 0 0 0 0 !important;
          +	vertical-align: middle !important;
          +}
          +
          +.dijitBackgroundIframe {
          +	/* iframe used to prevent problems with PDF or other applets overlaying menus etc */
          +	position: absolute;
          +	left: 0;
          +	top: 0;
          +	width: 100%;
          +	height: 100%;
          +	z-index: -1;
          +	border: 0;
          +	padding: 0;
          +	margin: 0;
          +}
          +
          +.dijitDisplayNone {
          +	/* hide something.  Use this as a class rather than element.style so another class can override */
          +	display:none !important;
          +}
          +
          +.dijitContainer {
          +	/* for all layout containers */
          +	overflow: hidden;	/* need on IE so something can be reduced in size, and so scrollbars aren't temporarily displayed when resizing */
          +}
          +
          +/****
          +		A11Y
          + ****/
          +.dj_a11y .dijitIcon,
          +.dj_a11y div.dijitArrowButtonInner, /* is this only for Spinner?  if so, it should be deleted */
          +.dj_a11y span.dijitArrowButtonInner,
          +.dj_a11y img.dijitArrowButtonInner,
          +.dj_a11y .dijitCalendarIncrementControl,
          +.dj_a11y .dijitTreeExpando {
          +	/* hide icon nodes in high contrast mode; when necessary they will be replaced by character equivalents
          +	 * exception for input.dijitArrowButtonInner, because the icon and character are controlled by the same node */
          +	display: none;
          +}
          +.dijitSpinner div.dijitArrowButtonInner {
          +	display: block; /* override previous rule */
          +}
          +
          +.dj_a11y .dijitA11ySideArrow {
          +	display: inline !important; /* display text instead */
          +	cursor: pointer;
          +}
          +
          +/*
          + * Since we can't use shading in a11y mode, and since the underline indicates today's date,
          + * use a border to show the selected date.
          + * Avoid screen jitter when switching selected date by compensating for the selected node's
          + * border w/padding on other nodes.
          + */
          +.dj_a11y .dijitCalendarDateLabel {
          +	padding: 1px;
          +	border: 0px !important;
          +}
          +.dj_a11y .dijitCalendarSelectedDate .dijitCalendarDateLabel {
          +	border-style: solid !important;
          +	border-width: 1px !important;
          +	padding: 0;
          +}
          +.dj_a11y .dijitCalendarDateTemplate {
          +	padding-bottom: 0.1em !important;	/* otherwise bottom border doesn't appear on IE */
          +	border: 0px !important;
          +}
          +.dj_a11y .dijitButtonNode {
          +	border: black outset medium !important;
          +
          +	/* In claro, hovering a toolbar button reduces padding and adds a border.
          +	 * Not needed in a11y mode since Toolbar buttons always have a border.
          +	 */
          +	padding: 0 !important;
          +}
          +.dj_a11y .dijitArrowButton {
          +	padding: 0 !important;
          +}
          +
          +.dj_a11y .dijitButtonContents {
          +	margin: 0.15em; /* Margin needed to make focus outline visible */
          +}
          +
          +.dj_a11y .dijitTextBoxReadOnly .dijitInputField,
          +.dj_a11y .dijitTextBoxReadOnly .dijitButtonNode {
          +	border-style: outset!important;
          +	border-width: medium!important;
          +	border-color: #999 !important;
          +	color:#999 !important;
          +}
          +
          +/* button inner contents - labels, icons etc. */
          +.dijitButtonNode * {
          +	vertical-align: middle;
          +}
          +.dijitSelect .dijitArrowButtonInner,
          +.dijitButtonNode .dijitArrowButtonInner {
          +	/* the arrow icon node */
          +	background: no-repeat center;
          +	width: 12px;
          +	height: 12px;
          +	direction: ltr; /* needed by IE/RTL */
          +}
          +
          +/****
          +	3-element borders:  ( dijitLeft + dijitStretch + dijitRight )
          +	These were added for rounded corners on dijit.form.*Button but never actually used.
          + ****/
          +
          +.dijitLeft {
          +	/* Left part of a 3-element border */
          +	background-position:left top;
          +	background-repeat:no-repeat;
          +}
          +
          +.dijitStretch {
          +	/* Middle (stretchy) part of a 3-element border */
          +	white-space:nowrap;			/* MOW: move somewhere else */
          +	background-repeat:repeat-x;
          +}
          +
          +.dijitRight {
          +	/* Right part of a 3-element border */
          +	#display:inline;				/* IE7 sizes to outer size w/o this */
          +	background-position:right top;
          +	background-repeat:no-repeat;
          +}
          +
          +/* Buttons */
          +.dj_gecko .dj_a11y .dijitButtonDisabled .dijitButtonNode {
          +	opacity: 0.5;
          +}
          +
          +.dijitToggleButton,
          +.dijitButton,
          +.dijitDropDownButton,
          +.dijitComboButton {
          +	/* outside of button */
          +	margin: 0.2em;
          +	vertical-align: middle;
          +}
          +
          +.dijitButtonContents {
          +	display: block;		/* to make focus border rectangular */
          +}
          +td.dijitButtonContents {
          +	display: table-cell;	/* but don't affect Select, ComboButton */
          +}
          +
          +.dijitButtonNode img {
          +	/* make text and images line up cleanly */
          +	vertical-align:middle;
          +	/*margin-bottom:.2em;*/
          +}
          +
          +.dijitToolbar .dijitComboButton {
          +	/* because Toolbar only draws a border around the hovered thing */
          +	border-collapse: separate;
          +}
          +
          +.dijitToolbar .dijitToggleButton,
          +.dijitToolbar .dijitButton,
          +.dijitToolbar .dijitDropDownButton,
          +.dijitToolbar .dijitComboButton {
          +	margin: 0;
          +}
          +
          +.dijitToolbar .dijitButtonContents {
          +	/* just because it used to be this way */
          +	padding: 1px 2px;
          +}
          +
          +
          +.dj_webkit .dijitToolbar .dijitDropDownButton {
          +	padding-left: 0.3em;
          +}
          +.dj_gecko .dijitToolbar .dijitButtonNode::-moz-focus-inner {
          +	padding:0;
          +}
          +
          +.dijitSelect {
          +	border:1px solid gray;
          +}
          +.dijitButtonNode {
          +	/* Node that is acting as a button -- may or may not be a BUTTON element */
          +	border:1px solid gray;
          +	margin:0;
          +	line-height:normal;
          +	vertical-align: middle;
          +	#vertical-align: auto;
          +	text-align:center;
          +	white-space: nowrap;
          +}
          +.dj_webkit .dijitSpinner .dijitSpinnerButtonContainer {
          +	/* apparent WebKit bug where messing with the font coupled with line-height:normal X 2 (dijitReset & dijitButtonNode)
          +	can be different than just a single line-height:normal, visible in InlineEditBox/Spinner */
          +	line-height:inherit;
          +}
          +.dijitTextBox .dijitButtonNode {
          +	border-width: 0;
          +}
          +
          +.dijitSelect,
          +.dijitSelect *,
          +.dijitButtonNode,
          +.dijitButtonNode * {
          +	cursor: pointer;
          +	-webkit-tap-highlight-color: transparent;
          +}
          +
          +.dj_ie .dijitButtonNode {
          +	/* ensure hasLayout */
          +	zoom: 1;
          +}
          +
          +.dj_ie .dijitButtonNode button {
          +	/*
          +		disgusting hack to get rid of spurious padding around button elements
          +		on IE. MSIE is truly the web's boat anchor.
          +	*/
          +	overflow: visible;
          +}
          +
          +div.dijitArrowButton {
          +	float: right;
          +}
          +
          +/******
          +	TextBox related.
          +	Everything that has an 
          +*******/
          +
          +.dijitTextBox {
          +	border: solid black 1px;
          +	#overflow: hidden; /* #6027, #6067 */
          +	width: 15em;	/* need to set default size on outer node since inner nodes say  and .  user can override */
          +	vertical-align: middle;
          +}
          +
          +.dijitTextBoxReadOnly,
          +.dijitTextBoxDisabled {
          +	color: gray;
          +}
          +.dj_safari .dijitTextBoxDisabled input {
          +	color: #B0B0B0; /* because Safari lightens disabled input/textarea no matter what color you specify */
          +}
          +.dj_safari textarea.dijitTextAreaDisabled {
          +	color: #333; /* because Safari lightens disabled input/textarea no matter what color you specify */
          +}
          +.dj_gecko .dijitTextBoxReadOnly input.dijitInputField, /* disable arrow and validation presentation inputs but allow real input for text selection */
          +.dj_gecko .dijitTextBoxDisabled input {
          +	-moz-user-input: none; /* prevent focus of disabled textbox buttons */
          +}
          +
          +.dijitPlaceHolder {
          +	/* hint text that appears in a textbox until user starts typing */
          +	color: #AAAAAA;
          +	font-style: italic;
          +	position: absolute;
          +	top: 0;
          +	left: 0;
          +	#filter: ""; /* make this show up in IE6 after the rendering of the widget */
          +	white-space: nowrap;
          +	pointer-events: none;   /* so cut/paste context menu shows up when right clicking */
          +}
          +
          +.dijitTimeTextBox {
          +	width: 8em;
          +}
          +
          +/* rules for webkit to deal with fuzzy blue focus border */
          +.dijitTextBox input:focus {
          +	outline: none;	/* blue fuzzy line looks wrong on combobox or something w/validation icon showing */
          +}
          +.dijitTextBoxFocused {
          +	outline: 5px -webkit-focus-ring-color;
          +}
          +
          +.dijitSelect input,
          +.dijitTextBox input {
          +	float: left; /* needed by IE to remove secret margin */
          +}
          +.dj_ie6 input.dijitTextBox,
          +.dj_ie6 .dijitTextBox input {
          +	float: none;
          +}
          +.dijitInputInner {
          +	/* for when an  is embedded inside an inline-block 
          with a size and border */ + border:0 !important; + background-color:transparent !important; + width:100% !important; + /* IE dislikes horizontal tweaking combined with width:100% so punish everyone for consistency */ + padding-left: 0 !important; + padding-right: 0 !important; + margin-left: 0 !important; + margin-right: 0 !important; +} +.dj_a11y .dijitTextBox input { + margin: 0 !important; +} +.dijitValidationTextBoxError input.dijitValidationInner, +.dijitSelect input, +.dijitTextBox input.dijitArrowButtonInner { + /* used to display arrow icon/validation icon, or in arrow character in high contrast mode. + * The css below is a trick to hide the character in non-high-contrast mode + */ + text-indent: -2em !important; + direction: ltr !important; + text-align: left !important; + height: auto !important; + #text-indent: 0 !important; + #letter-spacing: -5em !important; + #text-align: right !important; +} +.dj_ie .dijitSelect input, +.dj_ie .dijitTextBox input, +.dj_ie input.dijitTextBox { + overflow-y: visible; /* inputs need help expanding when padding is added or line-height is adjusted */ + line-height: normal; /* strict mode */ +} +.dijitSelect .dijitSelectLabel span { + line-height: 100%; +} +.dj_ie .dijitSelect .dijitSelectLabel { + line-height: normal; +} +.dj_ie6 .dijitSelect .dijitSelectLabel, +.dj_ie7 .dijitSelect .dijitSelectLabel, +.dj_ie8 .dijitSelect .dijitSelectLabel, +.dj_iequirks .dijitSelect .dijitSelectLabel, +.dijitSelect td, +.dj_ie6 .dijitSelect input, +.dj_iequirks .dijitSelect input, +.dj_ie6 .dijitSelect .dijitValidationContainer, +.dj_ie6 .dijitTextBox input, +.dj_ie6 input.dijitTextBox, +.dj_iequirks .dijitTextBox input.dijitValidationInner, +.dj_iequirks .dijitTextBox input.dijitArrowButtonInner, +.dj_iequirks .dijitTextBox input.dijitSpinnerButtonInner, +.dj_iequirks .dijitTextBox input.dijitInputInner, +.dj_iequirks input.dijitTextBox { + line-height: 100%; /* IE7 problem where the icon is vertically way too low w/o this */ +} +.dj_a11y input.dijitValidationInner, +.dj_a11y input.dijitArrowButtonInner { + /* (in high contrast mode) revert rules from above so character displays */ + text-indent: 0 !important; + width: 1em !important; + #text-align: left !important; + color: black !important; +} +.dijitValidationTextBoxError .dijitValidationContainer { + display: inline; + cursor: default; +} + +/* ComboBox & Spinner */ + +.dijitSpinner .dijitSpinnerButtonContainer, +.dijitComboBox .dijitArrowButtonContainer { + /* dividing line between input area and up/down button(s) for ComboBox and Spinner */ + border-width: 0 0 0 1px !important; /* !important needed due to wayward ".theme .dijitButtonNode" rules */ +} +.dj_a11y .dijitSelect .dijitArrowButtonContainer, +.dijitToolbar .dijitComboBox .dijitArrowButtonContainer { + /* overrides above rule plus mirror-image rule in dijit_rtl.css to have no divider when ComboBox in Toolbar */ + border-width: 0 !important; +} + +.dijitComboBoxMenu { + /* Drop down menu is implemented as
          • ... but we don't want circles before each item */ + list-style-type: none; +} +.dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode { + /* dividing line between input area and up/down button(s) for ComboBox and Spinner */ + border-width: 0; +} +.dj_ie .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitButtonNode { + clear: both; /* IE workaround */ +} + +.dj_ie .dijitToolbar .dijitComboBox { + /* make combobox buttons align properly with other buttons in a toolbar */ + vertical-align: middle; +} + +/* Spinner */ + +.dijitTextBox .dijitSpinnerButtonContainer { + width: 1em; + position: relative !important; + overflow: hidden; +} +.dijitSpinner .dijitSpinnerButtonInner { + width:1em; + visibility:hidden !important; /* just a sizing element */ + overflow-x:hidden; +} +.dijitComboBox .dijitButtonNode, +.dijitSpinnerButtonContainer .dijitButtonNode { + border-width: 0; +} +.dj_a11y .dijitSpinnerButtonContainer .dijitButtonNode { + border-width: 0px !important; + border-style: solid !important; +} +.dj_a11y .dijitTextBox .dijitSpinnerButtonContainer, +.dj_a11y .dijitSpinner .dijitArrowButtonInner, +.dj_a11y .dijitSpinnerButtonContainer input { + width: 1em !important; +} +.dj_a11y .dijitSpinner .dijitArrowButtonInner { + margin: 0 auto !important; /* should auto-center */ +} +.dj_ie .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { + padding-left: 0.3em !important; + padding-right: 0.3em !important; + margin-left: 0.3em !important; + margin-right: 0.3em !important; + width: 1.4em !important; +} +.dj_ie7 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { + padding-left: 0 !important; /* manually center INPUT: character is .5em and total width = 1em */ + padding-right: 0 !important; + width: 1em !important; +} +.dj_ie6 .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { + margin-left: 0.1em !important; + margin-right: 0.1em !important; + width: 1em !important; +} +.dj_iequirks .dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { + margin-left: 0 !important; + margin-right: 0 !important; + width: 2em !important; +} +.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { + /* note: .dijitInputLayoutContainer makes this rule override .dijitArrowButton settings + * for dijit.form.Button + */ + padding: 0; + position: absolute !important; + right: 0; + float: none; + height: 50%; + width: 100%; + bottom: auto; + left: 0; + right: auto; +} +.dj_iequirks .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { + width: auto; +} +.dj_a11y .dijitSpinnerButtonContainer .dijitArrowButton { + overflow: visible !important; +} +.dijitSpinner .dijitSpinnerButtonContainer .dijitDownArrowButton { + top: 50%; + border-top-width: 1px !important; +} +.dijitSpinner .dijitSpinnerButtonContainer .dijitUpArrowButton { + #bottom: 50%; /* otherwise (on some machines) top arrow icon too close to splitter border (IE6/7) */ + top: 0; +} +.dijitSpinner .dijitArrowButtonInner { + margin: auto; + overflow-x: hidden; + height: 100% !important; +} +.dj_iequirks .dijitSpinner .dijitArrowButtonInner { + height: auto !important; +} +.dijitSpinner .dijitArrowButtonInner .dijitInputField { + -moz-transform: scale(0.5); + -moz-transform-origin: center top; + -webkit-transform: scale(0.5); + -webkit-transform-origin: center top; + -o-transform: scale(0.5); + -o-transform-origin: center top; + transform: scale(0.5); + transform-origin: left top; + padding-top: 0; + padding-bottom: 0; + padding-left: 0 !important; + padding-right: 0 !important; + width: 100%; + visibility: hidden; +} +.dj_ie .dijitSpinner .dijitArrowButtonInner .dijitInputField { + zoom: 50%; /* emulate transform: scale(0.5) */ +} +.dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButtonInner { + overflow: hidden; +} + +.dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { + width: 100%; +} +.dj_iequirks .dj_a11y .dijitSpinner .dijitSpinnerButtonContainer .dijitArrowButton { + width: 1em; /* matches .dj_a11y .dijitTextBox .dijitSpinnerButtonContainer rule - 100% is the whole screen width in quirks */ +} +.dj_a11y .dijitSpinner .dijitArrowButtonInner .dijitInputField { + vertical-align:top; + visibility: visible; +} +.dj_a11y .dijitSpinnerButtonContainer { + width: 1em; +} + +/**** + dijit.form.CheckBox + & + dijit.form.RadioButton + ****/ + +.dijitCheckBox, +.dijitRadio, +.dijitCheckBoxInput { + padding: 0; + border: 0; + width: 16px; + height: 16px; + background-position:center center; + background-repeat:no-repeat; + overflow: hidden; +} + +.dijitCheckBox input, +.dijitRadio input { + margin: 0; + padding: 0; + display: block; +} + +.dijitCheckBoxInput { + /* place the actual input on top, but invisible */ + opacity: 0; +} + +.dj_ie .dijitCheckBoxInput { + filter: alpha(opacity=0); +} + +.dj_a11y .dijitCheckBox, +.dj_a11y .dijitRadio { + /* in a11y mode we display the native checkbox (not the icon), so don't restrict the size */ + width: auto !important; + height: auto !important; +} +.dj_a11y .dijitCheckBoxInput { + opacity: 1; + filter: none; + width: auto; + height: auto; +} + +.dj_a11y .dijitFocusedLabel { + /* for checkboxes or radio buttons in high contrast mode, use border rather than outline to indicate focus (outline does not work in FF)*/ + border: 1px dotted; + outline: 0px !important; +} + +/**** + dijit.ProgressBar + ****/ + +.dijitProgressBar { + z-index: 0; /* so z-index settings below have no effect outside of the ProgressBar */ +} +.dijitProgressBarEmpty { + /* outer container and background of the bar that's not finished yet*/ + position:relative;overflow:hidden; + border:1px solid black; /* a11y: border necessary for high-contrast mode */ + z-index:0; /* establish a stacking context for this progress bar */ +} + +.dijitProgressBarFull { + /* outer container for background of bar that is finished */ + position:absolute; + overflow:hidden; + z-index:-1; + top:0; + width:100%; +} +.dj_ie6 .dijitProgressBarFull { + height:1.6em; +} + +.dijitProgressBarTile { + /* inner container for finished portion */ + position:absolute; + overflow:hidden; + top:0; + left:0; + bottom:0; + right:0; + margin:0; + padding:0; + width: 100%; /* needed for IE/quirks */ + height:auto; + background-color:#aaa; + background-attachment: fixed; +} + +.dj_a11y .dijitProgressBarTile { + /* a11y: The border provides visibility in high-contrast mode */ + border-width:2px; + border-style:solid; + background-color:transparent !important; +} + +.dj_ie6 .dijitProgressBarTile { + /* width:auto works in IE6 with position:static but not position:absolute */ + position:static; + /* height:auto or 100% does not work in IE6 */ + height:1.6em; +} + +.dijitProgressBarIndeterminate .dijitProgressBarTile { + /* animated gif for 'indeterminate' mode */ +} + +.dijitProgressBarIndeterminateHighContrastImage { + display:none; +} + +.dj_a11y .dijitProgressBarIndeterminate .dijitProgressBarIndeterminateHighContrastImage { + display:block; + position:absolute; + top:0; + bottom:0; + margin:0; + padding:0; + width:100%; + height:auto; +} + +.dijitProgressBarLabel { + display:block; + position:static; + width:100%; + text-align:center; + background-color:transparent !important; +} + +/**** + dijit.Tooltip + ****/ + +.dijitTooltip { + position: absolute; + z-index: 2000; + display: block; + /* make visible but off screen */ + left: 0; + top: -10000px; + overflow: visible; +} + +.dijitTooltipContainer { + border: solid black 2px; + background: #b8b5b5; + color: black; + font-size: small; +} + +.dijitTooltipFocusNode { + padding: 2px 2px 2px 2px; +} + +.dijitTooltipConnector { + position: absolute; +} +.dj_a11y .dijitTooltipConnector { + display: none; /* won't show b/c it's background-image; hide to avoid border gap */ +} + +.dijitTooltipData { + display:none; +} + +/* Layout widgets. This is essential CSS to make layout work (it isn't "styling" CSS) + make sure that the position:absolute in dijitAlign* overrides other classes */ + +.dijitLayoutContainer { + position: relative; + display: block; + overflow: hidden; +} + +.dijitAlignTop, +.dijitAlignBottom, +.dijitAlignLeft, +.dijitAlignRight { + position: absolute; + overflow: hidden; +} + +body .dijitAlignClient { position: absolute; } + +/* + * BorderContainer + * + * .dijitBorderContainer is a stylized layout where panes have border and margin. + * .dijitBorderContainerNoGutter is a raw layout. + */ +.dijitBorderContainer, .dijitBorderContainerNoGutter { + position:relative; + overflow: hidden; + z-index: 0; /* so z-index settings below have no effect outside of the BorderContainer */ +} + +.dijitBorderContainerPane, +.dijitBorderContainerNoGutterPane { + position: absolute !important; /* !important to override position:relative in dijitTabContainer etc. */ + z-index: 2; /* above the splitters so that off-by-one browser errors don't cover up border of pane */ +} + +.dijitBorderContainer > .dijitTextArea { + /* On Safari, for SimpleTextArea inside a BorderContainer, + don't want to display the grip to resize */ + resize: none; +} + +.dijitGutter { + /* gutter is just a place holder for empty space between panes in BorderContainer */ + position: absolute; + font-size: 1px; /* needed by IE6 even though div is empty, otherwise goes to 15px */ +} + +/* SplitContainer + + 'V' == container that splits vertically (up/down) + 'H' = horizontal (left/right) +*/ + +.dijitSplitter { + position: absolute; + overflow: hidden; + z-index: 10; /* above the panes so that splitter focus is visible on FF, see #7583*/ + background-color: #fff; + border-color: gray; + border-style: solid; + border-width: 0; +} +.dj_ie .dijitSplitter { + z-index: 1; /* behind the panes so that pane borders aren't obscured see test_Gui.html/[14392] */ +} + +.dijitSplitterActive { + z-index: 11 !important; +} + +.dijitSplitterCover { + position:absolute; + z-index:-1; + top:0; + left:0; + width:100%; + height:100%; +} + +.dijitSplitterCoverActive { + z-index:3 !important; +} + +/* #6945: stop mouse events */ +.dj_ie .dijitSplitterCover { + background: white; + opacity: 0; +} +.dj_ie6 .dijitSplitterCover, +.dj_ie7 .dijitSplitterCover, +.dj_ie8 .dijitSplitterCover { + filter: alpha(opacity=0); +} + +.dijitSplitterH { + height: 7px; + border-top:1px; + border-bottom:1px; + cursor: row-resize; + -webkit-tap-highlight-color: transparent; +} +.dijitSplitterV { + width: 7px; + border-left:1px; + border-right:1px; + cursor: col-resize; + -webkit-tap-highlight-color: transparent; +} +.dijitSplitContainer { + position: relative; + overflow: hidden; + display: block; +} + +.dijitSplitPane { + position: absolute; +} + +.dijitSplitContainerSizerH, +.dijitSplitContainerSizerV { + position:absolute; + font-size: 1px; + background-color: ThreeDFace; + border: 1px solid; + border-color: ThreeDHighlight ThreeDShadow ThreeDShadow ThreeDHighlight; + margin: 0; +} + +.dijitSplitContainerSizerH .thumb, .dijitSplitterV .dijitSplitterThumb { + overflow:hidden; + position:absolute; + top:49%; +} + +.dijitSplitContainerSizerV .thumb, .dijitSplitterH .dijitSplitterThumb { + position:absolute; + left:49%; +} + +.dijitSplitterShadow, +.dijitSplitContainerVirtualSizerH, +.dijitSplitContainerVirtualSizerV { + font-size: 1px; + background-color: ThreeDShadow; + -moz-opacity: 0.5; + opacity: 0.5; + filter: Alpha(Opacity=50); + margin: 0; +} + +.dijitSplitContainerSizerH, .dijitSplitContainerVirtualSizerH { + cursor: col-resize; +} + +.dijitSplitContainerSizerV, .dijitSplitContainerVirtualSizerV { + cursor: row-resize; +} + +.dj_a11y .dijitSplitterH { + border-top:1px solid #d3d3d3 !important; + border-bottom:1px solid #d3d3d3 !important; +} +.dj_a11y .dijitSplitterV { + border-left:1px solid #d3d3d3 !important; + border-right:1px solid #d3d3d3 !important; +} + +/* ContentPane */ + +.dijitContentPane { + display: block; + overflow: auto; /* if we don't have this (or overflow:hidden), then Widget.resizeTo() doesn't make sense for ContentPane */ + -webkit-overflow-scrolling: touch; +} + +.dijitContentPaneSingleChild { + /* + * if the ContentPane holds a single layout widget child which is being sized to match the content pane, + * then the ContentPane should never get a scrollbar (but it does due to browser bugs, see #9449 + */ + overflow: hidden; +} + +.dijitContentPaneLoading .dijitIconLoading, +.dijitContentPaneError .dijitIconError { + margin-right: 9px; +} + +/* TitlePane and Fieldset */ + +.dijitTitlePane { + display: block; + overflow: hidden; +} +.dijitFieldset { + border: 1px solid gray; +} +.dijitTitlePaneTitle, .dijitFieldsetTitle { + cursor: pointer; + -webkit-tap-highlight-color: transparent; +} +.dijitTitlePaneTitleFixedOpen, .dijitTitlePaneTitleFixedClosed, +.dijitFieldsetTitleFixedOpen, .dijitFieldsetTitleFixedClosed { + /* TitlePane or Fieldset that cannot be toggled */ + cursor: default; +} +.dijitTitlePaneTitle * { + vertical-align: middle; +} +.dijitTitlePane .dijitArrowNodeInner, .dijitFieldset .dijitArrowNodeInner { + /* normally, hide arrow text in favor of icon */ + display: none; +} +.dj_a11y .dijitTitlePane .dijitArrowNodeInner, .dj_a11y .dijitFieldset .dijitArrowNodeInner { + /* ... except in a11y mode, then show text arrow */ + display: inline; + font-family: monospace; /* because - and + are different widths */ +} +.dj_a11y .dijitTitlePane .dijitArrowNode, .dj_a11y .dijitFieldset .dijitArrowNode { + /* ... and hide icon (TODO: just point dijitIcon class on the icon, and it hides automatically) */ + display: none; +} +.dijitTitlePaneTitleFixedOpen .dijitArrowNode, .dijitTitlePaneTitleFixedOpen .dijitArrowNodeInner, +.dijitTitlePaneTitleFixedClosed .dijitArrowNode, .dijitTitlePaneTitleFixedClosed .dijitArrowNodeInner, +.dijitFieldsetTitleFixedOpen .dijitArrowNode, .dijitFieldsetTitleFixedOpen .dijitArrowNodeInner, +.dijitFieldsetTitleFixedClosed .dijitArrowNode, .dijitFieldsetTitleFixedClosed .dijitArrowNodeInner { + /* don't show the open close icon or text arrow; it makes the user think the pane is closable */ + display: none !important; /* !important to override above a11y rules to show text arrow */ +} + +.dj_ie6 .dijitTitlePaneContentOuter, +.dj_ie6 .dijitTitlePane .dijitTitlePaneTitle { + /* force hasLayout to ensure borders etc, show up */ + zoom: 1; +} + +/* Color Palette + * Sizes designed so that table cell positions match icons in underlying image, + * which appear at 20x20 intervals. + */ + +.dijitColorPalette { + border: 1px solid #999; + background: #fff; + position: relative; +} + +.dijitColorPalette .dijitPaletteTable { + /* Table that holds the palette cells, and overlays image file with color swatches. + * padding/margin to align table with image. + */ + padding: 2px 3px 3px 3px; + position: relative; + overflow: hidden; + outline: 0; + border-collapse: separate; +} +.dj_ie6 .dijitColorPalette .dijitPaletteTable, +.dj_ie7 .dijitColorPalette .dijitPaletteTable, +.dj_iequirks .dijitColorPalette .dijitPaletteTable { + /* using padding above so that focus border isn't cutoff on moz/webkit, + * but using margin on IE because padding doesn't seem to work + */ + padding: 0; + margin: 2px 3px 3px 3px; +} + +.dijitColorPalette .dijitPaletteCell { + /* in the */ + font-size: 1px; + vertical-align: middle; + text-align: center; + background: none; +} +.dijitColorPalette .dijitPaletteImg { + /* Called dijitPaletteImg for back-compat, this actually wraps the color swatch with a border and padding */ + padding: 1px; /* white area between gray border and color swatch */ + border: 1px solid #999; + margin: 2px 1px; + cursor: default; + font-size: 1px; /* prevent from getting bigger just to hold a character */ +} +.dj_gecko .dijitColorPalette .dijitPaletteImg { + padding-bottom: 0; /* workaround rendering glitch on FF, it adds an extra pixel at the bottom */ +} +.dijitColorPalette .dijitColorPaletteSwatch { + /* the actual part where the color is */ + width: 14px; + height: 12px; +} +.dijitPaletteTable td { + padding: 0; +} +.dijitColorPalette .dijitPaletteCell:hover .dijitPaletteImg { + /* hovered color swatch */ + border: 1px solid #000; +} + +.dijitColorPalette .dijitPaletteCell:active .dijitPaletteImg, +.dijitColorPalette .dijitPaletteTable .dijitPaletteCellSelected .dijitPaletteImg { + border: 2px solid #000; + margin: 1px 0; /* reduce margin to compensate for increased border */ +} + + +.dj_a11y .dijitColorPalette .dijitPaletteTable, +.dj_a11y .dijitColorPalette .dijitPaletteTable * { + /* table cells are to catch events, but the swatches are in the PaletteImg behind the table */ + background-color: transparent !important; +} + +/* AccordionContainer */ + +.dijitAccordionContainer { + border:1px solid #b7b7b7; + border-top:0 !important; +} +.dijitAccordionTitle { + cursor: pointer; + -webkit-tap-highlight-color: transparent; +} +.dijitAccordionTitleSelected { + cursor: default; +} + +/* images off, high-contrast mode styles */ +.dijitAccordionTitle .arrowTextUp, +.dijitAccordionTitle .arrowTextDown { + display: none; + font-size: 0.65em; + font-weight: normal !important; +} + +.dj_a11y .dijitAccordionTitle .arrowTextUp, +.dj_a11y .dijitAccordionTitleSelected .arrowTextDown { + display: inline; +} + +.dj_a11y .dijitAccordionTitleSelected .arrowTextUp { + display: none; +} + +.dijitAccordionChildWrapper { + /* this is the node whose height is adjusted */ + overflow: hidden; +} + +/* Calendar */ + +.dijitCalendarContainer table { + width: auto; /* in case user has specified a width for the TABLE nodes, see #10553 */ + clear: both; /* clear margin created for left/right month arrows; needed on IE10 for CalendarLite */ +} +.dijitCalendarContainer th, .dijitCalendarContainer td { + padding: 0; + vertical-align: middle; +} + +.dijitCalendarMonthContainer { + text-align: center; +} +.dijitCalendarDecrementArrow { + float: left; +} +.dijitCalendarIncrementArrow { + float: right; +} + +.dijitCalendarYearLabel { + white-space: nowrap; /* make sure previous, current, and next year appear on same row */ +} + +.dijitCalendarNextYear { + margin:0 0 0 0.55em; +} + +.dijitCalendarPreviousYear { + margin:0 0.55em 0 0; +} + +.dijitCalendarIncrementControl { + vertical-align: middle; +} + +.dijitCalendarIncrementControl, +.dijitCalendarDateTemplate, +.dijitCalendarMonthLabel, +.dijitCalendarPreviousYear, +.dijitCalendarNextYear { + cursor: pointer; + -webkit-tap-highlight-color: transparent; +} + +.dijitCalendarDisabledDate { + color: gray; + text-decoration: line-through; + cursor: default; +} + +.dijitSpacer { + /* don't display it, but make it affect the width */ + position: relative; + height: 1px; + overflow: hidden; + visibility: hidden; +} + +/* Styling for month drop down list */ + +.dijitCalendarMonthMenu .dijitCalendarMonthLabel { + text-align:center; +} + +/* Menu */ + +.dijitMenu { + border:1px solid black; + background-color:white; +} +.dijitMenuTable { + border-collapse:collapse; + border-width:0; + background-color:white; +} + +/* workaround for webkit bug #8427, remove this when it is fixed upstream */ +.dj_webkit .dijitMenuTable td[colspan="2"]{ + border-right:hidden; +} + +.dijitMenuItem { + text-align: left; + white-space: nowrap; + padding:.1em .2em; + cursor:pointer; + -webkit-tap-highlight-color: transparent; +} + +/* +No need to show a focus border since it's obvious from the shading, and there's a .dj_a11y .dijitMenuItemSelected +rule below that handles the high contrast case when there's no shading. +Hiding the focus border also works around webkit bug https://code.google.com/p/chromium/issues/detail?id=125779. +*/ +.dijitMenuItem:focus { + outline: none +} + +.dijitMenuPassive .dijitMenuItemHover, +.dijitMenuItemSelected { + /* + * dijitMenuItemHover refers to actual mouse over + * dijitMenuItemSelected is used after a menu has been "activated" by + * clicking it, tabbing into it, or being opened from a parent menu, + * and denotes that the menu item has focus or that focus is on a child + * menu + */ + background-color:black; + color:white; +} + +.dijitMenuItemIcon, .dijitMenuExpand { + background-repeat: no-repeat; +} + +.dijitMenuItemDisabled * { + /* for a disabled menu item, just set it to mostly transparent */ + opacity:0.5; + cursor:default; +} +.dj_ie .dj_a11y .dijitMenuItemDisabled, +.dj_ie .dj_a11y .dijitMenuItemDisabled *, +.dj_ie .dijitMenuItemDisabled * { + color: gray; + filter: alpha(opacity=35); +} + +.dijitMenuItemLabel { + vertical-align: middle; +} + +.dj_a11y .dijitMenuItemSelected { + border: 1px dotted black !important; /* for 2.0 use outline instead, to prevent jitter */ +} + +.dj_a11y .dijitMenuItemSelected .dijitMenuItemLabel { + border-width: 1px; + border-style: solid; +} +.dj_ie8 .dj_a11y .dijitMenuItemLabel { + position:static; +} + +.dijitMenuExpandA11y { + display: none; +} +.dj_a11y .dijitMenuExpandA11y { + display: inline; +} + +.dijitMenuSeparator td { + border: 0; + padding: 0; +} + +/* separator can be two pixels -- set border of either one to 0 to have only one */ +.dijitMenuSeparatorTop { + height: 50%; + margin: 0; + margin-top:3px; + font-size: 1px; +} + +.dijitMenuSeparatorBottom { + height: 50%; + margin: 0; + margin-bottom:3px; + font-size: 1px; +} + +/* CheckedMenuItem and RadioMenuItem */ +.dijitMenuItemIconChar { + display: none; /* don't display except in high contrast mode */ + visibility: hidden; /* for high contrast mode when menuitem is unchecked: leave space for when it is checked */ +} +.dj_a11y .dijitMenuItemIconChar { + display: inline; /* display character in high contrast mode, since icon doesn't show */ +} +.dijitCheckedMenuItemChecked .dijitMenuItemIconChar, +.dijitRadioMenuItemChecked .dijitMenuItemIconChar { + visibility: visible; /* menuitem is checked */ +} +.dj_ie .dj_a11y .dijitMenuBar .dijitMenuItem { + /* so bottom border of MenuBar appears on IE7 in high-contrast mode */ + margin: 0; +} + +/* StackContainer */ + +.dijitStackController .dijitToggleButtonChecked * { + cursor: default; /* because pressing it has no effect */ +} + +/*** +TabContainer + +Main class hierarchy: + +.dijitTabContainer - the whole TabContainer + .dijitTabController / .dijitTabListContainer-top - wrapper for tab buttons, scroll buttons + .dijitTabListWrapper / .dijitTabContainerTopStrip - outer wrapper for tab buttons (normal width) + .nowrapTabStrip / .dijitTabContainerTop-tabs - inner wrapper for tab buttons (50K width) + .dijitTabPaneWrapper - wrapper for content panes, has all borders except the one between content and tabs +***/ + +.dijitTabContainer { + z-index: 0; /* so z-index settings below have no effect outside of the TabContainer */ + overflow: visible; /* prevent off-by-one-pixel errors from hiding bottom border (opposite tab labels) */ +} +.dj_ie6 .dijitTabContainer { + /* workaround IE6 problem when tall content overflows TabContainer, see editor/test_FullScreen.html */ + overflow: hidden; + +} +.dijitTabContainerNoLayout { + width: 100%; /* otherwise ScrollingTabController goes to 50K pixels wide */ +} + +.dijitTabContainerBottom-tabs, +.dijitTabContainerTop-tabs, +.dijitTabContainerLeft-tabs, +.dijitTabContainerRight-tabs { + z-index: 1; + overflow: visible !important; /* so tabs can cover up border adjacent to container */ +} + +.dijitTabController { + z-index: 1; +} +.dijitTabContainerBottom-container, +.dijitTabContainerTop-container, +.dijitTabContainerLeft-container, +.dijitTabContainerRight-container { + z-index:0; + overflow: hidden; + border: 1px solid black; +} +.nowrapTabStrip { + width: 50000px; + display: block; + position: relative; + text-align: left; /* just in case ancestor has non-standard setting */ + z-index: 1; +} +.dijitTabListWrapper { + overflow: hidden; + z-index: 1; +} + +.dj_a11y .tabStripButton img { + /* hide the icons (or rather the empty space where they normally appear) because text will appear instead */ + display: none; +} + +.dijitTabContainerTop-tabs { + border-bottom: 1px solid black; +} +.dijitTabContainerTop-container { + border-top: 0; +} + +.dijitTabContainerLeft-tabs { + border-right: 1px solid black; + float: left; /* needed for IE7 RTL mode */ +} +.dijitTabContainerLeft-container { + border-left: 0; +} + +.dijitTabContainerBottom-tabs { + border-top: 1px solid black; +} +.dijitTabContainerBottom-container { + border-bottom: 0; +} + +.dijitTabContainerRight-tabs { + border-left: 1px solid black; + float: left; /* needed for IE7 RTL mode */ +} +.dijitTabContainerRight-container { + border-right: 0; +} + +div.dijitTabDisabled, .dj_ie div.dijitTabDisabled { + cursor: auto; +} + +.dijitTab { + position:relative; + cursor:pointer; + -webkit-tap-highlight-color: transparent; + white-space:nowrap; + z-index:3; +} +.dijitTab * { + /* make tab icons and close icon line up w/text */ + vertical-align: middle; +} +.dijitTabChecked { + cursor: default; /* because clicking will have no effect */ +} + +.dijitTabContainerTop-tabs .dijitTab { + top: 1px; /* to overlap border on .dijitTabContainerTop-tabs */ +} +.dijitTabContainerBottom-tabs .dijitTab { + top: -1px; /* to overlap border on .dijitTabContainerBottom-tabs */ +} +.dijitTabContainerLeft-tabs .dijitTab { + left: 1px; /* to overlap border on .dijitTabContainerLeft-tabs */ +} +.dijitTabContainerRight-tabs .dijitTab { + left: -1px; /* to overlap border on .dijitTabContainerRight-tabs */ +} + + +.dijitTabContainerTop-tabs .dijitTab, +.dijitTabContainerBottom-tabs .dijitTab { + /* Inline-block */ + display:inline-block; /* webkit and FF3 */ + #zoom: 1; /* set hasLayout:true to mimic inline-block */ + #display:inline; /* don't use .dj_ie since that increases the priority */ +} + +.tabStripButton { + z-index: 12; +} + +.dijitTabButtonDisabled .tabStripButton { + display: none; +} + + +.dijitTabCloseButton { + margin-left: 1em; +} + +.dijitTabCloseText { + display:none; +} + +.dijitTab .tabLabel { + /* make sure tabs w/close button and w/out close button are same height, even w/small (<15px) font. + * assumes <=15px height for close button icon. + */ + min-height: 15px; + display: inline-block; +} +.dijitNoIcon { + /* applied to / node when there is no icon specified */ + display: none; +} +.dj_ie6 .dijitTab .dijitNoIcon { + /* because min-height (on .tabLabel, above) doesn't work on IE6 */ + display: inline; + height: 15px; + width: 1px; +} + +/* images off, high-contrast mode styles */ + +.dj_a11y .dijitTabCloseButton { + background-image: none !important; + width: auto !important; + height: auto !important; +} + +.dj_a11y .dijitTabCloseText { + display: inline; +} + +.dijitTabPane, +.dijitStackContainer-child, +.dijitAccordionContainer-child { + /* children of TabContainer, StackContainer, and AccordionContainer shouldn't have borders + * b/c a border is already there from the TabContainer/StackContainer/AccordionContainer itself. + */ + border: none !important; +} + +/* InlineEditBox */ +.dijitInlineEditBoxDisplayMode { + border: 1px solid transparent; /* so keyline (border) on hover can appear without screen jump */ + cursor: text; +} + +.dj_a11y .dijitInlineEditBoxDisplayMode, +.dj_ie6 .dijitInlineEditBoxDisplayMode { + /* except that IE6 doesn't support transparent borders, nor does high contrast mode */ + border: none; +} + +.dijitInlineEditBoxDisplayModeHover, +.dj_a11y .dijitInlineEditBoxDisplayModeHover, +.dj_ie6 .dijitInlineEditBoxDisplayModeHover { + /* An InlineEditBox in view mode (click this to edit the text) */ + background-color: #e2ebf2; + border: solid 1px black; +} + +.dijitInlineEditBoxDisplayModeDisabled { + cursor: default; +} + +/* Tree */ +.dijitTree { + overflow: auto; /* for scrollbars when Tree has a height setting, and to prevent wrapping around float elements, see #11491 */ + -webkit-tap-highlight-color: transparent; +} + +.dijitTreeContainer { + float: left; /* for correct highlighting during horizontal scroll, see #16132 */ +} + +.dijitTreeIndent { + /* amount to indent each tree node (relative to parent node) */ + width: 19px; +} + +.dijitTreeRow, .dijitTreeContent { + white-space: nowrap; +} + +.dj_ie .dijitTreeLabel:focus { + /* workaround IE9 behavior where down arrowing through TreeNodes doesn't show focus outline */ + outline: 1px dotted black; +} + +.dijitTreeRow img { + /* make the expando and folder icons line up with the label */ + vertical-align: middle; +} + +.dijitTreeContent { + cursor: default; +} + +.dijitExpandoText { + display: none; +} + +.dj_a11y .dijitExpandoText { + display: inline; + padding-left: 10px; + padding-right: 10px; + font-family: monospace; + border-style: solid; + border-width: thin; + cursor: pointer; +} + +.dijitTreeLabel { + margin: 0 4px; +} + +/* Dialog */ + +.dijitDialog { + position: absolute; + z-index: 999; + overflow: hidden; /* override overflow: auto; from ContentPane to make dragging smoother */ +} + +.dijitDialogTitleBar { + cursor: move; +} +.dijitDialogFixed .dijitDialogTitleBar { + cursor:default; +} +.dijitDialogCloseIcon { + cursor: pointer; + -webkit-tap-highlight-color: transparent; +} +.dijitDialogPaneContent { + -webkit-overflow-scrolling: touch; +} +.dijitDialogUnderlayWrapper { + position: absolute; + left: 0; + top: 0; + z-index: 998; + display: none; + background: transparent !important; +} + +.dijitDialogUnderlay { + background: #eee; + opacity: 0.5; +} + +.dj_ie .dijitDialogUnderlay { + filter: alpha(opacity=50); +} + +/* images off, high-contrast mode styles */ +.dj_a11y .dijitSpinnerButtonContainer, +.dj_a11y .dijitDialog { + opacity: 1 !important; + background-color: white !important; +} + +.dijitDialog .closeText { + display:none; + /* for the onhover border in high contrast on IE: */ + position:absolute; +} + +.dj_a11y .dijitDialog .closeText { + display:inline; +} + +/* Slider */ + +.dijitSliderMoveable { + z-index:99; + position:absolute !important; + display:block; + vertical-align:middle; +} + +.dijitSliderMoveableH { + right:0; +} +.dijitSliderMoveableV { + right:50%; +} + +.dj_a11y div.dijitSliderImageHandle, +.dijitSliderImageHandle { + margin:0; + padding:0; + position:relative !important; + border:8px solid gray; + width:0; + height:0; + cursor: pointer; + -webkit-tap-highlight-color: transparent; +} +.dj_iequirks .dj_a11y .dijitSliderImageHandle { + font-size: 0; +} +.dj_ie7 .dijitSliderImageHandle { + overflow: hidden; /* IE7 workaround to make slider handle VISIBLE in non-a11y mode */ +} +.dj_ie7 .dj_a11y .dijitSliderImageHandle { + overflow: visible; /* IE7 workaround to make slider handle VISIBLE in a11y mode */ +} +.dj_a11y .dijitSliderFocused .dijitSliderImageHandle { + border:4px solid #000; + height:8px; + width:8px; +} + +.dijitSliderImageHandleV { + top:-8px; + right: -50%; +} + +.dijitSliderImageHandleH { + left:50%; + top:-5px; + vertical-align:top; +} + +.dijitSliderBar { + border-style:solid; + border-color:black; + cursor: pointer; + -webkit-tap-highlight-color: transparent; +} + +.dijitSliderBarContainerV { + position:relative; + height:100%; + z-index:1; +} + +.dijitSliderBarContainerH { + position:relative; + z-index:1; +} + +.dijitSliderBarH { + height:4px; + border-width:1px 0; +} + +.dijitSliderBarV { + width:4px; + border-width:0 1px; +} + +.dijitSliderProgressBar { + background-color:red; + z-index:1; +} + +.dijitSliderProgressBarV { + position:static !important; + height:0; + vertical-align:top; + text-align:left; +} + +.dijitSliderProgressBarH { + position:absolute !important; + width:0; + vertical-align:middle; + overflow:visible; +} + +.dijitSliderRemainingBar { + overflow:hidden; + background-color:transparent; + z-index:1; +} + +.dijitSliderRemainingBarV { + height:100%; + text-align:left; +} + +.dijitSliderRemainingBarH { + width:100% !important; +} + +/* the slider bumper is the space consumed by the slider handle when it hangs over an edge */ +.dijitSliderBumper { + overflow:hidden; + z-index:1; +} + +.dijitSliderBumperV { + width:4px; + height:8px; + border-width:0 1px; +} + +.dijitSliderBumperH { + width:8px; + height:4px; + border-width:1px 0; +} + +.dijitSliderBottomBumper, +.dijitSliderLeftBumper { + background-color:red; +} + +.dijitSliderTopBumper, +.dijitSliderRightBumper { + background-color:transparent; +} + +.dijitSliderDecoration { + text-align:center; +} + +.dijitSliderDecorationC, +.dijitSliderDecorationV { + position: relative; /* needed for IE+quirks+RTL+vertical (rendering bug) but add everywhere for custom styling consistency but this messes up IE horizontal sliders */ +} + +.dijitSliderDecorationH { + width: 100%; +} + +.dijitSliderDecorationV { + height: 100%; + white-space: nowrap; +} + +.dijitSliderButton { + font-family:monospace; + margin:0; + padding:0; + display:block; +} + +.dj_a11y .dijitSliderButtonInner { + visibility:visible !important; +} + +.dijitSliderButtonContainer { + text-align:center; + height:0; /* ??? */ +} +.dijitSliderButtonContainer * { + cursor: pointer; + -webkit-tap-highlight-color: transparent; +} + +.dijitSlider .dijitButtonNode { + padding:0; + display:block; +} + +.dijitRuleContainer { + position:relative; + overflow:visible; +} + +.dijitRuleContainerV { + height:100%; + line-height:0; + float:left; + text-align:left; +} + +.dj_opera .dijitRuleContainerV { + line-height:2%; +} + +.dj_ie .dijitRuleContainerV { + line-height:normal; +} + +.dj_gecko .dijitRuleContainerV { + margin:0 0 1px 0; /* mozilla bug workaround for float:left,height:100% block elements */ +} + +.dijitRuleMark { + position:absolute; + border:1px solid black; + line-height:0; + height:100%; +} + +.dijitRuleMarkH { + width:0; + border-top-width:0 !important; + border-bottom-width:0 !important; + border-left-width:0 !important; +} + +.dijitRuleLabelContainer { + position:absolute; +} + +.dijitRuleLabelContainerH { + text-align:center; + display:inline-block; +} + +.dijitRuleLabelH { + position:relative; + left:-50%; +} + +.dijitRuleLabelV { + /* so that long labels don't overflow to multiple rows, or overwrite slider itself */ + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.dijitRuleMarkV { + height:0; + border-right-width:0 !important; + border-bottom-width:0 !important; + border-left-width:0 !important; + width:100%; + left:0; +} + +.dj_ie .dijitRuleLabelContainerV { + margin-top:-.55em; +} + +.dj_a11y .dijitSliderReadOnly, +.dj_a11y .dijitSliderDisabled { + opacity:0.6; +} +.dj_ie .dj_a11y .dijitSliderReadOnly .dijitSliderBar, +.dj_ie .dj_a11y .dijitSliderDisabled .dijitSliderBar { + filter: alpha(opacity=40); +} + +/* + and - Slider buttons: override theme settings to display icons */ +.dj_a11y .dijitSlider .dijitSliderButtonContainer div { + font-family: monospace; /* otherwise hyphen is larger and more vertically centered */ + font-size: 1em; + line-height: 1em; + height: auto; + width: auto; + margin: 0 4px; +} + +/* Icon-only buttons (often in toolbars) still display the text in high-contrast mode */ +.dj_a11y .dijitButtonContents .dijitButtonText, +.dj_a11y .dijitTab .tabLabel { + display: inline !important; +} +.dj_a11y .dijitSelect .dijitButtonText { + display: inline-block !important; +} + +/* TextArea, SimpleTextArea */ +.dijitTextArea { + width:100%; + overflow-y: auto; /* w/out this IE's SimpleTextArea goes to overflow: scroll */ +} +.dijitTextArea[cols] { + width:auto; /* SimpleTextArea cols */ +} +.dj_ie .dijitTextAreaCols { + width:auto; +} + +.dijitExpandingTextArea { + /* for auto exanding textarea (called Textarea currently, rename for 2.0) don't want to display the grip to resize */ + resize: none; +} + + +/* Toolbar + * Note that other toolbar rules (for objects in toolbars) are scattered throughout this file. + */ + +.dijitToolbarSeparator { + height: 18px; + width: 5px; + padding: 0 1px; + margin: 0; +} + +/* Editor */ +.dijitIEFixedToolbar { + position:absolute; + /* top:0; */ + top: expression(eval((document.documentElement||document.body).scrollTop)); +} + +.dijitEditor { + display: block; /* prevents glitch on FF with InlineEditBox, see #8404 */ +} + +.dijitEditorDisabled, +.dijitEditorReadOnly { + color: gray; +} + +/* TimePicker */ + +.dijitTimePicker { + background-color: white; +} +.dijitTimePickerItem { + cursor:pointer; + -webkit-tap-highlight-color: transparent; +} +.dijitTimePickerItemHover { + background-color:gray; + color:white; +} +.dijitTimePickerItemSelected { + font-weight:bold; + color:#333; + background-color:#b7cdee; +} +.dijitTimePickerItemDisabled { + color:gray; + text-decoration:line-through; +} + +.dijitTimePickerItemInner { + text-align:center; + border:0; + padding:2px 8px 2px 8px; +} + +.dijitTimePickerTick, +.dijitTimePickerMarker { + border-bottom:1px solid gray; +} + +.dijitTimePicker .dijitDownArrowButton { + border-top: none !important; +} + +.dijitTimePickerTick { + color:#CCC; +} + +.dijitTimePickerMarker { + color:black; + background-color:#CCC; +} + +.dj_a11y .dijitTimePickerItemSelected .dijitTimePickerItemInner { + border: solid 4px black; +} +.dj_a11y .dijitTimePickerItemHover .dijitTimePickerItemInner { + border: dashed 4px black; +} + + +.dijitToggleButtonIconChar { + /* character (instead of icon) to show that ToggleButton is checked */ + display:none !important; +} +.dj_a11y .dijitToggleButton .dijitToggleButtonIconChar { + display:inline !important; + visibility:hidden; +} +.dj_ie6 .dijitToggleButtonIconChar, .dj_ie6 .tabStripButton .dijitButtonText { + font-family: "Arial Unicode MS"; /* otherwise the a11y character (checkmark, arrow, etc.) appears as a box */ +} +.dj_a11y .dijitToggleButtonChecked .dijitToggleButtonIconChar { + display: inline !important; /* In high contrast mode, display the check symbol */ + visibility:visible !important; +} + +.dijitArrowButtonChar { + display:none !important; +} +.dj_a11y .dijitArrowButtonChar { + display:inline !important; +} + +.dj_a11y .dijitDropDownButton .dijitArrowButtonInner, +.dj_a11y .dijitComboButton .dijitArrowButtonInner { + display:none !important; +} + +/* Select */ +.dj_a11y .dijitSelect { + border-collapse: separate !important; + border-width: 1px; + border-style: solid; +} +.dj_ie .dijitSelect { + vertical-align: middle; /* Set this back for what we hack in dijit inline */ +} +.dj_ie6 .dijitSelect .dijitValidationContainer, +.dj_ie8 .dijitSelect .dijitButtonText { + vertical-align: top; +} +.dj_ie6 .dijitTextBox .dijitInputContainer, +.dj_iequirks .dijitTextBox .dijitInputContainer, +.dj_ie6 .dijitTextBox .dijitArrowButtonInner, +.dj_ie6 .dijitSpinner .dijitSpinnerButtonInner, +.dijitSelect .dijitSelectLabel { + vertical-align: baseline; +} + +.dijitNumberTextBox { + text-align: left; + direction: ltr; +} + +.dijitNumberTextBox .dijitInputInner { + text-align: inherit; /* input */ +} + +.dijitNumberTextBox input.dijitInputInner, +.dijitCurrencyTextBox input.dijitInputInner, +.dijitSpinner input.dijitInputInner { + text-align: right; +} + +.dj_ie8 .dijitNumberTextBox input.dijitInputInner, .dj_ie9 .dijitNumberTextBox input.dijitInputInner, +.dj_ie8 .dijitCurrencyTextBox input.dijitInputInner, .dj_ie9 .dijitCurrencyTextBox input.dijitInputInner, +.dj_ie8 .dijitSpinner input.dijitInputInner, .dj_ie9 .dijitSpinner input.dijitInputInner { + /* workaround bug where caret invisible in empty textboxes */ + padding-right: 1px !important; +} + +.dijitToolbar .dijitSelect { + margin: 0; +} +.dj_webkit .dijitToolbar .dijitSelect { + padding-left: 0.3em; +} +.dijitSelect .dijitButtonContents { + padding: 0; + white-space: nowrap; + text-align: left; + border-style: none solid none none; + border-width: 1px; +} +.dijitSelectFixedWidth .dijitButtonContents { + width: 100%; +} + +.dijitSelectMenu .dijitMenuItemIcon { + /* avoid blank area in left side of menu (since we have no icons) */ + display:none; +} +.dj_ie6 .dijitSelectMenu .dijitMenuItemLabel, +.dj_ie7 .dijitSelectMenu .dijitMenuItemLabel { + /* Set back to static due to bug in ie6/ie7 - See Bug #9651 */ + position: static; +} + +/* Fix the baseline of our label (for multi-size font elements) */ +.dijitSelectLabel * +{ + vertical-align: baseline; +} + +/* Styling for the currently-selected option (rich text can mess this up) */ +.dijitSelectSelectedOption * { + font-weight: bold; +} + +/* Fix the styling of the dropdown menu to be more combobox-like */ +.dijitSelectMenu { + border-width: 1px; +} + +/* Used in cases, such as FullScreen plugin, when we need to force stuff to static positioning. */ +.dijitForceStatic { + position: static !important; +} + +/**** Disabled cursor *****/ +.dijitReadOnly *, +.dijitDisabled *, +.dijitReadOnly, +.dijitDisabled { + /* a region the user would be able to click on, but it's disabled */ + cursor: default; +} + +/* Drag and Drop */ +.dojoDndItem { + padding: 2px; /* will be replaced by border during drag over (dojoDndItemBefore, dojoDndItemAfter) */ + + /* Prevent magnifying-glass text selection icon to appear on mobile webkit as it causes a touchout event */ + -webkit-touch-callout: none; + -webkit-user-select: none; /* Disable selection/Copy of UIWebView */ +} +.dojoDndHorizontal .dojoDndItem { + /* make contents of horizontal container be side by side, rather than vertical */ + #display: inline; + display: inline-block; +} + +.dojoDndItemBefore, +.dojoDndItemAfter { + border: 0px solid #369; +} +.dojoDndItemBefore { + border-width: 2px 0 0 0; + padding: 0 2px 2px 2px; +} +.dojoDndItemAfter { + border-width: 0 0 2px 0; + padding: 2px 2px 0 2px; +} +.dojoDndHorizontal .dojoDndItemBefore { + border-width: 0 0 0 2px; + padding: 2px 2px 2px 0; +} +.dojoDndHorizontal .dojoDndItemAfter { + border-width: 0 2px 0 0; + padding: 2px 0 2px 2px; +} + +.dojoDndItemOver { + cursor:pointer; +} +.dj_gecko .dijitArrowButtonInner INPUT, +.dj_gecko INPUT.dijitArrowButtonInner { + -moz-user-focus:ignore; +} +.dijitFocused .dijitMenuItemShortcutKey { + text-decoration: underline; +} diff --git a/src/main/resources/static/dijit/themes/dijit_rtl.css b/src/main/resources/static/dijit/themes/dijit_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..13bea86c651b1d00e3694799b8aacb7f3740d899 --- /dev/null +++ b/src/main/resources/static/dijit/themes/dijit_rtl.css @@ -0,0 +1,185 @@ +.dijitRtl .dijitOffScreen { + /* align on the right side rather than the left so no horizontal scroll bar shown */ + left: auto !important; + right: -10000px !important; +} + +.dijitRtl .dijitPlaceHolder { + left: auto; + right: 0; +} + +/* Menu */ + +.dijitMenuItemRtl { + text-align: right; +} + +/* Button */ + +.dj_iequirks .dijitComboButtonRtl button { + /* workaround bug where label invisible (themeTesterQuirk.html?dir=rtl) */ + float:left; +} +.dj_ie .dijitTextBoxRtl .dijitInputContainer { + clear: right; +} + +/* TextBox, ComboBox, Spinner */ + +.dijitTextBoxRtl .dijitValidationContainer, +.dijitTextBoxRtl .dijitSpinnerButtonContainer, +.dijitComboBoxRtl .dijitArrowButtonContainer { + /* combobox and spinner: line between the input area and the drop down button */ + border-right-width: 1px !important; + border-left-width: 0 !important; +} + +.dijitSpinnerRtl .dijitSpinnerButtonContainer .dijitArrowButton { + right: 0; + left: auto; +} + +.dijitSelectRtl .dijitButtonText { + float: right; +} + +.dijitTextBoxRtl .dijitSpinnerButtonContainer, +.dijitValidationTextBoxRtl .dijitValidationContainer, +.dijitTextBoxRtl .dijitArrowButtonContainer { + float: left; +} + +div.dijitNumberTextBoxRtl { + text-align: right; +} + +/* Calendar */ + +.dijitCalendarRtl .dijitCalendarDecrementArrow { + float: right; +} + +.dijitCalendarRtl .dijitCalendarIncrementArrow { + float: left; +} + +.dijitCalendarRtl .dijitCalendarNextYear { + margin:0 0.55em 0 0; +} + +.dijitCalendarRtl .dijitCalendarPreviousYear { + margin:0 0 0 0.55em; +} + + +/* Slider */ + +.dijitSliderRtl .dijitSliderImageHandleV { + left:auto; +} + +.dijitSliderRtl .dijitSliderImageHandleH { + left:-50%; +} + +.dijitSliderRtl .dijitSliderMoveableH { + right:auto; + left:0; +} + +.dijitSliderRtl .dijitRuleContainerV { + float:right; +} + +.dj_ie .dijitSliderRtl .dijitRuleContainerV { + text-align:right; +} + +.dj_ie .dijitSliderRtl .dijitRuleLabelV { + text-align:left; +} + +.dj_ie .dijitSliderRtl .dijitRuleLabelH { + zoom:1; +} + +.dijitSliderRtl .dijitSliderProgressBarH { + /* workarounds for IE and FF */ + float:right; + right:0; + left:auto; +} + +/* ContentPane*/ + +.dijitRtl .dijitContentPaneLoading .dijitIconLoading, +.dijitRtl .dijitContentPaneError .dijitIconError { + margin-right: 0; + margin-left: 9px; +} + +/* TabContainer */ + +.dijitTabControllerRtl .nowrapTabStrip { + text-align: right; /* just in case ancestor has non-standard setting */ +} +.dijitTabRtl .dijitTabCloseButton { + margin-left: 0; + margin-right: 1em; +} +.dj_ie6 .dijitTabRtl .tabLabel, +.dj_ie6 .dijitTabContainerRight-tabs .dijitTabRtl, +.dj_ie6 .dijitTabContainerLeft-tabs .dijitTabRtl, +.dj_ie7 .dijitTabContainerRight-tabs .dijitTabRtl, +.dj_ie7 .dijitTabContainerLeft-tabs .dijitTabRtl { + zoom: 1; +} +.dj_ie6 .dijitTabContainerRight-tabs .dijitTabRtl, +.dj_ie7 .dijitTabContainerRight-tabs .dijitTabRtl { + left: 0; +} + +.dj_ie6 .dijitTabContainerRightRtl .dijitTabContainerRight-tabs, +.dj_ie6 .dijitTabContainerLeftRtl .dijitTabContainerLeft-tabs { + /* otherwise tab labels invisible */ + width: 1%; +} + +/* TimePicker */ +.dj_ie .dijitTimePickerRtl .dijitTimePickerItem { + width:100%; +} + + +/* ColorPalette */ +.dijitColorPaletteRtl .dijitColorPaletteUnder { + /* needed in RTL mode when DropDownButton expands the ColorPalette beyond it's natural width */ + left: auto; + right: 0; +} + +/* Select */ +.dijitSelectRtl .dijitButtonContents { + border-style: none none none solid; + text-align: right; +} + +/* Tree */ + +.dijitTreeRtl .dijitTreeContainer { + float: right; /* for correct highlighting during horizontal scroll, see #16132 */ +} + +/* DnD + * These rules should apply for containers that are dir=rtl (either set directly, or inherited) + * but seems the best we can do is look for .dijitRtl on an ancestor node. + */ +.dijitRtl .dojoDndHorizontal .dojoDndItemBefore { + border-width: 0 2px 0 0; + padding: 2px 0 2px 2px; +} +.dijitRtl .dojoDndHorizontal .dojoDndItemAfter { + border-width: 0 0 0 2px; + padding: 2px 2px 2px 0; +} diff --git a/src/main/resources/static/dijit/themes/nihilo/Calendar.css b/src/main/resources/static/dijit/themes/nihilo/Calendar.css new file mode 100644 index 0000000000000000000000000000000000000000..d3ef3a8aead0342be6d3b88232e9917118927382 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/Calendar.css @@ -0,0 +1,160 @@ +/* Calendar*/ + +.nihilo .dijitCalendarIncrementControl { + /* next/prev month buttons */ + width:15px; + height:15px; + background-image: url("images/spriteRoundedIconsSmall.png"); + background-repeat: no-repeat +} +.dj_ie6 .nihilo .dijitCalendarIncrementControl { + font-size:.1em; + background-image: url("images/spriteRoundedIconsSmall.gif"); +} + +.nihilo .dijitA11ySideArrow { + display: none; +} + +.nihilo .dijitCalendarDecrease { + background-position: top left; +} +.nihilo .dijitCalendarIncrease { + background-position: -30px top; +} + +.nihilo table.dijitCalendarContainer { + font-size: 100%; + border-spacing: 0; + border-collapse: separate; + margin: 0; +} + +.nihilo .dijitCalendarMonthContainer { + /* month header cell */ + background:#d3d3d3 url("images/titleBar.png") repeat-x top; + padding-top:.3em; + padding-bottom:.2em; + text-align:center; +} +.dj_ie6 .nihilo .dijitCalendarMonthContainer th { + padding-top:.2em; + padding-bottom:.1em; +} + +.nihilo .dijitCalendarDayLabelTemplate { + /* day of week labels */ + background:#fefefe; + font-weight:normal; + padding-top:.15em; + padding-bottom:.2em; + border-bottom: 1px solid #eeeeee; + color:#293a4b; + text-align:center; +} + +.nihilo .dijitCalendarBodyContainer { + border-bottom: 1px solid #eeeeee; +} + +.nihilo .dijitCalendarMonthLabel { + color:#293a4b; + font-weight: bold; + padding: 0 4px; +} + +.nihilo .dijitCalendarDateTemplate { + /* style for each day cell */ + font-size: 0.9em; + font-weight: bold; + text-align: center; + padding: 0.3em 0.3em 0.05em 0.3em; + letter-spacing: 1px; + background-color: #fdfdfd; + border:#fdfdfd solid 1px !important; +} + +.dj_ie .nihilo .dijitCalendarDateTemplate { + padding: 0.1em .33em 0.02em .33em; +} + +.nihilo .dijitCalendarPreviousMonth, +.nihilo .dijitCalendarNextMonth { + /* days that are part of the previous or next month */ + color:#999999; + background-color:#f5f5f5 !important; + border:#f5f5f5 solid 1px !important; +} + +.nihilo .dijitCalendarCurrentMonth { + /* days that are part of this month */ +} + +.nihilo .dijitCalendarDisabledDate { + text-decoration:line-through !important; +} + +.nihilo .dijitCalendarCurrentDate { + /* cell for today's date */ + text-decoration:underline; + font-weight:bold; +} + +.nihilo .dijitCalendarSelectedDate { + /* cell for the selected date */ + background-color:#ffe284 !important; + color:black !important; + border:#f7c95c solid 1px !important; +} + + +.nihilo .dijitCalendarYearContainer { + /* footer of the table that contains the year display/selector */ + background:white url("images/titleBar.png") repeat-x top; +} + +.nihilo .dijitCalendarYearLabel { + /* container for all of 3 year labels */ + margin:0; + padding:0.4em 0 0.25em 0; + text-align:center; + font-size: 1.17em; +} + +.nihilo .dijitCalendarSelectedYear { + /* label for selected year */ + font-weight:bolder; + color:black; + padding:0.2em; + padding-bottom:0.1em; + background-color:#ffe284 !important; + border:#f7c95c solid 1px !important; +} + +.nihilo .dijitCalendarNextYear, +.nihilo .dijitCalendarPreviousYear { + /* label for next/prev years */ + color:black !important; + font-weight:normal; +} + +/* Styling for month DropDownButton */ + +.nihilo .dijitCalendar .dijitDropDownButton { + margin: 0; +} +.nihilo .dijitCalendar .dijitButtonText { + padding: 0; +} +.nihilo .dijitCalendar .dijitDropDownButton .dijitButtonNode { + background-color: transparent; + background-image: none; + padding: 0; +} + +/* Styling for month drop down list */ + +.nihilo .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover { + background-color: #ffe284; + color: #243C5F; +} diff --git a/src/main/resources/static/dijit/themes/nihilo/Calendar_rtl.css b/src/main/resources/static/dijit/themes/nihilo/Calendar_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..6fc06f4e3088b0911f49b29d92836113b9cfcafa --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/Calendar_rtl.css @@ -0,0 +1,9 @@ +/* Calendar */ + +.dijitRtl .nihilo .dijitCalendarDecrease { + background-position: -30px top; +} + +.dijitRtl .nihilo .dijitCalendarIncrease { + background-position: 0 top; +} diff --git a/src/main/resources/static/dijit/themes/nihilo/ColorPalette.css b/src/main/resources/static/dijit/themes/nihilo/ColorPalette.css new file mode 100644 index 0000000000000000000000000000000000000000..8fbe9d7ef7f4283aa4faa485349a0d309d9ebe93 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/ColorPalette.css @@ -0,0 +1,5 @@ +.dijitColorPalette { + border:1px solid #d3d3d3; + background:#fff; + -moz-border-radius: 0 !important; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/nihilo/Common.css b/src/main/resources/static/dijit/themes/nihilo/Common.css new file mode 100644 index 0000000000000000000000000000000000000000..1a1c7f9309ec609e8f4b7bf41d9a8bae7111a0a6 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/Common.css @@ -0,0 +1,15 @@ +.nihilo .dojoDndItemOver { + background-image: url(images/treeHover.png); +} + +/* DnD avatar-specific settings */ +/* For now it uses a default set of rules. Some other DnD classes can be modified as well. */ +.nihilo table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;} +.nihilo .dojoDndAvatar td { border: none; } +.nihilo .dojoDndAvatar tr { border: none; } +.nihilo .dojoDndAvatarHeader td { height: 20px; padding: 0 0 0 21px; } +.nihilo .dojoDndAvatarItem td { padding: 2px;} +.nihilo.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;} +.nihilo.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;} +.nihilo.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;} +.nihilo.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;} diff --git a/src/main/resources/static/dijit/themes/nihilo/Dialog.css b/src/main/resources/static/dijit/themes/nihilo/Dialog.css new file mode 100644 index 0000000000000000000000000000000000000000..248260467de6d41f684d636ae70baffc17aef1fe --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/Dialog.css @@ -0,0 +1,144 @@ +/* Dialog */ + +.nihilo .dijitDialog { + background: #eee; + border: 1px solid #d3d3d3; + -webkit-box-shadow: 0 5px 10px #adadad; + padding: 0; +} + +.nihilo .dijitDialog .dijitDialogTitle { + /* typography and styling of the dialog title */ + font-size: 0.9em; + color: #243C5F; + font-weight: bold; + padding: 0 4px; +} + +.nihilo .dijitDialog .dijitDialogPaneContent { + background: #ffffff; + border-top: 1px solid #d3d3d3; + padding:10px; + +} + +.nihilo .dijitDialogTitleBar { + /* outer container for the titlebar of the dialog */ + background: #fafafa url("images/titleBar.png") repeat-x top left; + padding: 5px 6px 3px 6px; + outline:0; /* remove this line if keyboard focus on dialog startup is an issue. tab still takes you to first focusable element */ +} + +.nihilo .dijitDialogCloseIcon { + /* the default close icon for the dialog */ + background-image: url("images/spriteRoundedIconsSmall.png"); + background-repeat: no-repeat; + background-position: -60px 0; + position: absolute; + vertical-align: middle; + right: 6px; + top: 4px; + height: 15px; + width: 15px; +} +.dj_ie6 .nihilo .dijitDialogCloseIcon { + background-image: url("images/spriteRoundedIconsSmall.gif"); +} +.nihilo .dijitDialogCloseIconHover { + background-position: -60px -15px; +} + +/* Tooltip and TooltipDialog */ + +.nihilo .dijitTooltip, +.nihilo .dijitTooltipDialog { + /* the outermost dom node, holding the connector and container */ + background: transparent; /* make the area on the sides of the arrow transparent */ +} + +.dijitTooltipBelow { + /* leave room for arrow above content */ + padding-top: 10px; +} + +.dijitTooltipAbove { + /* leave room for arrow below content */ + padding-bottom: 10px; +} + +.nihilo .dijitTooltipContainer { + /* The part with the text. */ + background-color: #fff; + border:1px solid #d3d3d3; + padding:0.45em; +} + +.nihilo .dijitTooltipConnector { + /* the arrow piece */ + border:0; + z-index: 2; +} + +.nihilo .dijitTooltipABRight .dijitTooltipConnector { + /* above or below tooltip, but the arrow appears on the right, + and the right edges of target and tooltip are aligned rather than the left */ + left: auto !important; + right: 6px; +} + +.nihilo .dijitTooltipBelow .dijitTooltipConnector { + /* the arrow piece for tooltips below an element */ + top: 0; + left: 6px; + background:url("images/tooltipConnectorUp.png") no-repeat top left; + width:17px; + height:11px; +} + +.dj_ie .nihilo .dijitTooltipBelow .dijitTooltipConnector { + background-image: url("images/tooltipConnectorUp.gif"); +} + +.nihilo .dijitTooltipAbove .dijitTooltipConnector { + /* the arrow piece for tooltips above an element */ + bottom: 0; + left: 6px; + background:url("images/tooltipConnectorDown.png") no-repeat top left; + width:17px; + height:11px; +} +.dj_ie .nihilo .dijitTooltipAbove .dijitTooltipConnector { + background-image: url("images/tooltipConnectorDown.gif"); +} +.dj_ie6 .nihilo .dijitTooltipAbove .dijitTooltipConnector { + bottom: -5px; +} + +.nihilo .dijitTooltipLeft { + padding-right: 10px; +} +.nihilo .dijitTooltipLeft .dijitTooltipConnector { + /* the arrow piece for tooltips to the left of an element, bottom borders aligned */ + right: 0; + background:url("images/tooltipConnectorRight.png") no-repeat top left; + width:11px; + height:17px; +} +.dj_ie .nihilo .dijitTooltipLeft .dijitTooltipConnector { + background-image: url("images/tooltipConnectorRight.gif"); +} + +.nihilo .dijitTooltipRight { + padding-left: 10px; +} +.nihilo .dijitTooltipRight .dijitTooltipConnector { + /* the arrow piece for tooltips to the right of an element, bottom borders aligned */ + left: 0; + background:url("images/tooltipConnectorLeft.png") no-repeat top left; + width:11px; + height:17px; +} +.dj_ie .nihilo .dijitTooltipRight .dijitTooltipConnector { + background-image: url("images/tooltipConnectorLeft.gif"); +} + diff --git a/src/main/resources/static/dijit/themes/nihilo/Dialog_rtl.css b/src/main/resources/static/dijit/themes/nihilo/Dialog_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..5e0cffc3d4a5059939665ff2a7078212b32863e6 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/Dialog_rtl.css @@ -0,0 +1,6 @@ +/* Dialog */ + +.dijitRtl .nihilo .dijitDialogTitleBar .dijitDialogCloseIcon { + right: auto; + left: 5px; +} diff --git a/src/main/resources/static/dijit/themes/nihilo/Editor.css b/src/main/resources/static/dijit/themes/nihilo/Editor.css new file mode 100644 index 0000000000000000000000000000000000000000..108aae78cf33840f4a1345e9770bdae825813053 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/Editor.css @@ -0,0 +1,16 @@ +.nihilo .dijitToolbar .dijitToolbarSeparator { + background: url('../../icons/images/editorIconsEnabled.png'); /* separator in editor icons sprite image - enabled state */ +} + +/**** ICONS *****/ + +.nihilo .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsEnabled.png'); /* editor icons sprite image - enabled state */ + background-repeat: no-repeat; + width: 18px; + height: 18px; + text-align: center; +} +.nihilo .dijitDisabled .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsDisabled.png'); /* editor icons sprite image - disabled state */ +} diff --git a/src/main/resources/static/dijit/themes/nihilo/Editor_rtl.css b/src/main/resources/static/dijit/themes/nihilo/Editor_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..ca1cc0c86938b46e72fdf85e589f1c2163644164 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/Editor_rtl.css @@ -0,0 +1,9 @@ +/* Editor */ +.dijitRtl .nihilo .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsEnabled_rtl.png'); /* editor icons sprite image - enabled state */ +} +.dijitRtl .nihilo .dijitDisabled .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsDisabled_rtl.png'); /* editor icons sprite image - disabled state */ +} + + diff --git a/src/main/resources/static/dijit/themes/nihilo/Menu.css b/src/main/resources/static/dijit/themes/nihilo/Menu.css new file mode 100644 index 0000000000000000000000000000000000000000..8d247f35b964f78426a81f6759ab4624d64caec3 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/Menu.css @@ -0,0 +1,80 @@ + +/* Menu */ +.nihilo .dijitMenu, +.nihilo .dijitMenuBar { + border: 1px solid #d3d3d3; + margin: 0; + padding: 0; + background-color: #fff; +} + +.nihilo .dijitBorderContainer .dijitMenuBar { + border: 1px #ccc solid; +} + +.nihilo .dijitMenuItem { + font-family: sans-serif; + margin: 0; + color: #243C5F; +} +.nihilo .dijitMenuBar .dijitMenuItem { + padding: 4px 5px; +} + +.nihilo .dijitMenuPreviousButton, .nihilo .dijitMenuNextButton { + font-style: italic; +} +.nihilo .dijitMenuItem TD { + padding:1px; +} + +.nihilo .dijitMenuPassive .dijitMenuItemHover, +.nihilo .dijitComboBoxMenu .dijitMenuItemHover, +.nihilo .dijitMenuItemSelected { + background-color: #ffe284; /* #95a0b0; #555555; #aaaaaa; #646464; #60a1ea; #848484; */ + color: #243C5F; +} + +.nihilo .dijitMenuItemIcon { + width: 15px; + height: 15px; +} + +.nihilo .dijitMenuExpand { + width:15px; + height:15px; + background-image: url('images/spriteRoundedIconsSmall.png'); + background-position: -30px top; +} +.dj_ie6 .nihilo .dijitMenuExpand { + background-image:url('images/spriteRoundedIconsSmall.gif'); +} + +.nihilo .dijitMenuSeparator { + height: 1px; +} + +/* separator can be two pixels -- set border of either one to 0 to have only one */ +.nihilo .dijitMenuSeparatorTop { + border-bottom: 1px solid #fff; /*97adcb; */ +} + +.nihilo .dijitMenuSeparatorBottom { + border-top: 1px solid #d3d3d3; +} + +/* the checked menu item */ +.nihilo .dijitCheckedMenuItem .dijitMenuItemIcon { + background-image: url('images/spriteCheckbox.gif'); + background-position: -80px; +} +.nihilo .dijitCheckedMenuItemChecked .dijitMenuItemIcon { + background-position: -64px; +} +.nihilo .dijitRadioMenuItem .dijitMenuItemIcon { + background-image: url('images/spriteRadio.gif'); + background-position: -80px; +} +.nihilo .dijitRadioMenuItemChecked .dijitMenuItemIcon { + background-position: -64px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/nihilo/Menu_rtl.css b/src/main/resources/static/dijit/themes/nihilo/Menu_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..40b3b4124a95935b7f0daf01ed4260d834928fc2 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/Menu_rtl.css @@ -0,0 +1,10 @@ +/* Menu */ + +.dijitRtl .nihilo .dijitMenuItem .dijitMenuItemIcon { + padding-left: 3px; + padding-right: 0; +} + +.dijitRtl .nihilo .dijitMenuItem .dijitMenuExpand { + background-position: 0 top; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/nihilo/ProgressBar.css b/src/main/resources/static/dijit/themes/nihilo/ProgressBar.css new file mode 100644 index 0000000000000000000000000000000000000000..99d94f1dcd55e44f86ec7bc2a1d7ad85b3c9df60 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/ProgressBar.css @@ -0,0 +1,34 @@ + +/**** + dijit.ProgressBar + ****/ + +.nihilo .dijitProgressBar { + margin:2px 0 2px 0; +} + +.nihilo .dijitProgressBarEmpty{ + /* outer container and background of the bar that's not finished yet*/ + background:#fff url("images/progressBarEmpty.png") repeat-x center center; + border-color: #f8d582 #f8d582 #f8d582 #f8d582; +} + +.nihilo .dijitProgressBarTile{ + /* inner container for finished portion when in 'tile' (image) mode */ + background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center; +} + +.nihilo .dijitProgressBarFull { + border: 0px solid #f8d582; + border-right-width: 1px; +} + +.nihilo .dijitProgressBarLabel { + /* Set to a color that contrasts with both the "Empty" and "Full" parts. */ + color:#293a4b; +} + +.nihilo .dijitProgressBarIndeterminate .dijitProgressBarTile { + /* use an animated gif for the progress bar in 'indeterminate' mode */ + background:#cad2de url("images/progressBarAnim.gif") repeat-x center center; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/nihilo/ProgressBar_rtl.css b/src/main/resources/static/dijit/themes/nihilo/ProgressBar_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..a71f5a6b0cf0b63aea725e5e697fe35c711b98be --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/ProgressBar_rtl.css @@ -0,0 +1,21 @@ + +/**** + dijit.ProgressBar + ****/ + +.nihilo .dijitProgressBarRtl .dijitProgressBarFull { + border-left-width: 1px; + border-right: 0px; +} + +.nihilo .dijitProgressBarIndeterminateRtl .dijitProgressBarTile { + -moz-transform: scaleX(-1); + -o-transform: scaleX(-1); + -webkit-transform: scaleX(-1); + transform: scaleX(-1); + filter: FlipH; + -ms-filter: "FlipH"; +} + + + diff --git a/src/main/resources/static/dijit/themes/nihilo/TimePicker.css b/src/main/resources/static/dijit/themes/nihilo/TimePicker.css new file mode 100644 index 0000000000000000000000000000000000000000..6054e6b604bf95aa7dcaa3c630079b00d1b4cc04 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/TimePicker.css @@ -0,0 +1,33 @@ +/* Time Picker */ +.nihilo .dijitTimePickerTick, +.nihilo .dijitTimePickerMarker { + border-color: #eeeeee; +} + +.nihilo .dijitTimePickerTick { + color: gray; +} + +.nihilo .dijitTimePickerMarker { + background:#d3d3d3 url("images/titleBar.png") repeat-x top; + color:#293a4b; + font-weight: bold; +} + +.nihilo .dijitTimePickerItemSelected { + color: black; + background: #ffe284 none; +} + +.nihilo .dijitTimePickerItemHover { + background: #d6d6dd none; + color:black; +} + +.nihilo .dijitTimePickerTick .dijitTimePickerItemInner { + font-size: 0.8em; +} + +.nihilo .dijitTimePickerItemSelected .dijitTimePickerItemInner { + font-size: 1em; +} diff --git a/src/main/resources/static/dijit/themes/nihilo/TimePicker_rtl.css b/src/main/resources/static/dijit/themes/nihilo/TimePicker_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..50848c3fb70c537fe2c20a1435d956e359e50b87 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/TimePicker_rtl.css @@ -0,0 +1,4 @@ +.dj_ie6-rtl .nihilo .dijitTimePickerMarkerHover, +.dj_ie7-rtl .nihilo .dijitTimePickerMarkerHover { + border-top: 0; /* IE6/7 bug causes mouseover/out event storm */ +} diff --git a/src/main/resources/static/dijit/themes/nihilo/TitlePane.css b/src/main/resources/static/dijit/themes/nihilo/TitlePane.css new file mode 100644 index 0000000000000000000000000000000000000000..f690929103cd6b7e3325c845acc86b462a4882c5 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/TitlePane.css @@ -0,0 +1,54 @@ +/** + * dijit.TitlePane and dijit.Fieldset + * + */ + +.nihilo .dijitTitlePaneTitle { + background: #cccccc; + background:#fff url("images/titleBar.png") repeat-x top left; + border:1px solid #bfbfbf; + padding:3px 4px; + font-size: 0.9em; + font-weight: bold; + color: #6d6d6d; +} +.nihilo .dijitTitlePaneTitleHover { + background: #f9f9f9 url("images/accordionItemActive.png") top repeat-x; +} + +.nihilo .dijitTitlePane .dijitArrowNode, +.nihilo .dijitFieldset .dijitArrowNode { + width:15px; + height:15px; +} + +.nihilo .dijitTitlePaneTextNode { + color: #243C5F; +} + +.nihilo .dijitTitlePane .dijitClosed .dijitArrowNode, .nihilo .dijitFieldset .dijitFieldsetTitleClosed .dijitArrowNode { + background: url('images/spriteRoundedIconsSmall.png') no-repeat -30px top; +} +.dj_ie6 .nihilo .dijitTitlePane .dijitClosed .dijitArrowNode, .dj_ie6 .nihilo .dijitFieldset .dijitFieldsetTitleClosed .dijitArrowNode { + background:url('images/spriteRoundedIconsSmall.gif') no-repeat -30px top; +} +.nihilo .dijitTitlePane .dijitOpen .dijitArrowNode, .nihilo .dijitFieldset .dijitFieldsetTitleOpen .dijitArrowNode { + background:url('images/spriteRoundedIconsSmall.png') no-repeat -15px top; +} +.dj_ie6 .nihilo .dijitTitlePane .dijitOpen .dijitArrowNode, .dj_ie6 .nihilo .dijitFieldset .dijitFieldsetTitleClosed .dijitArrowNode { + background:url('images/spriteRoundedIconsSmall.gif') no-repeat -15px top; +} + +.nihilo .dijitTitlePaneContentOuter { + background: #ffffff; + border:1px solid #bfbfbf; + border-top: 0; +} +.nihilo .dijitTitlePaneContentInner { + padding:10px; +} + +.nihilo .dijitTitlePaneTextNode { + margin-left: 4px; + margin-right: 4px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/nihilo/TitlePane_rtl.css b/src/main/resources/static/dijit/themes/nihilo/TitlePane_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..9af4446feff6ef1b68753d6c37ce305159af53a3 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/TitlePane_rtl.css @@ -0,0 +1,3 @@ +.nihilo .dijitTitlePaneRtl .dijitClosed .dijitArrowNode, .nihilo .dijitFieldsetRtl .dijitFieldsetTitleClosed .dijitArrowNode { + background-position: 0 top; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/nihilo/Toolbar.css b/src/main/resources/static/dijit/themes/nihilo/Toolbar.css new file mode 100644 index 0000000000000000000000000000000000000000..1c3e32702c83af082077431022278b831921786a --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/Toolbar.css @@ -0,0 +1,65 @@ +.nihilo .dijitToolbar { + border-bottom: 1px solid #ccc; + background:#eaeaea url("images/titleBar.png") repeat-x top left; +} + +/* setting a min-height on ditor toolbar */ +.dj_ie6 .nihilo .dijitToolbar { + height: 10px; +} + +.nihilo .dijitToolbar .dijitButtonNode, +.nihilo .dijitToolbar .dijitComboButton .dijitButtonContents, +.nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButton { + background: none; + margin: 0; + padding: 0; + border: none; + font-size: 12px; +} + +.nihilo .dijitToolbar .dijitButton, +.nihilo .dijitToolbar .dijitToggleButton, +.nihilo .dijitToolbar .dijitDropDownButton, +.nihilo .dijitToolbar .dijitComboButton .dijitButtonContents, +.nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButton { + background: none; + padding: 1px; /* on hover etc., margin replaced w/border */ +} + +.nihilo .dijitToolbar .dijitButtonChecked, +.nihilo .dijitToolbar .dijitToggleButtonChecked { + background-color:#ffeeb9; + border:1px solid #f7c95c; + padding: 0; +} + +.nihilo .dijitToolbar .dijitButtonCheckedHover, +.nihilo .dijitToolbar .dijitToggleButtonCheckedHover + { + background-color:#ffe284; + border:1px solid #f7c95c; + padding: 0; +} + +.nihilo .dijitToolbar .dijitButtonHover, +.nihilo .dijitToolbar .dijitToggleButtonHover, +.nihilo .dijitToolbar .dijitDropDownButtonHover, +.nihilo .dijitToolbar .dijitComboButton .dijitButtonContentsHover, +.nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover { + /* TODO: change this from Hover to Selected so that button is still highlighted while drop down is being used */ + border: 1px solid #f7c95c; + padding: 0; + background-color:#ffe284; +} + +.nihilo .dijitToolbar label { + padding: 3px 3px 0 6px; +} + +.dj_ie .nihilo .dijitToolbar .dijitComboButton .dijitButtonContentsFocused, +.dj_ie .nihilo .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused { + /* focus border doesn't appear on
            for IE, so need to add it manually */ + border: 1px #555 dotted !important; + padding: 0; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/nihilo/Tree.css b/src/main/resources/static/dijit/themes/nihilo/Tree.css new file mode 100644 index 0000000000000000000000000000000000000000..a33b9696e3feced8e50608c0b7745ad5afc3b3c8 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/Tree.css @@ -0,0 +1,100 @@ +/* Tree */ + +.nihilo .dijitTreeNode { + background : url('images/treeI.gif') no-repeat; + background-position : top left; + background-repeat : repeat-y; + zoom: 1; +} + +/* left vertical line (grid) for all nodes */ +.nihilo .dijitTreeIsLast { + background: url('images/treeI_half.gif') no-repeat; +} + +.nihilo .dijitTreeRowHover { + /* using a transparent png so that we can still see grid lines, which are (unfortunately) behind the dijitRowNode that we are hovering over */ + background-image: url(images/treeHover.png); + background-repeat: repeat; + background-color: transparent !important; +} + +.nihilo .dijitTreeLabel { + font-weight: normal; + margin-left: 3px; +} + +.nihilo .dijitTreeIsRoot { + margin-left: 0; + background-image: none; +} + +.nihilo .dijitTreeExpando { + width: 18px; + height: 18px; +} + +.nihilo .dijitTreeRow { + /* so insert line shows up on IE when dropping after a target element */ + padding-bottom: 2px; +} + +.nihilo .dijitTreeContent { + min-height: 18px; + min-width: 18px; + padding-left:1px; +} + +.nihilo .dijitTreeExpandoOpened { + background: url('images/spriteTree.gif') no-repeat -18px top; +} + +.nihilo .dijitTreeExpandoClosed { + background-image: url('images/spriteTree.gif'); +} + +.nihilo .dijitTreeExpandoLeaf { + background: url('images/spriteTree.gif') no-repeat -36px top; +} + +.nihilo .dijitTreeExpandoLoading { + background-image: url('images/treeExpand_loading.gif'); +} + +.nihilo .dijitTreeIcon { + width: 16px; + height: 16px; +} + +.nihilo .dijitFolderOpened { + background: url('images/spriteDivIcons.gif') no-repeat -16px top; +} + +.nihilo .dijitFolderClosed { + background: url('images/spriteDivIcons.gif') no-repeat top left; +} + +.nihilo .dijitLeaf { + background: url('images/spriteDivIcons.gif') no-repeat -32px top; +} + +/* Drag and Drop on TreeNodes + * Put insert line on dijitTreeContent node so it's aligned w/ + * (ie, indented equally with) target element, even + * though dijitTreeRowNode is the actual "drag object" + */ +.nihilo .dijitTreeNode .dojoDndItemBefore, +.nihilo .dijitTreeNode .dojoDndItemAfter { + border-bottom: none; + border-top: none; +} + +.nihilo .dijitTreeNode .dojoDndItemBefore .dijitTreeContent { + /* copied from Common.css */ + border-top: 2px solid #369; +} + +.nihilo .dijitTreeNode .dojoDndItemAfter .dijitTreeContent { + /* copied from Common.css */ + border-bottom: 2px solid #369; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/nihilo/Tree_rtl.css b/src/main/resources/static/dijit/themes/nihilo/Tree_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..4462ed1bf0a7ff66c9dfd07db8ec1488c1212aa0 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/Tree_rtl.css @@ -0,0 +1,22 @@ +/* Tree */ + +.dijitRtl .nihilo .dijitTreeNode, +.dijitRtl .nihilo .dijitTreeExpandoLeaf { + /* disable grid lines for Tree in RTL mode, too hard to support */ + background-image: none; +} + +.dijitRtl .nihilo .dijitTreeContent { + padding-left: 0; + padding-right: 1px; +} + +.dijitRtl .nihilo .dijitTreeExpandoOpened { + /* todo: icon contains grid line but grid lines disabled above */ + background: url('images/spriteTree_rtl.gif') no-repeat -18px top; +} + +.dijitRtl .nihilo .dijitTreeExpandoClosed { + /* todo: icon contains grid line but grid lines disabled above */ + background-image: url('images/spriteTree_rtl.gif'); +} diff --git a/src/main/resources/static/dijit/themes/nihilo/form/Button.css b/src/main/resources/static/dijit/themes/nihilo/form/Button.css new file mode 100644 index 0000000000000000000000000000000000000000..83c719b25ee79c43700934f55b4d1b1217aa7c1c --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/form/Button.css @@ -0,0 +1,128 @@ + +/***** + dijit.form.Button + dijit.form.DropDownButton + dijit.form.ComboButton + dijit.form.ComboBox (partial) + dijit.form.Spinner (partial) (TODO: create NumberSpinner.css file like claro has) + *****/ + +.nihilo .dijitButtonNode { + /* enabled state - inner */ + /* border:1px outset #a0a0a0; */ + border:1px solid #dedede; + border-bottom:1px solid #dedede; + padding: 0.1em 0.2em 0.2em 0.2em; + background: #fff url("../images/buttonEnabled.png") repeat-x top left; +} + +.nihilo .dijitButtonText { + text-align: center; + padding: 0 0.3em; +} +.nihilo .dijitInputField { + padding: 0; /* set padding:0 for .nihilo .dijitSelect .dijitButtonText but with a low priority rule that can be easily trumped by the user */ +} + +.nihilo .dijitComboBox .dijitButtonNode { + border-width: 0 0 0 1px; +} + +.nihilo .dijitArrowButton { + color: #111; +} + +.nihilo .dijitComboButton .dijitDownArrowButton { + padding-right:4px; +} + +.nihilo .dijitComboBoxReadOnly, +.nihilo .dijitSpinnerReadOnly, +.nihilo .dijitSpinnerReadOnly .dijitButtonNode, +.nihilo .dijitButtonDisabled .dijitButtonNode, +.nihilo .dijitToggleButtonDisabled .dijitButtonNode, +.nihilo .dijitDropDownButtonDisabled .dijitButtonNode, +.nihilo .dijitComboButtonDisabled .dijitButtonNode, +.nihilo .dijitComboBoxDisabled, +.nihilo .dijitSpinnerDisabled, +.nihilo .dijitSpinnerDisabled .dijitButtonNode { + /* disabled state - inner */ + border-color: #dedede; + background:#fafafa url("../images/buttonDisabled.png") top repeat-x; + opacity: 0.60; +} +.dj_ie6 .nihilo .dijitReadOnly input, +.dj_ie7 .nihilo .dijitReadOnly input, +.dj_ie6 .nihilo .dijitComboButtonDisabled .dijitButtonText, +.dj_ie7 .nihilo .dijitComboButtonDisabled .dijitButtonText { + /* opacity doesn't work on table node in IE, work around here */ + color: #aaa; +} + + +.nihilo .dijitButtonHover .dijitButtonNode, +.nihilo .dijitButtonNodeHover, +.nihilo .dijitToggleButtonHover .dijitButtonNode, +.nihilo .dijitDropDownButtonHover .dijitButtonNode, +.nihilo .dijitButtonContentsHover, +.nihilo .dijitDownArrowButtonHover, +.nihilo .dijitUpArrowButtonHover { + /* hover state - inner */ + /* TODO: change from Hover to Selected so that button is still highlighted while drop down is being used */ + color:#243C5F; + background:#fcfcfc url("../images/buttonHover.png") repeat-x top left; +} + +.nihilo .dijitUpArrowButtonActive, +.nihilo .dijitDownArrowButtonActive, +.nihilo .dijitButtonActive .dijitButtonNode, +.nihilo .dijitToggleButtonActive .dijitButtonNode, +.nihilo .dijitDropDownButtonActive .dijitButtonNode, +.nihilo .dijitComboButton .dijitButtonContentsActive, +.nihilo .dijitStackController .dijitToggleButtonChecked .dijitButtonNode { + /* active state - inner (for when you are pressing a normal button, or + * when a radio-type button is in a depressed state + */ + border-color:#dedede; + background: #f5f5f5 url("../images/buttonActive.png") top left repeat-x; +} + + +.nihilo .dijitArrowButtonInner { + background-image: url("../images/spriteArrows.png"); + background-repeat: no-repeat; + background-position: 0 center; + width: 11px; + height: 11px; +} +.nihilo .dijitLeftArrowButton .dijitArrowButtonInner { + background-position: -11px center; +} +.nihilo .dijitUpArrowButton .dijitArrowButtonInner { + background-position: -22px center; +} +.nihilo .dijitRightArrowButton .dijitArrowButtonInner { + background-position: -33px center; +} +.dj_ie6 .nihilo .dijitArrowButtonInner { + background-image: url("../images/spriteArrows.gif"); +} +.dj_webkit .nihilo .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner { + margin-top: -1px; /* image has too many blank pixels on top */ +} +.dj_ie .nihilo .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner { + margin-top: 1px; /* image has too many blank pixels on top */ +} +.nihilo .dijitSpinnerButtonContainer { + width: auto; + padding: 0; +} +.nihilo .dijitSpinner .dijitArrowButton { + width: 15px; +} +.nihilo .dijitSpinner .dijitSpinnerButtonInner { + width: 15px; +} +.nihilo .dijitSpinner .dijitArrowButtonInner .dijitInputField { + padding: 0; +} diff --git a/src/main/resources/static/dijit/themes/nihilo/form/Button_rtl.css b/src/main/resources/static/dijit/themes/nihilo/form/Button_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..07886d058a71c9e4173edb7ada1035a86ff89f99 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/form/Button_rtl.css @@ -0,0 +1,4 @@ +.nihilo .dijitComboBoxRtl .dijitButtonNode { + border-width: 0 0 0 1px; +} + diff --git a/src/main/resources/static/dijit/themes/nihilo/form/Checkbox.css b/src/main/resources/static/dijit/themes/nihilo/form/Checkbox.css new file mode 100644 index 0000000000000000000000000000000000000000..260666f996a89f6bb26d36201cdb1882acedfa9c --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/form/Checkbox.css @@ -0,0 +1,67 @@ + +/* + * CheckBox and Radio Widgets, + * and the CSS to embed a checkbox or radio icon inside a ToggleButton. + * + * Order of images in the default sprite (from L to R, checkbox and radio in same image): + * checkbox normal - checked + * - unchecked + * disabled - checked + * - unchecked + * hover - checked + * - unchecked + * + * radio normal - checked + * - unchecked + * disabled - checked + * - unchecked + * hover - checked + * - unchecked +*/ + +.nihilo .dijitToggleButton .dijitCheckBox, +.nihilo .dijitToggleButton .dijitCheckBoxIcon { + background-image: url('../images/spriteCheckbox.gif'); +} + +.nihilo .dijitCheckBox, +.nihilo .dijitCheckBoxIcon { /* inside a toggle button */ + background-image: url('../images/spriteCheckbox.gif'); /* checkbox sprite image */ + background-repeat: no-repeat; + width: 16px; + height: 16px; + margin: 0; + padding: 0; +} + +.nihilo .dijitCheckBox, +.nihilo .dijitToggleButton .dijitCheckBoxIcon { + /* unchecked */ + background-position: -16px; +} + +.nihilo .dijitCheckBoxChecked, +.nihilo .dijitToggleButtonChecked .dijitCheckBoxIcon { + /* checked */ + background-position: 0; +} + +.nihilo .dijitCheckBoxDisabled { + /* disabled */ + background-position: -48px; +} + +.nihilo .dijitCheckBoxCheckedDisabled { + /* disabled but checked */ + background-position: -32px; +} + +.nihilo .dijitCheckBoxHover { + /* hovering over an unchecked enabled checkbox */ + background-position: -80px; +} + +.nihilo .dijitCheckBoxCheckedHover { + /* hovering over a checked enabled checkbox */ + background-position: -64px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/nihilo/form/Common.css b/src/main/resources/static/dijit/themes/nihilo/form/Common.css new file mode 100644 index 0000000000000000000000000000000000000000..31bf95ee3cc332a1dc041f75540d773748b89a5f --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/form/Common.css @@ -0,0 +1,83 @@ + +/**** + dijit.form.TextBox + dijit.form.ValidationTextBox + dijit.form.SerializableTextBox + dijit.form.RangeBoundTextBox + dijit.form.NumberTextBox + dijit.form.CurrencyTextBox + dijit.form.NumberSpinner + dijit.form.ComboBox (partial) + ****/ + +.nihilo .dijitInputContainer input { + margin: 0 0.1em; +} + +.nihilo .dijitSelect .dijitButtonContents, +.nihilo .dijitSelect, +.nihilo .dijitTextBox, +.nihilo .dijitTextArea { + /* For all except dijit.form.NumberSpinner: the actual input element. + For TextBox, ComboBox, Spinner: the table that contains the input. + Otherwise the actual input element. + */ + background:#fff url("../images/validationInputBg.png") repeat-x top left; + #background:#fff url('../images/validationInputBg.gif') repeat-x top left; +} +.nihilo .dijitSelect, +.nihilo .dijitTextBox, +.nihilo .dijitTextArea { + border:1px solid #d3d3d3; +} + +.nihilo .dijitSelect .dijitArrowButton, +.nihilo .dijitComboBox .dijitButtonNode { + padding: 0 0.2em; +} +.nihilo .dijitSelect .dijitButtonContents, +.nihilo .dijitTextBox .dijitButtonNode { + /* line between the input area and the drop down button */ + border-color: #d3d3d3; +} + +.nihilo .dijitSelectFocused, +.nihilo .dijitTextBoxFocused, +.nihilo .dijitTextAreaFocused { + /* input field when focused (ie: typing affects it) */ + border-color:#b3b3b3; +} +.nihilo .dijitSelectFocused TD, +.nihilo .dijitTextBoxFocused .dijitButtonNode, +.nihilo .dijitSpinner .dijitUpArrowButtonActive, +.nihilo .dijitSpinner .dijitDownArrowButtonActive { + border-color:#d3d3d3; +} +.nihilo .dijitSpinnerFocused .dijitDownArrowButton, +.nihilo .dijitSpinner .dijitUpArrowButtonActive, +.nihilo .dijitSpinner .dijitDownArrowButtonActive { + border-top-color:#d3d3d3; +} + +.nihilo .dijitError { + border-color:#b3b3b3; + background-color:#f9f7ba; + background-image:none; +} + +.nihilo .dijitErrorFocused { + background-color:#ff6; + background-image:none; +} + +/* Validation errors */ +.nihilo .dijitValidationTextBoxError .dijitValidationIcon { + /* prevent height change when widget goes from valid to invalid state */ + width: 16px; + background: transparent url('../images/warning.png') no-repeat center center; +} + +/* The highlight is shown in the ComboBox menu. */ +.nihilo .dijitComboBoxHighlightMatch { + background-color:#d3d3d3; +} diff --git a/src/main/resources/static/dijit/themes/nihilo/form/RadioButton.css b/src/main/resources/static/dijit/themes/nihilo/form/RadioButton.css new file mode 100644 index 0000000000000000000000000000000000000000..d0dba30200436f0e5cafe3bbe034074f05a3096d --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/form/RadioButton.css @@ -0,0 +1,66 @@ +/* + * CheckBox and Radio Widgets, + * and the CSS to embed a checkbox or radio icon inside a ToggleButton. + * + * Order of images in the default sprite (from L to R, checkbox and radio in same image): + * checkbox normal - checked + * - unchecked + * disabled - checked + * - unchecked + * hover - checked + * - unchecked + * + * radio normal - checked + * - unchecked + * disabled - checked + * - unchecked + * hover - checked + * - unchecked +*/ + +.nihilo .dijitToggleButton .dijitRadio, +.nihilo .dijitToggleButton .dijitRadioIcon { + background-image: url('../images/spriteRadio.gif'); +} + +.nihilo .dijitRadio, +.nihilo .dijitRadioIcon { /* inside a toggle button */ + background-image: url('../images/spriteRadio.gif'); /* checkbox sprite image */ + background-repeat: no-repeat; + width: 16px; + height: 16px; + margin: 0; + padding: 0; +} + +.nihilo .dijitRadio, +.nihilo .dijitToggleButton .dijitRadioIcon { + /* unselected */ + background-position: -16px; +} + +.nihilo .dijitRadioChecked, +.nihilo .dijitToggleButtonChecked .dijitRadioIcon { + /* selected */ + background-position: 0; +} + +.nihilo .dijitRadioDisabled { + /* unselected and disabled */ + background-position: -48px; +} + +.nihilo .dijitRadioCheckedDisabled { + /* selected but disabled */ + background-position: -32px; +} + +.nihilo .dijitRadioHover { + /* hovering over an unselected enabled radio button */ + background-position: -80px; +} + +.nihilo .dijitRadioCheckedHover { + /* hovering over a selected enabled radio button */ + background-position: -64px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/nihilo/form/Select.css b/src/main/resources/static/dijit/themes/nihilo/form/Select.css new file mode 100644 index 0000000000000000000000000000000000000000..6e6a9c4425cef280bd1040a73c6956eb35c29320 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/form/Select.css @@ -0,0 +1,46 @@ +.nihilo .dijitSelectError .dijitButtonContents, +.nihilo .dijitSelectHover .dijitArrowButton, +.nihilo .dijitSelectActive .dijitArrowButton, +.nihilo .dijitSelectOpened .dijitArrowButton, +.nihilo .dijitSelectDisabled .dijitArrowButton, +.nihilo .dijitSelectReadOnly .dijitArrowButton { + background: transparent none; +} + +.nihilo .dijitSelect .dijitArrowButton { + background: #bcd5f0 url("../images/buttonEnabled.png") repeat-x top left; + border-width: 0; +} + +/* Mirror DropDownButton */ +.nihilo .dijitSelectDisabled, +.nihilo .dijitSelectDisabled TD { + border-color: #dedede !important; + background:#fafafa url("../images/buttonDisabled.png") top repeat-x; +} +.dj_ie .nihilo .dijitSelectDisabled TD * { + filter: gray() alpha(opacity=50); +} + +.nihilo .dijitSelectHover, +.nihilo .dijitSelectHover TD { + color:#000; + background:#fcfcfc url("../images/buttonHover.png") repeat-x top left; +} + +.nihilo .dijitSelectActive, +.nihilo .dijitSelectOpened, +.nihilo .dijitSelectActive TD, +.nihilo .dijitSelectOpened TD { + border-color:#dedede !important; + background: #f5f5f5 url("../images/buttonActive.png") top left repeat-x; +} + +/* Make the menu look more combobox-like */ +.nihilo .dijitSelectMenu td { + padding: 0; +} +.nihilo .dijitSelectMenu .dijitMenuItemLabel, +.nihilo .dijitSelectMenu .dijitMenuArrowCell { + padding: 0.1em 0.2em; +} diff --git a/src/main/resources/static/dijit/themes/nihilo/form/Slider.css b/src/main/resources/static/dijit/themes/nihilo/form/Slider.css new file mode 100644 index 0000000000000000000000000000000000000000..16bcd09800ba94b68710d3d4907b7bba3f32510e --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/form/Slider.css @@ -0,0 +1,141 @@ + +/**** + SLIDER +****/ + +.nihilo .dijitSliderProgressBarH { + border-color: #aab0bb; + background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left; +} + +.nihilo .dijitSliderProgressBarV { + border-color: #aab0bb; + background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left; +} + +.nihilo .dijitSliderFocused .dijitSliderProgressBarH, +.nihilo .dijitSliderFocused .dijitSliderLeftBumper { + background-image:url("../images/sliderFullFocus.png"); +} + +.nihilo .dijitSliderFocused .dijitSliderProgressBarV, +.nihilo .dijitSliderFocused .dijitSliderBottomBumper { + background-image:url("../images/sliderFullVerticalFocus.png"); +} + +.nihilo .dijitSliderRemainingBarV { + border-color: #b4b4b4; + background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y bottom left; +} + +.nihilo .dijitSliderRemainingBarH { + border-color: #b4b4b4; + background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left; +} + +.nihilo .dijitSliderBar { + border-style: solid; + outline:1px; + /* border-color: #b4b4b4; */ +} +.nihilo .dijitSliderFocused .dijitSliderBar { + border-color:#727272; +} + +.nihilo .dijitSliderImageHandleH { + border:0; + width:15px; + height:18px; + background:url("../images/preciseSliderThumb.png") no-repeat center top; + #background:url("../images/preciseSliderThumb.gif") no-repeat center top; +} +.nihilo .dijitSliderFocused .dijitSliderImageHandleH { + background-image:url("../images/preciseSliderThumbFocus.png"); + #background-image:url("../images/preciseSliderThumbFocus.gif"); +} + +.nihilo .dijitSliderLeftBumper { + border-left-width: 1px; + border-color: #aab0bb; + background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left; +} + +.nihilo .dijitSliderRightBumper { + background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left; + border-color: #b4b4b4; + border-right-width: 1px; +} + +.nihilo .dijitSliderImageHandleV { + border:0; + width:20px; + height:15px; + background:url("../images/sliderThumb.png") no-repeat center center; + #background:url("../images/sliderThumb.gif") no-repeat center center; +} + +.nihilo .dijitSliderFocused .dijitSliderImageHandleV { + background-image:url("../images/sliderThumbFocus.png"); + #background-image:url("../images/sliderThumbFocus.gif"); +} + +.nihilo .dijitSliderBottomBumper { + border-bottom-width: 1px; + border-color: #aab0bb; + background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left; +} + +.nihilo .dijitSliderTopBumper { + background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y top left; + border-color: #b4b4b4; + border-top-width: 1px; +} + +.nihilo .dijitSliderIncrementIconH, +.nihilo .dijitSliderIncrementIconV { + background:url('../images/spriteRoundedIconsSmall.png') no-repeat -45px top; + #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -45px top; + width:15px; height:15px; +} +.nihilo .dijitSliderIncrementIconH { + background:url('../images/spriteRoundedIconsSmall.png') no-repeat -30px top; + #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -30px top; +} + +.nihilo .dijitSliderDecrementIconH, +.nihilo .dijitSliderDecrementIconV { + width:15px; + height:15px; + background:url('../images/spriteRoundedIconsSmall.png') no-repeat -15px top; + #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -15px top; +} +.nihilo .dijitSliderDecrementIconH { + background:url('../images/spriteRoundedIconsSmall.png') no-repeat 0 top; + #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat 0 top; +} + +.nihilo .dijitSliderButtonInner { + visibility:hidden; +} + +.nihilo .dijitSliderReadOnly *, +.nihilo .dijitSliderDisabled * { + border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5; + color: #bdbdbd; +} +.nihilo .dijitSliderReadOnly .dijitSliderDecrementIconH, +.nihilo .dijitSliderDisabled .dijitSliderDecrementIconH { + background-position: 0 -15px; +} +.nihilo .dijitSliderReadOnly .dijitSliderIncrementIconH, +.nihilo .dijitSliderDisabled .dijitSliderIncrementIconH { + background-position: -30px -15px; +} +.nihilo .dijitSliderReadOnly .dijitSliderDecrementIconV, +.nihilo .dijitSliderDisabled .dijitSliderDecrementIconV { + background-position: -15px -15px; +} +.nihilo .dijitSliderReadOnly .dijitSliderIncrementIconV, +.nihilo .dijitSliderDisabled .dijitSliderIncrementIconV { + background-position: -45px -15px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/nihilo/form/Slider_rtl.css b/src/main/resources/static/dijit/themes/nihilo/form/Slider_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..1523d4a9689db1bf766050cf4faa14965ae97e28 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/form/Slider_rtl.css @@ -0,0 +1,36 @@ + +/* Slider */ + +.dijitRtl .nihilo .dijitSliderProgressBarH, +.dijitRtl .nihilo .dijitSliderRemainingBarH, +.dijitRtl .nihilo .dijitSliderLeftBumper, +.dijitRtl .nihilo .dijitSliderRightBumper, +.dijitRtl .nihilo .dijitSliderTopBumper { + background-position: top right; +} + +.dijitRtl .nihilo .dijitSliderProgressBarV, +.dijitRtl .nihilo .dijitSliderRemainingBarV, +.dijitRtl .nihilo .dijitSliderBottomBumper { + background-position: bottom right; +} + +.dijitRtl .nihilo .dijitSliderLeftBumper { + border-left-width: 0; + border-right-width: 1px; +} + +.dijitRtl .nihilo .dijitSliderRightBumper { + border-left-width: 1px; + border-right-width: 0; +} + +.dijitRtl .nihilo .dijitSliderIncrementIconH { + background:url('../images/spriteRoundedIconsSmall.png') no-repeat left top; + #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat left top; +} + +.dijitRtl .nihilo .dijitSliderDecrementIconH { + background:url('../images/spriteRoundedIconsSmall.png') no-repeat -30px top; + #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -30px top; +} diff --git a/src/main/resources/static/dijit/themes/nihilo/form/TimeTextBox.css b/src/main/resources/static/dijit/themes/nihilo/form/TimeTextBox.css new file mode 100644 index 0000000000000000000000000000000000000000..d450925b415601abdf28857e4cd3fdccd145d96e --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/form/TimeTextBox.css @@ -0,0 +1 @@ +@CHARSET "UTF-8"; diff --git a/src/main/resources/static/dijit/themes/nihilo/images/accordionItemActive.png b/src/main/resources/static/dijit/themes/nihilo/images/accordionItemActive.png new file mode 100644 index 0000000000000000000000000000000000000000..8657115cb81a20617e02f055c39e3cf826b2b921 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/accordionItemActive.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/buttonActive.png b/src/main/resources/static/dijit/themes/nihilo/images/buttonActive.png new file mode 100644 index 0000000000000000000000000000000000000000..fe551bc2849e6fa5133b26c228a6f123bcacc6f9 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/buttonActive.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/buttonDisabled.png b/src/main/resources/static/dijit/themes/nihilo/images/buttonDisabled.png new file mode 100644 index 0000000000000000000000000000000000000000..eb4d2386d24704a1130942d0e5e4ed603646cdeb Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/buttonDisabled.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/buttonEnabled.png b/src/main/resources/static/dijit/themes/nihilo/images/buttonEnabled.png new file mode 100644 index 0000000000000000000000000000000000000000..456d62dba7bbcb4f7c6f7b8933c28e7cbe44eb10 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/buttonEnabled.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/buttonHover.png b/src/main/resources/static/dijit/themes/nihilo/images/buttonHover.png new file mode 100644 index 0000000000000000000000000000000000000000..c11b5d18eb76e1c2fc136ab0f4f97f2553a56212 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/buttonHover.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/dndCopy.png b/src/main/resources/static/dijit/themes/nihilo/images/dndCopy.png new file mode 100644 index 0000000000000000000000000000000000000000..6a8b998f62899a642f6be3f4132132d1c12e237c Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/dndCopy.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/dndMove.png b/src/main/resources/static/dijit/themes/nihilo/images/dndMove.png new file mode 100644 index 0000000000000000000000000000000000000000..8443d30342f0494cae909eeecdc9b6ad149f5e5a Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/dndMove.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/dndNoCopy.png b/src/main/resources/static/dijit/themes/nihilo/images/dndNoCopy.png new file mode 100644 index 0000000000000000000000000000000000000000..64bf88b26a3ddeadf97755bc05ed83c47ecfe683 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/dndNoCopy.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/dndNoMove.png b/src/main/resources/static/dijit/themes/nihilo/images/dndNoMove.png new file mode 100644 index 0000000000000000000000000000000000000000..682ea1025b914e20e041ddff88a5ef651a7fbb91 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/dndNoMove.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/no.gif b/src/main/resources/static/dijit/themes/nihilo/images/no.gif new file mode 100644 index 0000000000000000000000000000000000000000..9021a14e210b1107b48bcd16a637aed335ddb3d2 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/no.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/preciseSliderThumb.gif b/src/main/resources/static/dijit/themes/nihilo/images/preciseSliderThumb.gif new file mode 100644 index 0000000000000000000000000000000000000000..53b33e54abdb947bdc92cd8b30359a4153017738 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/preciseSliderThumb.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/preciseSliderThumb.png b/src/main/resources/static/dijit/themes/nihilo/images/preciseSliderThumb.png new file mode 100644 index 0000000000000000000000000000000000000000..d6dc0790e8bf5b5a7a7c5e7455da046e6cfe46f4 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/preciseSliderThumb.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif b/src/main/resources/static/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c6f92eb45865a0b1c3a08f978ad2e2b61d45057 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/preciseSliderThumbFocus.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/preciseSliderThumbFocus.png b/src/main/resources/static/dijit/themes/nihilo/images/preciseSliderThumbFocus.png new file mode 100644 index 0000000000000000000000000000000000000000..939f253afd0b062b9e911ad02f3170db90d2739c Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/preciseSliderThumbFocus.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/progressBarAnim.gif b/src/main/resources/static/dijit/themes/nihilo/images/progressBarAnim.gif new file mode 100644 index 0000000000000000000000000000000000000000..543d0485c2382dfe9475fe74ddd0db5121e03ecf Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/progressBarAnim.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/progressBarEmpty.png b/src/main/resources/static/dijit/themes/nihilo/images/progressBarEmpty.png new file mode 100644 index 0000000000000000000000000000000000000000..5500b1b619d343d94daa513325bdddbbfdce5109 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/progressBarEmpty.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/progressBarFull.png b/src/main/resources/static/dijit/themes/nihilo/images/progressBarFull.png new file mode 100644 index 0000000000000000000000000000000000000000..1228e9026aa183ce1dde5d1d79f0559dddcf935a Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/progressBarFull.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/sliderEmpty.png b/src/main/resources/static/dijit/themes/nihilo/images/sliderEmpty.png new file mode 100644 index 0000000000000000000000000000000000000000..bdd9ae953dbd50dc357767c65d69c4550795cecf Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/sliderEmpty.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/sliderEmptyVertical.png b/src/main/resources/static/dijit/themes/nihilo/images/sliderEmptyVertical.png new file mode 100644 index 0000000000000000000000000000000000000000..7b5036abcc21463216808fbf77788a2e22004551 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/sliderEmptyVertical.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/sliderFull.png b/src/main/resources/static/dijit/themes/nihilo/images/sliderFull.png new file mode 100644 index 0000000000000000000000000000000000000000..fbfb2a807023fc92133539cbe3bf670c395f8715 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/sliderFull.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/sliderFullFocus.png b/src/main/resources/static/dijit/themes/nihilo/images/sliderFullFocus.png new file mode 100644 index 0000000000000000000000000000000000000000..d07f00c84d79996fb99b9b2280eac93414384b75 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/sliderFullFocus.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/sliderFullVertical.png b/src/main/resources/static/dijit/themes/nihilo/images/sliderFullVertical.png new file mode 100644 index 0000000000000000000000000000000000000000..195580f11e3916f0a9bb7e0ba4f52a75f0b2d4f9 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/sliderFullVertical.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/sliderFullVerticalFocus.png b/src/main/resources/static/dijit/themes/nihilo/images/sliderFullVerticalFocus.png new file mode 100644 index 0000000000000000000000000000000000000000..4e9bfff0df2300cc4a0eb0b279061cbccbf5de7b Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/sliderFullVerticalFocus.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/sliderThumb.gif b/src/main/resources/static/dijit/themes/nihilo/images/sliderThumb.gif new file mode 100644 index 0000000000000000000000000000000000000000..29899a4b630782dfe9e4d276ccc775ad47a6e752 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/sliderThumb.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/sliderThumb.png b/src/main/resources/static/dijit/themes/nihilo/images/sliderThumb.png new file mode 100644 index 0000000000000000000000000000000000000000..6abb20080c6d1e7da0ad17e828b77c4bdcb14082 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/sliderThumb.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/sliderThumbFocus.gif b/src/main/resources/static/dijit/themes/nihilo/images/sliderThumbFocus.gif new file mode 100644 index 0000000000000000000000000000000000000000..f8d306febc6627deffbdf6cb687dd1fbc499eaf8 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/sliderThumbFocus.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/sliderThumbFocus.png b/src/main/resources/static/dijit/themes/nihilo/images/sliderThumbFocus.png new file mode 100644 index 0000000000000000000000000000000000000000..c4d261eee561019a9ea904c116dc6814d2c30e41 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/sliderThumbFocus.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png b/src/main/resources/static/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..4b1fff80ec5cfec7d4eaea761792b173df2cc971 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/splitContainerSizerH-thumb.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/splitContainerSizerH.png b/src/main/resources/static/dijit/themes/nihilo/images/splitContainerSizerH.png new file mode 100644 index 0000000000000000000000000000000000000000..a92cf665ba73eaa69386d67b79226d74ba1c13e3 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/splitContainerSizerH.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png b/src/main/resources/static/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..75676d5daeef49084a5d5997d4799d894cd7eb92 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/splitContainerSizerV-thumb.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/splitContainerSizerV.png b/src/main/resources/static/dijit/themes/nihilo/images/splitContainerSizerV.png new file mode 100644 index 0000000000000000000000000000000000000000..721cc7debf58cc173574898745447631e49993ba Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/splitContainerSizerV.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/spriteArrows.gif b/src/main/resources/static/dijit/themes/nihilo/images/spriteArrows.gif new file mode 100644 index 0000000000000000000000000000000000000000..fc81207e70710738804fd4f0803a7f7f6a80fe50 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/spriteArrows.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/spriteArrows.png b/src/main/resources/static/dijit/themes/nihilo/images/spriteArrows.png new file mode 100644 index 0000000000000000000000000000000000000000..80bb45a799f800bd5de23573cb4f061a35425eb5 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/spriteArrows.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/spriteCheckbox.gif b/src/main/resources/static/dijit/themes/nihilo/images/spriteCheckbox.gif new file mode 100644 index 0000000000000000000000000000000000000000..d2c4ebfaff2230675f59f5caf94ebe26739b5ed2 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/spriteCheckbox.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/spriteCheckbox.png b/src/main/resources/static/dijit/themes/nihilo/images/spriteCheckbox.png new file mode 100644 index 0000000000000000000000000000000000000000..03d1aa92e868a03f0cc9c0b5ae9d91e7f25d0322 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/spriteCheckbox.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/spriteDivIcons.gif b/src/main/resources/static/dijit/themes/nihilo/images/spriteDivIcons.gif new file mode 100644 index 0000000000000000000000000000000000000000..00ad23a310eede2ed0c8e88c2d37532e71b71ad1 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/spriteDivIcons.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/spriteDivIcons.png b/src/main/resources/static/dijit/themes/nihilo/images/spriteDivIcons.png new file mode 100644 index 0000000000000000000000000000000000000000..4e9ac30c90a71fda3c457c6c2eb896f1b4266317 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/spriteDivIcons.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/spriteRadio.gif b/src/main/resources/static/dijit/themes/nihilo/images/spriteRadio.gif new file mode 100644 index 0000000000000000000000000000000000000000..8dd6e578e89939ac92dddcb77a684ebb95955933 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/spriteRadio.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/spriteRadio.png b/src/main/resources/static/dijit/themes/nihilo/images/spriteRadio.png new file mode 100644 index 0000000000000000000000000000000000000000..eef7ab4b133a2a2136f369ea742dc29af50cd788 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/spriteRadio.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif b/src/main/resources/static/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif new file mode 100644 index 0000000000000000000000000000000000000000..251389a285e06380d4e8eda1ff98e6679c817fbd Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/spriteRoundedIconsSmall.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png b/src/main/resources/static/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png new file mode 100644 index 0000000000000000000000000000000000000000..baea73d2843a8267eb6144e63bde5b334cb5b9b2 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/spriteRoundedIconsSmall.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/spriteTree.gif b/src/main/resources/static/dijit/themes/nihilo/images/spriteTree.gif new file mode 100644 index 0000000000000000000000000000000000000000..e546e281b131d5a45571c6fd3a5bb7a30e856f1e Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/spriteTree.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/spriteTree.png b/src/main/resources/static/dijit/themes/nihilo/images/spriteTree.png new file mode 100644 index 0000000000000000000000000000000000000000..4e63248bebf5eed9d2dfc04a8aa696c15e7acee3 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/spriteTree.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/spriteTree_rtl.gif b/src/main/resources/static/dijit/themes/nihilo/images/spriteTree_rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..bbcc64be82efd5aab472b2d7b23b1567a480746b Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/spriteTree_rtl.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/spriteTree_rtl.png b/src/main/resources/static/dijit/themes/nihilo/images/spriteTree_rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..6c30c354ca1725d7a772f119c71cc3d3320e8815 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/spriteTree_rtl.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/tabBottomActiveC.gif b/src/main/resources/static/dijit/themes/nihilo/images/tabBottomActiveC.gif new file mode 100644 index 0000000000000000000000000000000000000000..84bffde04bd6e6a88a0cc7aed94b5052f36f1a0a Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/tabBottomActiveC.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/tabBottomEnabledC.gif b/src/main/resources/static/dijit/themes/nihilo/images/tabBottomEnabledC.gif new file mode 100644 index 0000000000000000000000000000000000000000..9ef9ab08496213ec596cdabcea577af6dd8ea51d Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/tabBottomEnabledC.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/tabBottomHoverC.gif b/src/main/resources/static/dijit/themes/nihilo/images/tabBottomHoverC.gif new file mode 100644 index 0000000000000000000000000000000000000000..0f533b56704a67192a07ba851f9b4be903d003d3 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/tabBottomHoverC.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/tabContainerSprite.gif b/src/main/resources/static/dijit/themes/nihilo/images/tabContainerSprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..92044a7f191eee8e86079d6e2e8a34be0c50644e Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/tabContainerSprite.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/titleBar.png b/src/main/resources/static/dijit/themes/nihilo/images/titleBar.png new file mode 100644 index 0000000000000000000000000000000000000000..1e01962ffa797d13b9e5962b8de8605d3455f2aa Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/titleBar.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/titleBarActive.png b/src/main/resources/static/dijit/themes/nihilo/images/titleBarActive.png new file mode 100644 index 0000000000000000000000000000000000000000..661bf599009eea7cf15eb84c710317b4d131ec35 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/titleBarActive.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorDown.gif b/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorDown.gif new file mode 100644 index 0000000000000000000000000000000000000000..9c3849553aa71a67ab40f153223b8394574ccd9d Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorDown.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorDown.png b/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorDown.png new file mode 100644 index 0000000000000000000000000000000000000000..7783f90479eefc4abab0ef0e16112d16474bda89 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorDown.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorLeft.gif b/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorLeft.gif new file mode 100644 index 0000000000000000000000000000000000000000..fc947e0a1997c1cd7c0bf170312a93596c2b735c Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorLeft.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorLeft.png b/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..ae16d3601c02546717912a59ffba06b5581079cc Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorLeft.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorRight.gif b/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorRight.gif new file mode 100644 index 0000000000000000000000000000000000000000..b0e8097f4b1fe9b8aead6c2b22d23a5702042fbf Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorRight.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorRight.png b/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorRight.png new file mode 100644 index 0000000000000000000000000000000000000000..9532b17dfcd6717cadc739be0cb89047541413d5 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorRight.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorUp.gif b/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorUp.gif new file mode 100644 index 0000000000000000000000000000000000000000..54bcf652c6bf0f540ed3d9a2079fcb5895b0605d Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorUp.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorUp.png b/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorUp.png new file mode 100644 index 0000000000000000000000000000000000000000..2dc5b31b31895a3913a76ed6a225ce05ad0b3472 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/tooltipConnectorUp.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/treeExpand_loading.gif b/src/main/resources/static/dijit/themes/nihilo/images/treeExpand_loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..db9ddd0282895511c648154db2bf621e33fcfbe1 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/treeExpand_loading.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/treeHover.png b/src/main/resources/static/dijit/themes/nihilo/images/treeHover.png new file mode 100644 index 0000000000000000000000000000000000000000..6a9e0917fdb80ffca3913981b4b93617d533421e Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/treeHover.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/treeI.gif b/src/main/resources/static/dijit/themes/nihilo/images/treeI.gif new file mode 100644 index 0000000000000000000000000000000000000000..6f669e24015476e1d05b9b69e042a91c9105ad2c Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/treeI.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/treeI_half.gif b/src/main/resources/static/dijit/themes/nihilo/images/treeI_half.gif new file mode 100644 index 0000000000000000000000000000000000000000..e5fd0155bd99e8018ab44f08c8ad22c1a429dbc3 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/treeI_half.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/treeI_half_rtl.gif b/src/main/resources/static/dijit/themes/nihilo/images/treeI_half_rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..44ad021a36dea29ecf72868965aed52ce393a41d Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/treeI_half_rtl.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/treeI_rtl.gif b/src/main/resources/static/dijit/themes/nihilo/images/treeI_rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..0d32a2f731795134a05617873080e36711806100 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/treeI_rtl.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/validationInputBg.gif b/src/main/resources/static/dijit/themes/nihilo/images/validationInputBg.gif new file mode 100644 index 0000000000000000000000000000000000000000..c28475c8d4e2f1e6a59369f4ee46c17b700dffce Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/validationInputBg.gif differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/validationInputBg.png b/src/main/resources/static/dijit/themes/nihilo/images/validationInputBg.png new file mode 100644 index 0000000000000000000000000000000000000000..ca0f890daa0379ba0107b802e93d4994e687eb0b Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/validationInputBg.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/images/warning.png b/src/main/resources/static/dijit/themes/nihilo/images/warning.png new file mode 100644 index 0000000000000000000000000000000000000000..07cabeae1065d71cf6724e9e14fd268c7b1672f9 Binary files /dev/null and b/src/main/resources/static/dijit/themes/nihilo/images/warning.png differ diff --git a/src/main/resources/static/dijit/themes/nihilo/layout/AccordionContainer.css b/src/main/resources/static/dijit/themes/nihilo/layout/AccordionContainer.css new file mode 100644 index 0000000000000000000000000000000000000000..f42db806c97ded9e79cafe7126b13920a2d6f0bb --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/layout/AccordionContainer.css @@ -0,0 +1,46 @@ +/** + * dijit.layout.Accordioncontainer + * + */ + +.nihilo .dijitAccordionContainer { + border-color: #ccc; + background-color: #fff; +} + +/* common */ + +.nihilo .dijitAccordionTitle { + background:#fafafa url("../images/titleBar.png") repeat-x top left; + border-top: 1px solid #dedede; + padding: 5px 4px 6px 8px; + font-size: 0.9em; + font-weight: bold; + color: #6d6d6d; +} + +.nihilo .dijitAccordionTitleSelected { + background: #f9f9f9 url("../images/accordionItemActive.png") top repeat-x; + font-weight: bold; + border-top: 1px solid #dedede; + border-bottom: 1px solid #dedede; + padding: 5px 4px 5px 8px; + color: #243C5F; +} + +.nihilo .dijitAccordionArrow { + background:url("../images/spriteRoundedIconsSmall.gif") no-repeat -30px top; + width:15px; + height:15px; + margin-top:-1px; +} + +.nihilo .dijitAccordionTitleSelected .dijitAccordionArrow { + background:url("../images/spriteRoundedIconsSmall.gif") no-repeat -15px top; + margin-top:-1px; +} + +.nihilo .dijitAccordionText { + margin-left: 4px; + margin-right: 4px; +} diff --git a/src/main/resources/static/dijit/themes/nihilo/layout/AccordionContainer_rtl.css b/src/main/resources/static/dijit/themes/nihilo/layout/AccordionContainer_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..f669a4753a34a51d4854aa81beb7b730f4b57dd0 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/layout/AccordionContainer_rtl.css @@ -0,0 +1,8 @@ +.dijitRtl .nihilo .dijitAccordionArrow { + background-position: 0 top; +} + +.dijitRtl .nihilo .dijitAccordionTitleSelected .dijitAccordionArrow { + /* same rule as LTR mode, just listed to override previous rule in this file */ + background-position: -15px top; +} diff --git a/src/main/resources/static/dijit/themes/nihilo/layout/BorderContainer.css b/src/main/resources/static/dijit/themes/nihilo/layout/BorderContainer.css new file mode 100644 index 0000000000000000000000000000000000000000..493da54e17cbc9067a63a772b1eb0bcb0447b5fb --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/layout/BorderContainer.css @@ -0,0 +1,76 @@ +/** + * dijit.layout.BorderContainer + * + */ + +.nihilo .dijitBorderContainer { + background-color: #fcfcfc; + padding: 5px; +} + +.nihilo .dijitSplitContainer-child, +.nihilo .dijitBorderContainer-child { + /* By default, put borders on all children of BorderContainer, + * to give illusion of borders on the splitters themselves. + */ + border: 1px #ccc solid; +} + +.nihilo .dijitBorderContainer-dijitTabContainerTop, +.nihilo .dijitBorderContainer-dijitTabContainerBottom, +.nihilo .dijitBorderContainer-dijitTabContainerLeft, +.nihilo .dijitBorderContainer-dijitTabContainerRight { + /* except that TabContainer defines borders on it's sub-nodes (tablist and dijitTabPaneWrapper), + * so override rule setting border on domNode + */ + border: none; +} + +.nihilo .dijitBorderContainer-dijitBorderContainer { + /* also, make nested BorderContainers look like a single big widget with lots of splitters */ + border: none; + padding: 0; +} + +.nihilo .dijitSplitterH, +.nihilo .dijitGutterH { + background:#FCFCFC; + border:0; + border-left:0 solid #d3d3d3; + border-right:0 solid #d3d3d3; + height:5px; +} + +.nihilo .dijitSplitterH .dijitSplitterThumb { + background:#8BA0BD none; + height:1px; + top:2px; + width:19px; +} + +.nihilo .dijitSplitterV, +.nihilo .dijitGutterV { + background:#FCFCFC; + border:0; + border-top:0 solid #d3d3d3; + border-bottom:0 solid #d3d3d3; + width:5px; +} + +.nihilo .dijitSplitterV .dijitSplitterThumb { + background:#8BA0BD none; + height:19px; + left:2px; + width:1px; +} + +/* active splitter */ +.nihilo .dijitSplitterActive { + font-size: 1px; + background-image: none; + background-color: #aaa; + -moz-opacity: 0.6; + opacity: 0.6; + filter: Alpha(Opacity=60); + margin: 0; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/nihilo/layout/ContentPane.css b/src/main/resources/static/dijit/themes/nihilo/layout/ContentPane.css new file mode 100644 index 0000000000000000000000000000000000000000..75272db5ac7c5c973fec51aafc59b6d9c2273d5d --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/layout/ContentPane.css @@ -0,0 +1,21 @@ +/* ContentPane */ + +.nihilo .dijitContentPane { + padding: 0; +} + +/* nested layouts */ +.nihilo .dijitTabContainerTop-dijitContentPane, +.nihilo .dijitTabContainerLeft-dijitContentPane, +.nihilo .dijitTabContainerRight-dijitContentPane, +.nihilo .dijitTabContainerBottom-dijitContentPane, +.nihilo .dijitAccordionContainer-dijitContentPane { + background-color: #fff; + padding: 5px; +} + +.nihilo .dijitSplitContainer-dijitContentPane, +.nihilo .dijitBorderContainer-dijitContentPane { + background-color: #fff; /* override background-color setting on parent .dijitBorderContainer */ + padding: 5px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/nihilo/layout/SplitContainer.css b/src/main/resources/static/dijit/themes/nihilo/layout/SplitContainer.css new file mode 100644 index 0000000000000000000000000000000000000000..9f4defadd0965661e857d096b45d97dcc336f03a --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/layout/SplitContainer.css @@ -0,0 +1,34 @@ +/** + * dijit.layout.SplitContainer + * + */ + +.nihilo .dijitSplitContainerSizerH { + background:url("../images/splitContainerSizerV.png") repeat-y #fff; + border:0; + border-left:0 solid #d3d3d3; + border-right:0 solid #d3d3d3; + width:5px; +} + +.nihilo .dijitSplitContainerSizerH .thumb { + background:url("../images/splitContainerSizerV-thumb.png") no-repeat; + left:1px; + width:2px; + height:19px; +} + +.nihilo .dijitSplitContainerSizerV { + background:url("../images/splitContainerSizerH.png") repeat-x #fff; + border:0; + border-top:0 solid #d3d3d3; + border-bottom:0 solid #d3d3d3; + height:2px; +} + +.nihilo .dijitSplitContainerSizerV .thumb { + background:url("../images/splitContainerSizerH-thumb.png") no-repeat; + top:1px; + width:19px; + height:5px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/nihilo/layout/TabContainer.css b/src/main/resources/static/dijit/themes/nihilo/layout/TabContainer.css new file mode 100644 index 0000000000000000000000000000000000000000..dba38c3fab5d8eca19a0c8470b398364b4608b13 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/layout/TabContainer.css @@ -0,0 +1,406 @@ +/** + * dijit.layout.TabContainer + */ +@import url("../Menu.css"); + +/* Classes for all types of tabs (top/bottom/left/right) */ + +.nihilo .dijitTabContainer .tabStripRBtn { + margin-right: 21px; +} +.nihilo .dijitTabContainer .tabStripLBtn { + margin-left: 21px; +} + +.nihilo .dijitTabContainerBottom .nowrapTabStrip .dijitTab { + top: 0; +} + +/* Tabs, shared classes */ +.nihilo .dijitTabPaneWrapper { + background:#fff; + border:1px solid #ccc; + margin: 0; + padding: 0; +} + +.nihilo .dijitTab { + padding:3px 6px 3px 4px; + background: url("../images/tabContainerSprite.gif") repeat-x 0 -350px; + position: relative; + line-height:normal; + margin: 0 1px; /* space between one tab and the next in top/bottom mode */ + color: #6d6d6d; + border: 1px #dedede solid; + border-bottom: 1px #ccc solid; +} + +/* hovered tab */ +.nihilo .dijitTabHover { + color: #243C5F; + background: url("../images/tabContainerSprite.gif") repeat-x 0 -200px; +} + +/* selected tab */ +.nihilo .dijitTabChecked { + background: url("../images/tabContainerSprite.gif") repeat-x 0 -50px; + color: #243C5F !important; +} + +/* Nested Tabs */ +.nihilo .dijitTabContainerNested .dijitTabListWrapper { + height: auto; +} + +.nihilo .dijitTabContainerTabListNested { + background: #FDFDFD; + border: none; + margin-bottom: 0; /* override margin: -1px; */ +} +.nihilo .dijitTabContainerTabListNested .dijitTab { + background: none; + border: none; + top: 0; /* override top:1px setting of top-level tabs */ +} +.nihilo .dijitTabContainerTabListNested .dijitTabHover .tabLabel { + text-decoration: underline; +} +.nihilo .dijitTabContainerTabListNested .dijitTabChecked .tabLabel { + text-decoration: underline; + font-weight: bold; +} +.nihilo .dijitTabContainerSpacerNested { + /* thinner line between tab (labels) and content */ + height: 0; + border-bottom: 0; +} +.nihilo .dijitTabPaneWrapperNested { + border: none; /* prevent double border */ +} + + +/* Close button */ +.nihilo .dijitTabCloseButton { + background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px top; + width: 15px; + height: 15px; + margin-top: -1px; +} + +.dj_ie6 .nihilo .dijitTabCloseButton { + background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px top; +} +.nihilo .dijitTabCloseButtonHover { + background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px -15px; +} +.dj_ie6 .nihilo .dijitTabCloseButtonHover { + background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px -15px; +} + +/* ================================ */ +/* top tabs */ +.nihilo .dijitTabContainerTop-tabs { + border-bottom: none; + padding-bottom: 1px; + background-position: bottom; + padding-left: 3px; +} +.nihilo .dijitTabContainerTop-tabs .dijitTab { + border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; +} + +.dj_ie6 .nihilo .dijitTabListContainer-top, +.dj_ie7 .nihilo .dijitTabListContainer-top { + z-index: 3; +} + +.dj_ie6 .nihilo .dijitTabContainerTop-tabs, +.dj_ie7 .nihilo .dijitTabContainerTop-tabs { + border-bottom: 1px solid #ccc; + padding-bottom: 0; +} + +.nihilo .dijitTabContainerTopNoStrip { + padding-top: 3px; +} + +/* top container */ +.nihilo .dijitTabContainerTop-container { + border-top: none; +} + +/* selected tab */ +.nihilo .dijitTabContainerTop-tabs .dijitTabChecked { + border-bottom-color: #f8f8f8; +} + +/* strip */ +.nihilo .dijitTabContainer .dijitTabContainerTopStrip { + border-bottom: none; + padding-top: 1px; + margin-top: 1px; + background: #f2f2f2; + border-top: 1px solid #CCC; + border-right: 1px solid #CCC; + border-left: 1px solid #CCC; +} + + +/* ================================ */ +/* bottom tabs */ +.nihilo .dijitTabContainerBottom-tabs { + border-top: none; + background-position: top; + padding-left: 3px; +} +.nihilo .dijitTabContainerBottom-tabs .dijitTab { + border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-bottom: none; + border-top: 1px solid #ccc; + padding-top: 3px; + padding-bottom: 3px; + background: url("../images/tabBottomEnabledC.gif") repeat-x bottom left; +} + + +.nihilo .dijitTabContainerBottom-tabs .dijitTabHover { + color: #243C5F; + background: url("../images/tabBottomHoverC.gif") repeat-x bottom left; +} + +.nihilo .dijitTabContainerBottom-tabs .dijitTabChecked { + /* the selected tab (with or without hover) */ + border-top-color: #f8f8f8; + background: url("../images/tabBottomActiveC.gif") repeat-x bottom left; +} + + +.dj_ie6 .nihilo .dijitTabListContainer-bottom, +.dj_ie7 .nihilo .dijitTabListContainer-bottom { + z-index: 3; +} + +.dj_ie6 .nihilo .dijitTabContainerBottom-tabs, +.dj_ie7 .nihilo .dijitTabContainerBottom-tabs { + border-top: 1px solid #ccc; + margin-top: -1px; +} + +/* bottom container */ +.nihilo .dijitTabContainerBottom-container { + border-bottom: none; +} + +/* strip */ +.nihilo .dijitTabContainer .dijitTabContainerBottomStrip { + border: 1px solid #ccc; + background: #f2f2f2; + border-top: none; + padding-bottom: 2px; +} + +/* top/bottom strip */ +.nihilo .dijitTabContainerBottom-spacer, +.nihilo .dijitTabContainerTop-spacer { + height: 2px; + border: 1px solid #ccc; +} + +.nihilo .dijitTabContainerTop-spacer { + margin-top: -1px; + background: #f3f3f3; +} +.nihilo .dijitTabContainerBottom-spacer { + margin-bottom: -1px; + background: #f8f8f8; +} + + +/* ================================ */ +/* right tabs */ +.nihilo .dijitTabContainerRight-tabs { + border-color: #ccc; + padding-top: 3px; +} +.nihilo .dijitTabContainerRight-tabs .dijitTab { + border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-left: 1px solid #ccc; + border-bottom: 1px solid #dedede !important; +} + +.nihilo .dijitTabContainerRight .dijitTabListWrapper { + padding-right: 3px; +} +.nihilo .dijitTabContainerRight-tabs .dijitTabChecked { + border-left: 1px solid #f8f8f8; +} + + +/* right container */ +.nihilo .dijitTabContainerRight-container { + border-right: none; +} + +/* some odd ie bug when borders disappear when setting a bottom margin, this sort of helps */ +.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTab { + border-bottom: solid #fff 1px; +} + +/* selected tab */ +.nihilo .dijitTabContainerRight-tabs .dijitTabChecked { + border-left-color: #f8f8f8; +} + +/* some odd ie bug when borders disappear when setting a bottom margin, this sort of helps */ +.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabChecked, +.dj_ie .nihilo .dijitTabContainerRight-tabs .dijitTabCheckedHover { + border-bottom: solid #efefef 1px; +} + +/* strip */ +.nihilo .dijitTabContainerRightStrip { + padding-right: 2px; + border: 1px solid #ccc; + border-left: none; + background: #f2f2f2; +} + +/* ================================ */ +/* left tabs */ +.nihilo .dijitTabContainerLeft-tabs { + border-color: #ccc; + padding-top: 3px; +} +.nihilo .dijitTabContainerLeft-tabs .dijitTab { + border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-right: 1px solid #ccc; + border-bottom: 1px solid #dedede; +} + +/* selected tab */ +.nihilo .dijitTabContainerLeft-tabs .dijitTabChecked { + border-right: 1px solid #f8f8f8; +} + +/* left container */ +.nihilo .dijitTabContainerLeft-container { + border-left: none; +} + + +.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabChecked, +.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabCheckedHover { + border-bottom: solid #efefef 1px; +} + +.dj_ie .nihilo .dijitTabContainerLeft-tabs .dijitTabInnerDiv { + border-bottom: solid #fff 1px; +} + +/* strip */ +.nihilo .dijitTabContainerLeftStrip { + padding-left: 2px; + border: 1px solid #ccc; + border-right: none; +} + +.nihilo .dijitTabContainerLeftStrip { + background: #f2f2f2; +} + +/* ================================ */ +/* left/right tabs */ +.nihilo .dijitTabContainerLeft-tabs .dijitTab, +.nihilo .dijitTabContainerRight-tabs .dijitTab { + margin: 1px 0; /* space between one tab and the next in left/right mode */ +} + +/* left/right tabstrip */ +.nihilo .dijitTabContainerLeft-spacer, +.nihilo .dijitTabContainerRight-spacer { + width: 2px; + border: 1px solid #ccc; + background: #f8f8f8; +} + +.nihilo .dijitTabContainerRight-spacer { + border-right: none; +} + +.nihilo .dijitTabContainerRight-tabs { + padding-top: 3px; + height: 100%; +} +.nihilo .dijitTabContainerLeft-tabs { + height: 100%; +} + +.nihilo .dijitTabContainerLeft-spacer { + border-left: none; +} + +/* ================================ */ + +/* this resets the tabcontainer strip when within a contentpane */ +.nihilo .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs { + border-left: 0 solid #ccc; + border-top: 0 solid #ccc; + border-right: 0 solid #ccc; + padding-top: 0; + padding-left: 0; +} + +/* ================================ */ + +/* Menu and slider control styles */ +.nihilo .dijitTabContainer .tabStripButton { + margin-right: 0; + padding: 5px 3px 6px 0px; +} + +.dj_ie6 .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent, +.dj_ie7 .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent, +.dj_opera .nihilo .tabStripButton .dijitTabInnerDiv .dijitTabContent { + padding-bottom: 7px; +} + +.dj_ie6 .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent, +.dj_ie7 .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent, +.dj_opera .nihilo .tabStrip-disabled .tabStripButton .dijitTabInnerDiv .dijitTabContent { + padding-top: 4px; +} + +.nihilo .dijitTabStripIcon { + height: 14px; + width: 14px; + background: url(../images/spriteRoundedIconsSmall.png) no-repeat left top; +} + +.dj_ie6 .nihilo .dijitTabStripIcon { + background-image: url(../images/spriteRoundedIconsSmall.gif); +} + +.nihilo .dijitTabStripSlideRightIcon { + background-position: -30px top; +} + +.nihilo .dijitTabStripMenuIcon { + background-position: -15px top; +} + +.nihilo .dijitTabContainerTopNone { + padding-top: 0; +} + +.nihilo .dijitTabContainer .tabStripButton-top { + margin-top: 1px; +} + +.nihilo .dijitTabContainer .tabStripButton-bottom { + border-bottom: medium none; + border-top: 1px solid #CCCCCC; +} diff --git a/src/main/resources/static/dijit/themes/nihilo/layout/TabContainer_rtl.css b/src/main/resources/static/dijit/themes/nihilo/layout/TabContainer_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..225fc3eba90b87f325b0cdca21c743fcb6ab8d19 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/layout/TabContainer_rtl.css @@ -0,0 +1,43 @@ +.dijitRtl .nihilo .dijitTab { + margin-right:0; + margin-left:2px; /* space between one tab and the next in top/bottom mode */ +} + +/* tab strips */ +.dijitRtl .nihilo .dijitTabContainer .tabStripButton { + margin-left: 0; +} + +.dijitRtl .nihilo .dijitTabContainerTopStrip, +.dijitRtl .nihilo .dijitTabContainerBottomStrip, +.dijitRtl .nihilo .dijitTabContainerTop-tabs, +.dijitRtl .nihilo .dijitTabContainerBottom-tabs { + padding-left: 0; + padding-right: 3px; +} + +.dijitRtl .nihilo .dijitTabInnerDiv { + padding-left: 3px; + padding-right: 4px; +} + +.dijitRtl .nihilo .dijitTabPaneWrapper { + #zoom: 1; +} + +.dj_ie-rtl .nihilo .dijitTabContainerLeft-tabs { + margin-left: 0 !important; +} + +.dj_ie-rtl .nihilo .dijitTabContainerRight-tabs { + margin-right: 0 !important; +} + +.dijitRtl .nihilo .dijitTabContainerLeft-tabs .dijitTab, +.dijitRtl .nihilo .dijitTabContainerRight-tabs .dijitTab { + margin-left:0; +} + +.dj_ie-rtl .nihilo .dijitTab .dijitTabInnerDiv{ + width : 1%; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/nihilo/nihilo.css b/src/main/resources/static/dijit/themes/nihilo/nihilo.css new file mode 100644 index 0000000000000000000000000000000000000000..97ba8f6ebe44ff74bfeb9106b3efecfa25baaea1 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/nihilo.css @@ -0,0 +1,42 @@ +/* + Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file. + + NOTES: + --- + Dialog.css contains css classes for both Dialog and Tooltip! + This because currently a dijit.TooltipDialog exist. Until this is resolved + you need to include Dialog.css for both dijits + --- + Toolbar.css contains classes also used in Editor. Until this is resolved + you need to include Toolbar.css for both Toolbar and Editor + --- + Button.css contains classes for combobox, + +*/ + +@import url("../dijit.css"); +@import url("../../icons/commonIcons.css");/*sprite containing common icons to be used by all themes*/ +@import url("Common.css"); + +@import url("layout/ContentPane.css"); +@import url("layout/TabContainer.css"); +@import url("layout/AccordionContainer.css"); +@import url("layout/SplitContainer.css"); +@import url("layout/BorderContainer.css"); +@import url("form/Common.css"); +@import url("form/Button.css"); +@import url("form/Checkbox.css"); +@import url("form/RadioButton.css"); +@import url("form/Slider.css"); +@import url("form/Select.css"); +@import url("Tree.css"); +@import url("ProgressBar.css"); +@import url("TitlePane.css"); +@import url("Calendar.css"); +@import url("TimePicker.css"); +@import url("Toolbar.css"); +@import url("Dialog.css"); +@import url("Menu.css"); +@import url("Editor.css"); +@import url("../../icons/editorIcons.css"); /* sprite for editor icons to be used by all themes */ +@import url("ColorPalette.css"); \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/nihilo/nihilo_rtl.css b/src/main/resources/static/dijit/themes/nihilo/nihilo_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..5c32adeb6ce0b03d9fd2dd404b95ec169dd20615 --- /dev/null +++ b/src/main/resources/static/dijit/themes/nihilo/nihilo_rtl.css @@ -0,0 +1,30 @@ +/* + Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file. + + NOTES: + --- + Dialog.css contains css classes for both Dialog and Tooltip! + This because currently a dijit.TooltipDialog exist. Until this is resolved + you need to include Dialog.css for both dijits + --- + Toolbar.css contains classes also used in Editor. Until this is resolved + you need to include Toolbar.css for both Toolbar and Editor + --- + Button.css contains classes for combobox, + +*/ + +@import url("../dijit_rtl.css"); +@import url("layout/TabContainer_rtl.css"); +@import url("layout/AccordionContainer_rtl.css"); +@import url("form/Slider_rtl.css"); +@import url("form/Button_rtl.css"); +@import url("Tree_rtl.css"); +@import url("TitlePane_rtl.css"); +@import url("Calendar_rtl.css"); +@import url("TimePicker_rtl.css"); +@import url("Dialog_rtl.css"); +@import url("ProgressBar_rtl.css"); +@import url("Menu_rtl.css"); +@import url("Editor_rtl.css"); +@import url("../../icons/editorIcons_rtl.css");/* RTL sprite for editor icons to be used by all themes*/ \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/soria/Calendar.css b/src/main/resources/static/dijit/themes/soria/Calendar.css new file mode 100644 index 0000000000000000000000000000000000000000..98526beb73cccf70010dcbe254f991b660b75721 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/Calendar.css @@ -0,0 +1,160 @@ +/* Calendar*/ + +.soria .dijitCalendarIncrementControl { + /* next/prev month buttons */ + width:15px; + height:15px; + background-image: url("images/spriteRoundedIconsSmall.png"); + background-repeat: no-repeat; +} +.dj_ie6 .soria .dijitCalendarIncrementControl { + font-size:.1em; + background-image: url("images/spriteRoundedIconsSmall.gif"); +} + +.soria .dijitA11ySideArrow { + display: none; +} + +.soria .dijitCalendarDecrease { + background-position: top left; +} +.soria .dijitCalendarIncrease { + background-position: -30px top; +} + +.soria table.dijitCalendarContainer { + font-size: 100%; + border-spacing: 0; + border-collapse: separate; + margin: 0; +} + +.soria .dijitCalendarMonthContainer { + /* month header cell */ + background:#bed7f0 url("images/titleBar.png") repeat-x top; + padding-top:.3em; + padding-bottom:.2em; + text-align:center; +} +.dj_ie6 .soria .dijitCalendarMonthContainer th { + padding-top:.2em; + padding-bottom:.1em; +} + +.soria .dijitCalendarDayLabelTemplate { + /* day of week labels */ + background:#bed7f0; + font-weight:normal; + padding-top:.15em; + padding-bottom:.2em; + border-bottom: 1px solid #b1badf; + color:#293a4b; + text-align:center; +} + +.soria .dijitCalendarBodyContainer { + border-bottom: 1px solid #eeeeee; +} + +.soria .dijitCalendarMonthLabel { + color:#293a4b; + font-weight: bold; + padding: 0 4px; +} + +.soria .dijitCalendarDateTemplate { + /* style for each day cell */ + font-size: 0.9em; + font-weight: bold; + text-align: center; + padding: 0.3em 0.3em 0.05em 0.3em; + letter-spacing: 1px; + background-color: #fff; + border:#fff solid 1px !important; +} + +.dj_ie .soria .dijitCalendarDateTemplate { + padding: 0.1em .33em 0.02em .33em; +} + +.soria .dijitCalendarPreviousMonth, +.soria .dijitCalendarNextMonth { + /* days that are part of the previous or next month */ + color:#999999; + background-color:#fdfdfd !important; + border:#fdfdfd solid 1px !important; +} + +.soria .dijitCalendarCurrentMonth { + /* days that are part of this month */ +} + +.soria .dijitCalendarDisabledDate { + text-decoration:line-through !important; +} + +.soria .dijitCalendarCurrentDate { + /* cell for today's date */ + text-decoration:underline; + font-weight:bold; +} + +.soria .dijitCalendarSelectedDate { + /* cell for the selected date */ + background-color:#b9cbf1 !important; + color:black !important; + border:#4b5aaa solid 1px !important; +} + + +.soria .dijitCalendarYearContainer { + /* footer of the table that contains the year display/selector */ + background:white url("images/titleBar.png") repeat-x top; +} + +.soria .dijitCalendarYearLabel { + /* container for all of 3 year labels */ + margin:0; + padding:0.4em 0 0.25em 0; + text-align:center; + font-size: 1.17em; +} + +.soria .dijitCalendarSelectedYear { + /* label for selected year */ + font-weight:bolder; + color:black; + padding:0.2em; + padding-bottom:0.1em; + background-color:#b9cbf1 !important; + border:#4b5aaa solid 1px !important; +} + +.soria .dijitCalendarNextYear, +.soria .dijitCalendarPreviousYear { + /* label for next/prev years */ + color:black !important; + font-weight:normal; +} + +/* Styling for month DropDownButton */ + +.soria .dijitCalendar .dijitDropDownButton { + margin: 0; +} +.soria .dijitCalendar .dijitButtonText { + padding: 0; +} +.soria .dijitCalendar .dijitDropDownButton .dijitButtonNode { + background-color: transparent; + background-image: none; + padding: 0; +} + +/* Styling for month drop down list */ + +.soria .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover { + background-color: #d9e6f9; + color: #243C5F; +} diff --git a/src/main/resources/static/dijit/themes/soria/Calendar_rtl.css b/src/main/resources/static/dijit/themes/soria/Calendar_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..c2350b4ed400c87eb078a16d851f02ee00b43f76 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/Calendar_rtl.css @@ -0,0 +1,9 @@ +/* Calendar */ + +.dijitRtl .soria .dijitCalendarDecrease { + background-position: -30px top; +} + +.dijitRtl .soria .dijitCalendarIncrease { + background-position: 0 top; +} diff --git a/src/main/resources/static/dijit/themes/soria/ColorPalette.css b/src/main/resources/static/dijit/themes/soria/ColorPalette.css new file mode 100644 index 0000000000000000000000000000000000000000..85d6dd819800491ee4569f3539d247dfa1e664be --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/ColorPalette.css @@ -0,0 +1,5 @@ +.dijitColorPalette { + border:1px solid #cbcbcb; + background:#fff; + -moz-border-radius: 0 !important; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/soria/Common.css b/src/main/resources/static/dijit/themes/soria/Common.css new file mode 100644 index 0000000000000000000000000000000000000000..93efae7baf46b325ecba272c2e12f35e9e55dc70 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/Common.css @@ -0,0 +1,22 @@ +/* DnD hovered and selected node(s) */ +.soria .dojoDndItemOver { + background-image: url(images/treeHover.png); +} +.soria .dojoDndItemAnchor, +.soria .dojoDndItemSelected { + background-color: #B8CBEC; +} + + +/* DnD avatar-specific settings */ +/* For now it uses a default set of rules. Some other DnD classes can be modified as well. */ + +.soria table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;} +.soria .dojoDndAvatar td { border: none; } +.soria .dojoDndAvatar tr { border: none; } +.soria .dojoDndAvatarHeader td { height: 20px; padding: 0 0 0 21px; } +.soria .dojoDndAvatarItem td { padding: 2px;} +.soria.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;} +.soria.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;} +.soria.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;} +.soria.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;} diff --git a/src/main/resources/static/dijit/themes/soria/Dialog.css b/src/main/resources/static/dijit/themes/soria/Dialog.css new file mode 100644 index 0000000000000000000000000000000000000000..956df8d5e1c2ecb7353f630f128dd0e11b0cc963 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/Dialog.css @@ -0,0 +1,147 @@ +/* Dialog */ + +.soria .dijitDialog { + background: #eee; + border: 1px solid #cbcbcb; + -webkit-box-shadow: 0 5px 10px #adadad; + padding: 0; +} + +.soria .dijitDialog .dijitDialogTitle { + /* typography and styling of the dialog title */ + font-weight: bold; + padding: 0 4px; + font-size: 0.9em; + color: #243C5F; +} + +.soria .dijitDialog .dijitDialogPaneContent { + background: #ffffff; + border-top: 1px solid #b1badf; + padding:10px; + +} + +.soria .dijitDialogTitleBar { + /* outer container for the titlebar of the dialog */ + background: #fafafa url("images/titleBar.png") repeat-x top left; + padding: 5px 6px 3px 6px; + outline:0; /* remove this line if keyboard focus on dialog startup is an issue. tab still takes you to first focusable element */ +} + +.soria .dijitDialogCloseIcon { + /* the default close icon for the dialog */ + background-image: url("images/spriteRoundedIconsSmallBl.png"); + background-repeat: no-repeat; + background-position: -60px 0; + position: absolute; + vertical-align: middle; + right: 6px; + top: 4px; + height: 15px; + width: 15px; +} +.dj_ie6 .soria .dijitDialogCloseIcon { + background-image: url("images/spriteRoundedIconsSmallBl.gif"); +} +.soria .dijitDialogCloseIconHover { + background-position: -60px -15px; +} + +/* Tooltip and TooltipDialog */ + +.soria .dijitTooltip, +.soria .dijitTooltipDialog { + /* the outermost dom node, holding the connector and container */ + background: transparent; /* make the area on the sides of the arrow transparent */ +} + +.dijitTooltipBelow { + /* leave room for arrow above content */ + padding-top: 10px; +} + +.dijitTooltipAbove { + /* leave room for arrow below content */ + padding-bottom: 10px; +} + +.soria .dijitTooltipContainer { + /* The part with the text. */ + background-color: #fff; + border:1px solid #cbcbcb; + padding:0.45em; +} + +.soria .dijitTooltipConnector { + /* the arrow piece */ + border:0; + z-index: 2; +} + +.soria .dijitTooltipABRight .dijitTooltipConnector { + /* above or below tooltip, but the arrow appears on the right, + and the right edges of target and tooltip are aligned rather than the left */ + left: auto !important; + right: 6px; +} + +.soria .dijitTooltipBelow .dijitTooltipConnector { + /* the arrow piece for tooltips below an element */ + top: 0; + left: 6px; + background:url("images/tooltipConnectorUp.png") no-repeat top left; + width:17px; + height:11px; +} + +.dj_ie .soria .dijitTooltipBelow .dijitTooltipConnector { + background-image: url("images/tooltipConnectorUp.gif"); +} + +.soria .dijitTooltipAbove .dijitTooltipConnector { + /* the arrow piece for tooltips above an element */ + bottom: 0; + left: 6px; + background:url("images/tooltipConnectorDown.png") no-repeat top left; + width:17px; + height:11px; +} +.dj_ie .soria .dijitTooltipAbove .dijitTooltipConnector { + background-image: url("images/tooltipConnectorDown.gif"); +} +.dj_ie .soria .dijitTooltipAbove .dijitTooltipConnector { + background-image: url("images/tooltipConnectorDown.gif"); +} +.dj_ie6 .soria .dijitTooltipAbove .dijitTooltipConnector { + bottom: -5px; +} + +.soria .dijitTooltipLeft { + padding-right: 10px; +} +.soria .dijitTooltipLeft .dijitTooltipConnector { + /* the arrow piece for tooltips to the left of an element, bottom borders aligned */ + right: 0; + background:url("images/tooltipConnectorRight.png") no-repeat top left; + width:11px; + height:17px; +} +.dj_ie .soria .dijitTooltipLeft .dijitTooltipConnector { + background-image: url("images/tooltipConnectorRight.gif"); +} + +.soria .dijitTooltipRight { + padding-left: 10px; +} +.soria .dijitTooltipRight .dijitTooltipConnector { + /* the arrow piece for tooltips to the right of an element, bottom borders aligned */ + left: 0; + background:url("images/tooltipConnectorLeft.png") no-repeat top left; + width:11px; + height:17px; +} +.dj_ie .soria .dijitTooltipRight .dijitTooltipConnector { + background-image: url("images/tooltipConnectorLeft.gif"); +} + diff --git a/src/main/resources/static/dijit/themes/soria/Dialog_rtl.css b/src/main/resources/static/dijit/themes/soria/Dialog_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..838700af5766d6ca3c8c8fe5b30825fb59c83da2 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/Dialog_rtl.css @@ -0,0 +1,5 @@ +/* Dialog */ +.dijitRtl .soria .dijitDialogTitleBar .dijitDialogCloseIcon { + right: auto; + left: 5px; +} diff --git a/src/main/resources/static/dijit/themes/soria/Editor.css b/src/main/resources/static/dijit/themes/soria/Editor.css new file mode 100644 index 0000000000000000000000000000000000000000..d2dd2930362b7d5e1fb2fe770f909e892d4221a3 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/Editor.css @@ -0,0 +1,17 @@ +.soria .dijitToolbar .dijitToolbarSeparator { + background: url('../../icons/images/editorIconsEnabled.png'); /* separator in editor icons sprite image - enabled state */ +} + +/**** ICONS *****/ + +.soria .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsEnabled.png'); /* editor icons sprite image - enabled state */ + background-repeat: no-repeat; + width: 18px; + height: 18px; + text-align: center; +} +.soria .dijitDisabled .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsDisabled.png'); /* editor icons sprite image - disabled state */ +} + diff --git a/src/main/resources/static/dijit/themes/soria/Editor_rtl.css b/src/main/resources/static/dijit/themes/soria/Editor_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..a1f76e8c453e2efe4170baf70dd266d288233853 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/Editor_rtl.css @@ -0,0 +1,7 @@ +/* Editor */ +.dijitRtl .soria .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsEnabled_rtl.png'); /* editor icons sprite image - enabled state */ +} +.dijitRtl .soria .dijitDisabled .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsDisabled_rtl.png'); /* editor icons sprite image - disabled state */ +} diff --git a/src/main/resources/static/dijit/themes/soria/Menu.css b/src/main/resources/static/dijit/themes/soria/Menu.css new file mode 100644 index 0000000000000000000000000000000000000000..d2dffd22ab3e3d86c786946c92735ce40090070a --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/Menu.css @@ -0,0 +1,80 @@ + +/* Menu */ +.soria .dijitMenu, +.soria .dijitMenuBar { + border: 1px solid #cbcbcb; + margin: 0; + padding: 0; + background-color: #fff; +} + +.soria .dijitBorderContainer .dijitMenuBar { + border:1px solid #B1BADF; +} + +.soria .dijitMenuItem { + font-family: sans-serif; + margin: 0; + color: #243C5F; +} +.soria .dijitMenuBar .dijitMenuItem { + padding: 4px 5px; +} + +.soria .dijitMenuPreviousButton, .soria .dijitMenuNextButton { + font-style: italic; +} +.soria .dijitMenuItem TD { + padding:1px; +} + +.soria .dijitMenuPassive .dijitMenuItemHover, +.soria .dijitComboBoxMenu .dijitMenuItemHover, +.soria .dijitMenuItemSelected { + background-color: #d9e6f9; /* #95a0b0; #555555; #aaaaaa; #646464; #60a1ea; #848484; */ + color: #243C5F; +} + +.soria .dijitMenuItemIcon { + width: 15px; + height: 15px; +} + +.soria .dijitMenuExpand { + width:15px; + height:15px; + background-image: url('images/spriteRoundedIconsSmall.png'); + background-position: -30px top; +} +.dj_ie6 .soria .dijitMenuExpand { + background-image: url('images/spriteRoundedIconsSmall.gif'); +} + +.soria .dijitMenuSeparator { + height: 1px; +} + +/* separator can be two pixels -- set border of either one to 0 to have only one */ +.soria .dijitMenuSeparatorTop { + border-bottom: 1px solid #fff; /*97adcb; */ +} + +.soria .dijitMenuSeparatorBottom { + border-top: 1px solid #8ba0bd; +} + +/* the checked menu item */ +.soria .dijitCheckedMenuItem .dijitMenuItemIcon { + background-image: url('images/spriteCheckbox.gif'); + background-position: -80px; +} +.soria .dijitCheckedMenuItemChecked .dijitMenuItemIcon { + background-position: -64px; +} +.soria .dijitRadioMenuItem .dijitMenuItemIcon { + background-image: url('images/spriteRadio.gif'); + background-position: -80px; +} +.soria .dijitRadioMenuItemChecked .dijitMenuItemIcon { + background-position: -64px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/soria/Menu_rtl.css b/src/main/resources/static/dijit/themes/soria/Menu_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..0e01483947d89ec2cb7c81b47b19905eea0323d5 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/Menu_rtl.css @@ -0,0 +1,10 @@ +/* Menu */ + +.dijitRtl .soria .dijitMenuItem .dijitMenuItemIcon { + padding-left: 3px; + padding-right: 0; +} + +.dijitRtl .soria .dijitMenuItem .dijitMenuExpand { + background-position: left top; +} diff --git a/src/main/resources/static/dijit/themes/soria/ProgressBar.css b/src/main/resources/static/dijit/themes/soria/ProgressBar.css new file mode 100644 index 0000000000000000000000000000000000000000..19ad2fa8b9de6b20956f310dc62b4249c76ddc72 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/ProgressBar.css @@ -0,0 +1,34 @@ + +/**** + dijit.ProgressBar + ****/ + +.soria .dijitProgressBar { + margin:2px 0 2px 0; +} + +.soria .dijitProgressBarEmpty{ + /* outer container and background of the bar that's not finished yet*/ + background:#fff url("images/progressBarEmpty.png") repeat-x center center; + border-color: #8ba0bd; +} + +.soria .dijitProgressBarTile{ + /* inner container for finished portion when in 'tile' (image) mode */ + background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center; +} + +.soria .dijitProgressBarFull { + border: 0px solid #8ba0bd; + border-right-width: 1px; +} + +.soria .dijitProgressBarLabel { + /* Set to a color that contrasts with both the "Empty" and "Full" parts. */ + color:#293a4b; +} + +.soria .dijitProgressBarIndeterminate .dijitProgressBarTile { + /* use an animated gif for the progress bar in 'indeterminate' mode */ + background:#cad2de url("images/progressBarAnim.gif") repeat-x center center; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/soria/ProgressBar_rtl.css b/src/main/resources/static/dijit/themes/soria/ProgressBar_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..8f805a89eaaad159c81d6189e4a4e0d3bbd2c9b4 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/ProgressBar_rtl.css @@ -0,0 +1,18 @@ + +/**** + dijit.ProgressBar + ****/ + +.soria .dijitProgressBarRtl .dijitProgressBarFull { + border-left-width: 1px; + border-right: 0px; +} + +.soria .dijitProgressBarIndeterminateRtl .dijitProgressBarTile { + -moz-transform: scaleX(-1); + -o-transform: scaleX(-1); + -webkit-transform: scaleX(-1); + transform: scaleX(-1); + filter: FlipH; + -ms-filter: "FlipH"; +} diff --git a/src/main/resources/static/dijit/themes/soria/TimePicker.css b/src/main/resources/static/dijit/themes/soria/TimePicker.css new file mode 100644 index 0000000000000000000000000000000000000000..e2f827c9b22c5aacaacb4074992c818d72fac3b9 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/TimePicker.css @@ -0,0 +1,33 @@ +/* Time Picker */ +.soria .dijitTimePickerTick, +.soria .dijitTimePickerMarker { + border-color: #b1badf; +} + +.soria .dijitTimePickerTick { + color: gray; +} + +.soria .dijitTimePickerMarker { + background:#bed7f0 url("images/titleBar.png") repeat-x top; + color:#293a4b; + font-weight: bold; +} + +.soria .dijitTimePickerItemSelected { + color: black; + background: #b9cbf1 none; +} + +.soria .dijitTimePickerItemHover { + background: #60a1ea none; + color:white; +} + +.soria .dijitTimePickerTick .dijitTimePickerItemInner { + font-size: 0.8em; +} + +.soria .dijitTimePickerItemSelected .dijitTimePickerItemInner { + font-size: 1em; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/soria/TimePicker_rtl.css b/src/main/resources/static/dijit/themes/soria/TimePicker_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..a802ba6b6a4243b63984783946ac03ca361222be --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/TimePicker_rtl.css @@ -0,0 +1,4 @@ +.dj_ie6-rtl .soria .dijitTimePickerMarkerHover, +.dj_ie7-rtl .soria .dijitTimePickerMarkerHover { + border-top: 0; /* IE6/7 bug causes mouseover/out event storm */ +} diff --git a/src/main/resources/static/dijit/themes/soria/TitlePane.css b/src/main/resources/static/dijit/themes/soria/TitlePane.css new file mode 100644 index 0000000000000000000000000000000000000000..ad7f4e9e78a12df71378b3e1a62a92831716056d --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/TitlePane.css @@ -0,0 +1,58 @@ +/** + * dijit.TitlePane and dijit.Fieldset + * + */ + +.soria .dijitTitlePaneTitle { + background: #cccccc; + background:#fff url("images/titleBar.png") repeat-x top left; + border:1px solid #bfbfbf; + padding:3px 4px; + font-size: 0.9em; + font-weight: bold; + color: #6d6d6d; +} +.soria .dijitTitlePaneTitleHover { + background: #f9f9f9 url("images/accordionItemActive.png") top repeat-x; +} + +.soria .dijitTitlePaneTitle * { + vertical-align: middle; +} + +.soria .dijitTitlePane .dijitArrowNode, +.soria .dijitFieldset .dijitArrowNode { + width:15px; + height:15px; +} + +.soria .dijitTitlePaneTextNode { + color: #243C5F; +} + +.soria .dijitTitlePane .dijitClosed .dijitArrowNode, .soria .dijitFieldset .dijitFieldsetTitleClosed .dijitArrowNode { + background: url('images/spriteRoundedIconsSmall.png') no-repeat -30px top; +} +.dj_ie6 .soria .dijitTitlePane .dijitClosed .dijitArrowNode, .dj_ie6 .soria .dijitFieldset .dijitFieldsetTitleClosed .dijitArrowNode { + background:url('images/spriteRoundedIconsSmall.gif') no-repeat -30px top; +} +.soria .dijitTitlePane .dijitOpen .dijitArrowNode, .soria .dijitFieldset .dijitFieldsetTitleOpen .dijitArrowNode { + background:url('images/spriteRoundedIconsSmall.png') no-repeat -15px top; +} +.dj_ie6 .soria .dijitTitlePane .dijitOpen .dijitArrowNode, .dj_ie6 .soria .dijitFieldset .dijitFieldsetTitleClosed .dijitArrowNode { + background:url('images/spriteRoundedIconsSmall.gif') no-repeat -15px top; +} + +.soria .dijitTitlePaneContentOuter { + background: #ffffff; + border: 1px solid #bfbfbf; + border-top: 0; +} +.soria .dijitTitlePaneContentInner { + padding:10px; +} + +.soria .dijitTitlePaneTextNode { + margin-left: 4px; + margin-right: 4px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/soria/TitlePane_rtl.css b/src/main/resources/static/dijit/themes/soria/TitlePane_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..5252264f6049a4ac0201e2efcf2152439de4df99 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/TitlePane_rtl.css @@ -0,0 +1,3 @@ +.soria .dijitTitlePaneRtl .dijitClosed .dijitArrowNode, .soria .dijitFieldsetRtl .dijitFieldsetTitleClosed .dijitArrowNode { + background-position: 0 top; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/soria/Toolbar.css b/src/main/resources/static/dijit/themes/soria/Toolbar.css new file mode 100644 index 0000000000000000000000000000000000000000..8af426a11b0cd1fb5f1b7703ce0ec4d2e9590f1f --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/Toolbar.css @@ -0,0 +1,65 @@ +.soria .dijitToolbar { + border-bottom: 1px solid #ccc; + background:#eaeaea url("images/titleBar.png") repeat-x top left; +} + +/* setting a min-height on ditor toolbar */ +.dj_ie6 .soria .dijitToolbar { + height: 10px; +} + +.soria .dijitToolbar .dijitButtonNode, +.soria .dijitToolbar .dijitComboButton .dijitButtonContents, +.soria .dijitToolbar .dijitComboButton .dijitDownArrowButton { + background: none; + margin: 0; + padding: 0; + border: none; + font-size: 12px; +} + +.soria .dijitToolbar .dijitButton, +.soria .dijitToolbar .dijitToggleButton, +.soria .dijitToolbar .dijitDropDownButton, +.soria .dijitToolbar .dijitComboButton .dijitButtonContents, +.soria .dijitToolbar .dijitComboButton .dijitDownArrowButton { + background: none; + padding: 1px; /* on hover etc., margin replaced w/border */ +} + +.soria .dijitToolbar .dijitButtonChecked, +.soria .dijitToolbar .dijitToggleButtonChecked { + background-color:#d8e5f8; + border:1px solid #316ac5; + padding: 0; +} + +.soria .dijitToolbar .dijitButtonCheckedHover, +.soria .dijitToolbar .dijitToggleButtonCheckedHover + { + background-color:#9abbea; + border:1px solid #316ac5; + padding: 0; +} + +.soria .dijitToolbar .dijitButtonHover, +.soria .dijitToolbar .dijitToggleButtonHover, +.soria .dijitToolbar .dijitDropDownButtonHover, +.soria .dijitToolbar .dijitComboButton .dijitButtonContentsHover, +.soria .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover { + /* TODO: change this from Hover to Selected so that button is still highlighted while drop down is being used */ + border: 1px solid #316ac5; + padding: 0; + background-color:#9abbea; +} + +.soria .dijitToolbar label { + padding: 3px 3px 0 6px; +} + +.dj_ie .soria .dijitToolbar .dijitComboButton .dijitButtonContentsFocused, +.dj_ie .soria .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused { + /* focus border doesn't appear on for IE, so need to add it manually */ + border: 1px #777 dotted !important; + padding: 0; +} diff --git a/src/main/resources/static/dijit/themes/soria/Tree.css b/src/main/resources/static/dijit/themes/soria/Tree.css new file mode 100644 index 0000000000000000000000000000000000000000..d8edb67dfb1ec0f0c9c8ede06e0be03e7fc62e4f --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/Tree.css @@ -0,0 +1,105 @@ +/* Tree */ + +.soria .dijitTreeNode { + background : url('images/treeI.gif') no-repeat; + background-position : top left; + background-repeat : repeat-y; + zoom: 1; +} + +.soria .dijitTreeRowHover { + /* using a transparent png so that we can still see grid lines, which are (unfortunately) behind the dijitRowNode that we are hovering over */ + background-image: url(images/treeHover.png); + background-repeat: repeat; + background-color: transparent !important; +} + + +/* left vertical line (grid) for all nodes */ +.soria .dijitTreeIsLast { + background: url('images/treeI_half.gif') no-repeat; +} + +.soria .dijitTreeLabel { + font-weight: normal; + margin-left: 3px; +} + +.soria .dijitTreeIsRoot { + margin-left: 0; + background-image: none; +} + +.soria .dijitTreeExpando { + width: 18px; + height: 18px; +} + +.soria .dijitTreeRow { + /* so insert line shows up on IE when dropping after a target element */ + padding-bottom: 2px; +} + +.soria .dijitTreeContent { + min-height: 18px; + min-width: 18px; + padding-left:1px; +} + +.soria .dijitTreeRowSelected .dijitTreeLabel{ + background:#b8cbec; +} + +.soria .dijitTreeExpandoOpened { + background: url('images/spriteTree.gif') no-repeat -18px top; +} + +.soria .dijitTreeExpandoClosed { + background-image: url('images/spriteTree.gif'); +} + +.soria .dijitTreeExpandoLeaf { + background: url('images/spriteTree.gif') no-repeat -36px top; +} + +.soria .dijitTreeExpandoLoading { + background-image: url('images/treeExpand_loading.gif'); +} + +.soria .dijitTreeIcon { + width: 16px; + height: 16px; +} + +.soria .dijitFolderOpened { + background: url('images/spriteDivIcons.gif') no-repeat -16px top; +} + +.soria .dijitFolderClosed { + background: url('images/spriteDivIcons.gif') no-repeat top left; +} + +.soria .dijitLeaf { + background: url('images/spriteDivIcons.gif') no-repeat -32px top; +} + +/* Drag and Drop on TreeNodes + * Put insert line on dijitTreeContent node so it's aligned w/ + * (ie, indented equally with) target element, even + * though dijitTreeRowNode is the actual "drag object" + */ +.soria .dijitTreeNode .dojoDndItemBefore, +.soria .dijitTreeNode .dojoDndItemAfter { + border-bottom: none; + border-top: none; +} + +.soria .dijitTreeNode .dojoDndItemBefore .dijitTreeContent { + /* copied from Common.css */ + border-top: 2px solid #369; +} + +.soria .dijitTreeNode .dojoDndItemAfter .dijitTreeContent { + /* copied from Common.css */ + border-bottom: 2px solid #369; +} diff --git a/src/main/resources/static/dijit/themes/soria/Tree_rtl.css b/src/main/resources/static/dijit/themes/soria/Tree_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..44daf3aa8f760a37036e0d2bc3d4eb777d0e2a76 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/Tree_rtl.css @@ -0,0 +1,22 @@ +/* Tree */ + +.dijitRtl .soria .dijitTreeNode, +.dijitRtl .soria .dijitTreeExpandoLeaf { + /* disable grid lines for Tree in RTL mode, too hard to support */ + background-image: none; +} + +.dijitRtl .soria .dijitTreeContent { + padding-left: 0; + padding-right: 1px; +} + +.dijitRtl .soria .dijitTreeExpandoOpened { + /* todo: icon contains grid line but grid lines disabled above */ + background: url('images/spriteTree_rtl.gif') no-repeat -18px top; +} + +.dijitRtl .soria .dijitTreeExpandoClosed { + /* todo: icon contains grid line but grid lines disabled above */ + background-image: url('images/spriteTree_rtl.gif'); +} diff --git a/src/main/resources/static/dijit/themes/soria/form/Button.css b/src/main/resources/static/dijit/themes/soria/form/Button.css new file mode 100644 index 0000000000000000000000000000000000000000..e00c48f58d0ea4d318e378e9f6809efdb1a32b29 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/form/Button.css @@ -0,0 +1,122 @@ + +/***** + dijit.form.Button + dijit.form.DropDownButton + dijit.form.ComboButton + dijit.form.ComboBox (partial) + dijit.form.Spinner (partial) (TODO: create NumberSpinner.css file like claro has) + *****/ + +.soria .dijitButtonNode { + /* enabled state - inner */ + border: 1px solid #8ba0bd; + border-bottom:1px solid #657c9c; + padding: 0.1em 0.2em 0.2em 0.2em; + background: #bcd5f0 url("../images/buttonEnabled.png") repeat-x top left; +} + +.soria .dijitButtonText { + text-align: center; + padding: 0 0.3em; +} +.soria .dijitInputField { + padding: 0; /* set padding:0 for .soria .dijitSelect .dijitButtonText but with a low priority rule that can be easily trumped by the user */ +} + +.soria .dijitArrowButton { + color: #111; +} + +.soria .dijitComboButton .dijitDownArrowButton { + padding-right:4px; +} + +.soria .dijitTextBoxReadOnly, +.soria .dijitTextBoxReadOnly .dijitButtonNode, +.soria .dijitButtonDisabled .dijitButtonNode, +.soria .dijitToggleButtonDisabled .dijitButtonNode, +.soria .dijitDropDownButtonDisabled .dijitButtonNode, +.soria .dijitComboButtonDisabled .dijitButtonNode, +.soria .dijitTextBoxDisabled, +.soria .dijitTextBoxDisabled .dijitButtonNode { + /* disabled state - inner */ + border-color: #b9bbdd #b9bbdd #b9bbdd #b9bbdd; + background:#c3d3e5 url("../images/buttonDisabled.png") top repeat-x; + opacity: 0.60; +} +.dj_ie6 .soria .dijitReadOnly input, +.dj_ie7 .soria .dijitReadOnly input, +.dj_ie6 .soria .dijitComboButtonDisabled .dijitButtonText, +.dj_ie7 .soria .dijitComboButtonDisabled .dijitButtonText { + /* opacity doesn't work on table node in IE, work around here */ + color: #aaa; +} +.soria .dijitButtonHover .dijitButtonNode, +.soria .dijitButtonNodeHover, +.soria .dijitToggleButtonHover .dijitButtonNode, +.soria .dijitDropDownButtonHover .dijitButtonNode, +.soria .dijitButtonContentsHover, +.soria .dijitUpArrowButtonHover, +.soria .dijitDownArrowButtonHover { + /* hover state - inner */ + /* TODO: change from Hover to Selected so that button is still highlighted while drop down is being used */ + color:#243C5F; + background:#acc5e2 url("../images/buttonHover.png") repeat-x top left; +} + +.soria .dijitButtonActive .dijitButtonNode, +.soria .dijitToggleButtonActive .dijitButtonNode, +.soria .dijitDropDownButtonActive .dijitButtonNode, +.soria .dijitComboButtonActive .dijitButtonContents, +.soria .dijitStackController .dijitToggleButtonChecked .dijitButtonNode { + /* active state - inner (for when you are pressing a normal button, or + * when a radio-type button is in a depressed state + */ + border-color:#657c9c; + background: #91b4e5 url("../images/buttonActive.png") top left repeat-x; +} +.soria .dijitUpArrowButtonActive, +.soria .dijitDownArrowButtonActive { + /* same as above except don't adjust border color (it's controlled by the containing Spinner/ComboBox) */ + background: #91b4e5 url("../images/buttonActive.png") top left repeat-x; +} + + +.soria .dijitArrowButtonInner { + background-image: url("../images/spriteArrows.png"); + background-repeat: no-repeat; + background-position: 0 center; + width: 11px; + height: 11px; +} +.soria .dijitComboBox .dijitArrowButtonInner { + background-position: 0 center; +} +.soria .dijitLeftArrowButton .dijitArrowButtonInner { + background-position: -11px center; +} +.soria .dijitUpArrowButton .dijitArrowButtonInner { + background-position: -22px center; +} +.soria .dijitRightArrowButton .dijitArrowButtonInner { + background-position: -33px center; +} +.dj_ie6 .soria .dijitArrowButtonInner { + background-image: url("../images/spriteArrows.gif"); +} +.dj_ie .soria .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner { + margin-top: 1px; /* image has too many blank pixels on top */ +} +.soria .dijitSpinnerButtonContainer { + width: auto; + padding: 0; +} +.soria .dijitSpinner .dijitArrowButton { + width: 15px; +} +.soria .dijitSpinner .dijitSpinnerButtonInner { + width: 15px; +} +.soria .dijitSpinner .dijitArrowButtonInner .dijitInputField { + padding: 0; +} diff --git a/src/main/resources/static/dijit/themes/soria/form/Button_rtl.css b/src/main/resources/static/dijit/themes/soria/form/Button_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..cf47470a9841c23253b4a01884622bb28293d838 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/form/Button_rtl.css @@ -0,0 +1,3 @@ +.soria .dijitComboBoxRtl .dijitButtonNode { + border-width: 0 0 0 1px; +} diff --git a/src/main/resources/static/dijit/themes/soria/form/Checkbox.css b/src/main/resources/static/dijit/themes/soria/form/Checkbox.css new file mode 100644 index 0000000000000000000000000000000000000000..5a72bfc06ec6f9cafdd7be9e6885c90825b84bfe --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/form/Checkbox.css @@ -0,0 +1,67 @@ + +/* + * CheckBox and Radio Widgets, + * and the CSS to embed a checkbox or radio icon inside a ToggleButton. + * + * Order of images in the default sprite (from L to R, checkbox and radio in same image): + * checkbox normal - checked + * - unchecked + * disabled - checked + * - unchecked + * hover - checked + * - unchecked + * + * radio normal - checked + * - unchecked + * disabled - checked + * - unchecked + * hover - checked + * - unchecked +*/ + +.soria .dijitToggleButton .dijitCheckBox, +.soria .dijitToggleButton .dijitCheckBoxIcon { + background-image: url('../images/spriteCheckbox.gif'); +} + +.soria .dijitCheckBox, +.soria .dijitCheckBoxIcon { /* inside a toggle button */ + background-image: url('../images/spriteCheckbox.gif'); /* checkbox sprite image */ + background-repeat: no-repeat; + width: 16px; + height: 16px; + margin: 0; + padding: 0; +} + +.soria .dijitCheckBox, +.soria .dijitToggleButton .dijitCheckBoxIcon { + /* unchecked */ + background-position: -16px; +} + +.soria .dijitCheckBoxChecked, +.soria .dijitToggleButtonChecked .dijitCheckBoxIcon { + /* checked */ + background-position: 0; +} + +.soria .dijitCheckBoxDisabled { + /* disabled */ + background-position: -48px; +} + +.soria .dijitCheckBoxCheckedDisabled { + /* disabled but checked */ + background-position: -32px; +} + +.soria .dijitCheckBoxHover { + /* hovering over an unchecked enabled checkbox */ + background-position: -80px; +} + +.soria .dijitCheckBoxCheckedHover { + /* hovering over a checked enabled checkbox */ + background-position: -64px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/soria/form/Common.css b/src/main/resources/static/dijit/themes/soria/form/Common.css new file mode 100644 index 0000000000000000000000000000000000000000..d6ea6e2756637fc4406ceee74f56a76b6ea1886e --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/form/Common.css @@ -0,0 +1,84 @@ + +/**** + dijit.form.TextBox + dijit.form.ValidationTextBox + dijit.form.SerializableTextBox + dijit.form.RangeBoundTextBox + dijit.form.NumberTextBox + dijit.form.CurrencyTextBox + dijit.form.NumberSpinner + dijit.form.ComboBox (partial) + ****/ + +.soria .dijitInputContainer input { + margin: 0 0.1em; +} + +.soria .dijitSelect .dijitButtonContents, +.soria .dijitSelect, +.soria .dijitTextBox, +.soria .dijitTextArea { + /* For all except dijit.form.NumberSpinner: the actual input element. + For TextBox, ComboBox, Spinner: the table that contains the input. + Otherwise the actual input element. + */ + background:#fff url("../images/validationInputBg.png") repeat-x top left; + #background:#fff url('../images/validationInputBg.gif') repeat-x top left; +} +.soria .dijitSelect, +.soria .dijitTextBox, +.soria .dijitTextArea { + border:1px solid #8ba0bd; +} + +.soria .dijitSelect .dijitArrowButton, +.soria .dijitComboBox .dijitButtonNode { + padding: 0 0.2em; +} + +.soria .dijitSelect .dijitButtonContents, +.soria .dijitTextBox .dijitButtonNode { + /* line between the input area and the drop down button */ + border-color: #8ba0bd; +} + +.soria .dijitSelectFocused, +.soria .dijitTextBoxFocused, +.soria .dijitTextAreaFocused { + /* input field when focused (ie: typing affects it) */ + border-color:#406b9b; +} +.soria .dijitSelectFocused TD, +.soria .dijitTextBoxFocused .dijitButtonNode, +.soria .dijitSpinner .dijitUpArrowButtonActive, +.soria .dijitSpinner .dijitDownArrowButtonActive { + border-color:#8ba0bd; +} +.soria .dijitSpinnerFocused .dijitDownArrowButton, +.soria .dijitSpinner .dijitUpArrowButtonActive, +.soria .dijitSpinner .dijitDownArrowButtonActive { + border-top-color:#8ba0bd; +} + +.soria .dijitError { + border-color:#f3d118; + background-color:#f9f7ba; + background-image:none; +} + +.soria .dijitErrorFocused { + background-color:#ff6; + background-image:none; +} + +/* Validation errors */ +.soria .dijitValidationTextBoxError .dijitValidationIcon { + /* prevent height change when widget goes from valid to invalid state */ + width: 16px; + background: transparent url('../images/warning.png') no-repeat center center; +} + +/* The highlight is shown in the ComboBox menu. */ +.soria .dijitComboBoxHighlightMatch { + background-color:#f9f7ba; +} diff --git a/src/main/resources/static/dijit/themes/soria/form/RadioButton.css b/src/main/resources/static/dijit/themes/soria/form/RadioButton.css new file mode 100644 index 0000000000000000000000000000000000000000..1ea27bf65f72c44c8799fde1f1dfc2f4bb133242 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/form/RadioButton.css @@ -0,0 +1,66 @@ +/* + * CheckBox and Radio Widgets, + * and the CSS to embed a checkbox or radio icon inside a ToggleButton. + * + * Order of images in the default sprite (from L to R, checkbox and radio in same image): + * checkbox normal - checked + * - unchecked + * disabled - checked + * - unchecked + * hover - checked + * - unchecked + * + * radio normal - checked + * - unchecked + * disabled - checked + * - unchecked + * hover - checked + * - unchecked +*/ + +.soria .dijitToggleButton .dijitRadio, +.soria .dijitToggleButton .dijitRadioIcon { + background-image: url('../images/spriteRadio.gif'); +} + +.soria .dijitRadio, +.soria .dijitRadioIcon { /* inside a toggle button */ + background-image: url('../images/spriteRadio.gif'); /* checkbox sprite image */ + background-repeat: no-repeat; + width: 16px; + height: 16px; + margin: 0; + padding: 0; +} + +.soria .dijitRadio, +.soria .dijitToggleButton .dijitRadioIcon { + /* unselected */ + background-position: -16px; +} + +.soria .dijitRadioChecked, +.soria .dijitToggleButtonChecked .dijitRadioIcon { + /* selected */ + background-position: 0; +} + +.soria .dijitRadioDisabled { + /* unselected and disabled */ + background-position: -48px; +} + +.soria .dijitRadioCheckedDisabled { + /* selected but disabled */ + background-position: -32px; +} + +.soria .dijitRadioHover { + /* hovering over an unselected enabled radio button */ + background-position: -80px; +} + +.soria .dijitRadioCheckedHover { + /* hovering over a selected enabled radio button */ + background-position: -64px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/soria/form/Select.css b/src/main/resources/static/dijit/themes/soria/form/Select.css new file mode 100644 index 0000000000000000000000000000000000000000..895ab7eaa0067b009b0ec4ac52fb6a6856445c2b --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/form/Select.css @@ -0,0 +1,47 @@ +/* Make unselected "look" more like a text box and less like a button */ +.soria .dijitSelectError .dijitButtonContents, +.soria .dijitSelectHover .dijitArrowButton, +.soria .dijitSelectActive .dijitArrowButton, +.soria .dijitSelectOpened .dijitArrowButton, +.soria .dijitSelectDisabled .dijitArrowButton, +.soria .dijitSelectReadOnly .dijitArrowButton { + background: transparent none; +} +.soria .dijitSelect .dijitArrowButton { + background: #bcd5f0 url("../images/buttonEnabled.png") repeat-x top left; + border-width: 0; +} + +/* Mirror DropDownButton */ +.soria .dijitSelectDisabled, +.soria .dijitSelectDisabled TD { + border-color: #b9bbdd !important; + background:#c3d3e5 url("../images/buttonDisabled.png") top repeat-x; +} +.dj_ie .soria .dijitSelectDisabled TD * { + filter: gray() alpha(opacity=50); +} + +.soria .dijitSelectHover, +.soria .dijitSelectHover TD { + border-color:#a5beda #5c7590 #5c7590 #a5beda !important; + color:#000; + background:#acc5e2 url("../images/buttonHover.png") repeat-x top left; +} + +.soria .dijitSelectActive, +.soria .dijitSelectOpened, +.soria .dijitSelectActive TD, +.soria .dijitSelectOpened TD { + border-color:#657c9c !important; + background: #91b4e5 url("../images/buttonActive.png") top left repeat-x; +} + +/* Make the menu look more combobox-like */ +.soria .dijitSelectMenu td { + padding: 0; +} +.soria .dijitSelectMenu .dijitMenuItemLabel, +.soria .dijitSelectMenu .dijitMenuArrowCell { + padding: 0.1em 0.2em; +} diff --git a/src/main/resources/static/dijit/themes/soria/form/Slider.css b/src/main/resources/static/dijit/themes/soria/form/Slider.css new file mode 100644 index 0000000000000000000000000000000000000000..3a68f4631749c836f0d4863caedaa62dff529844 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/form/Slider.css @@ -0,0 +1,144 @@ + +/**** + SLIDER +****/ + +.soria .dijitSliderProgressBarH { + border-color: #b1badf; + background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left; +} + +.soria .dijitSliderProgressBarV { + border-color: #b1badf; + background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left; +} + +.soria .dijitSliderFocused .dijitSliderProgressBarH, +.soria .dijitSliderFocused .dijitSliderLeftBumper { + background-image:url("../images/sliderFullFocus.png"); +} + +.soria .dijitSliderFocused .dijitSliderProgressBarV, +.soria .dijitSliderFocused .dijitSliderBottomBumper { + background-image:url("../images/sliderFullVerticalFocus.png"); +} + +.soria .dijitSliderRemainingBarV { + border-color: #b4b4b4; + background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y bottom left; +} + +.soria .dijitSliderRemainingBarH { + border-color: #b4b4b4; + background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left; +} + +.soria .dijitSliderBar { + border-style: solid; + outline:1px; + /* border-color: #b4b4b4; */ +} +.soria .dijitSliderFocused .dijitSliderBar { + border-color:#8ba0bd; +} + +.soria .dijitSliderImageHandleH { + border:0; + width:15px; + height:18px; + background:url("../images/preciseSliderThumb.png") no-repeat center top; +} +.soria .dijitSliderFocused .dijitSliderImageHandleH { + background-image:url("../images/preciseSliderThumbFocus.png"); + #background-image:url("../images/preciseSliderThumbFocus.gif"); +} + +.dj_ie6 .soria .dijitSliderImageHandleH { + background-image:url("../images/preciseSliderThumb.gif"); +} + +.soria .dijitSliderLeftBumper { + border-left-width: 1px; + border-color: #aab0bb; + background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left; +} + +.soria .dijitSliderRightBumper { + background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left; + border-color: #b4b4b4; + border-right-width: 1px; +} + +.soria .dijitSliderImageHandleV { + border:0; + width:20px; + height:15px; + background:url("../images/sliderThumb.png") no-repeat center center; + #background:url("../images/sliderThumb.gif") no-repeat center center; +} + +.soria .dijitSliderFocused .dijitSliderImageHandleV { + background-image:url("../images/sliderThumbFocus.png"); + #background-image:url("../images/sliderThumbFocus.gif"); +} + +.soria .dijitSliderBottomBumper { + border-bottom-width: 1px; + border-color: #aab0bb; + background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left; +} + +.soria .dijitSliderTopBumper { + background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y top left; + border-color: #b4b4b4; + border-top-width: 1px; +} + +.soria .dijitSliderIncrementIconH, +.soria .dijitSliderIncrementIconV { + background:url('../images/spriteRoundedIconsSmall.png') no-repeat -45px top; + #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -45px top; + width:15px; height:15px; +} +.soria .dijitSliderIncrementIconH { + background:url('../images/spriteRoundedIconsSmall.png') no-repeat -30px top; + #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -30px top; +} + +.soria .dijitSliderDecrementIconH, +.soria .dijitSliderDecrementIconV { + width:15px; + height:15px; + background:url('../images/spriteRoundedIconsSmall.png') no-repeat -15px top; + #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -15px top; +} +.soria .dijitSliderDecrementIconH { + background:url('../images/spriteRoundedIconsSmall.png') no-repeat 0 top; + #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat 0 top; +} + +.soria .dijitSliderButtonInner { + visibility:hidden; +} + +.soria .dijitSliderReadOnly *, +.soria .dijitSliderDisabled * { + border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5; + color: #bdbdbd; +} +.soria .dijitSliderReadOnly .dijitSliderDecrementIconH, +.soria .dijitSliderDisabled .dijitSliderDecrementIconH { + background-position: 0 -15px; +} +.soria .dijitSliderReadOnly .dijitSliderIncrementIconH, +.soria .dijitSliderDisabled .dijitSliderIncrementIconH { + background-position: -30px -15px; +} +.soria .dijitSliderReadOnly .dijitSliderDecrementIconV, +.soria .dijitSliderDisabled .dijitSliderDecrementIconV { + background-position: -15px -15px; +} +.soria .dijitSliderReadOnly .dijitSliderIncrementIconV, +.soria .dijitSliderDisabled .dijitSliderIncrementIconV { + background-position: -45px -15px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/soria/form/Slider_rtl.css b/src/main/resources/static/dijit/themes/soria/form/Slider_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..d9b67c5040847a8a43daeb033120ee41d7ce6cf1 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/form/Slider_rtl.css @@ -0,0 +1,36 @@ + +/* Slider */ + +.dijitRtl .soria .dijitSliderProgressBarH, +.dijitRtl .soria .dijitSliderRemainingBarH, +.dijitRtl .soria .dijitSliderLeftBumper, +.dijitRtl .soria .dijitSliderRightBumper, +.dijitRtl .soria .dijitSliderTopBumper { + background-position: top right; +} + +.dijitRtl .soria .dijitSliderProgressBarV, +.dijitRtl .soria .dijitSliderRemainingBarV, +.dijitRtl .soria .dijitSliderBottomBumper { + background-position: bottom right; +} + +.dijitRtl .soria .dijitSliderLeftBumper { + border-left-width: 0; + border-right-width: 1px; +} + +.dijitRtl .soria .dijitSliderRightBumper { + border-left-width: 1px; + border-right-width: 0; +} + +.dijitRtl .soria .dijitSliderIncrementIconH { + background:url('../images/spriteRoundedIconsSmall.png') no-repeat left top; + #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat left top; +} + +.dijitRtl .soria .dijitSliderDecrementIconH { + background:url('../images/spriteRoundedIconsSmall.png') no-repeat -30px top; + #background:url('../images/spriteRoundedIconsSmall.gif') no-repeat -30px top; +} diff --git a/src/main/resources/static/dijit/themes/soria/form/TimeTextBox.css b/src/main/resources/static/dijit/themes/soria/form/TimeTextBox.css new file mode 100644 index 0000000000000000000000000000000000000000..d450925b415601abdf28857e4cd3fdccd145d96e --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/form/TimeTextBox.css @@ -0,0 +1 @@ +@CHARSET "UTF-8"; diff --git a/src/main/resources/static/dijit/themes/soria/images/accordionItemActive.gif b/src/main/resources/static/dijit/themes/soria/images/accordionItemActive.gif new file mode 100644 index 0000000000000000000000000000000000000000..249a1533f473e72dc10dcd3cf6db3ac67c57e683 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/accordionItemActive.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/accordionItemActive.png b/src/main/resources/static/dijit/themes/soria/images/accordionItemActive.png new file mode 100644 index 0000000000000000000000000000000000000000..789bcfa8180e3610fbdd523d7c395473c91f6d0c Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/accordionItemActive.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/buttonActive.png b/src/main/resources/static/dijit/themes/soria/images/buttonActive.png new file mode 100644 index 0000000000000000000000000000000000000000..4f318a65d660699ffd1b00cda3638f60db632349 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/buttonActive.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/buttonDisabled.png b/src/main/resources/static/dijit/themes/soria/images/buttonDisabled.png new file mode 100644 index 0000000000000000000000000000000000000000..e1e9cd4b9cad001804f27bc841f2d882e078a5c2 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/buttonDisabled.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/buttonEnabled.png b/src/main/resources/static/dijit/themes/soria/images/buttonEnabled.png new file mode 100644 index 0000000000000000000000000000000000000000..51ac91e3c6162f5627e134cdfdbe40755f7d5bad Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/buttonEnabled.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/buttonHover.png b/src/main/resources/static/dijit/themes/soria/images/buttonHover.png new file mode 100644 index 0000000000000000000000000000000000000000..61a6cd602b66c9449754fe4ed6d320aa41505844 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/buttonHover.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/dndCopy.png b/src/main/resources/static/dijit/themes/soria/images/dndCopy.png new file mode 100644 index 0000000000000000000000000000000000000000..6a8b998f62899a642f6be3f4132132d1c12e237c Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/dndCopy.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/dndMove.png b/src/main/resources/static/dijit/themes/soria/images/dndMove.png new file mode 100644 index 0000000000000000000000000000000000000000..8443d30342f0494cae909eeecdc9b6ad149f5e5a Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/dndMove.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/dndNoCopy.png b/src/main/resources/static/dijit/themes/soria/images/dndNoCopy.png new file mode 100644 index 0000000000000000000000000000000000000000..64bf88b26a3ddeadf97755bc05ed83c47ecfe683 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/dndNoCopy.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/dndNoMove.png b/src/main/resources/static/dijit/themes/soria/images/dndNoMove.png new file mode 100644 index 0000000000000000000000000000000000000000..682ea1025b914e20e041ddff88a5ef651a7fbb91 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/dndNoMove.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/preciseSliderThumb.gif b/src/main/resources/static/dijit/themes/soria/images/preciseSliderThumb.gif new file mode 100644 index 0000000000000000000000000000000000000000..53b33e54abdb947bdc92cd8b30359a4153017738 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/preciseSliderThumb.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/preciseSliderThumb.png b/src/main/resources/static/dijit/themes/soria/images/preciseSliderThumb.png new file mode 100644 index 0000000000000000000000000000000000000000..d6dc0790e8bf5b5a7a7c5e7455da046e6cfe46f4 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/preciseSliderThumb.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/preciseSliderThumbFocus.gif b/src/main/resources/static/dijit/themes/soria/images/preciseSliderThumbFocus.gif new file mode 100644 index 0000000000000000000000000000000000000000..8c6f92eb45865a0b1c3a08f978ad2e2b61d45057 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/preciseSliderThumbFocus.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/preciseSliderThumbFocus.png b/src/main/resources/static/dijit/themes/soria/images/preciseSliderThumbFocus.png new file mode 100644 index 0000000000000000000000000000000000000000..939f253afd0b062b9e911ad02f3170db90d2739c Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/preciseSliderThumbFocus.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/progressBarAnim.gif b/src/main/resources/static/dijit/themes/soria/images/progressBarAnim.gif new file mode 100644 index 0000000000000000000000000000000000000000..73e25e1724be8b09242ac637091e89f011b9cd25 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/progressBarAnim.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/progressBarEmpty.png b/src/main/resources/static/dijit/themes/soria/images/progressBarEmpty.png new file mode 100644 index 0000000000000000000000000000000000000000..c6090e03f7dcd735823f4613e84b4965a6ec08ac Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/progressBarEmpty.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/progressBarFull.png b/src/main/resources/static/dijit/themes/soria/images/progressBarFull.png new file mode 100644 index 0000000000000000000000000000000000000000..0cedfe34acb7a6b94ca1db2bb120fe2fc411289b Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/progressBarFull.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/sliderEmpty.png b/src/main/resources/static/dijit/themes/soria/images/sliderEmpty.png new file mode 100644 index 0000000000000000000000000000000000000000..bdd9ae953dbd50dc357767c65d69c4550795cecf Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/sliderEmpty.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/sliderEmptyVertical.png b/src/main/resources/static/dijit/themes/soria/images/sliderEmptyVertical.png new file mode 100644 index 0000000000000000000000000000000000000000..7b5036abcc21463216808fbf77788a2e22004551 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/sliderEmptyVertical.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/sliderFull.png b/src/main/resources/static/dijit/themes/soria/images/sliderFull.png new file mode 100644 index 0000000000000000000000000000000000000000..d969658096bb30338d419c9f7577b493c05361c1 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/sliderFull.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/sliderFullFocus.png b/src/main/resources/static/dijit/themes/soria/images/sliderFullFocus.png new file mode 100644 index 0000000000000000000000000000000000000000..99326aff91facc54d8d7e904644e7252a253a9b3 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/sliderFullFocus.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/sliderFullVertical.png b/src/main/resources/static/dijit/themes/soria/images/sliderFullVertical.png new file mode 100644 index 0000000000000000000000000000000000000000..14cacba23bfabbac24a2db365d05343f6db8eb6c Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/sliderFullVertical.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/sliderFullVerticalFocus.png b/src/main/resources/static/dijit/themes/soria/images/sliderFullVerticalFocus.png new file mode 100644 index 0000000000000000000000000000000000000000..0316b796e76a5197c9a0775b4a8c100f9492fa96 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/sliderFullVerticalFocus.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/sliderThumb.gif b/src/main/resources/static/dijit/themes/soria/images/sliderThumb.gif new file mode 100644 index 0000000000000000000000000000000000000000..29899a4b630782dfe9e4d276ccc775ad47a6e752 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/sliderThumb.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/sliderThumb.png b/src/main/resources/static/dijit/themes/soria/images/sliderThumb.png new file mode 100644 index 0000000000000000000000000000000000000000..6abb20080c6d1e7da0ad17e828b77c4bdcb14082 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/sliderThumb.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/sliderThumbFocus.gif b/src/main/resources/static/dijit/themes/soria/images/sliderThumbFocus.gif new file mode 100644 index 0000000000000000000000000000000000000000..f8d306febc6627deffbdf6cb687dd1fbc499eaf8 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/sliderThumbFocus.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/sliderThumbFocus.png b/src/main/resources/static/dijit/themes/soria/images/sliderThumbFocus.png new file mode 100644 index 0000000000000000000000000000000000000000..c4d261eee561019a9ea904c116dc6814d2c30e41 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/sliderThumbFocus.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/splitContainerSizerH-thumb.png b/src/main/resources/static/dijit/themes/soria/images/splitContainerSizerH-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..65b5e030deaade4fc49d1824e5f9d2564ccd2501 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/splitContainerSizerH-thumb.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/splitContainerSizerH.png b/src/main/resources/static/dijit/themes/soria/images/splitContainerSizerH.png new file mode 100644 index 0000000000000000000000000000000000000000..6030e0f74e9ad747f90df0271854e1ae5cfe278e Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/splitContainerSizerH.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/splitContainerSizerV-thumb.png b/src/main/resources/static/dijit/themes/soria/images/splitContainerSizerV-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..848400fdec3d62509cded8b5c0fc523e90715dab Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/splitContainerSizerV-thumb.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/splitContainerSizerV.png b/src/main/resources/static/dijit/themes/soria/images/splitContainerSizerV.png new file mode 100644 index 0000000000000000000000000000000000000000..1cfba5f98fe39c7d8f16d47fc6bc2323fc9c9cd5 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/splitContainerSizerV.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/spriteArrows.gif b/src/main/resources/static/dijit/themes/soria/images/spriteArrows.gif new file mode 100644 index 0000000000000000000000000000000000000000..fc81207e70710738804fd4f0803a7f7f6a80fe50 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/spriteArrows.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/spriteArrows.png b/src/main/resources/static/dijit/themes/soria/images/spriteArrows.png new file mode 100644 index 0000000000000000000000000000000000000000..80bb45a799f800bd5de23573cb4f061a35425eb5 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/spriteArrows.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/spriteCheckbox.gif b/src/main/resources/static/dijit/themes/soria/images/spriteCheckbox.gif new file mode 100644 index 0000000000000000000000000000000000000000..d2c4ebfaff2230675f59f5caf94ebe26739b5ed2 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/spriteCheckbox.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/spriteCheckbox.png b/src/main/resources/static/dijit/themes/soria/images/spriteCheckbox.png new file mode 100644 index 0000000000000000000000000000000000000000..03d1aa92e868a03f0cc9c0b5ae9d91e7f25d0322 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/spriteCheckbox.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/spriteDivIcons.gif b/src/main/resources/static/dijit/themes/soria/images/spriteDivIcons.gif new file mode 100644 index 0000000000000000000000000000000000000000..f5c58e47a0dcfce5380cba10ec120a4c26cedbf3 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/spriteDivIcons.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/spriteDivIcons.png b/src/main/resources/static/dijit/themes/soria/images/spriteDivIcons.png new file mode 100644 index 0000000000000000000000000000000000000000..043882e02737caaa6827ec07ae8946fa5c5b1498 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/spriteDivIcons.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/spriteRadio.gif b/src/main/resources/static/dijit/themes/soria/images/spriteRadio.gif new file mode 100644 index 0000000000000000000000000000000000000000..8dd6e578e89939ac92dddcb77a684ebb95955933 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/spriteRadio.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/spriteRadio.png b/src/main/resources/static/dijit/themes/soria/images/spriteRadio.png new file mode 100644 index 0000000000000000000000000000000000000000..eef7ab4b133a2a2136f369ea742dc29af50cd788 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/spriteRadio.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/spriteRoundedIconsSmall.gif b/src/main/resources/static/dijit/themes/soria/images/spriteRoundedIconsSmall.gif new file mode 100644 index 0000000000000000000000000000000000000000..795ea848da796ed02a62592dc5ab36e2de78522b Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/spriteRoundedIconsSmall.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/spriteRoundedIconsSmall.png b/src/main/resources/static/dijit/themes/soria/images/spriteRoundedIconsSmall.png new file mode 100644 index 0000000000000000000000000000000000000000..7eda8750f6ce9206b3af868ca6710f78df128d60 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/spriteRoundedIconsSmall.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif b/src/main/resources/static/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif new file mode 100644 index 0000000000000000000000000000000000000000..67581811ddbf4578eae9c6fc8b66e8fe1db29b39 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/spriteRoundedIconsSmallBl.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png b/src/main/resources/static/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png new file mode 100644 index 0000000000000000000000000000000000000000..74b8c93d806d0642bb2508ca0c7a2cfa1099ac73 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/spriteRoundedIconsSmallBl.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/spriteTree.gif b/src/main/resources/static/dijit/themes/soria/images/spriteTree.gif new file mode 100644 index 0000000000000000000000000000000000000000..e546e281b131d5a45571c6fd3a5bb7a30e856f1e Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/spriteTree.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/spriteTree.png b/src/main/resources/static/dijit/themes/soria/images/spriteTree.png new file mode 100644 index 0000000000000000000000000000000000000000..4e63248bebf5eed9d2dfc04a8aa696c15e7acee3 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/spriteTree.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/spriteTree_rtl.gif b/src/main/resources/static/dijit/themes/soria/images/spriteTree_rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..bbcc64be82efd5aab472b2d7b23b1567a480746b Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/spriteTree_rtl.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/spriteTree_rtl.png b/src/main/resources/static/dijit/themes/soria/images/spriteTree_rtl.png new file mode 100644 index 0000000000000000000000000000000000000000..6c30c354ca1725d7a772f119c71cc3d3320e8815 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/spriteTree_rtl.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/tabBottomActiveC.gif b/src/main/resources/static/dijit/themes/soria/images/tabBottomActiveC.gif new file mode 100644 index 0000000000000000000000000000000000000000..fb61df9a25154f98a5330ff5bea814f2e8867ba4 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/tabBottomActiveC.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/tabBottomEnabledC.gif b/src/main/resources/static/dijit/themes/soria/images/tabBottomEnabledC.gif new file mode 100644 index 0000000000000000000000000000000000000000..0a5f0f8e3e4fd8f183c71d037a62562f693a3c04 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/tabBottomEnabledC.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif b/src/main/resources/static/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif new file mode 100644 index 0000000000000000000000000000000000000000..a77da39b667e55b79cd14748a9974f63ce665b47 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/tabBottomEnabledSpriteLR.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/tabBottomHoverC.gif b/src/main/resources/static/dijit/themes/soria/images/tabBottomHoverC.gif new file mode 100644 index 0000000000000000000000000000000000000000..47b9da29a27309a950286aeec37e899b3897d9b9 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/tabBottomHoverC.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/tabContainerSprite.gif b/src/main/resources/static/dijit/themes/soria/images/tabContainerSprite.gif new file mode 100644 index 0000000000000000000000000000000000000000..f0b38421e38440cff987b698dd150ae64b792e9a Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/tabContainerSprite.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/tabLeftChecked.gif b/src/main/resources/static/dijit/themes/soria/images/tabLeftChecked.gif new file mode 100644 index 0000000000000000000000000000000000000000..439aa6b44954467cb9019fcbc1787233129a94f9 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/tabLeftChecked.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/tabRightChecked.gif b/src/main/resources/static/dijit/themes/soria/images/tabRightChecked.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfffd1e70e677f18b748279bb351ca42320f5355 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/tabRightChecked.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/titleBar.png b/src/main/resources/static/dijit/themes/soria/images/titleBar.png new file mode 100644 index 0000000000000000000000000000000000000000..c9121ea6f5ef9c19a0d09db9b7205198934aeca3 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/titleBar.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/titleBarActive.png b/src/main/resources/static/dijit/themes/soria/images/titleBarActive.png new file mode 100644 index 0000000000000000000000000000000000000000..4db116b364ad7aaba33c5d4688b1fac434f26a8a Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/titleBarActive.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorDown.gif b/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorDown.gif new file mode 100644 index 0000000000000000000000000000000000000000..9c3849553aa71a67ab40f153223b8394574ccd9d Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorDown.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorDown.png b/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorDown.png new file mode 100644 index 0000000000000000000000000000000000000000..7783f90479eefc4abab0ef0e16112d16474bda89 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorDown.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorLeft.gif b/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorLeft.gif new file mode 100644 index 0000000000000000000000000000000000000000..fc947e0a1997c1cd7c0bf170312a93596c2b735c Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorLeft.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorLeft.png b/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..ae16d3601c02546717912a59ffba06b5581079cc Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorLeft.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorRight.gif b/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorRight.gif new file mode 100644 index 0000000000000000000000000000000000000000..b0e8097f4b1fe9b8aead6c2b22d23a5702042fbf Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorRight.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorRight.png b/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorRight.png new file mode 100644 index 0000000000000000000000000000000000000000..9532b17dfcd6717cadc739be0cb89047541413d5 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorRight.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorUp.gif b/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorUp.gif new file mode 100644 index 0000000000000000000000000000000000000000..54bcf652c6bf0f540ed3d9a2079fcb5895b0605d Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorUp.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorUp.png b/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorUp.png new file mode 100644 index 0000000000000000000000000000000000000000..2dc5b31b31895a3913a76ed6a225ce05ad0b3472 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/tooltipConnectorUp.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/treeExpand_loading.gif b/src/main/resources/static/dijit/themes/soria/images/treeExpand_loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..db9ddd0282895511c648154db2bf621e33fcfbe1 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/treeExpand_loading.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/treeHover.png b/src/main/resources/static/dijit/themes/soria/images/treeHover.png new file mode 100644 index 0000000000000000000000000000000000000000..e4d5d5700750c9c33171b5bbc8998e4c182b1cfc Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/treeHover.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/treeI.gif b/src/main/resources/static/dijit/themes/soria/images/treeI.gif new file mode 100644 index 0000000000000000000000000000000000000000..6f669e24015476e1d05b9b69e042a91c9105ad2c Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/treeI.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/treeI_half.gif b/src/main/resources/static/dijit/themes/soria/images/treeI_half.gif new file mode 100644 index 0000000000000000000000000000000000000000..e5fd0155bd99e8018ab44f08c8ad22c1a429dbc3 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/treeI_half.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/treeI_half_rtl.gif b/src/main/resources/static/dijit/themes/soria/images/treeI_half_rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..44ad021a36dea29ecf72868965aed52ce393a41d Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/treeI_half_rtl.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/treeI_rtl.gif b/src/main/resources/static/dijit/themes/soria/images/treeI_rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..0d32a2f731795134a05617873080e36711806100 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/treeI_rtl.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/validationInputBg.gif b/src/main/resources/static/dijit/themes/soria/images/validationInputBg.gif new file mode 100644 index 0000000000000000000000000000000000000000..c28475c8d4e2f1e6a59369f4ee46c17b700dffce Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/validationInputBg.gif differ diff --git a/src/main/resources/static/dijit/themes/soria/images/validationInputBg.png b/src/main/resources/static/dijit/themes/soria/images/validationInputBg.png new file mode 100644 index 0000000000000000000000000000000000000000..ca0f890daa0379ba0107b802e93d4994e687eb0b Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/validationInputBg.png differ diff --git a/src/main/resources/static/dijit/themes/soria/images/warning.png b/src/main/resources/static/dijit/themes/soria/images/warning.png new file mode 100644 index 0000000000000000000000000000000000000000..07cabeae1065d71cf6724e9e14fd268c7b1672f9 Binary files /dev/null and b/src/main/resources/static/dijit/themes/soria/images/warning.png differ diff --git a/src/main/resources/static/dijit/themes/soria/layout/AccordionContainer.css b/src/main/resources/static/dijit/themes/soria/layout/AccordionContainer.css new file mode 100644 index 0000000000000000000000000000000000000000..3e2d22d575aff6d5f3b5bbda26aa2b6a6ff37faf --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/layout/AccordionContainer.css @@ -0,0 +1,46 @@ +/** + * dijit.layout.Accordioncontainer + * + */ + +.soria .dijitAccordionContainer { + border-color: #b1badf; + background-color: #fff; +} + +/* common */ + +.soria .dijitAccordionTitle { + background:#fafafa url("../images/titleBar.png") repeat-x top left; + border-top: 1px solid #b9bbdd; + padding: 5px 4px 6px 8px; + font-size: 0.9em; + font-weight: bold; + color: #373941; +} + +.soria .dijitAccordionTitleSelected { + background: #f9f9f9 url("../images/accordionItemActive.png") top repeat-x; + font-weight: bold; + border-top: 1px solid #b9bbdd; + border-bottom: 1px solid #b9bbdd; + padding: 5px 4px 5px 8px; + color: #243C5F; +} + +.soria .dijitAccordionArrow { + background:url("../images/spriteRoundedIconsSmallBl.gif") no-repeat -30px top; + width:15px; + height:15px; + margin-top:-1px; +} + +.soria .dijitAccordionTitleSelected .dijitAccordionArrow { + background:url("../images/spriteRoundedIconsSmallBl.gif") no-repeat -15px top; + margin-top:-1px; +} + +.soria .dijitAccordionText { + margin-left: 4px; + margin-right: 4px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/soria/layout/AccordionContainer_rtl.css b/src/main/resources/static/dijit/themes/soria/layout/AccordionContainer_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..c6bb820f3a01ff6b84940fa32fbf7373d2f1bb91 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/layout/AccordionContainer_rtl.css @@ -0,0 +1,8 @@ +.dijitRtl .soria .dijitAccordionArrow { + background-position: 0 top; +} + +.dijitRtl .soria .dijitAccordionTitleSelected .dijitAccordionArrow { + /* same rule as LTR mode, just listed to override previous rule in this file */ + background-position: -15px top; +} diff --git a/src/main/resources/static/dijit/themes/soria/layout/BorderContainer.css b/src/main/resources/static/dijit/themes/soria/layout/BorderContainer.css new file mode 100644 index 0000000000000000000000000000000000000000..63f2bf36583694718c64fe531145750d47a66873 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/layout/BorderContainer.css @@ -0,0 +1,77 @@ +/** + * dijit.layout.BorderContainer + * + */ + +.soria .dijitBorderContainer { + background-color: #e1ebfb; + padding: 5px; +} + +.soria .dijitSplitContainer-child, +.soria .dijitBorderContainer-child { + /* By default put borders on all children of BorderContainer, + * to give illusion of borders on the splitters themselves. + */ + border: 1px #b1badf solid; +} + +.soria .dijitBorderContainer-dijitTabContainerTop, +.soria .dijitBorderContainer-dijitTabContainerBottom, +.soria .dijitBorderContainer-dijitTabContainerLeft, +.soria .dijitBorderContainer-dijitTabContainerRight { + /* except that TabContainer defines borders on it's sub-nodes (tablist and dijitTabPaneWrapper), + * so no border on domNode + */ + border: none; +} + +.soria .dijitBorderContainer-dijitBorderContainer { + /* also, make nested BorderContainers look like a single big widget with lots of splitters */ + border: none; + padding: 0; +} + + +.soria .dijitSplitterH, +.soria .dijitGutterH { + background: #E1EBFB; + border:0; + border-left:0 solid #d3d3d3; + border-right:0 solid #d3d3d3; + height:5px; +} + +.soria .dijitSplitterH .dijitSplitterThumb { + background:#B0B0B0 none; + height:1px; + top:2px; + width:19px; +} + +.soria .dijitSplitterV, +.soria .dijitGutterV { + background: #E1EBFB; + border:0; + border-top:0 solid #d3d3d3; + border-bottom:0 solid #d3d3d3; + width:5px; +} + +.soria .dijitSplitterV .dijitSplitterThumb { + background:#B0B0B0 none; + height:19px; + left:2px; + width:1px; +} + +/* active splitter */ +.soria .dijitSplitterActive { + font-size: 1px; + background-image: none; + background-color: #aaa; + -moz-opacity: 0.6; + opacity: 0.6; + filter: Alpha(Opacity=60); + margin: 0; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/soria/layout/ContentPane.css b/src/main/resources/static/dijit/themes/soria/layout/ContentPane.css new file mode 100644 index 0000000000000000000000000000000000000000..32398dc08c65e1e45e6d5c2b501efdfba48dab96 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/layout/ContentPane.css @@ -0,0 +1,21 @@ +/* ContentPane */ + +.soria .dijitContentPane { + padding: 0; +} + +/* nested layouts */ +.soria .dijitTabContainerTop-dijitContentPane, +.soria .dijitTabContainerLeft-dijitContentPane, +.soria .dijitTabContainerBottom-dijitContentPane, +.soria .dijitTabContainerRight-dijitContentPane, +.soria .dijitAccordionContainer-dijitContentPane { + background-color: #fff; + padding: 5px; +} + +.soria .dijitSplitContainer-dijitContentPane, +.soria .dijitBorderContainer-dijitContentPane { + background-color: #fff; /* override background-color setting on parent .dijitBorderContainer */ + padding: 5px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/soria/layout/SplitContainer.css b/src/main/resources/static/dijit/themes/soria/layout/SplitContainer.css new file mode 100644 index 0000000000000000000000000000000000000000..bf7ca16258850475cfed70450821cc6bcb7c121e --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/layout/SplitContainer.css @@ -0,0 +1,34 @@ +/** + * dijit.layout.SplitContainer + * + */ + +.soria .dijitSplitContainerSizerH { + background:url("../images/splitContainerSizerV.png") repeat-y #cddef4; + border:0; + border-left:0 solid #436496; + border-right:0 solid #436496; + width:5px; +} + +.soria .dijitSplitContainerSizerH .thumb { + background:url("../images/splitContainerSizerV-thumb.png") no-repeat #ccc; + left:1px; + width:2px; + height:19px; +} + +.soria .dijitSplitContainerSizerV { + background:url("../images/splitContainerSizerH.png") repeat-x #cddef4; + border:0; + border-top:0 solid #436496; + border-bottom:0 solid #436496; + height:2px; +} + +.soria .dijitSplitContainerSizerV .thumb { + background:url("../images/splitContainerSizerH-thumb.png") no-repeat #ccc; + top:1px; + width:19px; + height:5px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/soria/layout/TabContainer.css b/src/main/resources/static/dijit/themes/soria/layout/TabContainer.css new file mode 100644 index 0000000000000000000000000000000000000000..38a1a77e12f4ab4d98b407f302527a89b95327f1 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/layout/TabContainer.css @@ -0,0 +1,403 @@ +/** + * dijit.layout.TabContainer + */ + +/* Classes for all types of tabs (top/bottom/left/right) */ + + .soria .dijitTabContainer .tabStripRBtn { + margin-right: 21px; +} + .soria .dijitTabContainer .tabStripLBtn { + margin-left: 21px; +} + + .soria .nowrapTabStrip .dijitTab { + top: 2px; +} + + .soria .dijitTabContainerBottom-tabs .dijitTab { + top: -1px; + bottom: 2px; +} + +/* Tabs, shared classes */ +.soria .dijitTabPaneWrapper { + background:#fff; + border:1px solid #B1BADF; + margin: 0; + padding-left: 0; +} + +.soria .dijitTab { + padding:4px 6px 2px 4px; + background: url("../images/tabContainerSprite.gif") repeat-x 0 -351px; + position: relative; + line-height:normal; + margin:0 2px 0 0; /* space between one tab and the next in top/bottom mode */ + color: #243C5F; + border: 1px #8BA0BD solid; + border-bottom: 1px #B1BADF solid; +} + +/* hovered tab */ +.soria .dijitTabHover { + color: #243C5F; + background: url("../images/tabContainerSprite.gif") repeat-x 0 -201px; +} + +/* selected tab*/ +.soria .dijitTabChecked +{ + background: url("../images/tabContainerSprite.gif") repeat-x 0 -51px; + color: #243C5F !important; +} + + +.soria .dijitTabListWrapper { + z-index: 10; +} + + +/* Nested Tabs */ + +.soria .dijitTabContainerTabListNested { + background: #D9E9F9; + border: none; +} +.soria .dijitTabContainerTabListNested .dijitTab { + background: none; + border: none; + top: 0; /* override top:1px setting of top-level tabs */ +} +.soria .dijitTabContainerTabListNested .dijitTabHover .tabLabel { + text-decoration: underline; +} +.soria .dijitTabContainerTabListNested .dijitTabChecked .tabLabel { + text-decoration: underline; + font-weight: bold; +} +.soria .dijitTabContainerSpacerNested .dijitTabSpacer { + /* thinner line between tab (labels) and content */ + height: 0; +} +.soria .dijitTabPaneWrapperNested { + border: none; /* prevent double border */ +} + + +/* Close Button */ +.soria .dijitTabCloseButton { + width: 15px; + height: 15px; + background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px top; + margin-top: -1px; +} +.dj_ie6 .soria .dijitTabCloseButton { + background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px top; +} + +.soria .dijitTabCloseButtonHover { + background: url("../images/spriteRoundedIconsSmall.png") no-repeat -60px -15px; +} +.dj_ie6 .soria .dijitTabCloseButtonHover { + background: url("../images/spriteRoundedIconsSmall.gif") no-repeat -60px -15px; +} + +/* ================================ */ +/* top tabs */ +.soria .dijitTabContainerTop-tabs { + border-color: #B1BADF; + padding-left: 3px; +} +.soria .dijitTabContainerTop-tabs .dijitTab { + border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; +} + +.soria .dijitTabContainerTopNoStrip { + padding-top: 3px; +} + +/* top container */ +.soria .dijitTabContainerTop-container { + border-top: none; +} + +.soria .dijitTabContainerTop .dijitTabListWrapper { + border-bottom: none; +} + +/*unselected tabs */ +.soria .dijitTabContainerTop-tabs .dijitTab { + top: 1px; +} + +/* selected tabs */ +.soria .dijitTabContainerTop-tabs .dijitTabChecked { + border-bottom-color: #94b4e6; +} + +/* strip */ +.soria .dijitTabContainerTopStrip { + border: 1px solid #B1BADF; + margin-top: 1px; + padding-top: 1px; + background: #F0F4FC; +} + +.soria .dijitTabContainerTopStrip .dijitTabContainerTop-tabs { + padding-left: 3px; +} + + +.soria .dijitTabContainerNested .dijitTabListWrapper { + height: auto; +} + +/* ================================ */ +/* bottom tabs */ +.soria .dijitTabContainerBottom-tabs { + margin-top: -1px; + padding-left: 3px; + border-top: 1px solid #B1BADF; +} + +.soria .dijitTabContainerBottom .dijitTabListWrapper { + border-top: none; + padding-top: 1px; + padding-bottom: 1px; + float: left; +} + +.soria .dijitTabContainerBottom-tabs .dijitTab { + border-bottom: none; + border-top: 1px solid #B1BADF; + border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + padding-top: 3px; + padding-bottom: 3px; + background: url("../images/tabBottomEnabledC.gif") repeat-x bottom left; +} + +.soria .dijitTabContainerBottom-tabs .dijitTabHover { + background: url("../images/tabBottomHoverC.gif") repeat-x bottom left; +} + +.soria .dijitTabContainerBottom-tabs .dijitTabChecked { + border-top-color:#94b4e6; + background: url("../images/tabBottomActiveC.gif") repeat-x bottom left; +} + + +/* bottom container */ +.soria .dijitTabContainerBottom-container { + border-bottom: none; +} + + +/* strip */ +.soria .dijitTabContainerBottomStrip { + padding-bottom: 2px; + border: 1px solid #B1BADF; +} + +.soria .dijitTabContainerBottomStrip { + background: #F0F4FC; +} + +/* top/bottom strip */ +.soria .dijitTabContainerBottom-spacer, +.soria .dijitTabContainerTop-spacer { + height: 2px; + border: 1px solid #8ba0bd; + background: #94b4e6; +} + +.soria .dijitTabContainerTop-spacer { + border-top: none; +} + +.soria .dijitTabContainerBottom-spacer { + border-bottom: none; +} + +/* ================================ */ +/* right tabs */ +.soria .dijitTabContainerRight-tabs { + height: 100%; + border-color: #ccc; + padding-top: 3px; +} +.soria .dijitTabContainerRight-tabs .dijitTab { + border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-bottom: none; + border-left: 1px solid #B1BADF; + border-bottom: 1px solid #B1BADF !important; + padding: 4px 6px 2px 8px; +} + +.soria .dijitTabContainerRight-tabs .dijitTabChecked { + border-left-color: #94b4e6; + background: url("../images/tabRightChecked.gif") no-repeat left top !important; +} + + +/* right container */ +.soria .dijitTabContainerRight-container { + border-right: none; +} + + +/* some odd ie bug when borders disappear when setting a bottom margin, this sort of helps */ +.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTab, +.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTab { + border-bottom: solid #B1BADF 1px; + margin-bottom: -1px; +} + + +/* some odd ie bug when borders disappear when setting a bottom margin, this sort of helps */ +.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabChecked, +.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabChecked, +.dj_ie6 .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover, +.dj_ie7 .soria .dijitTabContainerRight-tabs .dijitTabCheckedHover { + border-bottom: solid #94b4e6 1px; + margin-bottom: -1px; +} + +/* strip */ +.soria .dijitTabContainerRightStrip { + padding-right: 2px; + border: 1px solid #B1BADF; + background: #F0F4FC; + border-left: none; +} + +/* ================================ */ +/* left tabs */ +.soria .dijitTabContainerLeft-tabs { + border-color: #ccc; + padding-top: 3px; + height: 100%; +} +.soria .dijitTabContainerLeft-tabs .dijitTab { + border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-right: 1px solid #B1BADF; + border-bottom: 1px solid #B1BADF; +} + +.soria .dijitTabContainerLeft-tabs .dijitTabChecked { + border-right: 1px solid #94b4e6; + background: url("../images/tabLeftChecked.gif") no-repeat right top; +} + +/* left container */ +.soria .dijitTabContainerLeft-container { + border-left: none; +} + + +.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTab, +.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTab { + border-bottom: solid #B1BADF 1px; + margin-bottom: -1px; +} + +.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTab, +.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabChecked .dijitTab, +.dj_ie6 .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTab, +.dj_ie7 .soria .dijitTabContainerLeft-tabs .dijitTabCheckedHover .dijitTab { + border-bottom: solid #94b4e6 1px; + margin-bottom: -1px; +} + +/* strip */ +.soria .dijitTabContainerLeftStrip { + padding-left: 2px; + border: 1px solid #B1BADF; + background: #F0F4FC; + border-right: none; +} + +/* ================================ */ +/* left/right tabs */ +.soria .dijitTabContainerLeft-tabs .dijitTab, +.soria .dijitTabContainerRight-tabs .dijitTab { + margin: 1px 0; /* space between one tab and the next in left/right mode */ +} + +/* left/right tabstrip */ +.soria .dijitTabContainerLeft-spacer, +.soria .dijitTabContainerRight-spacer { + width: 2px; + border: 1px solid #8ba0bd; + background: #94b4e6; +} + +.soria .dijitTabContainerLeft-spacer { + border-left: none; +} +.soria .dijitTabContainerRight-spacer { + border-right: none; +} +/* ================================ */ + +/* this resets the tabcontainer strip when within a contentpane */ +.soria .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs { + border-left: 0 solid #ccc; + border-top: 0 solid #ccc; + border-right: 0 solid #ccc; + padding-top: 0; + padding-left: 0; +} + + +/* ================================ */ + +/* Menu and slider control styles */ +.soria .dijitTabContainer .tabStripButton { + margin-right: 0; +} +.soria .dijitTabContainer .tabStripButton-top { + margin-top: 1px; +} + +.dj_ie6 .soria .tabStripButton .dijitTabContent, +.dj_ie7 .soria .tabStripButton .dijitTabContent { + padding-top: 7px; +} + +.dj_ie6 .soria .tabStrip-disabled .tabStripButton .dijitTabContent, +.dj_ie7 .soria .tabStrip-disabled .tabStripButton .dijitTabContent { + padding-top: 6px; +} + +.soria .dijitTabContainer .tabStripButton-bottom { + background: transparent url(../images/tabBottomEnabledSpriteLR.gif) no-repeat scroll left bottom; + border-bottom: medium none; + border-top: 1px solid #B1BADF; +} + +.soria .dijitTabContainer .tabStripButton-bottom .dijitTab { + background: transparent url(../images/tabBottomEnabledSpriteLR.gif) no-repeat scroll right bottom; +} + +.soria .dijitTabStripIcon { + height: 14px; + width: 14px; + background: url(../images/spriteRoundedIconsSmall.png) no-repeat left top ; +} + +.dj_ie6 .soria .dijitTabStripIcon { + background-image: url(../images/spriteRoundedIconsSmall.gif); +} + +.soria .dijitTabStripSlideRightIcon { + background-position: -30px top; +} + +.soria .dijitTabStripMenuIcon { + background-position: -15px top; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/soria/layout/TabContainer_rtl.css b/src/main/resources/static/dijit/themes/soria/layout/TabContainer_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..eba3963b9afed56ff0cf1000af1cadfdbd4d6676 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/layout/TabContainer_rtl.css @@ -0,0 +1,43 @@ +.dijitRtl .soria .dijitTab { + margin-right:0; + margin-left:2px; /* space between one tab and the next in top/bottom mode */ +} + +/* tab strips */ +.dijitRtl .soria .dijitTabContainer .tabStripButton { + margin-left: 0; +} + +.dijitRtl .soria .dijitTabContainerTopStrip, +.dijitRtl .soria .dijitTabContainerBottomStrip, +.dijitRtl .soria .dijitTabContainerTop-tabs, +.dijitRtl .soria .dijitTabContainerBottom-tabs { + padding-left: 0; + padding-right: 3px; +} + +.dijitRtl .soria .dijitTabInnerDiv { + padding-left: 3px; + padding-right: 4px; +} + +.dijitRtl .soria .dijitTabPaneWrapper { + #zoom: 1; +} + +.dj_ie-rtl .soria .dijitTabContainerLeft-tabs { + margin-left: 0 !important; +} + +.dj_ie-rtl .soria .dijitTabContainerRight-tabs { + margin-right: 0 !important; +} + +.dijitRtl .soria .dijitTabContainerLeft-tabs .dijitTab, +.dijitRtl .soria .dijitTabContainerRight-tabs .dijitTab { + margin-left:0; +} + +.dj_ie-rtl .soria .dijitTab .dijitTabInnerDiv{ + width : 1%; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/soria/soria.css b/src/main/resources/static/dijit/themes/soria/soria.css new file mode 100644 index 0000000000000000000000000000000000000000..36471d03a13ae565fd373fd605d85d7ed6f633d7 --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/soria.css @@ -0,0 +1,41 @@ +/* + Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file. + + NOTES: + --- + Dialog.css contains css classes for both Dialog and Tooltip! + This because currently a dijit.TooltipDialog exist. Until this is resolved + you need to include Dialog.css for both dijits + --- + Toolbar.css contains classes also used in Editor. Until this is resolved + you need to include Toolbar.css for both Toolbar and Editor + --- + Button.css contains classes for combobox, + +*/ + +@import url("../dijit.css"); +@import url("../../icons/commonIcons.css");/*sprite containing common icons to be used by all themes*/ +@import url("Common.css"); +@import url("layout/ContentPane.css"); +@import url("layout/TabContainer.css"); +@import url("layout/AccordionContainer.css"); +@import url("layout/SplitContainer.css"); +@import url("layout/BorderContainer.css"); +@import url("form/Common.css"); +@import url("form/Button.css"); +@import url("form/Checkbox.css"); +@import url("form/RadioButton.css"); +@import url("form/Slider.css"); +@import url("form/Select.css"); +@import url("Tree.css"); +@import url("ProgressBar.css"); +@import url("TitlePane.css"); +@import url("Calendar.css"); +@import url("TimePicker.css"); +@import url("Toolbar.css"); +@import url("Dialog.css"); +@import url("Menu.css"); +@import url("Editor.css"); +@import url("../../icons/editorIcons.css"); /* sprite for editor icons to be used by all themes */ +@import url("ColorPalette.css"); \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/soria/soria_rtl.css b/src/main/resources/static/dijit/themes/soria/soria_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..895f8223cd52cca3d005a5d8155f1382c0c8ed2b --- /dev/null +++ b/src/main/resources/static/dijit/themes/soria/soria_rtl.css @@ -0,0 +1,30 @@ +/* + Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file. + + NOTES: + --- + Dialog.css contains css classes for both Dialog and Tooltip! + This because currently a dijit.TooltipDialog exist. Until this is resolved + you need to include Dialog.css for both dijits + --- + Toolbar.css contains classes also used in Editor. Until this is resolved + you need to include Toolbar.css for both Toolbar and Editor + --- + Button.css contains classes for combobox, + +*/ + +@import url("../dijit_rtl.css"); +@import url("layout/TabContainer_rtl.css"); +@import url("layout/AccordionContainer_rtl.css"); +@import url("form/Slider_rtl.css"); +@import url("form/Button_rtl.css"); +@import url("Tree_rtl.css"); +@import url("TitlePane_rtl.css"); +@import url("Calendar_rtl.css"); +@import url("TimePicker_rtl.css"); +@import url("Dialog_rtl.css"); +@import url("ProgressBar_rtl.css"); +@import url("Menu_rtl.css"); +@import url("Editor_rtl.css"); +@import url("../../icons/editorIcons_rtl.css"); /*sprite for editor icons to be used by all themes*/ \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/themeTester-orig.html b/src/main/resources/static/dijit/themes/themeTester-orig.html new file mode 100644 index 0000000000000000000000000000000000000000..457ee2522bd82e81ee965677445a4316a0139dc2 --- /dev/null +++ b/src/main/resources/static/dijit/themes/themeTester-orig.html @@ -0,0 +1,1242 @@ + + + + Dijit Theme Tester + + + + + + + + + + + + + + + + + + + + +
            Loading themeTester ...
            + + +
            +
            + + + + +
            + + + +
            + +
            +

            Tooltips

            +
              +
            • + rich text tooltip + + Embedded bold RICH text weirdness! + +
            • + +
            • anchor tooltip + tooltip on anchor +
            • +
            + + + + + + + + + + + + + + + + + +
            +
            tooltip below
            +
            I'm below!
            +
            +
            tooltip after
            +
            I'm on the right!
            (or left on RTL systems)
            +
            +
            tooltip before
            +
            I'm on the left!
            (or right on RTL systems)
            +
            +
            tooltip above
            +
            I'm above!
            +
            + +
            + +

            Dialogs

            + + +
            + Show Tooltip Dialog +
            + + + + + + + + + + + +
            + +
            +
            +
            +
            +
            + +
            + +
            +
            +
            + +
            + + +
            + +
            +

            + Selecting a color will change the background color of the page. + Use this to test how tooltips and drop downs appear with different backgrounds. +

            +

            3x4

            + +
            +

            7x10

            +
            +
            +
            +
            + This tab container uses slide controls when the tabs are too wide to fit beside each other. + If you make the left column narrow enough, the slide controls should appear. +
            +
            +
            +
            + +
            +
            + SubTab 1 + SubTab 2 +
            +

            I am tab 3, inlined.

            +
            +
            +

            I am tab 4, inlined.

            +
            +
            +
            + +
            +
            + + +
            + + +
            + + + + + + + +
            + + +

            dijit.form.Textarea

            +

            Enabled:

            + + +
            +

            Disabled:

            + + + +

            dijit.form.SimpleTextarea

            +

            +

            Enabled:

            + + +

            Disabled:

            + +
            + +
            +

            Enabled:

            + +
            +
              +
            • Lorem and a link, what do you think?
            • +
            • This is the Editor with a Toolbar attached.
            • +
            +
            +

            Disabled:

            +
            +
              +
            • Lorem and a link, what do you think?
            • +
            • This is the Editor with a Toolbar attached.
            • +
            +
            +
            + + +
            + + + + +

            Enabled

            +
            +
            +
              +
            1. 0 +
            2. 100 +
            + +
            +
            +
              +
              +
              Slider2 Value: +
              + +
              +
                +
                +
                +
                  +
                1. lowest +
                2. normal +
                3. highest +
                + +
                +
                Value: + +
                +
                +
                  +

                1. small +

                2. medium + +

                3. large +
                +
                + +

                Disabled

                +
                +
                +
                  +
                1. 0 +
                2. 100 +
                + +
                +
                +
                  +
                  +
                  +
                  +
                    +
                    +
                    +
                      +
                    1. lowest +
                    2. normal +
                    3. highest +
                    + +
                    + +
                    +
                    +
                      +

                    1. small +

                    2. medium +

                    3. large +
                    +
                    +
                    + + + + + + + + +
                    + + +
                    + + +
                    +

                    You can explore this single page after applying a Theme + for use in creation of your own theme.

                    + +

                    I am whole slew of Widgets on a page. Jump to dijit tests to + test individual components.

                    + +

                    There is a right-click [context] pop-up menu here, as well.

                    +
                    + +
                    + +
                    + +
                    +

                    I am the last Tab

                    + +
                    + +
                    + +
                    + + + + + + + diff --git a/src/main/resources/static/dijit/themes/themeTester.html b/src/main/resources/static/dijit/themes/themeTester.html new file mode 100644 index 0000000000000000000000000000000000000000..61c5bf8d1213f140fd803825135ebb030ad4e6bc --- /dev/null +++ b/src/main/resources/static/dijit/themes/themeTester.html @@ -0,0 +1,1360 @@ + + + + + + +Dijit Theme Tester + + + + + + + + + + + + + + + +
                    +
                    Loading themeTester ...
                    +
                    + + + + + + + +
                    + + + +
                    + +
                    +
                    +

                    Tooltips

                    +
                      +
                    • + rich text tooltip + + Embedded bold RICH text weirdness! + +
                    • + +
                    • anchor tooltip + tooltip on anchor +
                    • +
                    + + + + + + + + + + + + + + + + + +
                    +
                    tooltip below
                    +
                    I'm below! +
                    +
                    +
                    tooltip after
                    +
                    + I'm on the right!
                    (or left on RTL systems) +
                    +
                    +
                    tooltip before
                    +
                    I'm on the left!
                    (or right on RTL systems) +
                    +
                    +
                    tooltip above
                    +
                    + I'm above! +
                    +
                    + +
                    + +

                    Dialogs

                    + + +
                    + Show Tooltip Dialog + +
                    + + + + + + + + + +
                    +
                    +
                    +
                    +
                    + +
                    + +
                    +
                    + +
                    +
                    +
                    + +
                    + + +
                    + +
                    +

                    + Selecting a color will change the background color of the page. + Use this to test how tooltips and drop downs appear with different backgrounds. +

                    + +

                    3x4

                    + +
                    +

                    7x10

                    + +
                    +
                    +
                    + + + +
                    + +
                    + +

                    Buttons

                    + +

                    Buttons can do an action, display a menu, or both:

                    + + Enabled: + + + +
                    + Drop Down + + +
                    + +
                    + Combo + + +
                    + +
                    Toggle +
                    + +
                    + + Disabled: + + + +
                    + Drop Down + +
                    + +
                    + Combo + + +
                    + + + +
                    + +

                    CheckBox

                    +
                    + + + + + + + + + + + +
                    + +

                    Radio Buttons

                    +
                    + + + + + + +
                    +
                    + + +
                    + +

                    dijit/form/DateTextBox

                    + + + + + + + +

                    dijit/form/TimeTextBox

                    + + + + + +

                    dijit/form/CurrencyTextBox

                    + + + + + +
                    + +

                    dijit/form/NumberSpinner max=100

                    + + + + + +
                    + +
                    + +

                    dijit/form/Select

                    + + Enabled: +
                    + Alabama + Alaska + Arizona + Arkansas + California + New
                      Mexico
                    +
                    + + Disabled: +
                    + Alabama + Alaska + Arizona + Arkansas + California + New
                      Mexico
                    +
                    + +
                    + +

                    dijit/form/FilteringSelect

                    + + + + + + + + + +
                    + +
                    + + +

                    dijit/form/Textarea

                    + +

                    Enabled:

                    + + +
                    + +

                    Disabled:

                    + + + +

                    dijit/form/SimpleTextarea

                    + +

                    + +

                    Enabled:

                    + + +

                    Disabled:

                    + +
                    + + +
                    +

                    Enabled:

                    + +
                    +
                      +
                    • Lorem and a link, what do you think?
                    • +
                    • This is the Editor with a Toolbar attached.
                    • +
                    +
                    +

                    Disabled:

                    + +
                    +
                      +
                    • Lorem and a link, what do you think?
                    • +
                    • This is the Editor with a Toolbar attached.
                    • +
                    +
                    +
                    + + + +
                    + + + +

                    Enabled

                    + +
                    +
                    +
                      +
                    1. 0 +
                    2. 100 +
                    + +
                    +
                    +
                      +
                      +
                      Slider2 Value: +
                      + +
                      +
                        +
                        +
                        +
                          +
                        1. lowest +
                        2. normal +
                        3. highest +
                        +
                        +
                        Value: + +
                        +
                        +
                          +

                        1. small +

                        2. medium +

                        3. large +
                        +
                        + +

                        Disabled

                        + +
                        +
                        +
                          +
                        1. 0 +
                        2. 100 +
                        + +
                        +
                        +
                          +
                          +
                          + +
                          +
                            +
                            +
                            +
                              +
                            1. lowest +
                            2. normal +
                            3. highest +
                            +
                            + +
                            +
                            +
                              +

                            1. small +

                            2. medium +

                            3. large +
                            +
                            +
                            + +
                            + +

                            TitlePane

                            + +
                            +

                            This is a title pane. It can be expanded and collapsed.

                            + +

                            Sed sollicitudin suscipit risus. Nam + ullamcorper. Sed nisl lectus, pellentesque nec, + malesuada eget, ornare a, libero. Lorem ipsum dolor + sit amet, consectetuer adipiscing elit.

                            + +
                            + + +
                            + +

                            ProgressBar

                            + +
                            + + Indeterminate: +
                            + +
                            + + +
                            + +

                            dijit/InlineEditBox + dijit/form/TextBox on <h3>

                            + + (HTML before) +

                            + Edit me - I trigger the onChange callback +

                            + (HTML after) + +
                            + +

                            dijit/InlineEditBox + dijit/form/Textarea

                            + + (HTML before) +

                            + I'm one big ‪paragraph.‬ Go ahead and edit ‪me.‬ I dare ‪you.‬ + The quick brown fox jumped over the lazy ‪dog.‬ Blah blah blah blah blah blah ‪blah ...‬ +

                            + (HTML after) + +

                            + These links will + disable / + enable + the text area above. +

                            + +
                            + +

                            dijit/form/DateTextBox

                            + + (HTML inline before) + + + (HTML after) +
                            + +

                            dijit/form/TimeTextBox

                            + + (HTML inline before) + + + (HTML after) + +
                            + + +

                            dijit/form/FilteringSelect + Inline + remote data store

                            + (HTML inline before) + The earth + (HTML after) + +
                            + + +
                            +
                            +

                            Vertical Source

                            + +
                            +
                            Item X
                            +
                            Item Y
                            +
                            Item Z
                            +
                            +
                            +
                            +

                            Horizontal

                            + +
                            +
                            Item 1
                            +
                            Item 2
                            +
                            Item 3
                            +
                            +
                            +
                            + + +
                            +
                            +
                            +
                            +

                            I am tab 3, inlined.

                            +
                            +
                            +

                            I am tab 4, inlined.

                            +
                            +
                            + +
                            + This pane is closable, just for the icon ... +
                            +
                            + + + +
                            + +
                            +

                            You can explore this single page after applying a Theme + for use in creation of your own theme.

                            + +

                            I am whole slew of Widgets on a page. Jump to dijit tests to + test individual components.

                            + +

                            There is a right-click [context] pop-up menu here, as well.

                            +
                            + + +
                            +

                            I am the last Tab

                            + +
                            + I am the second dialog. I am + parented by the Low Tab Pane #3 +
                            +
                            + + +
                            + + +
                            + + + + + + + + diff --git a/src/main/resources/static/dijit/themes/themeTesterImages/blackButtonEnabled.gif b/src/main/resources/static/dijit/themes/themeTesterImages/blackButtonEnabled.gif new file mode 100644 index 0000000000000000000000000000000000000000..9174efda3730e94ae92dafb5672db26db0e5d758 Binary files /dev/null and b/src/main/resources/static/dijit/themes/themeTesterImages/blackButtonEnabled.gif differ diff --git a/src/main/resources/static/dijit/themes/themeTesterImages/blackButtonHover.gif b/src/main/resources/static/dijit/themes/themeTesterImages/blackButtonHover.gif new file mode 100644 index 0000000000000000000000000000000000000000..16f087cdaf0a7846d95e7c2f412970f877a009d5 Binary files /dev/null and b/src/main/resources/static/dijit/themes/themeTesterImages/blackButtonHover.gif differ diff --git a/src/main/resources/static/dijit/themes/themeTesterQuirk.html b/src/main/resources/static/dijit/themes/themeTesterQuirk.html new file mode 100644 index 0000000000000000000000000000000000000000..8414143654d61eb4accbbe09ec3edee0f2ce5c95 --- /dev/null +++ b/src/main/resources/static/dijit/themes/themeTesterQuirk.html @@ -0,0 +1,5 @@ + + + + + diff --git a/src/main/resources/static/dijit/themes/tundra/Calendar.css b/src/main/resources/static/dijit/themes/tundra/Calendar.css new file mode 100644 index 0000000000000000000000000000000000000000..0aea25f8376601545243fb1d18c36c503eb8c3d6 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/Calendar.css @@ -0,0 +1,159 @@ +/* Calendar*/ + +.tundra .dijitCalendarIncrementControl { + /* next/prev month buttons */ + width:15px; + height:15px; + background-image: url("images/spriteRoundedIconsSmall.png"); + background-repeat: no-repeat +} +.dj_ie6 .tundra .dijitCalendarIncrementControl { + font-size:.1em; + background-image: url("images/spriteRoundedIconsSmall.gif"); +} + +.tundra .dijitA11ySideArrow { + display: none; +} + +.tundra .dijitCalendarDecrease { + background-position: top left; +} +.tundra .dijitCalendarIncrease { + background-position: -30px top; +} + +.tundra .dijitCalendarContainer { + font-size: 100%; + border-spacing: 0; + border-collapse: separate; + margin: 0; +} + +.tundra .dijitCalendarMonthContainer { + /* month header cell */ + background:#d3d3d3 url("images/titleBar.png") repeat-x top; + padding-top:.3em; + padding-bottom:.2em; + text-align:center; +} +.dj_ie6 .tundra .dijitCalendarMonthContainer { + padding-top:.2em; + padding-bottom:.1em; +} + +.tundra .dijitCalendarDayLabelTemplate { + /* day of week labels */ + background:white url("images/calendarDayLabel.png") repeat-x bottom; + font-weight:normal; + padding-top:.15em; + padding-bottom:0; + border-top: 1px solid #eeeeee; + color:#293a4b; + text-align:center; +} + +.tundra .dijitCalendarBodyContainer { + border-bottom: 1px solid #eeeeee; +} + +.tundra .dijitCalendarMonthLabel { + color:#293a4b; + font-weight: bold; + padding: 0 4px; +} + +.tundra .dijitCalendarDateTemplate { + /* style for each day cell */ + font-size: 0.9em; + font-weight: bold; + text-align: center; + padding: 0.3em 0.3em 0.05em 0.3em; + letter-spacing: 1px; +} + +.dj_ie .tundra .dijitCalendarDateTemplate { + padding: 0.1em .33em 0.02em .33em; +} + +.tundra .dijitCalendarPreviousMonth, +.tundra .dijitCalendarNextMonth { + /* days that are part of the previous or next month */ + color:#999999; + background-color:#f8f8f8; +} + +.tundra .dijitCalendarCurrentMonth { + /* days that are part of this month */ + background-color: white; +} + +.tundra .dijitCalendarCurrentDate { + /* cell for today's date */ + text-decoration:underline; + font-weight:bold; +} + +.tundra .dijitCalendarHoveredDate { + background-color: #e2ebf2; +} + +.tundra .dijitCalendarDisabledDate { + text-decoration: line-through; + background-color: white; /* override hover effects above, hover and click on disabled date should have no effect */ +} + +.tundra .dijitCalendarSelectedDate { + /* cell for the selected date */ + background-color:#bbc4d0 !important; + color:black !important; +} +.tundra .dijitCalendarYearContainer { + /* footer of the table that contains the year display/selector */ + background:white url("images/calendarYearLabel.png") repeat-x bottom; +} + +.tundra .dijitCalendarYearLabel { + /* container for all of 3 year labels */ + margin:0; + padding:0.4em 0 0.25em 0; + text-align:center; + font-size: 1.17em; +} + +.tundra .dijitCalendarSelectedYear { + /* label for selected year */ + font-weight:bolder; + color:black; + padding:0.2em; + padding-bottom:0.1em; + background-color:#bbc4d0 !important; +} + +.tundra .dijitCalendarNextYear, +.tundra .dijitCalendarPreviousYear { + /* label for next/prev years */ + color:black !important; + font-weight:normal; +} + +/* Styling for month DropDownButton */ + +.tundra .dijitCalendar .dijitDropDownButton { + margin: 0; +} +.tundra .dijitCalendar .dijitButtonText { + padding: 0; +} +.tundra .dijitCalendar .dijitDropDownButton .dijitButtonNode { + background-color: transparent; + background-image: none; + padding: 0; +} + +/* Styling for month drop down list */ + +.tundra .dijitCalendarMonthMenu .dijitCalendarMonthLabelHover { + background-color: #3559ac; + color:#fff; +} diff --git a/src/main/resources/static/dijit/themes/tundra/Calendar_rtl.css b/src/main/resources/static/dijit/themes/tundra/Calendar_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..fbfe27b5d84c8202fcb41b2df33260412c2a0ff1 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/Calendar_rtl.css @@ -0,0 +1,9 @@ +/* Calendar */ + +.tundra .dijitCalendarRtl .dijitCalendarDecrease { + background-position: -30px top; +} + +.tundra .dijitCalendarRtl .dijitCalendarIncrease { + background-position: 0 top; +} diff --git a/src/main/resources/static/dijit/themes/tundra/ColorPalette.css b/src/main/resources/static/dijit/themes/tundra/ColorPalette.css new file mode 100644 index 0000000000000000000000000000000000000000..38088b84516eb28ca0ce388d360c1afb03e6c928 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/ColorPalette.css @@ -0,0 +1,5 @@ +.dijitColorPalette { + border:1px solid #7eabcd; + background:#fff; + -moz-border-radius: 0 !important; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/tundra/Common.css b/src/main/resources/static/dijit/themes/tundra/Common.css new file mode 100644 index 0000000000000000000000000000000000000000..82a133bec1c48555830d38ea65958fa8fe41f4c1 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/Common.css @@ -0,0 +1,32 @@ +/* DnD hovered and selected node(s) */ +.tundra .dojoDndItemOver { + background-image: url(images/treeHover.png); +} +.tundra .dojoDndItemAnchor, +.tundra .dojoDndItemSelected { + background-color: #E2EBFE; +} + +/* DnD avatar-specific settings */ +/* For now it uses a default set of rules. Some other DnD classes can be modified as well. */ + +.tundra table.dojoDndAvatar { -moz-border-radius: 0; border: 1px solid #ccc; border-collapse: collapse; background-color: #fff; font-size: 75%; color: black;} +.tundra .dojoDndAvatar td { border: none; } +.tundra .dojoDndAvatar tr { border: none; } +.tundra .dojoDndAvatarHeader td { height: 20px; padding: 0 0 0 21px; } +.tundra .dojoDndAvatarItem td { padding: 2px;} +.tundra.dojoDndMove .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoMove.png); background-repeat: no-repeat; background-position: 2px center;} +.tundra.dojoDndCopy .dojoDndAvatarHeader {background-color: #f58383; background-image: url(images/dndNoCopy.png); background-repeat: no-repeat; background-position: 2px center;} +.tundra.dojoDndMove .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndMove.png); background-repeat: no-repeat; background-position: 2px center;} +.tundra.dojoDndCopy .dojoDndAvatarCanDrop .dojoDndAvatarHeader {background-color: #97e68d; background-image: url(images/dndCopy.png); background-repeat: no-repeat; background-position: 2px center;} + +.tundra .dijitIconLoading { + background:url('images/loading.gif') no-repeat left center; + width: 24px; + height: 24px; +} +.tundra .dijitIconError { + background:url('images/warning.png') no-repeat left center; + width: 16px; + height: 16px; +} diff --git a/src/main/resources/static/dijit/themes/tundra/Dialog.css b/src/main/resources/static/dijit/themes/tundra/Dialog.css new file mode 100644 index 0000000000000000000000000000000000000000..b346f62672f9cdba1617f2babfa3ed3060533f23 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/Dialog.css @@ -0,0 +1,152 @@ +/* Dialog and Tooltip/TooltipDialog */ + +.tundra .dijitDialog { + background: #fff; + border: 1px solid #7eabcd; + padding: 0; + -webkit-box-shadow: 0 5px 10px #adadad; +} + +.tundra .dijitDialogPaneContent { + background: #fff; + border-top: 1px solid #d3d3d3; + padding:10px; + +} + +.tundra .dijitDialogTitleBar { + /* outer container for the titlebar of the dialog */ + background: #fafafa url("images/titleBar.png") repeat-x top left; + padding: 5px 6px 3px 6px; + outline:0; /* remove this line if keyboard focus on dialog startup is an issue. tab still takes you to first focusable element */ +} + +.tundra .dijitDialogTitle { + /* typography and styling of the dialog title */ + font-weight: bold; + padding: 0 4px; +} + +.tundra .dijitDialogCloseIcon { + /* the default close icon for the dialog */ + /* background : url("images/spriteRoundedIconsSmall.png") no-repeat right top; */ + background: url("images/tabClose.png") no-repeat right top; + position: absolute; + vertical-align: middle; + right: 6px; + top: 4px; + height: 15px; + width: 15px; +} +.dj_ie6 .tundra .dijitDialogCloseIcon { + background : url("images/tabClose.gif") no-repeat right top; +} + +.tundra .dijitDialogCloseIconHover { + background: url("images/tabCloseHover.png") no-repeat right top; +} +.dj_ie6 .tundra .dijitDialogCloseIconHover { + background : url("images/tabCloseHover.gif") no-repeat right top; +} + +/* Tooltip and TooltipDialog */ + +.tundra .dijitTooltip, +.tundra .dijitTooltipDialog { + /* the outermost dom node, holding the connector and container */ + background: transparent; /* make the area on the sides of the arrow transparent */ +} + +.dijitTooltipBelow { + /* leave room for arrow above content */ + padding-top: 13px; +} + +.dijitTooltipAbove { + /* leave room for arrow below content */ + padding-bottom: 13px; +} + +.tundra .dijitTooltipContainer { + /* + The part with the text. + */ + background: #ffffff url("images/popupMenuBg.gif") repeat-x bottom left; + border: 1px solid #7eabcd; + padding: 0.45em; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; +} + +.tundra .dijitTooltipConnector { + /* the arrow piece */ + border:0; + z-index: 2; +} +.tundra .dijitTooltipABRight .dijitTooltipConnector { + /* above or below tooltip, but the arrow appears on the right, + and the right edges of target and tooltip are aligned rather than the left */ + left: auto !important; + right: 3px; +} + +.tundra .dijitTooltipBelow .dijitTooltipConnector { + /* the arrow piece for tooltips below an element */ + top: 0; + left: 3px; + background:url("images/tooltipConnectorUp.png") no-repeat top left; + width:16px; + height:14px; +} + +.dj_ie .tundra .dijitTooltipBelow .dijitTooltipConnector { + /* use gif for IE7 too, due to png rendering problems on fade-in (see http://trac.dojotoolkit.org/ticket/6555) */ + background-image: url("images/tooltipConnectorUp.gif"); +} + +.tundra .dijitTooltipAbove .dijitTooltipConnector { + /* the arrow piece for tooltips above an element */ + bottom: 0; + left: 3px; + background:url("images/tooltipConnectorDown.png") no-repeat top left; + width:16px; + height:14px; +} +.dj_ie .tundra .dijitTooltipAbove .dijitTooltipConnector { + background-image: url("images/tooltipConnectorDown.gif"); +} +.dj_ie6 .tundra .dijitTooltipAbove .dijitTooltipConnector { + bottom: -3px; +} + +.tundra .dijitTooltipLeft { + padding-right: 14px; +} +.tundra .dijitTooltipLeft .dijitTooltipConnector { + /* the arrow piece for tooltips to the left of an element, bottom borders aligned */ + right: 0; + background:url("images/tooltipConnectorRight.png") no-repeat top left; + width:16px; + height:14px; +} +.dj_ie .tundra .dijitTooltipLeft .dijitTooltipConnector { + background-image: url("images/tooltipConnectorRight.gif"); +} + +.tundra .dijitTooltipRight { + padding-left: 14px; +} +.tundra .dijitTooltipRight .dijitTooltipConnector { + /* the arrow piece for tooltips to the right of an element, bottom borders aligned */ + left: 0; + background:url("images/tooltipConnectorLeft.png") no-repeat top left; + width:16px; + height:14px; +} +.dj_ie .tundra .dijitTooltipRight .dijitTooltipConnector { + background-image: url("images/tooltipConnectorLeft.gif"); +} + +.dj_webkit .tundra .dijitTooltipContainer { + -webkit-box-shadow: 0 5px 10px #adadad; +} diff --git a/src/main/resources/static/dijit/themes/tundra/Dialog_rtl.css b/src/main/resources/static/dijit/themes/tundra/Dialog_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..9337680aa5a84ecfb22774d81ee95883bd51a046 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/Dialog_rtl.css @@ -0,0 +1,5 @@ +/* Dialog */ +.tundra .dijitDialogRtl .dijitDialogCloseIcon { + right: auto; + left: 5px; +} diff --git a/src/main/resources/static/dijit/themes/tundra/Editor.css b/src/main/resources/static/dijit/themes/tundra/Editor.css new file mode 100644 index 0000000000000000000000000000000000000000..b6f07a1f79a90df783c8efc3c6a0d7f7958098bd --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/Editor.css @@ -0,0 +1,16 @@ +.dijitEditor { + border:1px solid #bfbfbf; + border-top:0; +} + +.tundra .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsEnabled.png'); /* editor icons sprite image - enabled state */ + background-repeat: no-repeat; + width: 18px; + height: 18px; + text-align: center; +} +.tundra .dijitDisabled .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsDisabled.png'); /* editor icons sprite image - disabled state */ +} + diff --git a/src/main/resources/static/dijit/themes/tundra/Editor_rtl.css b/src/main/resources/static/dijit/themes/tundra/Editor_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..cd4849e7f85db651126e291a503863066eab277c --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/Editor_rtl.css @@ -0,0 +1,7 @@ +/* Editor */ +.tundra .dijitEditorRtl .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsEnabled_rtl.png'); /* editor icons sprite image - enabled state */ +} +.tundra .dijitEditorRtlDisabled .dijitEditorIcon { + background-image: url('../../icons/images/editorIconsDisabled_rtl.png'); /* editor icons sprite image - disabled state */ +} diff --git a/src/main/resources/static/dijit/themes/tundra/Menu.css b/src/main/resources/static/dijit/themes/tundra/Menu.css new file mode 100644 index 0000000000000000000000000000000000000000..055d02190796387119fd0c24c908679ec3a910d9 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/Menu.css @@ -0,0 +1,88 @@ +.tundra .dijitMenu, +.tundra .dijitMenuBar { + border: 1px solid #7eabcd; + margin: 0; + padding: 0; + background-color: #f7f7f7; +} + +.tundra .dijitMenuTable { + border-collapse: separate; + border-spacing: 0 0; + padding: 0; +} + +.tundra .dijitBorderContainer .dijitMenuBar { + border:1px solid #ccc; +} + +.tundra .dijitMenuItem { + font-family: sans-serif; + margin: 0; +} + +.tundra .dijitMenuItem { + padding: 4px 5px; +} + +.tundra .dijitMenuPreviousButton, .tundra .dijitMenuNextButton { + font-style: italic; +} +.tundra .dijitMenuItem td { + padding: 2px; +} + +.tundra .dijitMenuPassive .dijitMenuItemHover, +.tundra .dijitComboBoxMenu .dijitMenuItemHover, +.tundra .dijitMenuItemSelected { + background-color: #3559ac; + color:#fff; +} + +.tundra .dijitMenuItemIcon { + width: 16px; + height: 16px; +} + +.tundra .dijitMenuExpand { + /* arrow to indicate this MenuItem opens a sub-menu */ + width: 7px; + height: 7px; + background-image: url('images/spriteArrows.png'); + background-position: -14px 0; +} +.dj_ie6 .tundra .dijitMenuExpand { + background-image: url('images/spriteArrows.gif'); +} + +/* separator can be two pixels -- set border of either one to 0 to have only one */ +.tundra .dijitMenuSeparatorTop { + border-bottom: 1px solid #9b9b9b; +} + +.tundra .dijitMenuSeparatorBottom { + border-top: 1px solid #e8e8e8; +} + +/* the checked menu item */ +.tundra .dijitCheckedMenuItem .dijitMenuItemIcon, +.tundra .dijitRadioMenuItem .dijitMenuItemIcon { + background-image: url('images/checkmark.png'); + background-position: -80px; +} + +.dj_ie6 .tundra .dijitCheckedMenuItem .dijitMenuItemIcon, +.dj_ie6 .tundra .dijitRadioMenuItem .dijitMenuItemIcon { + background-image: url('images/checkmark.gif'); +} + +.tundra .dijitCheckedMenuItemChecked .dijitMenuItemIcon { + background-position: -64px; +} + +.tundra .dijitRadioMenuItem .dijitMenuItemIcon { + background-position: -110px; /* 15px * 8 */ +} +.tundra .dijitRadioMenuItemChecked .dijitMenuItemIcon { + background-position: -95px; /* 15px * 7 */ +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/tundra/Menu_rtl.css b/src/main/resources/static/dijit/themes/tundra/Menu_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..f14859297faab8c54e0f0dc1d85f6b14c9202d1b --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/Menu_rtl.css @@ -0,0 +1,3 @@ +.tundra .dijitMenuItemRtl .dijitMenuExpand { + background-position: -7px 0; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/tundra/ProgressBar.css b/src/main/resources/static/dijit/themes/tundra/ProgressBar.css new file mode 100644 index 0000000000000000000000000000000000000000..5a9a78674fd73e1b4f15ef2457b2322a511cfeed --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/ProgressBar.css @@ -0,0 +1,29 @@ +.tundra .dijitProgressBar { + margin:2px 0 2px 0; +} + +.tundra .dijitProgressBarEmpty { + /* outer container and background of the bar that's not finished yet*/ + background:#fff url("images/progressBarEmpty.png") repeat-x center center; + border-color: #a2a2a2 #b8b8b8 #b8b8b8 #a2a2a2; +} + +.tundra .dijitProgressBarTile { + /* inner container for finished portion when in 'tile' (image) mode */ + background:#f0f0f0 url("images/progressBarFull.png") repeat-x center center; +} + +.tundra .dijitProgressBarFull { + border: 0px solid #b8b8b8; + border-right-width: 1px; +} + +.tundra .dijitProgressBarLabel { + /* Set to a color that contrasts with both the "Empty" and "Full" parts. */ + color:#293a4b; +} + +.tundra .dijitProgressBarIndeterminate .dijitProgressBarTile { + /* use an animated gif for the progress bar in 'indeterminate' mode */ + background:#cad2de url("images/progressBarAnim.gif") repeat-x center center; +} diff --git a/src/main/resources/static/dijit/themes/tundra/ProgressBar_rtl.css b/src/main/resources/static/dijit/themes/tundra/ProgressBar_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..24436d700a436c3e7dee826ccd8d5ade641284d1 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/ProgressBar_rtl.css @@ -0,0 +1,14 @@ +.tundra .dijitProgressBarRtl .dijitProgressBarFull { + border-left-width: 1px; + border-right: 0px; +} + +.tundra .dijitProgressBarIndeterminateRtl .dijitProgressBarTile { + -moz-transform: scaleX(-1); + -o-transform: scaleX(-1); + -webkit-transform: scaleX(-1); + transform: scaleX(-1); + filter: FlipH; + -ms-filter: "FlipH"; +} + diff --git a/src/main/resources/static/dijit/themes/tundra/TimePicker.css b/src/main/resources/static/dijit/themes/tundra/TimePicker.css new file mode 100644 index 0000000000000000000000000000000000000000..33fc5aee45ead9617432efbf40f298e231644a0f --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/TimePicker.css @@ -0,0 +1,24 @@ +/* Time Picker */ +.tundra .dijitTimePickerTick, +.tundra .dijitTimePickerMarker { + border-color: #ccc; +} + +.tundra .dijitTimePickerTick { + color:gray; +} + +.tundra .dijitTimePickerMarker { + background:#d3d3d3 url("images/titleBar.png") repeat-x top; + color:#293a4b; +} + +.tundra .dijitTimePickerItemSelected { + color: black; + background: #bbc4d0 none; +} + +.tundra .dijitTimePickerItemHover { + background: #60a1ea none; + color:white; +} diff --git a/src/main/resources/static/dijit/themes/tundra/TimePicker_rtl.css b/src/main/resources/static/dijit/themes/tundra/TimePicker_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..e9e8c74090c20c47c5559633fa82ef60f2027210 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/TimePicker_rtl.css @@ -0,0 +1,4 @@ +.dj_ie6 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover, +.dj_ie7 .tundra .dijitTimePickerRtl .dijitTimePickerMarkerHover { + border-top: 0; /* IE6/7 bug causes mouseover/out event storm */ +} diff --git a/src/main/resources/static/dijit/themes/tundra/TitlePane.css b/src/main/resources/static/dijit/themes/tundra/TitlePane.css new file mode 100644 index 0000000000000000000000000000000000000000..2393e695aba9415a9684523d265f5cf741168475 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/TitlePane.css @@ -0,0 +1,38 @@ +.tundra .dijitTitlePaneTitle { + background: #cccccc; + background:#fff url("images/titleBar.png") repeat-x bottom left; + border:1px solid #bfbfbf; + padding:3px 4px; +} +.tundra .dijitTitlePaneTitleHover { + background: #f8fafd url("images/accordionItemHover.gif") bottom repeat-x; +} + +.tundra .dijitTitlePane .dijitArrowNode, .tundra .dijitFieldset .dijitArrowNode { + background-image: url('images/spriteArrows.png'); + background-repeat: no-repeat; + background-position: 0 0; + height: 7px; + width: 7px; +} +.dj_ie6 .tundra .dijitTitlePane .dijitArrowNode, .dj_ie6 .tundra .dijitFieldset .dijitArrowNode { + background-image: url('images/spriteArrows.gif'); +} + +.tundra .dijitTitlePane .dijitClosed .dijitArrowNode, .tundra .dijitFieldset .dijitClosed .dijitArrowNode { + background-position: -14px 0; +} + +.tundra .dijitTitlePaneContentOuter { + background: #ffffff; + border:1px solid #bfbfbf; + border-top: 0; +} +.tundra .dijitTitlePaneContentInner { + padding:10px; +} + +.tundra .dijitTitlePaneTextNode, .tundra .dijitFieldsetLegendNode { + margin-left: 4px; + margin-right: 4px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/tundra/TitlePane_rtl.css b/src/main/resources/static/dijit/themes/tundra/TitlePane_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..bb11f4ad16768ee26ab8bb26f6c22351b8024496 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/TitlePane_rtl.css @@ -0,0 +1,3 @@ +.tundra .dijitTitlePaneRtl .dijitClosed .dijitArrowNode, .tundra .dijitFieldsetRtl .dijitFieldsetTitleClosed .dijitArrowNode { + background-position: -7px 0; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/tundra/Toolbar.css b/src/main/resources/static/dijit/themes/tundra/Toolbar.css new file mode 100644 index 0000000000000000000000000000000000000000..ebe9cdae4b1bcadcebf9e1d4c1e17b438ae50f85 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/Toolbar.css @@ -0,0 +1,75 @@ +.tundra .dijitToolbar { + border-bottom: 1px solid #ccc; + background:#eaeaea url("images/titleBar.png") repeat-x top left; +} + +/* setting a min-height on ditor toolbar */ +.dj_ie6 .tundra .dijitToolbar { + height: 10px; +} + +.tundra .dijitToolbar .dijitButtonNode, +.tundra .dijitToolbar .dijitComboButton .dijitButtonContents, +.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButton { + background: none; + margin: 0; + padding: 0; + border: none; + font-size: 12px; +} + +.tundra .dijitToolbar .dijitButton, +.tundra .dijitToolbar .dijitToggleButton, +.tundra .dijitToolbar .dijitDropDownButton, +.tundra .dijitToolbar .dijitComboButton .dijitButtonContents, +.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButton { + background: none; + padding: 1px; +} + +.tundra .dijitToolbar .dijitButtonChecked, +.tundra .dijitToolbar .dijitToggleButtonChecked { + background-color:#d4dff2; + border:1px solid #316ac5; + padding: 0; /* reduce padding to compensate for space taken by border */ +} + +.tundra .dijitToolbar .dijitButtonCheckedHover, +.tundra .dijitToolbar .dijitToggleButtonCheckedHover + { + background-color:#abc1e5; + border:1px solid #316ac5; + padding: 0; /* reduce padding to compensate for space taken by border */ +} + +.tundra .dijitToolbar .dijitButtonHover, +.tundra .dijitToolbar .dijitToggleButtonHover, +.tundra .dijitToolbar .dijitDropDownButtonHover, +.tundra .dijitToolbar .dijitComboButton .dijitButtonContentsHover, +.tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonHover { + /* TODO: change this from Hover to Selected so that button is still highlighted while drop down is being used */ + border: 1px solid #869cbf; + padding: 0; /* reduce padding to compensate for space taken by border */ + background-color:#e1e5f0; +} + +.tundra .dijitToolbar label { + padding: 3px 3px 0 6px; +} + +.dj_ie .tundra .dijitToolbar .dijitComboButton .dijitButtonContentsFocused, +.dj_ie .tundra .dijitToolbar .dijitComboButton .dijitDownArrowButtonFocused { + /* focus border doesn't appear on
                            for IE, so need to add it manually */ + border: 1px #555 dotted !important; + padding: 0; +} + +.tundra .dijitToolbarSeparator { + /* separator icon in the editor sprite */ + background: url('../../icons/images/editorIconsEnabled.png'); +} + +.tundra .dijitToolbarRtl .dijitToolbarSeparator { + /* separator icon in the editor sprite */ + background-image: url('../../icons/images/editorIconsDisabled.png'); +} diff --git a/src/main/resources/static/dijit/themes/tundra/Tree.css b/src/main/resources/static/dijit/themes/tundra/Tree.css new file mode 100644 index 0000000000000000000000000000000000000000..76c81e0b1a5a742f952aea729623b08ee866c06d --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/Tree.css @@ -0,0 +1,96 @@ +/* Tree */ + +.tundra .dijitTreeNode { + background-image : url('images/i.gif'); + background-repeat : repeat-y; + zoom: 1; /* force layout on IE (TODO: may not be needed anymore) */ +} + +/* left vertical line (grid) for all nodes */ +.tundra .dijitTreeIsLast { + background: url('images/i_half.gif') no-repeat; +} + +.tundra .dijitTreeIsRoot { + margin-left: 0; + background-image: none; +} + +.tundra .dijitTreeExpando { + width: 18px; + height: 18px; +} + +.tundra .dijitTreeRow { + /* so insert line shows up on IE when dropping after a target element */ + padding-bottom: 2px; +} + +.tundra .dijitTreeContent { + min-height: 18px; + min-width: 18px; +} + +.tundra .dijitTreeRowSelected .dijitTreeLabel { + background:#e2ebfe; +} +.tundra .dijitTreeRowHover { + /* using a transparent png so that we can still see grid lines, which are (unfortunately) behind the dijitRowNode that we are hovering over */ + background-image: url(images/treeHover.png); + background-repeat: repeat; + background-color: transparent !important; +} + +.tundra .dijitTreeExpandoOpened { + background-image: url('images/treeExpand_minus.gif'); +} + +.tundra .dijitTreeExpandoClosed { + background-image: url('images/treeExpand_plus.gif'); +} + +.tundra .dijitTreeExpandoLeaf { + background-image: url('images/treeExpand_leaf.gif'); +} + +.tundra .dijitTreeExpandoLoading { + background-image: url('images/treeExpand_loading.gif'); +} + +.tundra .dijitTreeIcon { + width: 16px; + height: 16px; +} + +.tundra .dijitFolderOpened { + background: url('images/folderOpened.gif') no-repeat; +} + +.tundra .dijitFolderClosed { + background: url('images/folderClosed.gif') no-repeat; +} + +.tundra .dijitLeaf { + background: url('images/leaf.gif') no-repeat; +} + +/* Drag and Drop on TreeNodes + * Put insert line on dijitTreeContent node so it's aligned w/ + * (ie, indented equally with) target element, even + * though dijitTreeRowNode is the actual "drag object" + */ +.tundra .dijitTreeNode .dojoDndItemBefore, +.tundra .dijitTreeNode .dojoDndItemAfter { + border-bottom: none; + border-top: none; +} + +.tundra .dijitTreeNode .dojoDndItemBefore .dijitTreeContent { + /* copied from Common.css */ + border-top: 2px solid #369; +} + +.tundra .dijitTreeNode .dojoDndItemAfter .dijitTreeContent { + /* copied from Common.css */ + border-bottom: 2px solid #369; +} diff --git a/src/main/resources/static/dijit/themes/tundra/Tree_rtl.css b/src/main/resources/static/dijit/themes/tundra/Tree_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..607b71ce8b35e0ab9b9a7c50f778f8787ec4a894 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/Tree_rtl.css @@ -0,0 +1,17 @@ +/* Tree */ + +.tundra .dijitTreeNodeRtl, +.tundra .dijitTreeNodeRtl .dijitTreeExpandoLeaf { + /* disable grid lines in RTL mode; too hard to support */ + background-image: none; +} + +.tundra .dijitTreeNodeRtl .dijitTreeExpandoOpened { + /* todo: get rid of transparent space in icon files, + and just use background-placement (or margin maybe) to get desired alignment */ + background-image: url('images/treeExpand_minus_rtl.gif'); +} + +.tundra .dijitTreeNodeRtl .dijitTreeExpandoClosed { + background-image: url('images/treeExpand_plus_rtl.gif'); +} diff --git a/src/main/resources/static/dijit/themes/tundra/form/Button.css b/src/main/resources/static/dijit/themes/tundra/form/Button.css new file mode 100644 index 0000000000000000000000000000000000000000..d274745e98c5df134ce926763864227c799144e4 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/form/Button.css @@ -0,0 +1,138 @@ + +/***** + dijit.form.Button + dijit.form.DropDownButton + dijit.form.ComboButton + dijit.form.ComboBox (partial) + dijit.form.Spinner (partial) (TODO: create NumberSpinner.css file like claro has) + *****/ + +.tundra .dijitButtonNode { + /* enabled state - inner */ + border: 1px solid #c0c0c0; + border-bottom: 1px solid #9b9b9b; + padding: 0.1em 0.2em 0.2em 0.2em; + background: #fff url("../images/buttonEnabled.png") repeat-x bottom left; +} +.tundra .dijitButtonText { + text-align: center; + padding: 0 0.3em; +} +.tundra .dijitInputField { + padding: 0; /* set padding:0 for .tundra .dijitSelect .dijitButtonText but with a low priority rule that can be easily trumped by the user */ +} + +.tundra .dijitDisabled .dijitButtonText { + color: #7F7F7F; +} + +.tundra .dijitArrowButton { + color: #111; +} + +.tundra .dijitComboButton .dijitDownArrowButton { + padding-right:4px; +} + +.tundra .dijitTextBoxReadOnly, +.tundra .dijitTextBoxReadOnly .dijitButtonNode, +.tundra .dijitButtonDisabled .dijitButtonNode, +.tundra .dijitToggleButtonDisabled .dijitButtonNode, +.tundra .dijitDropDownButtonDisabled .dijitButtonNode, +.tundra .dijitComboButtonDisabled .dijitButtonNode, +.tundra .dijitTextBoxDisabled, +.tundra .dijitTextBoxDisabled .dijitButtonNode { + /* disabled state - inner */ + border-color: #d5d5d5 #d5d5d5 #bdbdbd #d5d5d5; + background:#e4e4e4 url("../images/buttonDisabled.png") top repeat-x; +} + +.tundra .dijitButtonHover .dijitButtonNode, +.tundra .dijitButtonNodeHover, +.tundra .dijitToggleButtonHover .dijitButtonNode, +.tundra .dijitDropDownButtonHover .dijitButtonNode, +.tundra .dijitComboButton .dijitButtonContentsHover, +.tundra .dijitComboButton .dijitDownArrowButtonHover { + /* hover state - inner */ + /* TODO: change from Hover to Selected so that button is still highlighted while drop down is being used */ + border-color: #a5beda; + border-bottom-color:#5c7590; + color:#243C5F; + background:#fcfdff url("../images/buttonHover.png") repeat-x bottom; +} +.tundra .dijitDownArrowButtonHover, +.tundra .dijitUpArrowButtonHover { + /* same as above except don't adjust border color (it's controlled by the containing Spinner/ComboBox) */ + color:#243C5F; + background:#fcfdff url("../images/buttonHover.png") repeat-x bottom; +} + +.tundra .dijitUpArrowButtonActive, +.tundra .dijitDownArrowButtonActive, +.tundra .dijitButtonActive .dijitButtonNode, +.tundra .dijitToggleButtonActive .dijitButtonNode, +.tundra .dijitDropDownButtonActive .dijitButtonNode, +.tundra .dijitButtonContentsActive, +.tundra .dijitStackController .dijitToggleButtonChecked .dijitButtonNode { + /* active state - inner (for when you are pressing a normal button, or + * when a radio-type button is in a depressed state + */ + border-color:#366dba; + background: #ededed url("../images/buttonActive.png") bottom repeat-x; +} + +.tundra .dijitArrowButtonInner { + background:url("../images/spriteArrows.png") no-repeat scroll 0 center; + width: 7px; + height: 7px; + margin: 0 4px 0 4px; +} +.tundra .dijitTextBox .dijitArrowButtonInner { + background-position: 0 center; +} +.dj_ie6 .tundra .dijitArrowButtonInner { + background-image:url("../images/spriteArrows.gif"); +} +.tundra .dijitLeftArrowButton .dijitArrowButtonInner { + background-position: -7px center; +} +.tundra .dijitRightArrowButton .dijitArrowButtonInner { + background-position: -14px center; +} +.tundra .dijitUpArrowButton .dijitArrowButtonInner { + background-position: -21px center; +} + +.tundra .dijitDisabled .dijitArrowButtonInner { + background-position: -28px center; +} +.tundra .dijitDisabled .dijitLeftArrowButton .dijitArrowButtonInner { + background-position: -35px center; +} +.tundra .dijitDisabled .dijitRightArrowButton .dijitArrowButtonInner { + background-position: -42px center; +} +.tundra .dijitDisabled .dijitUpArrowButton .dijitArrowButtonInner { + background-position: -49px center; +} +.dj_ie .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner { + margin-top: -2px; /* image has too many blank pixels on top */ +} +.dj_webkit .tundra .dijitSpinner .dijitUpArrowButton .dijitArrowButtonInner, +.dj_iequirks .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner, +.dj_ie8 .tundra .dijitSpinner .dijitDownArrowButton .dijitArrowButtonInner { + margin-top: -1px; /* image has too many blank pixels on top */ +} +.tundra .dijitSpinnerButtonContainer { + width: auto; + padding: 0; +} +.tundra .dijitSpinner .dijitArrowButton { + width: 15px; +} +.tundra .dijitSpinner .dijitSpinnerButtonInner { + width: 15px; +} +.tundra .dijitSpinner .dijitArrowButtonInner .dijitInputField { + padding: 0; +} diff --git a/src/main/resources/static/dijit/themes/tundra/form/Checkbox.css b/src/main/resources/static/dijit/themes/tundra/form/Checkbox.css new file mode 100644 index 0000000000000000000000000000000000000000..28a7d79c9314475e26cf7d44339cd66797bdce13 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/form/Checkbox.css @@ -0,0 +1,54 @@ +.tundra .dijitToggleButton .dijitCheckBoxIcon { + background-image: url('../images/checkmarkNoBorder.png'); +} + +.dj_ie6 .tundra .dijitToggleButton .dijitCheckBoxIcon { + background-image: url('../images/checkmarkNoBorder.gif'); +} + +.tundra .dijitCheckBox, +.tundra .dijitCheckBoxIcon /* inside a toggle button */ { + background-image: url('../images/checkmark.png'); /* checkbox sprite image */ + background-repeat: no-repeat; + width: 16px; + height: 16px; + margin: 0 2px 0 0; + padding: 0; +} + +.dj_ie6 .tundra .dijitCheckBox, +.dj_ie6 .tundra .dijitCheckBoxIcon /* inside a toggle button */ { + background-image: url('../images/checkmark.gif'); /* checkbox sprite image */ +} + +.tundra .dijitCheckBox, +.tundra .dijitToggleButton .dijitCheckBoxIcon { + /* unchecked */ + background-position: -16px; +} + +.tundra .dijitCheckBoxChecked, +.tundra .dijitToggleButtonChecked .dijitCheckBoxIcon { + /* checked */ + background-position: 0; +} + +.tundra .dijitCheckBoxDisabled { + /* disabled */ + background-position: -48px; +} + +.tundra .dijitCheckBoxCheckedDisabled { + /* disabled but checked */ + background-position: -32px; +} + +.tundra .dijitCheckBoxHover { + /* hovering over an unchecked enabled checkbox */ + background-position: -80px; +} + +.tundra .dijitCheckBoxCheckedHover { + /* hovering over a checked enabled checkbox */ + background-position: -64px; +} diff --git a/src/main/resources/static/dijit/themes/tundra/form/Common.css b/src/main/resources/static/dijit/themes/tundra/form/Common.css new file mode 100644 index 0000000000000000000000000000000000000000..2122184dac820a7a19f8894ffdf44420818e70a6 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/form/Common.css @@ -0,0 +1,83 @@ + +/**** + dijit.form.TextBox + dijit.form.ValidationTextBox + dijit.form.SerializableTextBox + dijit.form.RangeBoundTextBox + dijit.form.NumberTextBox + dijit.form.CurrencyTextBox + dijit.form.NumberSpinner + dijit.form.ComboBox (partial) + ****/ + +.tundra .dijitInputContainer input { + margin: 0 0.1em; +} + +.tundra .dijitTextArea { + padding: 3px; +} + +.tundra .dijitSelect .dijitButtonContents, +.tundra .dijitSelect, +.tundra .dijitTextBox { + /* For all except dijit.form.NumberSpinner: the actual input element. + For TextBox, ComboBox, Spinner: the div that contains the input. + Otherwise the actual input element. + */ + background:#fff url("../images/validationInputBg.png") repeat-x top left; + #background:#fff url('../images/validationInputBg.gif') repeat-x top left; +} +.tundra .dijitSelect, +.tundra .dijitTextBox { + border:1px solid #b3b3b3; +} + +.tundra .dijitSelect .dijitArrowButton, +.tundra .dijitComboBox .dijitButtonNode { + padding: 0 0.2em; +} +.tundra .dijitSelect .dijitButtonContents, +.tundra .dijitTextBox .dijitButtonNode { + /* line between the input area and the drop down button, and also between + * the up and down buttons of a spinner + */ + border-color: #9b9b9b; +} + +.tundra .dijitSelectFocused, +.tundra .dijitTextBoxFocused { + /* input field when focused (ie: typing affects it) */ + border-color:#406b9b; +} +.tundra .dijitSelectFocused TD, +.tundra .dijitTextBoxFocused .dijitButtonNode { + border-color:#366dba; +} + +.tundra .dijitError { + background-color:#f9f7ba; + background-image:none; +} + +.tundra .dijitErrorFocused { + background-color:#f9f999; + background-image:none; +} + +/* Validation errors */ +.tundra .dijitValidationTextBoxError .dijitValidationIcon { + /* prevent height change when widget goes from valid to invalid state */ + width: 16px; + background: transparent url('../images/warning.png') no-repeat center center; +} + +/* The highlight is shown in the ComboBox menu. */ +.tundra .dijitComboBoxHighlightMatch { + background-color:#a5beda; +} + +.tundra .dijitFocusedLabel { + /* for checkboxes or radio buttons, hatch border around the corresponding label, to indicate focus */ + outline: 1px dotted #666666; +} diff --git a/src/main/resources/static/dijit/themes/tundra/form/RadioButton.css b/src/main/resources/static/dijit/themes/tundra/form/RadioButton.css new file mode 100644 index 0000000000000000000000000000000000000000..4dfc0fa6d0815b4c22c345381773c7090ed7faff --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/form/RadioButton.css @@ -0,0 +1,52 @@ + +.tundra .dijitRadio, /* stand alone */ +.tundra .dijitRadioIcon { /* inside a toggle button */ + background-image: url('../images/checkmark.png'); /* checkbox sprite image */ + background-repeat: no-repeat; + width: 16px; + height: 16px; + margin: 0; + padding: 0; +} +.dj_ie6 .tundra .dijitRadio, +.dj_ie6 .tundra .dijitRadioIcon { + background-image: url('../images/checkmark.gif'); /* checkbox sprite image */ +} + +.tundra .dijitToggleButton .dijitRadioIcon { + /* for checkbox in a toggle button, override above setting to have no border */ + background-image: url('../images/checkmarkNoBorder.png'); +} +.dj_ie6 .tundra .dijitToggleButton .dijitRadioIcon { + background-image: url('../images/checkmarkNoBorder.gif'); +} + +.tundra .dijitRadio, +.tundra .dijitRadioIcon { + /* unselected */ + background-position: -112px; +} + +.tundra .dijitRadioDisabled { + /* unselected and disabled */ + background-position: -144px; +} + +.tundra .dijitRadioHover { + /* hovering over an unselected enabled radio button */ + background-position: -176px; +} + +.tundra .dijitRadioChecked, +.tundra .dijitRadioCheckedHover, +.tundra .dijitToggleButtonChecked .dijitRadioIcon { + /* selected. Since clicking a selected radio button doesn't change anything, there's + * no hover effect on selected radio buttons. + */ + background-position: -96px; +} + +.tundra .dijitRadioCheckedDisabled { + /* selected but disabled */ + background-position: -128px; +} diff --git a/src/main/resources/static/dijit/themes/tundra/form/Select.css b/src/main/resources/static/dijit/themes/tundra/form/Select.css new file mode 100644 index 0000000000000000000000000000000000000000..3e0e77e0abbeccf42ac1bcce5ce7d353457b6f59 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/form/Select.css @@ -0,0 +1,47 @@ +/* Make unselected content portion "look" more like a text box and less like a button */ +.tundra .dijitSelectError .dijitButtonContents, +.tundra .dijitSelectHover .dijitArrowButton, +.tundra .dijitSelectActive .dijitArrowButton, +.tundra .dijitSelectOpened .dijitArrowButton, +.tundra .dijitSelectDisabled .dijitArrowButton, +.tundra .dijitSelectReadOnly .dijitArrowButton { + background: transparent none; +} +.tundra .dijitSelect .dijitArrowButton { + background: #fff url("../images/buttonEnabled.png") repeat-x bottom left; + border-width: 0; +} + +/* Mirror DropDownButton */ +.tundra .dijitSelectDisabled, +.tundra .dijitSelectDisabled TD { + border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5 !important; + background:#e4e4e4 url("../images/buttonDisabled.png") top repeat-x; +} +.dj_ie .tundra .dijitSelectDisabled TD * { + filter: gray() alpha(opacity=50); +} + +.tundra .dijitSelectHover, +.tundra .dijitSelectHover TD { + border-color:#a5beda #5c7590 #5c7590 #a5beda !important; + color:#243C5F; + background:#fcfdff url("../images/buttonHover.png") repeat-x bottom; +} + +.tundra .dijitSelectActive, +.tundra .dijitSelectOpened, +.tundra .dijitSelectActive TD, +.tundra .dijitSelectOpened TD { + border-color:#366dba !important; + background: #ededed url("../images/buttonActive.png") bottom repeat-x; +} + +/* Make the menu look more combobox-like */ +.tundra .dijitSelectMenu td { + padding: 0; +} +.tundra .dijitSelectMenu .dijitMenuItemLabel, +.tundra .dijitSelectMenu .dijitMenuArrowCell { + padding: 0.1em 0.2em; +} diff --git a/src/main/resources/static/dijit/themes/tundra/form/Slider.css b/src/main/resources/static/dijit/themes/tundra/form/Slider.css new file mode 100644 index 0000000000000000000000000000000000000000..7465e8377172b6fd9b202cad0590ccfe6874a57c --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/form/Slider.css @@ -0,0 +1,147 @@ +.tundra .dijitSliderProgressBarH { + border-color: #aab0bb; + background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left; +} + +.tundra .dijitSliderProgressBarV { + border-color: #aab0bb; + background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left; +} + +.tundra .dijitSliderFocused .dijitSliderProgressBarH, +.tundra .dijitSliderFocused .dijitSliderLeftBumper { + background-image:url("../images/sliderFullFocus.png"); +} + +.tundra .dijitSliderFocused .dijitSliderProgressBarV, +.tundra .dijitSliderFocused .dijitSliderBottomBumper { + background-image:url("../images/sliderFullVerticalFocus.png"); +} + +.tundra .dijitSliderRemainingBarV { + border-color: #b4b4b4; + background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y bottom left; +} + +.tundra .dijitSliderRemainingBarH { + border-color: #b4b4b4; + background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left; +} + +.tundra .dijitSliderBar { + border-style: solid; + outline:1px; +} +.tundra .dijitSliderFocused .dijitSliderBar { + border-color:#888; +} + +.tundra .dijitSliderImageHandleH { + border:0; + width:16px; + height:16px; + background:url("../images/preciseSliderThumb.png") no-repeat center top; +} +.tundra .dijitSliderFocused .dijitSliderImageHandleH { + background-image:url("../images/preciseSliderThumbFocus.png"); + #background-image:url("../images/preciseSliderThumbFocus.gif"); +} + +.dj_ie6 .tundra .dijitSliderImageHandleH { + background-image:url("../images/preciseSliderThumb.gif"); +} + +.tundra .dijitSliderLeftBumper { + border-left-width: 1px; + border-color: #aab0bb; + background: #c0c2c5 url("../images/sliderFull.png") repeat-x top left; +} + +.tundra .dijitSliderRightBumper { + background: #dcdcdc url("../images/sliderEmpty.png") repeat-x top left; + border-color: #b4b4b4; + border-right-width: 1px; +} + +.tundra .dijitSliderImageHandleV { + border:0; + width:16px; + height:16px; + background:url("../images/sliderThumb.png") no-repeat center center; +} + +.tundra .dijitSliderFocused .dijitSliderImageHandleV { + background-image:url("../images/sliderThumbFocus.png"); +} +.dj_ie6 .tundra .dijitSliderFocused .dijitSliderImageHandleV { + background-image:url("../images/sliderThumbFocus.gif"); +} + +.tundra .dijitSliderBottomBumper { + border-bottom-width: 1px; + border-color: #aab0bb; + background: #c0c2c5 url("../images/sliderFullVertical.png") repeat-y bottom left; +} + +.tundra .dijitSliderTopBumper { + background: #dcdcdc url("../images/sliderEmptyVertical.png") repeat-y top left; + border-color: #b4b4b4; + border-top-width: 1px; +} + +.tundra .dijitSliderDecrementIconH, +.tundra .dijitSliderDecrementIconV, +.tundra .dijitSliderIncrementIconH, +.tundra .dijitSliderIncrementIconV { + background-image: url('../images/spriteArrows.png'); + background-repeat: no-repeat; + margin: 5px; + height: 7px; + width: 7px; + font-size: 1px; +} +.dj_ie6 .tundra .dijitSliderDecrementIconH, +.dj_ie6 .tundra .dijitSliderDecrementIconV, +.dj_ie6 .tundra .dijitSliderIncrementIconH, +.dj_ie6 .tundra .dijitSliderIncrementIconV { + background-image: url('../images/spriteArrows.gif'); +} + +.tundra .dijitSliderDecrementIconH { + background-position: -7px 0; +} +.tundra .dijitSliderIncrementIconH { + background-position: -14px 0; +} +.tundra .dijitSliderDecrementIconV { + background-position: 0 0; +} +.tundra .dijitSliderIncrementIconV { + background-position: -21px 0; +} + +.tundra .dijitSliderButtonInner { + visibility:hidden; +} + +.tundra .dijitSliderReadOnly *, +.tundra .dijitSliderDisabled * { + border-color: #d5d5d5 #bdbdbd #bdbdbd #d5d5d5; + color: #bdbdbd; +} +.tundra .dijitSliderReadOnly .dijitSliderDecrementIconH, +.tundra .dijitSliderDisabled .dijitSliderDecrementIconH { + background-position: -35px 0; +} +.tundra .dijitSliderReadOnly .dijitSliderIncrementIconH, +.tundra .dijitSliderDisabled .dijitSliderIncrementIconH { + background-position: -42px 0; +} +.tundra .dijitSliderReadOnly .dijitSliderDecrementIconV, +.tundra .dijitSliderDisabled .dijitSliderDecrementIconV { + background-position: -28px 0; +} +.tundra .dijitSliderReadOnly .dijitSliderIncrementIconV, +.tundra .dijitSliderDisabled .dijitSliderIncrementIconV { + background-position: -49px 0; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/tundra/form/Slider_rtl.css b/src/main/resources/static/dijit/themes/tundra/form/Slider_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..9375c4ecb3e0d7838585fd574a69740c3f0520c1 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/form/Slider_rtl.css @@ -0,0 +1,31 @@ +.tundra .dijitSliderRtl .dijitSliderProgressBarH, +.tundra .dijitSliderRtl .dijitSliderRemainingBarH, +.tundra .dijitSliderRtl .dijitSliderLeftBumper, +.tundra .dijitSliderRtl .dijitSliderRightBumper, +.tundra .dijitSliderRtl .dijitSliderTopBumper { + background-position: top right; +} + +.tundra .dijitSliderRtl .dijitSliderProgressBarV, +.tundra .dijitSliderRtl .dijitSliderRemainingBarV, +.tundra .dijitSliderRtl .dijitSliderBottomBumper { + background-position: bottom right; +} + +.tundra .dijitSliderRtl .dijitSliderLeftBumper { + border-left-width: 0; + border-right-width: 1px; +} + +.tundra .dijitSliderRtl .dijitSliderRightBumper { + border-left-width: 1px; + border-right-width: 0; +} + +.tundra .dijitSliderRtl .dijitSliderIncrementIconH { + background-position: -7px 0; +} + +.tundra .dijitSliderRtl .dijitSliderDecrementIconH { + background-position: -14px 0; +} diff --git a/src/main/resources/static/dijit/themes/tundra/images/accordionItemActive.gif b/src/main/resources/static/dijit/themes/tundra/images/accordionItemActive.gif new file mode 100644 index 0000000000000000000000000000000000000000..ccff3835a4335cd94adfca2d12f8f605f4c625cd Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/accordionItemActive.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/accordionItemHover.gif b/src/main/resources/static/dijit/themes/tundra/images/accordionItemHover.gif new file mode 100644 index 0000000000000000000000000000000000000000..96bd3a439aa739f71b47928ebe7972b31c180ec0 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/accordionItemHover.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/buttonActive.png b/src/main/resources/static/dijit/themes/tundra/images/buttonActive.png new file mode 100644 index 0000000000000000000000000000000000000000..3345c7ea8580d60f6dc6450f8b7efc15a6d7bf51 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/buttonActive.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/buttonDisabled.png b/src/main/resources/static/dijit/themes/tundra/images/buttonDisabled.png new file mode 100644 index 0000000000000000000000000000000000000000..3cf82db358aad62d7df9b8819ef671be853d3eae Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/buttonDisabled.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/buttonEnabled.png b/src/main/resources/static/dijit/themes/tundra/images/buttonEnabled.png new file mode 100644 index 0000000000000000000000000000000000000000..d4afbf060e94f010436644aaa29fe51afeecbdbe Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/buttonEnabled.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/buttonHover.png b/src/main/resources/static/dijit/themes/tundra/images/buttonHover.png new file mode 100644 index 0000000000000000000000000000000000000000..9f1e46ee42675daaddef7033bf20d1b0dd9f4b0c Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/buttonHover.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/calendarDayLabel.png b/src/main/resources/static/dijit/themes/tundra/images/calendarDayLabel.png new file mode 100644 index 0000000000000000000000000000000000000000..ebc08195fe50637eeea6ea78e42de6a9cd1766dd Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/calendarDayLabel.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/calendarMonthLabel.png b/src/main/resources/static/dijit/themes/tundra/images/calendarMonthLabel.png new file mode 100644 index 0000000000000000000000000000000000000000..dca79c7f9222add329ce23d929c8b7b9ba21ebaa Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/calendarMonthLabel.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/calendarYearLabel.png b/src/main/resources/static/dijit/themes/tundra/images/calendarYearLabel.png new file mode 100644 index 0000000000000000000000000000000000000000..8c0d9590b4799659db3b3a7dd1db6171b8f1121c Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/calendarYearLabel.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/checkmark.gif b/src/main/resources/static/dijit/themes/tundra/images/checkmark.gif new file mode 100644 index 0000000000000000000000000000000000000000..ae6faa95abacc550e7a70e21906d97159167dd6c Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/checkmark.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/checkmark.png b/src/main/resources/static/dijit/themes/tundra/images/checkmark.png new file mode 100644 index 0000000000000000000000000000000000000000..3c4b8319e543c368397a84a1eb946894c0e59ddd Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/checkmark.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/checkmarkNoBorder.gif b/src/main/resources/static/dijit/themes/tundra/images/checkmarkNoBorder.gif new file mode 100644 index 0000000000000000000000000000000000000000..324bfb3cd35ca828bb25b3d690f8a29a902a4cb7 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/checkmarkNoBorder.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/checkmarkNoBorder.png b/src/main/resources/static/dijit/themes/tundra/images/checkmarkNoBorder.png new file mode 100644 index 0000000000000000000000000000000000000000..ae3271a17b87a3c70010f57ffd12cd213c82068d Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/checkmarkNoBorder.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/circleIcon.gif b/src/main/resources/static/dijit/themes/tundra/images/circleIcon.gif new file mode 100644 index 0000000000000000000000000000000000000000..d582290a556336a15cbfaf32b7679f8845a50132 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/circleIcon.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/circleIcon.png b/src/main/resources/static/dijit/themes/tundra/images/circleIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..e414a8938b00dc261acb949da3ec2e37327fea30 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/circleIcon.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/comboArrowDown.gif b/src/main/resources/static/dijit/themes/tundra/images/comboArrowDown.gif new file mode 100644 index 0000000000000000000000000000000000000000..e00a87b36ab1b596dfe61d49af171b3a452f027f Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/comboArrowDown.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/dijitProgressBarAnim.gif b/src/main/resources/static/dijit/themes/tundra/images/dijitProgressBarAnim.gif new file mode 100644 index 0000000000000000000000000000000000000000..167a3e0d5d6052990938d0dedf9aff5d37a7cd26 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/dijitProgressBarAnim.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/dijitProgressBarAnim.psd b/src/main/resources/static/dijit/themes/tundra/images/dijitProgressBarAnim.psd new file mode 100644 index 0000000000000000000000000000000000000000..0a7bf23a4bf663e3d893c270890452dcc628949f Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/dijitProgressBarAnim.psd differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/dndCopy.png b/src/main/resources/static/dijit/themes/tundra/images/dndCopy.png new file mode 100644 index 0000000000000000000000000000000000000000..6a8b998f62899a642f6be3f4132132d1c12e237c Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/dndCopy.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/dndMove.png b/src/main/resources/static/dijit/themes/tundra/images/dndMove.png new file mode 100644 index 0000000000000000000000000000000000000000..8443d30342f0494cae909eeecdc9b6ad149f5e5a Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/dndMove.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/dndNoCopy.png b/src/main/resources/static/dijit/themes/tundra/images/dndNoCopy.png new file mode 100644 index 0000000000000000000000000000000000000000..64bf88b26a3ddeadf97755bc05ed83c47ecfe683 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/dndNoCopy.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/dndNoMove.png b/src/main/resources/static/dijit/themes/tundra/images/dndNoMove.png new file mode 100644 index 0000000000000000000000000000000000000000..682ea1025b914e20e041ddff88a5ef651a7fbb91 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/dndNoMove.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/dojoTundraGradientBg.gif b/src/main/resources/static/dijit/themes/tundra/images/dojoTundraGradientBg.gif new file mode 100644 index 0000000000000000000000000000000000000000..0da12393b3b94174a900fc06715629bdf5ec502d Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/dojoTundraGradientBg.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/dojoTundraGradientBg.png b/src/main/resources/static/dijit/themes/tundra/images/dojoTundraGradientBg.png new file mode 100644 index 0000000000000000000000000000000000000000..577ca8ad29d4b67d4ff0716972bf8ac66e88eba4 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/dojoTundraGradientBg.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/doubleArrowDown.png b/src/main/resources/static/dijit/themes/tundra/images/doubleArrowDown.png new file mode 100644 index 0000000000000000000000000000000000000000..c50d096d274b66ac46c97332ad41e736d65ae7de Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/doubleArrowDown.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/doubleArrowUp.png b/src/main/resources/static/dijit/themes/tundra/images/doubleArrowUp.png new file mode 100644 index 0000000000000000000000000000000000000000..b33768f5df43370beb4052c0fc1bfa8239bf5a4c Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/doubleArrowUp.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/folderClosed.gif b/src/main/resources/static/dijit/themes/tundra/images/folderClosed.gif new file mode 100644 index 0000000000000000000000000000000000000000..9d5fcbc6d6cfe07fcb7b310feb9753741b537b56 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/folderClosed.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/folderOpened.gif b/src/main/resources/static/dijit/themes/tundra/images/folderOpened.gif new file mode 100644 index 0000000000000000000000000000000000000000..a514c7bf11cebdd290bccfe459c402386ef524fa Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/folderOpened.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/i.gif b/src/main/resources/static/dijit/themes/tundra/images/i.gif new file mode 100644 index 0000000000000000000000000000000000000000..ebd95a7aa9075cb7b9902aa4b5a6981f6bafaa8a Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/i.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/i_half.gif b/src/main/resources/static/dijit/themes/tundra/images/i_half.gif new file mode 100644 index 0000000000000000000000000000000000000000..2947c4fa17501eaa1b477e6010d122d1e358c3ee Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/i_half.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/i_half_rtl.gif b/src/main/resources/static/dijit/themes/tundra/images/i_half_rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..4f60ec444d7d5b84976d54505f3e3de038aeb300 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/i_half_rtl.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/i_rtl.gif b/src/main/resources/static/dijit/themes/tundra/images/i_rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..7dafaadefc7ac7281911c6c36cacebc5bb718923 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/i_rtl.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/leaf.gif b/src/main/resources/static/dijit/themes/tundra/images/leaf.gif new file mode 100644 index 0000000000000000000000000000000000000000..85b017810f2927d14f63bbed423f34874083456c Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/leaf.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/loading.gif b/src/main/resources/static/dijit/themes/tundra/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..a42980f291d3a248263a93ad2ae94756219d957f Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/loading.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/menu.png b/src/main/resources/static/dijit/themes/tundra/images/menu.png new file mode 100644 index 0000000000000000000000000000000000000000..8a6e08b7b8178ed4b869d4b9dd618d5720ef5dbb Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/menu.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/minusButton.gif b/src/main/resources/static/dijit/themes/tundra/images/minusButton.gif new file mode 100644 index 0000000000000000000000000000000000000000..48d5172470f250383e7696c7b61c727b9df06eb0 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/minusButton.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/no.gif b/src/main/resources/static/dijit/themes/tundra/images/no.gif new file mode 100644 index 0000000000000000000000000000000000000000..9021a14e210b1107b48bcd16a637aed335ddb3d2 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/no.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/noX.gif b/src/main/resources/static/dijit/themes/tundra/images/noX.gif new file mode 100644 index 0000000000000000000000000000000000000000..4a16dc7957f4d6e7f0d6f222995a28149c549a45 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/noX.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/plusButton.gif b/src/main/resources/static/dijit/themes/tundra/images/plusButton.gif new file mode 100644 index 0000000000000000000000000000000000000000..103c021daa0668c5b0ba53ac0bace43eb1f1f7ee Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/plusButton.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/popupMenuBg.gif b/src/main/resources/static/dijit/themes/tundra/images/popupMenuBg.gif new file mode 100644 index 0000000000000000000000000000000000000000..15f4f1b8cbe5e43760e98033b66e57d56cc6fbb6 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/popupMenuBg.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/preciseSliderThumb.gif b/src/main/resources/static/dijit/themes/tundra/images/preciseSliderThumb.gif new file mode 100644 index 0000000000000000000000000000000000000000..15d4879cb706ec4d466150ea2710a0cfea8ddb50 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/preciseSliderThumb.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/preciseSliderThumb.png b/src/main/resources/static/dijit/themes/tundra/images/preciseSliderThumb.png new file mode 100644 index 0000000000000000000000000000000000000000..94b7fea1629f24f4fad51f045b9ea406f65714f4 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/preciseSliderThumb.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/preciseSliderThumbFocus.gif b/src/main/resources/static/dijit/themes/tundra/images/preciseSliderThumbFocus.gif new file mode 100644 index 0000000000000000000000000000000000000000..b44611c7c75004e3144140e51337239b1734cd72 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/preciseSliderThumbFocus.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/preciseSliderThumbFocus.png b/src/main/resources/static/dijit/themes/tundra/images/preciseSliderThumbFocus.png new file mode 100644 index 0000000000000000000000000000000000000000..c5d24aecfbd8d81d0827a41d874abbba54c1a646 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/preciseSliderThumbFocus.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-1.png b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-1.png new file mode 100644 index 0000000000000000000000000000000000000000..f0a637414ba6e7cdcd594d08e2c47a5017cb2a3a Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-1.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-2.png b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-2.png new file mode 100644 index 0000000000000000000000000000000000000000..5b57a54e04e8544e28a4d13eb194a5570f441f39 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-2.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-3.png b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-3.png new file mode 100644 index 0000000000000000000000000000000000000000..ea034dcc05d342b32acb922d7c8407b001f43401 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-3.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-4.png b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-4.png new file mode 100644 index 0000000000000000000000000000000000000000..f151405c38a1bc2ef01d729ddaa8867c27a3f3ed Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-4.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-5.png b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-5.png new file mode 100644 index 0000000000000000000000000000000000000000..49c2851cae4bda948f575035c149873ce5ecb1f3 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-5.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-6.png b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-6.png new file mode 100644 index 0000000000000000000000000000000000000000..ee20a821ae03f127d59e931ab2a8dbfd18ec1076 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-6.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-7.png b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-7.png new file mode 100644 index 0000000000000000000000000000000000000000..0092fc3dbb4b611f4e63c4807279641aa825016f Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-7.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-8.png b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-8.png new file mode 100644 index 0000000000000000000000000000000000000000..e971938334e62dea1be6426e550d6932060d5f34 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-8.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-9.png b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-9.png new file mode 100644 index 0000000000000000000000000000000000000000..6e60dc8f4b42e35ab59cd0c71098c6d4d6f192c9 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim-9.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim.gif b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim.gif new file mode 100644 index 0000000000000000000000000000000000000000..d3df139dcec6d74a38d67a78ace35f274e0e7b0e Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim.psd b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim.psd new file mode 100644 index 0000000000000000000000000000000000000000..0a7bf23a4bf663e3d893c270890452dcc628949f Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/progressBarAnim.psd differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/progressBarEmpty.png b/src/main/resources/static/dijit/themes/tundra/images/progressBarEmpty.png new file mode 100644 index 0000000000000000000000000000000000000000..690c74d258c5860bea58e6a51cb9d48e1144b83e Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/progressBarEmpty.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/progressBarFull.png b/src/main/resources/static/dijit/themes/tundra/images/progressBarFull.png new file mode 100644 index 0000000000000000000000000000000000000000..2a30708a9a4429fede2918d6f5ea5b3821d28e79 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/progressBarFull.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/radioButtonActive.png b/src/main/resources/static/dijit/themes/tundra/images/radioButtonActive.png new file mode 100644 index 0000000000000000000000000000000000000000..4090fb84dd811f63788f4210bd5cdba1776e2d20 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/radioButtonActive.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/radioButtonActiveDisabled.png b/src/main/resources/static/dijit/themes/tundra/images/radioButtonActiveDisabled.png new file mode 100644 index 0000000000000000000000000000000000000000..981ffb0ec66b5387d7522c61197d35c112ae5788 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/radioButtonActiveDisabled.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/radioButtonActiveHover.png b/src/main/resources/static/dijit/themes/tundra/images/radioButtonActiveHover.png new file mode 100644 index 0000000000000000000000000000000000000000..387c4960409608d5813e73cde3e72d1fd64913f2 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/radioButtonActiveHover.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/radioButtonDisabled.png b/src/main/resources/static/dijit/themes/tundra/images/radioButtonDisabled.png new file mode 100644 index 0000000000000000000000000000000000000000..f4d2b48e55f677e74cd461dbc4e870f9689010b0 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/radioButtonDisabled.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/radioButtonEnabled.png b/src/main/resources/static/dijit/themes/tundra/images/radioButtonEnabled.png new file mode 100644 index 0000000000000000000000000000000000000000..dd5acdebd5ef8dffd80097fbaf47eb3199faf12f Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/radioButtonEnabled.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/radioButtonHover.png b/src/main/resources/static/dijit/themes/tundra/images/radioButtonHover.png new file mode 100644 index 0000000000000000000000000000000000000000..9160aed2175a183f1549bf77a5ea0036a7beee4b Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/radioButtonHover.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/sliderEmpty.png b/src/main/resources/static/dijit/themes/tundra/images/sliderEmpty.png new file mode 100644 index 0000000000000000000000000000000000000000..01871229e309d664552fab18770a3935137cb6f3 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/sliderEmpty.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/sliderEmptyVertical.png b/src/main/resources/static/dijit/themes/tundra/images/sliderEmptyVertical.png new file mode 100644 index 0000000000000000000000000000000000000000..98e5cd74005e3b501c404e9422f884b4f7b570e3 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/sliderEmptyVertical.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/sliderFull.png b/src/main/resources/static/dijit/themes/tundra/images/sliderFull.png new file mode 100644 index 0000000000000000000000000000000000000000..032dba68f88ba5a4ab63f8f460714b0968bec0b5 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/sliderFull.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/sliderFullFocus.png b/src/main/resources/static/dijit/themes/tundra/images/sliderFullFocus.png new file mode 100644 index 0000000000000000000000000000000000000000..018590df413a96229c34b7551ccd556a184bf52a Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/sliderFullFocus.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/sliderFullVertical.png b/src/main/resources/static/dijit/themes/tundra/images/sliderFullVertical.png new file mode 100644 index 0000000000000000000000000000000000000000..63edc758733f0019b67fafec67e7b2560da110ca Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/sliderFullVertical.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/sliderFullVerticalFocus.png b/src/main/resources/static/dijit/themes/tundra/images/sliderFullVerticalFocus.png new file mode 100644 index 0000000000000000000000000000000000000000..806399cc13ab5a11442d3b60a6e4ffe180a10d1e Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/sliderFullVerticalFocus.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/sliderThumb.png b/src/main/resources/static/dijit/themes/tundra/images/sliderThumb.png new file mode 100644 index 0000000000000000000000000000000000000000..b790c44c01d0dbd3e4b2cb02c42dc0a1de41d0c1 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/sliderThumb.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/sliderThumbFocus.gif b/src/main/resources/static/dijit/themes/tundra/images/sliderThumbFocus.gif new file mode 100644 index 0000000000000000000000000000000000000000..15dd3d9d6d436e5dd34abaee247fc9ee99fef804 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/sliderThumbFocus.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/sliderThumbFocus.png b/src/main/resources/static/dijit/themes/tundra/images/sliderThumbFocus.png new file mode 100644 index 0000000000000000000000000000000000000000..a253b09c5bf9a58416f2841fc459d9b30d8c26cd Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/sliderThumbFocus.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/smallArrowDown.png b/src/main/resources/static/dijit/themes/tundra/images/smallArrowDown.png new file mode 100644 index 0000000000000000000000000000000000000000..8b92a81cc28dec363ca79bf437dfebbbed7f5d84 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/smallArrowDown.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/smallArrowUp.png b/src/main/resources/static/dijit/themes/tundra/images/smallArrowUp.png new file mode 100644 index 0000000000000000000000000000000000000000..4412e7ca9380c5e2984a2db0e97241f1f9ebb9d0 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/smallArrowUp.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/splitContainerSizerH-thumb.png b/src/main/resources/static/dijit/themes/tundra/images/splitContainerSizerH-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..4b1fff80ec5cfec7d4eaea761792b173df2cc971 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/splitContainerSizerH-thumb.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/splitContainerSizerH.png b/src/main/resources/static/dijit/themes/tundra/images/splitContainerSizerH.png new file mode 100644 index 0000000000000000000000000000000000000000..a1d05ea1bee244747ab8c663d026e6e6806ca87f Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/splitContainerSizerH.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/splitContainerSizerV-thumb.png b/src/main/resources/static/dijit/themes/tundra/images/splitContainerSizerV-thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..75676d5daeef49084a5d5997d4799d894cd7eb92 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/splitContainerSizerV-thumb.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/splitContainerSizerV.png b/src/main/resources/static/dijit/themes/tundra/images/splitContainerSizerV.png new file mode 100644 index 0000000000000000000000000000000000000000..c03ac3748c977fbbd6f7187f00615b01d29f0e04 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/splitContainerSizerV.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/spriteArrows.gif b/src/main/resources/static/dijit/themes/tundra/images/spriteArrows.gif new file mode 100644 index 0000000000000000000000000000000000000000..56a37f43b68b62aa112bf4259dd545218010dc55 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/spriteArrows.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/spriteArrows.png b/src/main/resources/static/dijit/themes/tundra/images/spriteArrows.png new file mode 100644 index 0000000000000000000000000000000000000000..3ad349845fc4ff4d926e594a1137a9b03a0c0aa0 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/spriteArrows.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif b/src/main/resources/static/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif new file mode 100644 index 0000000000000000000000000000000000000000..251389a285e06380d4e8eda1ff98e6679c817fbd Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/spriteRoundedIconsSmall.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/spriteRoundedIconsSmall.png b/src/main/resources/static/dijit/themes/tundra/images/spriteRoundedIconsSmall.png new file mode 100644 index 0000000000000000000000000000000000000000..baea73d2843a8267eb6144e63bde5b334cb5b9b2 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/spriteRoundedIconsSmall.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/tabActive.png b/src/main/resources/static/dijit/themes/tundra/images/tabActive.png new file mode 100644 index 0000000000000000000000000000000000000000..935db38f4fe198eb1481eab0a77f366c13264bce Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/tabActive.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/tabClose.gif b/src/main/resources/static/dijit/themes/tundra/images/tabClose.gif new file mode 100644 index 0000000000000000000000000000000000000000..2cb0ee1fa95af8fa6b9514effea35c4acd040137 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/tabClose.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/tabClose.png b/src/main/resources/static/dijit/themes/tundra/images/tabClose.png new file mode 100644 index 0000000000000000000000000000000000000000..56578b86821f181dd0ca092d431fa859cfced0d2 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/tabClose.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/tabCloseHover.gif b/src/main/resources/static/dijit/themes/tundra/images/tabCloseHover.gif new file mode 100644 index 0000000000000000000000000000000000000000..f59471e6e5c172e25bc2787fa2bf857713eed9a9 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/tabCloseHover.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/tabCloseHover.png b/src/main/resources/static/dijit/themes/tundra/images/tabCloseHover.png new file mode 100644 index 0000000000000000000000000000000000000000..b034608646f239a1c6fbba969a5610b3d9d10b63 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/tabCloseHover.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/tabDisabled.png b/src/main/resources/static/dijit/themes/tundra/images/tabDisabled.png new file mode 100644 index 0000000000000000000000000000000000000000..2ba3bf56c2cf06f28344fc138a9563fb9421abd9 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/tabDisabled.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/tabEnabled.png b/src/main/resources/static/dijit/themes/tundra/images/tabEnabled.png new file mode 100644 index 0000000000000000000000000000000000000000..ac44db072f0fb8b473308c521e4f905c67cefe25 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/tabEnabled.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/tabHover.gif b/src/main/resources/static/dijit/themes/tundra/images/tabHover.gif new file mode 100644 index 0000000000000000000000000000000000000000..471e0eee2fac9c182ac1a7bb89b23da88ebcd002 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/tabHover.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/tabHover.png b/src/main/resources/static/dijit/themes/tundra/images/tabHover.png new file mode 100644 index 0000000000000000000000000000000000000000..4a38f5d7d4c4c007661f1ccbd23b83e30bccd6a7 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/tabHover.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/titleBar.png b/src/main/resources/static/dijit/themes/tundra/images/titleBar.png new file mode 100644 index 0000000000000000000000000000000000000000..f4de748d449266b9b5819f5bf2b3b1703c99d3b3 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/titleBar.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/titleBarBg.gif b/src/main/resources/static/dijit/themes/tundra/images/titleBarBg.gif new file mode 100644 index 0000000000000000000000000000000000000000..1cd57cf5a31eab4b72317876fdb2ffa1962600fc Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/titleBarBg.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorDown.gif b/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorDown.gif new file mode 100644 index 0000000000000000000000000000000000000000..18b27951a621432e00f27efc7da9255b450df227 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorDown.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorDown.png b/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorDown.png new file mode 100644 index 0000000000000000000000000000000000000000..074b0317fbbc826a80e4e9891d9b51624addb830 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorDown.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorLeft.gif b/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorLeft.gif new file mode 100644 index 0000000000000000000000000000000000000000..3d9cbc5428b5cd1bf2237ca5f355d524b622991a Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorLeft.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorLeft.png b/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..abd7ff66266f3d4f7977a6c9d569124594641458 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorLeft.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorRight.gif b/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorRight.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b887f790414a5e3e0c59ea936e195c22acaa7ed Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorRight.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorRight.png b/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorRight.png new file mode 100644 index 0000000000000000000000000000000000000000..9015f6b838b7e3c4799bd12e675e22cbad32a5df Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorRight.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorUp.gif b/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorUp.gif new file mode 100644 index 0000000000000000000000000000000000000000..d0cad8a2c694781f7780013125dc5431e83ad196 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorUp.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorUp.png b/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorUp.png new file mode 100644 index 0000000000000000000000000000000000000000..b54760fd1372ec99df1c66a4fe91a2a41664b369 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/tooltipConnectorUp.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/treeExpand_leaf.gif b/src/main/resources/static/dijit/themes/tundra/images/treeExpand_leaf.gif new file mode 100644 index 0000000000000000000000000000000000000000..4b1c6c1560194b74d2d2707f527782478cacac89 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/treeExpand_leaf.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif b/src/main/resources/static/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..b563d7c6c0f906680c0b2abace4d0c57e6c2edfa Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/treeExpand_leaf_rtl.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/treeExpand_loading.gif b/src/main/resources/static/dijit/themes/tundra/images/treeExpand_loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..4254ecf6bb5c56012027fb118a9fefedc9fa45bd Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/treeExpand_loading.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/treeExpand_minus.gif b/src/main/resources/static/dijit/themes/tundra/images/treeExpand_minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..5977782378ff197130fda60586c23fb92fe6d322 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/treeExpand_minus.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/treeExpand_minus_rtl.gif b/src/main/resources/static/dijit/themes/tundra/images/treeExpand_minus_rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..cf50054b6f6ac005e5a3e6f65cab6a9b89f7eb38 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/treeExpand_minus_rtl.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/treeExpand_mius.gif b/src/main/resources/static/dijit/themes/tundra/images/treeExpand_mius.gif new file mode 100644 index 0000000000000000000000000000000000000000..5977782378ff197130fda60586c23fb92fe6d322 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/treeExpand_mius.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/treeExpand_plus.gif b/src/main/resources/static/dijit/themes/tundra/images/treeExpand_plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b96a555275b95cedd35c2997dd205ce69499972 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/treeExpand_plus.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/treeExpand_plus_rtl.gif b/src/main/resources/static/dijit/themes/tundra/images/treeExpand_plus_rtl.gif new file mode 100644 index 0000000000000000000000000000000000000000..11f9916748ec622755203971e2ee90e502d08c62 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/treeExpand_plus_rtl.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/treeHover.png b/src/main/resources/static/dijit/themes/tundra/images/treeHover.png new file mode 100644 index 0000000000000000000000000000000000000000..e4d5d5700750c9c33171b5bbc8998e4c182b1cfc Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/treeHover.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/validationInputBg.gif b/src/main/resources/static/dijit/themes/tundra/images/validationInputBg.gif new file mode 100644 index 0000000000000000000000000000000000000000..5a9916a66e3ca1e403742442f25f2712ccc8dca3 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/validationInputBg.gif differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/validationInputBg.png b/src/main/resources/static/dijit/themes/tundra/images/validationInputBg.png new file mode 100644 index 0000000000000000000000000000000000000000..47b236f9b1a02d5836bb86a93ac25930b56b8bc1 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/validationInputBg.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/images/warning.png b/src/main/resources/static/dijit/themes/tundra/images/warning.png new file mode 100644 index 0000000000000000000000000000000000000000..07cabeae1065d71cf6724e9e14fd268c7b1672f9 Binary files /dev/null and b/src/main/resources/static/dijit/themes/tundra/images/warning.png differ diff --git a/src/main/resources/static/dijit/themes/tundra/layout/AccordionContainer.css b/src/main/resources/static/dijit/themes/tundra/layout/AccordionContainer.css new file mode 100644 index 0000000000000000000000000000000000000000..c5621efab25a40f0e6e832734da24b283a1e1528 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/layout/AccordionContainer.css @@ -0,0 +1,26 @@ +/* Accordion */ + +.tundra .dijitAccordionContainer { + border-color: #ccc; + background-color: #fff; +} + +/* common */ + +.tundra .dijitAccordionTitle { + background:#fafafa url("../images/titleBar.png") repeat-x bottom left; + border-top: 1px solid #bfbfbf; + padding: 4px 4px 4px 8px; +} + +.tundra .dijitAccordionTitleHover { + background: #f8fafd url("../images/accordionItemHover.gif") bottom repeat-x; +} + +.tundra .dijitAccordionTitleSelected { + background: #f9f9f9 url("../images/accordionItemActive.gif") bottom repeat-x; + font-weight: bold; + border-top: 1px solid #aaaaaa; + border-bottom: 1px solid #bfbfbf; + padding: 4px 4px 4px 8px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/tundra/layout/BorderContainer.css b/src/main/resources/static/dijit/themes/tundra/layout/BorderContainer.css new file mode 100644 index 0000000000000000000000000000000000000000..0dd1b1b5131cc0732cedb04aaf75a6d0b6995c41 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/layout/BorderContainer.css @@ -0,0 +1,69 @@ +/* BorderContainer */ + +.tundra .dijitBorderContainer { + background-color: #fcfcfc; + padding: 5px; +} + +.tundra .dijitSplitContainer-child, +.tundra .dijitBorderContainer-child { + /* By default put borders on all children of BorderContainer, + * to give illusion of borders on the splitters themselves. + */ + border: 1px #ccc solid; +} + +.tundra .dijitBorderContainer-dijitTabContainerTop, +.tundra .dijitBorderContainer-dijitTabContainerBottom, +.tundra .dijitBorderContainer-dijitTabContainerLeft, +.tundra .dijitBorderContainer-dijitTabContainerRight { + /* except that TabContainer defines borders on it's sub-nodes (tablist and dijitTabPaneWrapper), + * so override rule setting border on domNode + */ + border: none; +} + +.tundra .dijitBorderContainer-dijitBorderContainer { + /* also, make nested BorderContainers look like a single big widget with lots of splitters */ + border: none; + padding: 0; +} + +.tundra .dijitSplitterH, +.tundra .dijitGutterH { + background:#fcfcfc; + border:0; + height:5px; +} + +.tundra .dijitSplitterH .dijitSplitterThumb { + background:#B0B0B0 none; + height:1px; + top:2px; + width:19px; +} + +.tundra .dijitSplitterV, +.tundra .dijitGutterV { + background:#fcfcfc; + border:0; + width:5px; +} + +.tundra .dijitSplitterV .dijitSplitterThumb { + background:#B0B0B0 none; + height:19px; + left:2px; + width:1px; +} + +/* active splitter */ +.tundra .dijitSplitterActive { + font-size: 1px; + background-image: none; + background-color: #aaa; + -moz-opacity: 0.6; + opacity: 0.6; + filter: Alpha(Opacity=60); + margin: 0; +} diff --git a/src/main/resources/static/dijit/themes/tundra/layout/ContentPane.css b/src/main/resources/static/dijit/themes/tundra/layout/ContentPane.css new file mode 100644 index 0000000000000000000000000000000000000000..21d25d524814b0eaf63dd0ff41aae51513e17206 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/layout/ContentPane.css @@ -0,0 +1,21 @@ +/* ContentPane */ + +.tundra .dijitContentPane { + padding: 0; +} + +/* nested layouts */ +.tundra .dijitTabContainerTop-dijitContentPane, +.tundra .dijitTabContainerLeft-dijitContentPane, +.tundra .dijitTabContainerBottom-dijitContentPane, +.tundra .dijitTabContainerRight-dijitContentPane, +.tundra .dijitAccordionContainer-dijitContentPane { + background-color: #fff; + padding: 5px; +} + +.tundra .dijitSplitContainer-dijitContentPane, +.tundra .dijitBorderContainer-dijitContentPane { + background-color: #fff; /* override background-color setting on parent .dijitBorderContainer */ + padding: 5px; +} \ No newline at end of file diff --git a/src/main/resources/static/dijit/themes/tundra/layout/SplitContainer.css b/src/main/resources/static/dijit/themes/tundra/layout/SplitContainer.css new file mode 100644 index 0000000000000000000000000000000000000000..5a3eed6c98f7a3eb5930cf7b352d8d92464b37ed --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/layout/SplitContainer.css @@ -0,0 +1,31 @@ +.tundra .dijitSplitContainerSizerH { + background:url("../images/splitContainerSizerV.png") repeat-y #fff; + border:0; + border-left:1px solid #bfbfbf; + border-right:1px solid #bfbfbf; + width:7px; +} + +.tundra .dijitSplitContainerSizerH .thumb { + background:url("../images/splitContainerSizerV-thumb.png") no-repeat #ccc; + left:1px; + width:3px; + height:19px; + overflow: hidden; +} + +.tundra .dijitSplitContainerSizerV { + background:url("../images/splitContainerSizerH.png") repeat-x #fff; + border:0; + border-top:1px solid #bfbfbf; + border-bottom:1px solid #bfbfbf; + height:7px; +} + +.tundra .dijitSplitContainerSizerV .thumb { + background:url("../images/splitContainerSizerH-thumb.png") no-repeat #ccc; + top:1px; + width:19px; + height:3px; + overflow: hidden; +} diff --git a/src/main/resources/static/dijit/themes/tundra/layout/TabContainer.css b/src/main/resources/static/dijit/themes/tundra/layout/TabContainer.css new file mode 100644 index 0000000000000000000000000000000000000000..a6676c67323517eacf89cbd695c63be4ea79ca7b --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/layout/TabContainer.css @@ -0,0 +1,319 @@ +/* Tabs, shared classes */ +.tundra .dijitTabPaneWrapper { + background:#fff; + border:1px solid #ccc; + margin: 0; + padding: 0; +} + +.tundra .dijitTab { + line-height:normal; + margin-right:4px; /* space between one tab and the next in top/bottom mode */ + padding:2px 8px 2px 9px; + border:1px solid #ccc; + background:#e2e2e2 url("../images/tabEnabled.png") repeat-x; +} + +.tundra .dijitTabSpacer { + display: none; +} + +.tundra .dijitTabContainer .tabStripRBtn { + margin-right: 20px; +} +.tundra .dijitTabContainer .tabStripLBtn { + margin-left: 20px; +} + +.tundra .nowrapTabStrip .dijitTab { + top: 2px; +} +.tundra .dijitTabContainerBottom .nowrapTabStrip .dijitTab { + top: 0; + bottom: 2px; +} + +/* selected tab */ +.tundra .dijitTabChecked { + /* the selected tab (with or without hover) */ + background-color:#fff; + border-color: #ccc; + background-image:none; +} + +/* hovered tab */ +.tundra .dijitTabHover { + color: #243C5F; + border-top-color:#92a0b3; + border-left-color:#92a0b3; + border-right-color:#92a0b3; + border-bottom-color:#92a0b3; + background:#e2e2e2 url("../images/tabHover.gif") repeat-x; +} + +.tundra .dijitTabContainerTop .dijitTabHover { + border-bottom-color:#ccc; +} + +.tundra .dijitTabContainerBottom .dijitTabHover { + border-top-color:#ccc; +} + +.tundra .dijitTabContainerLeft .dijitTabHover { + border-right-color:#ccc; +} + +.tundra .dijitTabContainerRight .dijitTabHover { + border-left-color:#ccc; +} + +.tundra .dijitTabContainer .dijitTabCheckedHover { + color: inherit; + border:1px solid #ccc; + background:#fff; +} + +.tundra .dijitTab .tabLabel { + /* make sure tabs w/close button and w/out close button are same height, even w/small (<12px) font */ + min-height: 12px; + display: inline-block; +} + +/* Nested Tabs */ + +.tundra .dijitTabContainerNested .dijitTabListWrapper { + height: auto; +} + +.tundra .dijitTabContainerNested .dijitTabContainerTop-tabs { + border-bottom: 1px solid #CCC; +} + +.tundra .dijitTabContainerTabListNested .dijitTab { + background: none; + border: none; + top: 0; /* to override top: 1px/-1px for normal tabs */ +} + +.tundra .dijitTabContainerTabListNested .dijitTabHover .tabLabel { + text-decoration: underline; +} +.tundra .dijitTabContainerTabListNested .dijitTabChecked .tabLabel { + text-decoration: underline; + font-weight: bold; + /*background:#f3f3f3;*/ +} +.tundra .dijitTabContainer .dijitTabPaneWrapperNested { + border: none; /* prevent double border */ +} + +/* Close button */ + +.tundra .dijitTabCloseButton { + background: url("../images/tabClose.png") no-repeat right top; + width: 12px; + height: 12px; +} +.dj_ie6 .tundra .dijitTabCloseButton { + background-image : url("../images/tabClose.gif"); +} + +.tundra .dijitTabCloseButtonHover { + background-image : url("../images/tabCloseHover.png"); +} +.dj_ie6 .tundra .dijitTabCloseButtonHover { + background-image : url("../images/tabCloseHover.gif"); +} + +/* ================================ */ +/* top tabs */ + +.tundra .dijitTabContainerTop-tabs { + margin-bottom: 0; + border-color: #cccccc; + padding-left: 3px; + background-position: bottom; +} +.tundra .dijitTabContainerTop-tabs .dijitTab { + top: 0; + margin-bottom: -1px; +} + +/* top container */ +.tundra .dijitTabContainerTop-container { + border-top: none; +} + +/* selected tab */ +.tundra .dijitTabContainerTop-tabs .dijitTabChecked { + border-bottom-color:white; +} + +.tundra .dijitTabContainerTop-tabs, +.tundra .dijitTabContainerBottom-tabs { + padding-left: 3px; + padding-right: 3px; +} + +/* strip */ +.tundra .dijitTabContainerTopStrip { + border-top: 1px solid #CCC; + border-right: 1px solid #CCC; + border-left: 1px solid #CCC; + padding-top: 2px; + background: #f2f2f2; +} + +.tundra .dijitTabContainerTopNone { + padding-top: 0; +} + + +/* ================================ */ +/* bottom tabs */ +.tundra .dijitTabContainerBottom-tabs { + margin-top: 0; + border-color: #cccccc; + background-position: top; + padding-left: 3px; +} +.tundra .dijitTabContainerBottom-tabs .dijitTab { + bottom: 0; + margin-top: -1px; +} + +/* bottom container */ +.tundra .dijitTabContainerBottom-container { + border-bottom: none; +} + +/* selected tab */ +.tundra .dijitTabContainerBottom-tabs .dijitTabChecked { + border-top-color:white; +} + +/* strip */ +.tundra .dijitTabContainerBottomStrip { + padding-bottom: 2px; + border: 1px solid #ccc; + background: #f2f2f2; + border-top: none; +} + +/* ================================ */ +/* right tabs */ +.tundra .dijitTabContainerRight-tabs { + border-color: #ccc; + height: 100%; + padding-top: 3px; +} + +.tundra .dijitTabContainerRightStrip { + margin-left: -1px; +} + +/* right container */ +.tundra .dijitTabContainerRight-container { + border-right: none; +} + +/* selected tab */ +.tundra .dijitTabContainerRight-tabs .dijitTabChecked { + border-left-color:white; +} + +/* strip */ +.tundra .dijitTabContainerRightStrip { + padding-right: 2px; + border: 1px solid #ccc; +} + +.tundra .dijitTabContainerRightStrip { + background: #f2f2f2; +} + +/* ================================ */ +/* left tabs */ +.tundra .dijitTabContainerLeft-tabs { + border-color: #ccc; + padding-top: 3px; + height: 100%; +} + +/* left container */ +.tundra .dijitTabContainerLeft-container { + border-left: none; +} + +/* selected tab */ +.tundra .dijitTabContainerLeft-tabs .dijitTabChecked { + border-right-color:white; +} + +/* strip */ +.tundra .dijitTabContainerLeftStrip { + padding-left: 2px; + border: 1px solid #ccc; + background: #f2f2f2; + border-right: none; +} + +/* ================================ */ +/* left/right tabs */ +.tundra .dijitTabContainerLeft-tabs .dijitTab, +.tundra .dijitTabContainerRight-tabs .dijitTab { + margin-right:0; + margin-bottom:4px; /* space between one tab and the next in left/right mode */ +} + +/* ================================ */ + +/* this resets the tabcontainer stripe when within a contentpane */ +.tundra .dijitTabContainerTop-dijitContentPane .dijitTabContainerTop-tabs { + border-left: 0 solid #ccc; + border-top: 0 solid #ccc; + border-right: 0 solid #ccc; + padding-top: 0; + padding-left: 0; +} + +/* ================================ */ + +/* Menu and slider control styles */ +.tundra .dijitTabContainer .tabStripButton { + margin-right: 0; + padding-top: 2px; + z-index: 12; +} + +.tundra .dijitTabContainerBottom .tabStripButton { + padding-top: 3px; +} + +.tundra .tabStrip-disabled .tabStripButton { + padding-bottom: 3px; + padding-top: 1px; +} + +.tundra .tabStripButton { + padding: 3px 2px 4px 2px; +} + +.tundra .dijitTabStripIcon { + height: 14px; + width: 14px; + background: url(../images/spriteRoundedIconsSmall.png) no-repeat left top ; +} + +.dj_ie6 .tundra .dijitTabStripIcon { + background-image: url(../images/spriteRoundedIconsSmall.gif); +} + +.tundra .dijitTabStripSlideRightIcon { + background-position: -30px top; +} + +.tundra .dijitTabStripMenuIcon { + background-position: -15px top; +} + diff --git a/src/main/resources/static/dijit/themes/tundra/layout/TabContainer_rtl.css b/src/main/resources/static/dijit/themes/tundra/layout/TabContainer_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..6e5ba7580903aef4eab9da213aad065f49b75c88 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/layout/TabContainer_rtl.css @@ -0,0 +1,3 @@ +.tundra .dijitTabRtl { + padding:2px 9px 2px 8px; +} diff --git a/src/main/resources/static/dijit/themes/tundra/tundra.css b/src/main/resources/static/dijit/themes/tundra/tundra.css new file mode 100644 index 0000000000000000000000000000000000000000..f1d239c88078a51d137a1713620e312a1ec34625 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/tundra.css @@ -0,0 +1,41 @@ +/* + Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file. + + NOTES: + --- + Dialog.css contains css classes for both Dialog and Tooltip! + This because currently a dijit.TooltipDialog exist. Until this is resolved + you need to include Dialog.css for both dijits + --- + Toolbar.css contains classes also used in Editor. Until this is resolved + you need to include Toolbar.css for both Toolbar and Editor + --- + Button.css contains classes for combobox, + +*/ +@import url("../dijit.css"); +@import url("../../icons/commonIcons.css");/*sprite containing common icons to be used by all themes*/ +@import url("Common.css"); +@import url("layout/ContentPane.css"); +@import url("layout/TabContainer.css"); +@import url("layout/AccordionContainer.css"); +@import url("layout/SplitContainer.css"); +@import url("layout/BorderContainer.css"); +@import url("form/Common.css"); +@import url("form/Button.css"); +@import url("form/Checkbox.css"); +@import url("form/RadioButton.css"); +@import url("form/Slider.css"); +@import url("form/Select.css"); +@import url("Tree.css"); +@import url("ProgressBar.css"); +@import url("TitlePane.css"); +@import url("Calendar.css"); +@import url("TimePicker.css"); +@import url("Toolbar.css"); +@import url("Dialog.css"); +@import url("Menu.css"); +@import url("Editor.css"); +@import url("../../icons/editorIcons.css"); /* sprite for editor icons to be used by all themes */ +@import url("ColorPalette.css"); +@import url("tundra_rtl.css"); diff --git a/src/main/resources/static/dijit/themes/tundra/tundra_rtl.css b/src/main/resources/static/dijit/themes/tundra/tundra_rtl.css new file mode 100644 index 0000000000000000000000000000000000000000..04372e3431d3fb7af9dee47a6c23e9ae497dd570 --- /dev/null +++ b/src/main/resources/static/dijit/themes/tundra/tundra_rtl.css @@ -0,0 +1,28 @@ +/* + Adds cosmetic styling to Dijit. Users may swap with a custom theme CSS file. + + NOTES: + --- + Dialog.css contains css classes for both Dialog and Tooltip! + This because currently a dijit.TooltipDialog exist. Until this is resolved + you need to include Dialog.css for both dijits + --- + Toolbar.css contains classes also used in Editor. Until this is resolved + you need to include Toolbar.css for both Toolbar and Editor + --- + Button.css contains classes for combobox, + +*/ +/* RTL files */ +@import url("../dijit_rtl.css"); +@import url("Calendar_rtl.css"); +@import url("TimePicker_rtl.css"); +@import url("Dialog_rtl.css"); +@import url("Editor_rtl.css"); +@import url("../../icons/editorIcons_rtl.css");/* RTL sprite for editor icons to be used by all themes*/ +@import url("Menu_rtl.css"); +@import url("Tree_rtl.css"); +@import url("ProgressBar_rtl.css"); +@import url("TitlePane_rtl.css"); +@import url("layout/TabContainer_rtl.css"); +@import url("form/Slider_rtl.css"); diff --git a/src/main/resources/static/dijit/tree/ForestStoreModel.js b/src/main/resources/static/dijit/tree/ForestStoreModel.js new file mode 100644 index 0000000000000000000000000000000000000000..0096ce4f652723470a10366128974dae6ffcad66 --- /dev/null +++ b/src/main/resources/static/dijit/tree/ForestStoreModel.js @@ -0,0 +1,279 @@ +define([ + "dojo/_base/array", // array.indexOf array.some + "dojo/_base/declare", // declare + "dojo/_base/kernel", // global + "dojo/_base/lang", // lang.hitch + "./TreeStoreModel" +], function(array, declare, kernel, lang, TreeStoreModel){ + +// module: +// dijit/tree/ForestStoreModel + +return declare("dijit.tree.ForestStoreModel", TreeStoreModel, { + // summary: + // Interface between a dijit.Tree and a dojo.data store that doesn't have a root item, + // a.k.a. a store that has multiple "top level" items. + // + // description: + // Use this class to wrap a dojo.data store, making all the items matching the specified query + // appear as children of a fabricated "root item". If no query is specified then all the + // items returned by fetch() on the underlying store become children of the root item. + // This class allows dijit.Tree to assume a single root item, even if the store doesn't have one. + // + // When using this class the developer must override a number of methods according to their app and + // data, including: + // + // - onNewRootItem + // - onAddToRoot + // - onLeaveRoot + // - onNewItem + // - onSetItem + + // Parameters to constructor + + // rootId: String + // ID of fabricated root item + rootId: "$root$", + + // rootLabel: String + // Label of fabricated root item + rootLabel: "ROOT", + + // query: String + // Specifies the set of children of the root item. + // example: + // | {type:'continent'} + query: null, + + // End of parameters to constructor + + constructor: function(params){ + // summary: + // Sets up variables, etc. + // tags: + // private + + // Make dummy root item + this.root = { + store: this, + root: true, + id: params.rootId, + label: params.rootLabel, + children: params.rootChildren // optional param + }; + }, + + // ======================================================================= + // Methods for traversing hierarchy + + mayHaveChildren: function(/*dojo/data/Item*/ item){ + // summary: + // Tells if an item has or may have children. Implementing logic here + // avoids showing +/- expando icon for nodes that we know don't have children. + // (For efficiency reasons we may not want to check if an element actually + // has children until user clicks the expando node) + // tags: + // extension + return item === this.root || this.inherited(arguments); + }, + + getChildren: function(/*dojo/data/Item*/ parentItem, /*function(items)*/ callback, /*function*/ onError){ + // summary: + // Calls onComplete() with array of child items of given parent item, all loaded. + if(parentItem === this.root){ + if(this.root.children){ + // already loaded, just return + callback(this.root.children); + }else{ + this.store.fetch({ + query: this.query, + onComplete: lang.hitch(this, function(items){ + this.root.children = items; + callback(items); + }), + onError: onError + }); + } + }else{ + this.inherited(arguments); + } + }, + + // ======================================================================= + // Inspecting items + + isItem: function(/* anything */ something){ + return (something === this.root) ? true : this.inherited(arguments); + }, + + fetchItemByIdentity: function(/* object */ keywordArgs){ + if(keywordArgs.identity == this.root.id){ + var scope = keywordArgs.scope || kernel.global; + if(keywordArgs.onItem){ + keywordArgs.onItem.call(scope, this.root); + } + }else{ + this.inherited(arguments); + } + }, + + getIdentity: function(/* item */ item){ + return (item === this.root) ? this.root.id : this.inherited(arguments); + }, + + getLabel: function(/* item */ item){ + return (item === this.root) ? this.root.label : this.inherited(arguments); + }, + + // ======================================================================= + // Write interface + + newItem: function(/* dijit/tree/dndSource.__Item */ args, /*Item*/ parent, /*int?*/ insertIndex){ + // summary: + // Creates a new item. See dojo/data/api/Write for details on args. + // Used in drag & drop when item from external source dropped onto tree. + if(parent === this.root){ + this.onNewRootItem(args); + return this.store.newItem(args); + }else{ + return this.inherited(arguments); + } + }, + + onNewRootItem: function(/* dijit/tree/dndSource.__Item */ /*===== args =====*/){ + // summary: + // User can override this method to modify a new element that's being + // added to the root of the tree, for example to add a flag like root=true + }, + + pasteItem: function(/*Item*/ childItem, /*Item*/ oldParentItem, /*Item*/ newParentItem, /*Boolean*/ bCopy, /*int?*/ insertIndex){ + // summary: + // Move or copy an item from one parent item to another. + // Used in drag & drop + if(oldParentItem === this.root){ + if(!bCopy){ + // It's onLeaveRoot()'s responsibility to modify the item so it no longer matches + // this.query... thus triggering an onChildrenChange() event to notify the Tree + // that this element is no longer a child of the root node + this.onLeaveRoot(childItem); + } + } + this.inherited(arguments, [childItem, + oldParentItem === this.root ? null : oldParentItem, + newParentItem === this.root ? null : newParentItem, + bCopy, + insertIndex + ]); + if(newParentItem === this.root){ + // It's onAddToRoot()'s responsibility to modify the item so it matches + // this.query... thus triggering an onChildrenChange() event to notify the Tree + // that this element is now a child of the root node + this.onAddToRoot(childItem); + } + }, + + // ======================================================================= + // Handling for top level children + + onAddToRoot: function(/* item */ item){ + // summary: + // Called when item added to root of tree; user must override this method + // to modify the item so that it matches the query for top level items + // example: + // | store.setValue(item, "root", true); + // tags: + // extension + console.log(this, ": item ", item, " added to root"); + }, + + onLeaveRoot: function(/* item */ item){ + // summary: + // Called when item removed from root of tree; user must override this method + // to modify the item so it doesn't match the query for top level items + // example: + // | store.unsetAttribute(item, "root"); + // tags: + // extension + console.log(this, ": item ", item, " removed from root"); + }, + + // ======================================================================= + // Events from data store + + _requeryTop: function(){ + // reruns the query for the children of the root node, + // sending out an onSet notification if those children have changed + var oldChildren = this.root.children || []; + this.store.fetch({ + query: this.query, + onComplete: lang.hitch(this, function(newChildren){ + this.root.children = newChildren; + + // If the list of children or the order of children has changed... + if(oldChildren.length != newChildren.length || + array.some(oldChildren, function(item, idx){ return newChildren[idx] != item;})){ + this.onChildrenChange(this.root, newChildren); + } + }) + }); + }, + + onNewItem: function(/* dojo/data/api/Item */ item, /* Object */ parentInfo){ + // summary: + // Handler for when new items appear in the store. Developers should override this + // method to be more efficient based on their app/data. + // description: + // Note that the default implementation requeries the top level items every time + // a new item is created, since any new item could be a top level item (even in + // addition to being a child of another item, since items can have multiple parents). + // + // If developers can detect which items are possible top level items (based on the item and the + // parentInfo parameters), they should override this method to only call _requeryTop() for top + // level items. Often all top level items have parentInfo==null, but + // that will depend on which store you use and what your data is like. + // tags: + // extension + this._requeryTop(); + + this.inherited(arguments); + }, + + onDeleteItem: function(/*Object*/ item){ + // summary: + // Handler for delete notifications from underlying store + + // check if this was a child of root, and if so send notification that root's children + // have changed + if(array.indexOf(this.root.children, item) != -1){ + this._requeryTop(); + } + + this.inherited(arguments); + }, + + onSetItem: function(/* item */ item, + /* attribute-name-string */ attribute, + /* Object|Array */ oldValue, + /* Object|Array */ newValue){ + // summary: + // Updates the tree view according to changes to an item in the data store. + // Developers should override this method to be more efficient based on their app/data. + // description: + // Handles updates to an item's children by calling onChildrenChange(), and + // other updates to an item by calling onChange(). + // + // Also, any change to any item re-executes the query for the tree's top-level items, + // since this modified item may have started/stopped matching the query for top level items. + // + // If possible, developers should override this function to only call _requeryTop() when + // the change to the item has caused it to stop/start being a top level item in the tree. + // tags: + // extension + + this._requeryTop(); + this.inherited(arguments); + } + +}); + +}); diff --git a/src/main/resources/static/dijit/tree/ObjectStoreModel.js b/src/main/resources/static/dijit/tree/ObjectStoreModel.js new file mode 100644 index 0000000000000000000000000000000000000000..9123e065bcaac6a9bc5d3339173206becb5b49b0 --- /dev/null +++ b/src/main/resources/static/dijit/tree/ObjectStoreModel.js @@ -0,0 +1,296 @@ +define([ + "dojo/_base/array", // array.filter array.forEach array.indexOf array.some + "dojo/aspect", // aspect.before, aspect.after + "dojo/_base/declare", // declare + "dojo/Deferred", + "dojo/_base/lang", // lang.hitch + "dojo/when", + "../Destroyable" +], function(array, aspect, declare, Deferred, lang, when, Destroyable){ + + // module: + // dijit/tree/ObjectStoreModel + + return declare("dijit.tree.ObjectStoreModel", Destroyable, { + // summary: + // Implements dijit/tree/model connecting dijit/Tree to a dojo/store/api/Store that implements + // getChildren(). + // + // If getChildren() returns an array with an observe() method, then it will be leveraged to reflect + // store updates to the tree. So, this class will work best when: + // + // 1. the store implements dojo/store/Observable + // 2. getChildren() is implemented as a query to the server (i.e. it calls store.query()) + // + // Drag and Drop: To support drag and drop, besides implementing getChildren() + // and dojo/store/Observable, the store must support the parent option to put(). + // And in order to have child elements ordered according to how the user dropped them, + // put() must support the before option. + + // store: dojo/store/api/Store + // Underlying store + store: null, + + // labelAttr: String + // Get label for tree node from this attribute + labelAttr: "name", + + // labelType: [const] String + // Specifies how to interpret the labelAttr in the data store items. + // Can be "html" or "text". + labelType: "text", + + // root: [readonly] Object + // Pointer to the root item from the dojo/store/api/Store (read only, not a parameter) + root: null, + + // query: anything + // Specifies datastore query to return the root item for the tree. + // Must only return a single item. Alternately can just pass in pointer + // to root item. + // example: + // | {id:'ROOT'} + query: null, + + constructor: function(/* Object */ args){ + // summary: + // Passed the arguments listed above (store, etc) + // tags: + // private + + lang.mixin(this, args); + + // Map from id of each parent node to array of its children, or to Promise for that array of children. + this.childrenCache = {}; + }, + + // ======================================================================= + // Methods for traversing hierarchy + + getRoot: function(onItem, onError){ + // summary: + // Calls onItem with the root item for the tree, possibly a fabricated item. + // Calls onError on error. + if(this.root){ + onItem(this.root); + }else{ + var res = this.store.query(this.query); + if(res.then){ + this.own(res); // in case app calls destroy() before query completes + } + + when(res, + lang.hitch(this, function(items){ + //console.log("queried root: ", res); + if(items.length != 1){ + throw new Error("dijit.tree.ObjectStoreModel: root query returned " + items.length + + " items, but must return exactly one"); + } + this.root = items[0]; + onItem(this.root); + + // Setup listener to detect if root item changes + if(res.observe){ + res.observe(lang.hitch(this, function(obj){ + // Presumably removedFrom == insertedInto == 1, and this call indicates item has changed. + //console.log("root changed: ", obj); + this.onChange(obj); + }), true); // true to listen for updates to obj + } + }), + onError + ); + } + }, + + mayHaveChildren: function(/*===== item =====*/){ + // summary: + // Tells if an item has or might have children. Implementing logic here + // avoids showing +/- expando icon for nodes that we know won't have children. + // (For efficiency reasons we may not want to check if an element actually + // has children until user clicks the expando node). + // + // Application code should override this method based on the data, for example + // it could be `return item.leaf == true;`. + // + // Note that mayHaveChildren() must return true for an item if it could possibly + // have children in the future, due to drag-an-drop or some other data store update. + // Also note that it may return true if it's just too expensive to check during tree + // creation whether or not the item has children. + // item: Object + // Item from the dojo/store + return true; + }, + + getChildren: function(/*Object*/ parentItem, /*function(items)*/ onComplete, /*function*/ onError){ + // summary: + // Calls onComplete() with array of child items of given parent item. + // parentItem: + // Item from the dojo/store + + // TODO: + // For 2.0, change getChildren(), getRoot(), etc. to return a cancelable promise, rather than taking + // onComplete() and onError() callbacks. Also, probably get rid of the caching. + // + // But be careful if we continue to maintain ObjectStoreModel as a separate class + // from Tree, because in that case ObjectStoreModel can be shared by two trees, and destroying one tree + // should not interfere with an in-progress getChildren() call from another tree. Also, need to make + // sure that multiple calls to getChildren() for the same parentItem don't trigger duplicate calls + // to onChildrenChange() and onChange(). + // + // I think for 2.0 though that ObjectStoreModel should be rolled into Tree itself. + + var id = this.store.getIdentity(parentItem); + + if(this.childrenCache[id]){ + // If this.childrenCache[id] is defined, then it always has the latest list of children + // (like a live collection), so just return it. + when(this.childrenCache[id], onComplete, onError); + return; + } + + // Query the store. + // Cache result so that we can close the query on destroy(), and to avoid setting up multiple observers + // when getChildren() is called multiple times for the same parent. + // The only problem is that getChildren() on non-Observable stores may return a stale value. + var res = this.childrenCache[id] = this.store.getChildren(parentItem); + if(res.then){ + this.own(res); // in case app calls destroy() before query completes + } + + // Setup observer in case children list changes, or the item(s) in the children list are updated. + if(res.observe){ + this.own(res.observe(lang.hitch(this, function(obj, removedFrom, insertedInto){ + //console.log("observe on children of ", id, ": ", obj, removedFrom, insertedInto); + + // If removedFrom == insertedInto, this call indicates that the item has changed. + // Even if removedFrom != insertedInto, the item may have changed. + this.onChange(obj); + + if(removedFrom != insertedInto){ + // Indicates an item was added, removed, or re-parented. The children[] array (returned from + // res.then(...)) has already been updated (like a live collection), so just use it. + when(res, lang.hitch(this, "onChildrenChange", parentItem)); + } + }), true)); // true means to notify on item changes + } + + // User callback + when(res, onComplete, onError); + }, + + // ======================================================================= + // Inspecting items + + isItem: function(/*===== something =====*/){ + return true; // Boolean + }, + + getIdentity: function(/* item */ item){ + return this.store.getIdentity(item); // Object + }, + + getLabel: function(/*dojo/data/Item*/ item){ + // summary: + // Get the label for an item + return item[this.labelAttr]; // String + }, + + // ======================================================================= + // Write interface, for DnD + + newItem: function(/* dijit/tree/dndSource.__Item */ args, /*Item*/ parent, /*int?*/ insertIndex, /*Item*/ before){ + // summary: + // Creates a new item. See `dojo/data/api/Write` for details on args. + // Used in drag & drop when item from external source dropped onto tree. + + return this.store.put(args, { + parent: parent, + before: before + }); + }, + + pasteItem: function(/*Item*/ childItem, /*Item*/ oldParentItem, /*Item*/ newParentItem, + /*Boolean*/ bCopy, /*int?*/ insertIndex, /*Item*/ before){ + // summary: + // Move or copy an item from one parent item to another. + // Used in drag & drop. + + var d = new Deferred(); + + if(oldParentItem === newParentItem && !bCopy && !before){ + // Avoid problem when items visually disappear when dropped onto their parent. + // Happens because the (no-op) store.put() call doesn't generate any notification + // that the childItem was added/moved. + d.resolve(true); + return d; + } + + if(oldParentItem && !bCopy){ + // In order for DnD moves to work correctly, childItem needs to be orphaned from oldParentItem + // before being adopted by newParentItem. That way, the TreeNode is moved rather than + // an additional TreeNode being created, and the old TreeNode subsequently being deleted. + // The latter loses information such as selection and opened/closed children TreeNodes. + // Unfortunately simply calling this.store.put() will send notifications in a random order, based + // on when the TreeNodes in question originally appeared, and not based on the drag-from + // TreeNode vs. the drop-onto TreeNode. + + this.getChildren(oldParentItem, lang.hitch(this, function(oldParentChildren){ + oldParentChildren = [].concat(oldParentChildren); // concat to make copy + var index = array.indexOf(oldParentChildren, childItem); + oldParentChildren.splice(index, 1); + this.onChildrenChange(oldParentItem, oldParentChildren); + + d.resolve(this.store.put(childItem, { + overwrite: true, + parent: newParentItem, + oldParent: oldParentItem, + before: before + })); + })); + }else{ + d.resolve(this.store.put(childItem, { + overwrite: true, + parent: newParentItem, + oldParent: oldParentItem, + before: before + })); + } + + return d; + }, + + // ======================================================================= + // Callbacks + + onChange: function(/*dojo/data/Item*/ /*===== item =====*/){ + // summary: + // Callback whenever an item has changed, so that Tree + // can update the label, icon, etc. Note that changes + // to an item's children or parent(s) will trigger an + // onChildrenChange() so you can ignore those changes here. + // tags: + // callback + }, + + onChildrenChange: function(/*===== parent, newChildrenList =====*/){ + // summary: + // Callback to do notifications about new, updated, or deleted items. + // parent: dojo/data/Item + // newChildrenList: Object[] + // Items from the store + // tags: + // callback + }, + + onDelete: function(/*dojo/data/Item*/ /*===== item =====*/){ + // summary: + // Callback when an item has been deleted. + // Actually we have no way of knowing this with the new dojo.store API, + // so this method is never called (but it's left here since Tree connects + // to it). + // tags: + // callback + } + }); +}); diff --git a/src/main/resources/static/dijit/tree/TreeStoreModel.js b/src/main/resources/static/dijit/tree/TreeStoreModel.js new file mode 100644 index 0000000000000000000000000000000000000000..36556ddc714e4f691ae94b3f665493d54af3ace9 --- /dev/null +++ b/src/main/resources/static/dijit/tree/TreeStoreModel.js @@ -0,0 +1,387 @@ +define([ + "dojo/_base/array", // array.filter array.forEach array.indexOf array.some + "dojo/aspect", // aspect.after + "dojo/_base/declare", // declare + "dojo/_base/lang" // lang.hitch +], function(array, aspect, declare, lang){ + + // module: + // dijit/tree/TreeStoreModel + + return declare("dijit.tree.TreeStoreModel", null, { + // summary: + // Implements dijit/Tree/model connecting to a dojo.data store with a single + // root item. Any methods passed into the constructor will override + // the ones defined here. + + // store: dojo/data/api/Read + // Underlying store + store: null, + + // childrenAttrs: String[] + // One or more attribute names (attributes in the dojo.data item) that specify that item's children + childrenAttrs: ["children"], + + // newItemIdAttr: String + // Name of attribute in the Object passed to newItem() that specifies the id. + // + // If newItemIdAttr is set then it's used when newItem() is called to see if an + // item with the same id already exists, and if so just links to the old item + // (so that the old item ends up with two parents). + // + // Setting this to null or "" will make every drop create a new item. + newItemIdAttr: "id", + + // labelAttr: String + // If specified, get label for tree node from this attribute, rather + // than by calling store.getLabel() + labelAttr: "", + + // root: [readonly] dojo/data/Item + // Pointer to the root item (read only, not a parameter) + root: null, + + // query: anything + // Specifies datastore query to return the root item for the tree. + // Must only return a single item. Alternately can just pass in pointer + // to root item. + // example: + // | {id:'ROOT'} + query: null, + + // deferItemLoadingUntilExpand: Boolean + // Setting this to true will cause the TreeStoreModel to defer calling loadItem on nodes + // until they are expanded. This allows for lazying loading where only one + // loadItem (and generally one network call, consequently) per expansion + // (rather than one for each child). + // This relies on partial loading of the children items; each children item of a + // fully loaded item should contain the label and info about having children. + deferItemLoadingUntilExpand: false, + + constructor: function(/* Object */ args){ + // summary: + // Passed the arguments listed above (store, etc) + // tags: + // private + + lang.mixin(this, args); + + this.connects = []; + + var store = this.store; + if(!store.getFeatures()['dojo.data.api.Identity']){ + throw new Error("dijit.tree.TreeStoreModel: store must support dojo.data.Identity"); + } + + // if the store supports Notification, subscribe to the notification events + if(store.getFeatures()['dojo.data.api.Notification']){ + this.connects = this.connects.concat([ + aspect.after(store, "onNew", lang.hitch(this, "onNewItem"), true), + aspect.after(store, "onDelete", lang.hitch(this, "onDeleteItem"), true), + aspect.after(store, "onSet", lang.hitch(this, "onSetItem"), true) + ]); + } + }, + + destroy: function(){ + var h; + while(h = this.connects.pop()){ h.remove(); } + // TODO: should cancel any in-progress processing of getRoot(), getChildren() + }, + + // ======================================================================= + // Methods for traversing hierarchy + + getRoot: function(onItem, onError){ + // summary: + // Calls onItem with the root item for the tree, possibly a fabricated item. + // Calls onError on error. + if(this.root){ + onItem(this.root); + }else{ + this.store.fetch({ + query: this.query, + onComplete: lang.hitch(this, function(items){ + if(items.length != 1){ + throw new Error("dijit.tree.TreeStoreModel: root query returned " + items.length + + " items, but must return exactly one"); + } + this.root = items[0]; + onItem(this.root); + }), + onError: onError + }); + } + }, + + mayHaveChildren: function(/*dojo/data/Item*/ item){ + // summary: + // Tells if an item has or may have children. Implementing logic here + // avoids showing +/- expando icon for nodes that we know don't have children. + // (For efficiency reasons we may not want to check if an element actually + // has children until user clicks the expando node) + return array.some(this.childrenAttrs, function(attr){ + return this.store.hasAttribute(item, attr); + }, this); + }, + + getChildren: function(/*dojo/data/Item*/ parentItem, /*function(items)*/ onComplete, /*function*/ onError){ + // summary: + // Calls onComplete() with array of child items of given parent item, all loaded. + + var store = this.store; + if(!store.isItemLoaded(parentItem)){ + // The parent is not loaded yet, we must be in deferItemLoadingUntilExpand + // mode, so we will load it and just return the children (without loading each + // child item) + var getChildren = lang.hitch(this, arguments.callee); + store.loadItem({ + item: parentItem, + onItem: function(parentItem){ + getChildren(parentItem, onComplete, onError); + }, + onError: onError + }); + return; + } + // get children of specified item + var childItems = []; + for(var i=0; i 0){ + // If mouse is over a new TreeNode, then get new TreeNode's position and size + if(!this.targetBox || oldTarget != newTarget){ + this.targetBox = domGeometry.position(newTarget.rowNode, true); + } + if((e.pageY - this.targetBox.y) <= this.betweenThreshold){ + newDropPosition = "Before"; + }else if((e.pageY - this.targetBox.y) >= (this.targetBox.h - this.betweenThreshold)){ + newDropPosition = "After"; + } + } + + if(firstTime || newTarget != oldTarget || newDropPosition != oldDropPosition){ + if(oldTarget){ + this._removeItemClass(oldTarget.rowNode, oldDropPosition); + } + if(newTarget){ + this._addItemClass(newTarget.rowNode, newDropPosition); + } + + // Check if it's ok to drop the dragged node on/before/after the target node. + if(!newTarget){ + m.canDrop(false); + }else if(newTarget == this.tree.rootNode && newDropPosition != "Over"){ + // Can't drop before or after tree's root node; the dropped node would just disappear (at least visually) + m.canDrop(false); + }else{ + // Guard against dropping onto yourself or your parent. + // But when dragging multiple objects, it's OK if some of them are being dropped onto own parent. + var dropOntoSelf = false, + dropOntoParent = false; + if(m.source == this){ + dropOntoParent = (newDropPosition === "Over"); + for(var dragId in this.selection){ + var dragNode = this.selection[dragId]; + if(dragNode.item === newTarget.item){ + dropOntoSelf = true; + break; + } + if(dragNode.getParent().id !== newTarget.id){ + dropOntoParent = false; + } + } + } + m.canDrop( + !dropOntoSelf && !dropOntoParent && + !this._isParentChildDrop(m.source, newTarget.rowNode) && + this.checkItemAcceptance(newTarget.rowNode, m.source, newDropPosition.toLowerCase()) + ); + } + + this.targetAnchor = newTarget; + this.dropPosition = newDropPosition; + } + }, + + onMouseMove: function(e){ + // summary: + // Called for any onmousemove/ontouchmove events over the Tree + // e: Event + // onmousemouse/ontouchmove event + // tags: + // private + if(this.isDragging && this.targetState == "Disabled"){ + return; + } + this.inherited(arguments); + var m = DNDManager.manager(); + if(this.isDragging){ + this._onDragMouse(e); + }else{ + if(this.mouseDown && this.isSource && + (Math.abs(e.pageX - this._lastX) >= this.dragThreshold || Math.abs(e.pageY - this._lastY) >= this.dragThreshold)){ + var nodes = this.getSelectedTreeNodes(); + if(nodes.length){ + if(nodes.length > 1){ + //filter out all selected items which has one of their ancestor selected as well + var seen = this.selection, i = 0, r = [], n, p; + nextitem: while((n = nodes[i++])){ + for(p = n.getParent(); p && p !== this.tree; p = p.getParent()){ + if(seen[p.id]){ //parent is already selected, skip this node + continue nextitem; + } + } + //this node does not have any ancestors selected, add it + r.push(n); + } + nodes = r; + } + nodes = array.map(nodes, function(n){ + return n.domNode + }); + m.startDrag(this, nodes, this.copyState(dndCommon.getCopyKeyState(e))); + this._onDragMouse(e, true); // because this may be the only mousemove event we get before the drop + } + } + } + }, + + onMouseDown: function(e){ + // summary: + // Event processor for onmousedown/ontouchstart + // e: Event + // onmousedown/ontouchend event + // tags: + // private + + if(e.type == "touchstart" || mouse.isLeft(e)){ // ignore right click + this.mouseDown = true; + this.mouseButton = e.button; + this._lastX = e.pageX; + this._lastY = e.pageY; + } + + this.inherited(arguments); + }, + + onMouseUp: function(e){ + // summary: + // Event processor for onmouseup/ontouchend + // e: Event + // onmouseup/ontouchend event + // tags: + // private + if(this.mouseDown){ + this.mouseDown = false; + this.inherited(arguments); + } + }, + + onMouseOut: function(){ + // summary: + // Event processor for when mouse is moved away from a TreeNode + // tags: + // private + this.inherited(arguments); + this._unmarkTargetAnchor(); + }, + + checkItemAcceptance: function(/*===== target, source, position =====*/){ + // summary: + // Stub function to be overridden if one wants to check for the ability to drop at the node/item level + // description: + // In the base case, this is called to check if target can become a child of source. + // When betweenThreshold is set, position="before" or "after" means that we + // are asking if the source node can be dropped before/after the target node. + // target: DOMNode + // The dijitTreeRoot DOM node inside of the TreeNode that we are dropping on to + // Use dijit.getEnclosingWidget(target) to get the TreeNode. + // source: dijit/tree/dndSource + // The (set of) nodes we are dropping + // position: String + // "over", "before", or "after" + // tags: + // extension + return true; + }, + + // topic event processors + onDndSourceOver: function(source){ + // summary: + // Topic event processor for /dnd/source/over, called when detected a current source. + // source: Object + // The dijit/tree/dndSource / dojo/dnd/Source which has the mouse over it + // tags: + // private + if(this != source){ + this.mouseDown = false; + this._unmarkTargetAnchor(); + }else if(this.isDragging){ + var m = DNDManager.manager(); + m.canDrop(false); + } + }, + onDndStart: function(source, nodes, copy){ + // summary: + // Topic event processor for /dnd/start, called to initiate the DnD operation + // source: Object + // The dijit/tree/dndSource / dojo/dnd/Source which is providing the items + // nodes: DomNode[] + // The list of transferred items, dndTreeNode nodes if dragging from a Tree + // copy: Boolean + // Copy items, if true, move items otherwise + // tags: + // private + + if(this.isSource){ + this._changeState("Source", this == source ? (copy ? "Copied" : "Moved") : ""); + } + var accepted = this.checkAcceptance(source, nodes); + + this._changeState("Target", accepted ? "" : "Disabled"); + + if(this == source){ + DNDManager.manager().overSource(this); + } + + this.isDragging = true; + }, + + itemCreator: function(nodes /*===== , target, source =====*/){ + // summary: + // Returns objects passed to `Tree.model.newItem()` based on DnD nodes + // dropped onto the tree. Developer must override this method to enable + // dropping from external sources onto this Tree, unless the Tree.model's items + // happen to look like {id: 123, name: "Apple" } with no other attributes. + // description: + // For each node in nodes[], which came from source, create a hash of name/value + // pairs to be passed to Tree.model.newItem(). Returns array of those hashes. + // nodes: DomNode[] + // target: DomNode + // source: dojo/dnd/Source + // returns: __Item[] + // Array of name/value hashes for each new item to be added to the Tree + // tags: + // extension + + // TODO: for 2.0 refactor so itemCreator() is called once per drag node, and + // make signature itemCreator(sourceItem, node, target) (or similar). + + return array.map(nodes, function(node){ + return { + "id": node.id, + "name": node.textContent || node.innerText || "" + }; + }); // Object[] + }, + + onDndDrop: function(source, nodes, copy){ + // summary: + // Topic event processor for /dnd/drop, called to finish the DnD operation. + // description: + // Updates data store items according to where node was dragged from and dropped + // to. The tree will then respond to those data store updates and redraw itself. + // source: Object + // The dijit/tree/dndSource / dojo/dnd/Source which is providing the items + // nodes: DomNode[] + // The list of transferred items, dndTreeNode nodes if dragging from a Tree + // copy: Boolean + // Copy items, if true, move items otherwise + // tags: + // protected + if(this.containerState == "Over"){ + var tree = this.tree, + model = tree.model, + target = this.targetAnchor, + doExpand = false; // this is so we don't expand the sibling above + + this.isDragging = false; + + // Compute the new parent item + var newParentItem; + var insertIndex; + var before; // drop source before (aka previous sibling) of target + newParentItem = (target && target.item) || tree.item; + if(this.dropPosition == "Before" || this.dropPosition == "After"){ + // TODO: if there is no parent item then disallow the drop. + // Actually this should be checked during onMouseMove too, to make the drag icon red. + newParentItem = (target.getParent() && target.getParent().item) || tree.item; + // Compute the insert index for reordering + insertIndex = target.getIndexInParent(); + if(this.dropPosition == "After"){ + insertIndex = target.getIndexInParent() + 1; + before = target.getNextSibling() && target.getNextSibling().item; + }else{ + before = target.item; + } + }else{ + newParentItem = (target && target.item) || tree.item; + doExpand = true; + } + + // If necessary, use this variable to hold array of hashes to pass to model.newItem() + // (one entry in the array for each dragged node). + var newItemsParams; + + array.forEach(nodes, function(node, idx){ + // dojo/dnd/Item representing the thing being dropped. + // Don't confuse the use of item here (meaning a DnD item) with the + // uses below where item means dojo.data item. + var sourceItem = source.getItem(node.id); + + // Information that's available if the source is another Tree + // (possibly but not necessarily this tree, possibly but not + // necessarily the same model as this Tree) + if(array.indexOf(sourceItem.type, "treeNode") != -1){ + var childTreeNode = sourceItem.data, + childItem = childTreeNode.item, + oldParentItem = childTreeNode.getParent().item; + } + + if(source == this){ + // This is a node from my own tree, and we are moving it, not copying. + // Remove item from old parent's children attribute. + // TODO: dijit/tree/dndSelector should implement deleteSelectedNodes() + // and this code should go there. + + if(typeof insertIndex == "number"){ + if(newParentItem == oldParentItem && childTreeNode.getIndexInParent() < insertIndex){ + insertIndex -= 1; + } + } + model.pasteItem(childItem, oldParentItem, newParentItem, copy, insertIndex, before); + }else if(model.isItem(childItem)){ + // Item from same model + // (maybe we should only do this branch if the source is a tree?) + model.pasteItem(childItem, oldParentItem, newParentItem, copy, insertIndex, before); + }else{ + // Get the hash to pass to model.newItem(). A single call to + // itemCreator() returns an array of hashes, one for each drag source node. + if(!newItemsParams){ + newItemsParams = this.itemCreator(nodes, target.rowNode, source); + } + + // Create new item in the tree, based on the drag source. + model.newItem(newItemsParams[idx], newParentItem, insertIndex, before); + } + }, this); + + // Expand the target node (if it's currently collapsed) so the user can see + // where their node was dropped. In particular since that node is still selected. + if(doExpand) { + this.tree._expandNode(target); + } + } + this.onDndCancel(); + }, + + onDndCancel: function(){ + // summary: + // Topic event processor for /dnd/cancel, called to cancel the DnD operation + // tags: + // private + this._unmarkTargetAnchor(); + this.isDragging = false; + this.mouseDown = false; + delete this.mouseButton; + this._changeState("Source", ""); + this._changeState("Target", ""); + }, + + // When focus moves in/out of the entire Tree + onOverEvent: function(){ + // summary: + // This method is called when mouse is moved over our container (like onmouseenter) + // tags: + // private + this.inherited(arguments); + DNDManager.manager().overSource(this); + }, + onOutEvent: function(){ + // summary: + // This method is called when mouse is moved out of our container (like onmouseleave) + // tags: + // private + this._unmarkTargetAnchor(); + var m = DNDManager.manager(); + if(this.isDragging){ + m.canDrop(false); + } + m.outSource(this); + + this.inherited(arguments); + }, + + _isParentChildDrop: function(source, targetRow){ + // summary: + // Checks whether the dragged items are parent rows in the tree which are being + // dragged into their own children. + // + // source: + // The DragSource object. + // + // targetRow: + // The tree row onto which the dragged nodes are being dropped. + // + // tags: + // private + + // If the dragged object is not coming from the tree this widget belongs to, + // it cannot be invalid. + if(!source.tree || source.tree != this.tree){ + return false; + } + + + var root = source.tree.domNode; + var ids = source.selection; + + var node = targetRow.parentNode; + + // Iterate up the DOM hierarchy from the target drop row, + // checking of any of the dragged nodes have the same ID. + while(node != root && !ids[node.id]){ + node = node.parentNode; + } + + return node.id && ids[node.id]; + }, + + _unmarkTargetAnchor: function(){ + // summary: + // Removes hover class of the current target anchor + // tags: + // private + if(!this.targetAnchor){ + return; + } + this._removeItemClass(this.targetAnchor.rowNode, this.dropPosition); + this.targetAnchor = null; + this.targetBox = null; + this.dropPosition = null; + }, + + _markDndStatus: function(copy){ + // summary: + // Changes source's state based on "copy" status + this._changeState("Source", copy ? "Copied" : "Moved"); + } + }); + + /*===== + dndSource.__Item = __Item; + =====*/ + + return dndSource; +}); diff --git a/src/main/resources/static/dijit/tree/model.js b/src/main/resources/static/dijit/tree/model.js new file mode 100644 index 0000000000000000000000000000000000000000..ac488fbb3e6b00085bbb9876182c78f4f1eb4f2a --- /dev/null +++ b/src/main/resources/static/dijit/tree/model.js @@ -0,0 +1,135 @@ +define(["dojo/_base/declare"], function(declare){ + + return declare("dijit.tree.model", null, { + // summary: + // Contract for any data provider object for the tree. + // description: + // Tree passes in values to the constructor to specify the callbacks. + // "item" is typically a dojo/data/Item but it's just a black box so + // it could be anything. + // + // This (like `dojo/data/api/Read`) is just documentation, and not meant to be used. + + destroy: function(){ + // summary: + // Destroys this object, releasing connections to the store + // tags: + // extension + }, + + // ======================================================================= + // Methods for traversing hierarchy + + getRoot: function(onItem){ + // summary: + // Calls onItem with the root item for the tree, possibly a fabricated item. + // Throws exception on error. + // tags: + // extension + }, + + mayHaveChildren: function(item){ + // summary: + // Tells if an item has or may have children. Implementing logic here + // avoids showing +/- expando icon for nodes that we know don't have children. + // (For efficiency reasons we may not want to check if an element actually + // has children until user clicks the expando node) + // item: dojo/data/Item + // tags: + // extension + }, + + getChildren: function(parentItem, onComplete){ + // summary: + // Calls onComplete() with array of child items of given parent item, all loaded. + // Throws exception on error. + // parentItem: dojo/data/Item + // onComplete: function(items) + // tags: + // extension + }, + + // ======================================================================= + // Inspecting items + + isItem: function(something){ + // summary: + // Returns true if *something* is an item and came from this model instance. + // Returns false if *something* is a literal, an item from another model instance, + // or is any object other than an item. + // tags: + // extension + }, + + getIdentity: function(item){ + // summary: + // Returns identity for an item + // tags: + // extension + }, + + getLabel: function(item){ + // summary: + // Get the label for an item + // tags: + // extension + }, + + // ======================================================================= + // Write interface + + newItem: function(args, parent, insertIndex, before){ + // summary: + // Creates a new item. See `dojo/data/api/Write` for details on args. + // args: dijit/tree/dndSource.__Item + // parent: Item + // insertIndex: int? + // Allows to insert the new item as the n'th child of `parent`. + // before: Item? + // Insert the new item as the previous sibling of this item. `before` must be a child of `parent`. + // tags: + // extension + }, + + pasteItem: function(childItem, oldParentItem, newParentItem, bCopy, insertIndex, before){ + // summary: + // Move or copy an item from one parent item to another. + // Used in drag & drop. + // If oldParentItem is specified and bCopy is false, childItem is removed from oldParentItem. + // If newParentItem is specified, childItem is attached to newParentItem. + // childItem: Item + // oldParentItem: Item + // newParentItem: Item + // bCopy: Boolean + // insertIndex: int? + // Allows to insert the new item as the n'th child of `parent`. + // before: Item? + // Insert the new item as the previous sibling of this item. `before` must be a child of `parent`. + // tags: + // extension + }, + + // ======================================================================= + // Callbacks + + onChange: function(item){ + // summary: + // Callback whenever an item has changed, so that Tree + // can update the label, icon, etc. Note that changes + // to an item's children or parent(s) will trigger an + // onChildrenChange() so you can ignore those changes here. + // item: dojo/data/Item + // tags: + // callback + }, + + onChildrenChange: function(parent, newChildrenList){ + // summary: + // Callback to do notifications about new, updated, or deleted items. + // parent: dojo/data/Item + // newChildrenList: dojo/data/Item[] + // tags: + // callback + } + }); +}); \ No newline at end of file diff --git a/src/main/resources/static/dijit/typematic.js b/src/main/resources/static/dijit/typematic.js new file mode 100644 index 0000000000000000000000000000000000000000..09a159ac475f79c99995787c29fd9e2557c59b73 --- /dev/null +++ b/src/main/resources/static/dijit/typematic.js @@ -0,0 +1,211 @@ +define([ + "dojo/_base/array", // array.forEach + "dojo/_base/connect", // connect._keyPress + "dojo/_base/lang", // lang.mixin, lang.hitch + "dojo/on", + "dojo/sniff", // has("ie") + "./main" // setting dijit.typematic global +], function(array, connect, lang, on, has, dijit){ + + // module: + // dijit/typematic + + var typematic = (dijit.typematic = { + // summary: + // These functions are used to repetitively call a user specified callback + // method when a specific key or mouse click over a specific DOM node is + // held down for a specific amount of time. + // Only 1 such event is allowed to occur on the browser page at 1 time. + + _fireEventAndReload: function(){ + this._timer = null; + this._callback(++this._count, this._node, this._evt); + + // Schedule next event, timer is at most minDelay (default 10ms) to avoid + // browser overload (particularly avoiding starving DOH robot so it never gets to send a mouseup) + this._currentTimeout = Math.max( + this._currentTimeout < 0 ? this._initialDelay : + (this._subsequentDelay > 1 ? this._subsequentDelay : Math.round(this._currentTimeout * this._subsequentDelay)), + this._minDelay); + this._timer = setTimeout(lang.hitch(this, "_fireEventAndReload"), this._currentTimeout); + }, + + trigger: function(/*Event*/ evt, /*Object*/ _this, /*DOMNode*/ node, /*Function*/ callback, /*Object*/ obj, /*Number?*/ subsequentDelay, /*Number?*/ initialDelay, /*Number?*/ minDelay){ + // summary: + // Start a timed, repeating callback sequence. + // If already started, the function call is ignored. + // This method is not normally called by the user but can be + // when the normal listener code is insufficient. + // evt: + // key or mouse event object to pass to the user callback + // _this: + // pointer to the user's widget space. + // node: + // the DOM node object to pass the the callback function + // callback: + // function to call until the sequence is stopped called with 3 parameters: + // count: + // integer representing number of repeated calls (0..n) with -1 indicating the iteration has stopped + // node: + // the DOM node object passed in + // evt: + // key or mouse event object + // obj: + // user space object used to uniquely identify each typematic sequence + // subsequentDelay: + // if > 1, the number of milliseconds until the 3->n events occur + // or else the fractional time multiplier for the next event's delay, default=0.9 + // initialDelay: + // the number of milliseconds until the 2nd event occurs, default=500ms + // minDelay: + // the maximum delay in milliseconds for event to fire, default=10ms + if(obj != this._obj){ + this.stop(); + this._initialDelay = initialDelay || 500; + this._subsequentDelay = subsequentDelay || 0.90; + this._minDelay = minDelay || 10; + this._obj = obj; + this._node = node; + this._currentTimeout = -1; + this._count = -1; + this._callback = lang.hitch(_this, callback); + this._evt = { faux: true }; + for(var attr in evt){ + if(attr != "layerX" && attr != "layerY"){ // prevent WebKit warnings + var v = evt[attr]; + if(typeof v != "function" && typeof v != "undefined"){ + this._evt[attr] = v + } + } + } + this._fireEventAndReload(); + } + }, + + stop: function(){ + // summary: + // Stop an ongoing timed, repeating callback sequence. + if(this._timer){ + clearTimeout(this._timer); + this._timer = null; + } + if(this._obj){ + this._callback(-1, this._node, this._evt); + this._obj = null; + } + }, + + addKeyListener: function(/*DOMNode*/ node, /*Object*/ keyObject, /*Object*/ _this, /*Function*/ callback, /*Number*/ subsequentDelay, /*Number*/ initialDelay, /*Number?*/ minDelay){ + // summary: + // Start listening for a specific typematic key. + // See also the trigger method for other parameters. + // keyObject: + // an object defining the key to listen for: + // + // - keyCode: the keyCode (number) to listen for, used for non-printable keys + // - charCode: the charCode (number) to listen for, used for printable keys + // - charOrCode: deprecated, use keyCode or charCode + // - ctrlKey: desired ctrl key state to initiate the callback sequence: + // - pressed (true) + // - released (false) + // - either (unspecified) + // - altKey: same as ctrlKey but for the alt key + // - shiftKey: same as ctrlKey but for the shift key + // returns: + // a connection handle + + // Setup keydown or keypress listener depending on whether keyCode or charCode was specified. + // If charOrCode is specified use deprecated connect._keypress synthetic event (remove for 2.0) + var type = "keyCode" in keyObject ? "keydown" : "charCode" in keyObject ? "keypress" : connect._keypress, + attr = "keyCode" in keyObject ? "keyCode" : "charCode" in keyObject ? "charCode" : "charOrCode"; + + var handles = [ + on(node, type, lang.hitch(this, function(evt){ + if(evt[attr] == keyObject[attr] && + (keyObject.ctrlKey === undefined || keyObject.ctrlKey == evt.ctrlKey) && + (keyObject.altKey === undefined || keyObject.altKey == evt.altKey) && + (keyObject.metaKey === undefined || keyObject.metaKey == (evt.metaKey || false)) && // IE doesn't even set metaKey + (keyObject.shiftKey === undefined || keyObject.shiftKey == evt.shiftKey)){ + evt.stopPropagation(); + evt.preventDefault(); + typematic.trigger(evt, _this, node, callback, keyObject, subsequentDelay, initialDelay, minDelay); + }else if(typematic._obj == keyObject){ + typematic.stop(); + } + })), + on(node, "keyup", lang.hitch(this, function(){ + if(typematic._obj == keyObject){ + typematic.stop(); + } + })) + ]; + return { remove: function(){ + array.forEach(handles, function(h){ + h.remove(); + }); + } }; + }, + + addMouseListener: function(/*DOMNode*/ node, /*Object*/ _this, /*Function*/ callback, /*Number*/ subsequentDelay, /*Number*/ initialDelay, /*Number?*/ minDelay){ + // summary: + // Start listening for a typematic mouse click. + // See the trigger method for other parameters. + // returns: + // a connection handle + var handles = [ + on(node, "mousedown", lang.hitch(this, function(evt){ + evt.preventDefault(); + typematic.trigger(evt, _this, node, callback, node, subsequentDelay, initialDelay, minDelay); + })), + on(node, "mouseup", lang.hitch(this, function(evt){ + if(this._obj){ + evt.preventDefault(); + } + typematic.stop(); + })), + on(node, "mouseout", lang.hitch(this, function(evt){ + if(this._obj){ + evt.preventDefault(); + } + typematic.stop(); + })), + on(node, "dblclick", lang.hitch(this, function(evt){ + evt.preventDefault(); + if(has("ie") < 9){ + typematic.trigger(evt, _this, node, callback, node, subsequentDelay, initialDelay, minDelay); + setTimeout(lang.hitch(this, typematic.stop), 50); + } + })) + ]; + return { remove: function(){ + array.forEach(handles, function(h){ + h.remove(); + }); + } }; + }, + + addListener: function(/*Node*/ mouseNode, /*Node*/ keyNode, /*Object*/ keyObject, /*Object*/ _this, /*Function*/ callback, /*Number*/ subsequentDelay, /*Number*/ initialDelay, /*Number?*/ minDelay){ + // summary: + // Start listening for a specific typematic key and mouseclick. + // This is a thin wrapper to addKeyListener and addMouseListener. + // See the addMouseListener and addKeyListener methods for other parameters. + // mouseNode: + // the DOM node object to listen on for mouse events. + // keyNode: + // the DOM node object to listen on for key events. + // returns: + // a connection handle + var handles = [ + this.addKeyListener(keyNode, keyObject, _this, callback, subsequentDelay, initialDelay, minDelay), + this.addMouseListener(mouseNode, _this, callback, subsequentDelay, initialDelay, minDelay) + ]; + return { remove: function(){ + array.forEach(handles, function(h){ + h.remove(); + }); + } }; + } + }); + + return typematic; +}); diff --git a/src/main/resources/static/sockjs/COPYING b/src/main/resources/static/sockjs/COPYING new file mode 100644 index 0000000000000000000000000000000000000000..7fa858084f4604e81407d6a03f9e40df26913842 --- /dev/null +++ b/src/main/resources/static/sockjs/COPYING @@ -0,0 +1,9 @@ +Parts of the code are derived from various open source projects. + +For code derived from Socket.IO by Guillermo Rauch see +https://github.com/LearnBoost/socket.io/tree/0.6.17#readme. + +Snippets derived from jQuery-JSONP by Julian Aubourg, generic MIT +license. + +All other code is released on MIT license, see LICENSE. diff --git a/src/main/resources/static/sockjs/Changelog.md b/src/main/resources/static/sockjs/Changelog.md new file mode 100644 index 0000000000000000000000000000000000000000..ba104b279ced8e0a26b38657547df64253bdb1d1 --- /dev/null +++ b/src/main/resources/static/sockjs/Changelog.md @@ -0,0 +1,268 @@ +1.1.1 +== + + * Do not pass `protocols` or `options` arguments to browser WebSocket constructor - #309 + +1.1.0 +== + + * Fix IE7/8 usage of `console.log` which does not have `apply` - #279 + * Remove `dbg` global variable - #282 + * Bump `faye-websocket` version to `0.11.0` - #267 + * Optimize `arguments` usage - #263 + * Add sourcemap file to dist folder - #237 + * Add way to transparently pass transport-specific options - #272 + +1.0.3 +== + + * Use `https` module for xhr requests in node when url uses https - #254 + +1.0.2 +== + + * Fix iframe info receiver url + * Move iframe.contentWindow check inside setTimeout - #246 + +1.0.1 +== + + * Use proper base url for iframe-based info receiver - #249 + * Don't register unload event in chrome packaged app - #223 + * Allow custom session ids - #250 + * Remove version property from bower.json - #247 + * Update example CDN url - #244 + +1.0.0 +=== + + * Simplify url handling by delegating to `url-parse` - #242 + * Upgrade to `url-parse` 1.0.1 to fix colon issue if auth has no password + +1.0.0-beta.13 +=== + + * Transport timeout on connection should fallback - #238 + +1.0.0-beta.12 +==== + + * Upgrade `url-parse` to 1.0.0 to fix #218 again + +1.0.0-beta.10 +==== + + * Upgrade `url-parse` to 0.2.3 to fix #222 + +1.0.0-beta.9 +==== + + * Upgrade `url-parse` to 0.2.1 to fix 'too much recursion' errors + +1.0.0-beta.8 +==== + + * Upgrade `url-parse` to 0.2.0 to fix inheritance issues + +1.0.0-beta.7 +==== + + * Upgrade `url-parse` to 0.1.5 to fix #218 + * Don't strip basic auth from url - #219 + +1.0.0-beta.6 +==== + + * Upgrade `url-parse` to 0.1.3 to avoid CSP issues + +1.0.0-beta.5 +===== + + * Upgrade `url-parse` to 0.1.1 to fix #214 + +1.0.0-beta.4 +===== + + * Upgrade `url-parse` to 0.1.0 and `sockjs` to 0.3.11 + * Update .npmignore + +1.0.0-beta.3 +===== + + * Move `debug` from devDependencies to dependencies + +1.0.0-beta.2 +===== + + * Relax requirements when using same origin XHR - #80 + * Upgrade to JSON3 from JSON2 - #123 + * Package library with browserify supporting the UMD pattern - #184 + * Move tests to JavaScript + * Add Gulp.js build script + * Fix getOrigin for file:/// urls and standard ports - #173 + * Add onerror event handlers to Websockets - #169 + * Increase RTO lower bound to prevent spurious timeouts on IE8/9 - #161 + * Use window.crypto for random values when available - #128 + * Fix handling of listeners added and removed mid-dispatch - #127 + * Fix XHR Streaming for IE8 - #83 + * Remove explicit AMD name - #107 + * Check for an empty response from /info request - #143 + * Add Content-Type to XHR requests to fix issue over HTTPS on Galaxy S4 - #164 + * Fix iframe fallback when message is sent from a popup in IE7/8 - #166 + * Add support for query strings on the url - #72 + * Now works inside of Web Workers - #181 + * Support EventSource / Server Sent Events outside of iframes - #201 + * Rename protocols to transports - #65 + * Allow transports which need the body to trigger on 'interactive' readyState - #175 + * try/catch access to document.domain - #187 + * Use `window.location` instead of `document.location` - #195 + * Allow usage from node.js with same API + +0.3.4 +===== + + * Mentioned njoyce's fork of sockjs-gevent. + * #90 - Don't catch onbeforeunload event - it breaks javascript:// + links in IE. + * IE mangles 204 response code for 1223 on ajax, see: + http://bugs.jquery.com/ticket/1450 + * Make `new` optional for SockJS constructor (via substack). + * It is impossible to cancel JSONP polling request - compensate for that. + * Refactored EventEmitter prototype (used only internally) + * #66 - Failure to post data to /xhr_send should kill the session + + +0.3.2 +===== + + * #77 - Getting /info on modern browsers when html is served from + file:// urls was broken. + +0.3.1 +===== + + * #61 - Meteor guys found that we unintentionally catch "onopen" errors. + * #63 - Meteorjs guys found that xhr-streaming on Safari sometimes + left busy cursor running. + * Increased allowed time for websocket transport (from 1 rtt to 2), + this should make ws transport more reliable over SSL, at the cost + of slightly longer connection time for users with blocked ws. + * #57 - previous fix didn't really work, sockjs-client still left + a mess in browsers history when using iframe transports. This + is fixed now. + * #60 - Opera 12 (next) claims to do AJAX2 / CORS, but can't + do xhr-streaming. + * #58 - onunload test sometimes failed on Safari on windows + * Updated readme WRT websocket protocols + * Updated readme WRT deployments on heroku + * Add minimalistic license block to every source file. + + +0.3.0 +===== + + * Temporarily disabled iframe tests - they are failing unpredictably. + * #57 - pointing an iframe to "about:blank" during cleanup caused + Opera to messup history. + * #55 - Improved iframe abstraction (reduced a possible mem leak) + * Refactored AJAX abstractions, for better CORS handing - again. + * Add additional parent origin security check to an iframe. + * Urls with hashes or query strings can't be passed to SockJS. + * #18 - Mention workaround for Firefox ESC key issue + * #53 - AMD compliance + * sockjs/sockjs-protocol#28 - always use square brackets for + websocket frames + * #51 - initial support for IE10 - try XHR before XDR + * #28 - handle onunload / onbeforeunload in a more robust fashion + * #49 - support SockJS-client being used from files served from + file:// urls. + + +0.2.1 +===== + + * "smoke-latency.html" test was unnecesairly sending too much data. + * Bumped core dependencies (coffee-script and uglify-js) + * Minor updates to the README, few cosmetic changes in the code. + + +0.2.0 +===== + + * The API had changed - use `protocols_whitelist` option instead of + passing an array of protocols as a second argument to SockJS constructor. + * Dropped 'chunking-test' functionality and replace it with 'info'. + * Rewritten protocol-choosing alogirthm, see "utils.detectProtocols" method. + * Use dynamic protocol timeouts based on RTT, not hardcoded 5 seconds + * #34 - Don't ever reuse `session_id`, especially when trying + fallback protocols. + * The test server got moved from SockJS-client to SockJS-node. + * Don't test unicode surrogates - it can't work in some environments. + * XHR/XDR helpers were rewritten, ajax transports were simplified. + * Added a domain check in the iframe to improve security. + * SockJS will now trigger 1002 error if there is a problem during handshake + instead of 2000 error. + * Smoke-throughput test is renamed to smoke-latency. + +0.1.2 +===== + + * #29 - Allow all unicode characters to be send over SockJS. + * #15 - SockJS should now work fine even if the connection is started + in HEAD, before BODY is loaded. + * #28 - In rare circumstances WebSocket connection can be left intact + after the page is unloaded in FireFox. + * Updated scripts to work with Node 0.6. + * Initial work to do better QUnit testing. + * Updated the minifying script (always escape unicode chars, remove + trailing comment). + * Use string instead of array of chars (utils.js:random_number_string). + + +0.1.1 +===== + + * #21 Get JsonP transport working on IE9 (Vladimir Dronnikov). + * #26 Emit heartbeat event. + * #27 Include license inline. + + +0.1.0 +===== + + * SockJS-client can only send UTF-8 encodable strings. Previously we + took advantage of rich data structures and automatically + json-encoded them, but this got removed. Now, all data passed to + `send` will be converted to string. This is also how native + * `status` property on `EventClose` is renamed to `code` + as per Websocket API + WebSockets behave. + * The test server was updated to new `sockjs-node` API + * Fixed problem with Jsonp-polling transport on IE9 + * Repository was moved - updated links. + + +0.0.4 +===== + + * All transports were refactored, some transports were introduced: + htmlfile and separate xhr-streaming. + * Added logic to detect support for http chunking, and thus a + possibility to rule out streaming transports before running them. + * Added 'cookie' option, useful for cookie-based load balancing + (currently, it make a difference only for IE). + * Added hack to prevent EventSource from crashing Safari and Chrome. + * Loads and loads of other small and medium changes. + + +0.0.2 +===== + + * Initial support for JSESSIONID based load balancing. Currently + doesn't play nicely with IE XDomainRequest transport. + + +0.0.1 +===== + + * Initial release. diff --git a/src/main/resources/static/sockjs/LICENSE b/src/main/resources/static/sockjs/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..42b1fe94624a4cca415b38184b438dc8491ce34d --- /dev/null +++ b/src/main/resources/static/sockjs/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2011-2012 VMware, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/src/main/resources/static/sockjs/Makefile b/src/main/resources/static/sockjs/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..6f772501514cccc560af6a2b789429ad048bf324 --- /dev/null +++ b/src/main/resources/static/sockjs/Makefile @@ -0,0 +1,29 @@ + +testbundle: + @./node_modules/.bin/gulp testbundle + +test: + @if [ "x$(BROWSER_NAME)" = "x" ]; then make test-node; else make test-zuul; fi + +test-node: + @./node_modules/.bin/mocha \ + tests/node.js + +test-zuul: testbundle + @if [ "x$(BROWSER_PLATFORM)" = "x" ]; then \ + ./node_modules/.bin/zuul \ + --browser-name $(BROWSER_NAME) \ + --browser-version $(BROWSER_VERSION) \ + tests/browser.js; \ + else \ + ./node_modules/.bin/zuul \ + --browser-name $(BROWSER_NAME) \ + --browser-version $(BROWSER_VERSION) \ + --browser-platform "$(BROWSER_PLATFORM)" \ + tests/browser.js; \ + fi + +test-local: testbundle + @./node_modules/.bin/zuul --local 9090 -- tests/browser.js + +.PHONY: test test-node test-zuul test-local testbundle diff --git a/src/main/resources/static/sockjs/README.md b/src/main/resources/static/sockjs/README.md new file mode 100644 index 0000000000000000000000000000000000000000..31a620e1af83fc9a466fd4b02df66282a4f21098 --- /dev/null +++ b/src/main/resources/static/sockjs/README.md @@ -0,0 +1,336 @@ + +# SockJS-client + +[![npm version](https://img.shields.io/npm/v/sockjs-client.svg?style=flat-square)](https://www.npmjs.com/package/sockjs-client)[![Build Status](https://img.shields.io/travis/sockjs/sockjs-client/master.svg?style=flat-square)](https://travis-ci.org/sockjs/sockjs-client)[![Dependencies](https://img.shields.io/david/sockjs/sockjs-client.svg?style=flat-square)](https://david-dm.org/sockjs/sockjs-client)[![Chat](https://img.shields.io/badge/Chat-gitter.im-blue.svg?style=flat-square)](https://gitter.im/sockjs/sockjs-client) +[![Sauce Test Status](https://saucelabs.com/buildstatus/brycekahle)](https://saucelabs.com/u/brycekahle) + +SockJS is a browser JavaScript library that provides a WebSocket-like +object. SockJS gives you a coherent, cross-browser, Javascript API +which creates a low latency, full duplex, cross-domain communication +channel between the browser and the web server. + +Under the hood SockJS tries to use native WebSockets first. If that +fails it can use a variety of browser-specific transport protocols and +presents them through WebSocket-like abstractions. + +SockJS is intended to work for all modern browsers and in environments +which don't support the WebSocket protocol -- for example, behind restrictive +corporate proxies. + +SockJS-client does require a server counterpart: + + * [SockJS-node](https://github.com/sockjs/sockjs-node) is a SockJS + server for Node.js. + + +Philosophy: + + * The API should follow + [HTML5 Websockets API](http://dev.w3.org/html5/websockets/) as + closely as possible. + * All the transports must support cross domain connections out of the + box. It's possible and recommended to host a SockJS server on a + different server than your main web site. + * There is support for at least one streaming protocol for every + major browser. + * Streaming transports should work cross-domain and + should support cookies (for cookie-based sticky sessions). + * Polling transports are used as a fallback for old browsers and + hosts behind restrictive proxies. + * Connection establishment should be fast and lightweight. + * No Flash inside (no need to open port 843 - which doesn't work + through proxies, no need to host 'crossdomain.xml', no need + [to wait for 3 seconds](https://github.com/gimite/web-socket-js/issues/49) + in order to detect problems) + + +Subscribe to +[SockJS mailing list](https://groups.google.com/forum/#!forum/sockjs) for +discussions and support. + +SockJS family: + + * [SockJS-client](https://github.com/sockjs/sockjs-client) JavaScript client library + * [SockJS-node](https://github.com/sockjs/sockjs-node) Node.js server + * [SockJS-erlang](https://github.com/sockjs/sockjs-erlang) Erlang server + * [SockJS-cyclone](https://github.com/flaviogrossi/sockjs-cyclone) Python/Cyclone/Twisted server + * [SockJS-tornado](https://github.com/MrJoes/sockjs-tornado) Python/Tornado server + * [SockJS-twisted](https://github.com/DesertBus/sockjs-twisted/) Python/Twisted server + * [Spring Framework](http://projects.spring.io/spring-framework) Java [client](http://docs.spring.io/spring-framework/docs/current/spring-framework-reference/html/websocket.html#websocket-fallback-sockjs-client) & server + * [vert.x](https://github.com/vert-x/vert.x) Java/vert.x server + * [Xitrum](http://xitrum-framework.github.io/) Scala server + * [Atmosphere Framework](http://github.com/Atmosphere/atmosphere) JavaEE Server, Play Framework, Netty, Vert.x + +Work in progress: + + * [SockJS-ruby](https://github.com/nyarly/sockjs-ruby) + * [SockJS-netty](https://github.com/cgbystrom/sockjs-netty) + * [SockJS-gevent](https://github.com/ksava/sockjs-gevent) ([SockJS-gevent fork](https://github.com/njoyce/sockjs-gevent)) + * [pyramid-SockJS](https://github.com/fafhrd91/pyramid_sockjs) + * [wildcloud-websockets](https://github.com/wildcloud/wildcloud-websockets) + * [wai-SockJS](https://github.com/Palmik/wai-sockjs) + * [SockJS-perl](https://github.com/vti/sockjs-perl) + * [SockJS-go](https://github.com/igm/sockjs-go/) + +Getting Started +------- + +SockJS mimics the [WebSockets API](http://dev.w3.org/html5/websockets/), +but instead of `WebSocket` there is a `SockJS` Javascript object. + +First, you need to load the SockJS JavaScript library. For example, you can +put that in your HTML head: + +```html + +``` + +After the script is loaded you can establish a connection with the +SockJS server. Here's a simple example: + +```javascript + var sock = new SockJS('http://mydomain.com/my_prefix'); + sock.onopen = function() { + console.log('open'); + }; + sock.onmessage = function(e) { + console.log('message', e.data); + }; + sock.onclose = function() { + console.log('close'); + }; + + sock.send('test'); + sock.close(); +``` + +SockJS-client API +----------------- + +### SockJS class + +Similar to the 'WebSocket' API, the 'SockJS' constructor takes one, or more arguments: + +```javascript +var sockjs = new SockJS(url, _reserved, options); +``` + +`url` may contain a query string, if one is desired. + +Where `options` is a hash which can contain: + + * **server (string)** + + String to append to url for actual data connection. Defaults to a random 4 digit number. + + * **transports (string OR array of strings)** + + Sometimes it is useful to disable some fallback transports. This + option allows you to supply a list transports that may be used by + SockJS. By default all available transports will be used. + + * **sessionId (number OR function)** + + Both client and server use session identifiers to distinguish connections. + If you specify this option as a number, SockJS will use its random string + generator function to generate session ids that are N-character long + (where N corresponds to the number specified by **sessionId**). + When you specify this option as a function, the function must return a + randomly generated string. Every time SockJS needs to generate a session + id it will call this function and use the returned string directly. + If you don't specify this option, the default is to use the default random + string generator to generate 8-character long session ids. + +Although the 'SockJS' object tries to emulate the 'WebSocket' +behaviour, it's impossible to support all of its features. An +important SockJS limitation is the fact that you're not allowed to +open more than one SockJS connection to a single domain at a time. +This limitation is caused by an in-browser limit of outgoing +connections - usually [browsers don't allow opening more than two +outgoing connections to a single domain](http://stackoverflow.com/questions/985431/max-parallel-http-connections-in-a-browser). A single SockJS session +requires those two connections - one for downloading data, the other for +sending messages. Opening a second SockJS session at the same time +would most likely block, and can result in both sessions timing out. + +Opening more than one SockJS connection at a time is generally a +bad practice. If you absolutely must do it, you can use +multiple subdomains, using a different subdomain for every +SockJS connection. + +Supported transports, by browser (html served from http:// or https://) +----------------------------------------------------------------------- + +_Browser_ | _Websockets_ | _Streaming_ | _Polling_ +----------------|------------------|-------------|------------------- +IE 6, 7 | no | no | jsonp-polling +IE 8, 9 (cookies=no) | no | xdr-streaming † | xdr-polling † +IE 8, 9 (cookies=yes)| no | iframe-htmlfile | iframe-xhr-polling +IE 10 | rfc6455 | xhr-streaming | xhr-polling +Chrome 6-13 | hixie-76 | xhr-streaming | xhr-polling +Chrome 14+ | hybi-10 / rfc6455| xhr-streaming | xhr-polling +Firefox <10 | no ‡ | xhr-streaming | xhr-polling +Firefox 10+ | hybi-10 / rfc6455| xhr-streaming | xhr-polling +Safari 5.x | hixie-76 | xhr-streaming | xhr-polling +Safari 6+ | rfc6455 | xhr-streaming | xhr-polling +Opera 10.70+ | no ‡ | iframe-eventsource | iframe-xhr-polling +Opera 12.10+ | rfc6455 | xhr-streaming | xhr-polling +Konqueror | no | no | jsonp-polling + + + * **†**: IE 8+ supports [XDomainRequest][^9], which is + essentially a modified AJAX/XHR that can do requests across + domains. But unfortunately it doesn't send any cookies, which + makes it inappropriate for deployments when the load balancer uses + JSESSIONID cookie to do sticky sessions. + + * **‡**: Firefox 4.0 and Opera 11.00 and shipped with disabled + Websockets "hixie-76". They can still be enabled by manually + changing a browser setting. + +Supported transports, by browser (html served from file://) +----------------------------------------------------------- + +Sometimes you may want to serve your html from "file://" address - for +development or if you're using PhoneGap or similar technologies. But +due to the Cross Origin Policy files served from "file://" have no +Origin, and that means some of SockJS transports won't work. For this +reason the SockJS transport table is different than usually, major +differences are: + +_Browser_ | _Websockets_ | _Streaming_ | _Polling_ +----------------|---------------|--------------------|------------------- +IE 8, 9 | same as above | iframe-htmlfile | iframe-xhr-polling +Other | same as above | iframe-eventsource | iframe-xhr-polling + +Supported transports, by name +----------------------------- + +_Transport_ | _References_ +---------------------|--------------- +websocket (rfc6455) | [rfc 6455][^10] +websocket (hixie-76) | [draft-hixie-thewebsocketprotocol-76][^1] +websocket (hybi-10) | [draft-ietf-hybi-thewebsocketprotocol-10][^2] +xhr-streaming | Transport using [Cross domain XHR][^5] [streaming][^7] capability (readyState=3). +xdr-streaming | Transport using [XDomainRequest][^9] [streaming][^7] capability (readyState=3). +eventsource | [EventSource/Server-sent events][^4]. +iframe-eventsource | [EventSource/Server-sent events][^4] used from an [iframe via postMessage][^3]. +htmlfile | [HtmlFile][^8]. +iframe-htmlfile | [HtmlFile][^8] used from an [iframe via postMessage][^3]. +xhr-polling | Long-polling using [cross domain XHR][^5]. +xdr-polling | Long-polling using [XDomainRequest][^9]. +iframe-xhr-polling | Long-polling using normal AJAX from an [iframe via postMessage][^3]. +jsonp-polling | Slow and old fashioned [JSONP polling][^6]. This transport will show "busy indicator" (aka: "spinning wheel") when sending data. + + +[^1]: http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76 +[^2]: http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-10 +[^3]: https://developer.mozilla.org/en/DOM/window.postMessage +[^4]: https://html.spec.whatwg.org/multipage/comms.html#server-sent-events +[^5]: https://secure.wikimedia.org/wikipedia/en/wiki/XMLHttpRequest#Cross-domain_requests +[^6]: https://secure.wikimedia.org/wikipedia/en/wiki/JSONP +[^7]: http://www.debugtheweb.com/test/teststreaming.aspx +[^8]: http://cometdaily.com/2007/11/18/ie-activexhtmlfile-transport-part-ii/ +[^9]: http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx +[^10]: http://www.rfc-editor.org/rfc/rfc6455.txt + + +Connecting to SockJS without the client +--------------------------------------- + +Although the main point of SockJS is to enable browser-to-server +connectivity, it is possible to connect to SockJS from an external +application. Any SockJS server complying with 0.3 protocol does +support a raw WebSocket url. The raw WebSocket url for the test server +looks like: + + * ws://localhost:8081/echo/websocket + +You can connect any WebSocket RFC 6455 compliant WebSocket client to +this url. This can be a command line client, external application, +third party code or even a browser (though I don't know why you would +want to do so). + + +Deployment +---------- + +You should use a version of sockjs-client +that supports the protocol used by your server. For example: + +```html + +``` + + +For server-side deployment tricks, especially about load balancing and +session stickiness, take a look at the +[SockJS-node readme](https://github.com/sockjs/sockjs-node#readme). + + +Development and testing +----------------------- + +SockJS-client needs [node.js](http://nodejs.org/) for running a test +server and JavaScript minification. If you want to work on +SockJS-client source code, checkout the git repo and follow these +steps: + + cd sockjs-client + npm install + +To generate JavaScript, run: + + gulp browserify + +To generate minified JavaScript, run: + + gulp browserify:min + +Both commands output into the `build` directory. + +### Testing + +Once you've compiled the SockJS-client you may want to check if your changes +pass all the tests. + + make test-local + +This will start [zuul](https://github.com/defunctzombie/zuul) and a test support server. Open the browser to [http://localhost:9090/_zuul](http://localhost:9090/_zuul) and watch the tests run. + +Browser Quirks +-------------- + +There are various browser quirks which we don't intend to address: + + * Pressing ESC in Firefox, before Firefox 20, closes the SockJS connection. For a workaround + and discussion see [#18](https://github.com/sockjs/sockjs-client/issues/18). + * `jsonp-polling` transport will show a "spinning wheel" (aka. "busy indicator") + when sending data. + * You can't open more than one SockJS connection to one domain at the + same time due to [the browser's limit of concurrent connections](http://stackoverflow.com/questions/985431/max-parallel-http-connections-in-a-browser) + (this limit is not counting native WebSocket connections). + * Although SockJS is trying to escape any strange Unicode characters + (even invalid ones - [like surrogates \xD800-\xDBFF](http://en.wikipedia.org/wiki/Mapping_of_Unicode_characters#Surrogates) or [\xFFFE and \xFFFF](https://en.wikipedia.org/wiki/Unicode#Character_General_Category)) + it's advisable to use only valid characters. Using invalid + characters is a bit slower, and may not work with SockJS servers + that have proper Unicode support. + * Having a global function called `onmessage` or such is probably a + bad idea, as it could be called by the built-in `postMessage` API. + * From SockJS' point of view there is nothing special about + SSL/HTTPS. Connecting between unencrypted and encrypted sites + should work just fine. + * Although SockJS does its best to support both prefix and cookie based + sticky sessions, the latter may not work well cross-domain with + browsers that don't accept third-party cookies by default (Safari). + In order to get around this make sure you're connecting to SockJS + from the same parent domain as the main site. For example + 'sockjs.a.com' is able to set cookies if you're connecting from + 'www.a.com' or 'a.com'. + * Trying to connect from secure "https://" to insecure "http://" is + not a good idea. The other way around should be fine. + * Long polling is known to cause problems on Heroku, but a + [workaround for SockJS is available](https://github.com/sockjs/sockjs-node/issues/57#issuecomment-5242187). + * SockJS [websocket transport is more stable over SSL](https://github.com/sockjs/sockjs-client/issues/94). If + you're a serious SockJS user then consider using SSL + ([more info](http://www.ietf.org/mail-archive/web/hybi/current/msg01605.html)). + diff --git a/src/main/resources/static/sockjs/bower.json b/src/main/resources/static/sockjs/bower.json new file mode 100644 index 0000000000000000000000000000000000000000..612025dc98c9e5d6caf6c432bfd331fee38d4dbc --- /dev/null +++ b/src/main/resources/static/sockjs/bower.json @@ -0,0 +1,28 @@ +{ + "name": "sockjs-client", + "homepage": "http://sockjs.org", + "authors": [ + "Bryce Kahle " + ], + "description": "Realtime library that provides a cross-browser, low latency, full duplex, cross-domain communication channel that behaves like a native WebSocket object.", + "main": "dist/sockjs.js", + "keywords": [ + "realtime", + "websockets", + "sockjs" + ], + "repository": { + "type": "git", + "url": "git://github.com/sockjs/sockjs-client.git" + }, + "license": "MIT", + "ignore": [ + "**/.*", + "bin", + "lib", + "node_modules", + "bower_components", + "test", + "tests" + ] +} diff --git a/src/main/resources/static/sockjs/dist/sockjs-0.3.4.js b/src/main/resources/static/sockjs/dist/sockjs-0.3.4.js new file mode 100644 index 0000000000000000000000000000000000000000..585215cb5e9780e9cb84e88d90213f6ff1667b48 --- /dev/null +++ b/src/main/resources/static/sockjs/dist/sockjs-0.3.4.js @@ -0,0 +1,2379 @@ +/* SockJS client, version 0.3.4, http://sockjs.org, MIT License + +Copyright (c) 2011-2012 VMware, Inc. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +*/ + +// JSON2 by Douglas Crockford (minified). +var JSON;JSON||(JSON={}),function(){function str(a,b){var c,d,e,f,g=gap,h,i=b[a];i&&typeof i=="object"&&typeof i.toJSON=="function"&&(i=i.toJSON(a)),typeof rep=="function"&&(i=rep.call(b,a,i));switch(typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";gap+=indent,h=[];if(Object.prototype.toString.apply(i)==="[object Array]"){f=i.length;for(c=0;c 1) { + this._listeners[eventType] = arr.slice(0, idx).concat( arr.slice(idx+1) ); + } else { + delete this._listeners[eventType]; + } + return; + } + return; +}; + +REventTarget.prototype.dispatchEvent = function (event) { + var t = event.type; + var args = Array.prototype.slice.call(arguments, 0); + if (this['on'+t]) { + this['on'+t].apply(this, args); + } + if (this._listeners && t in this._listeners) { + for(var i=0; i < this._listeners[t].length; i++) { + this._listeners[t][i].apply(this, args); + } + } +}; +// [*] End of lib/reventtarget.js + + +// [*] Including lib/simpleevent.js +/* + * ***** BEGIN LICENSE BLOCK ***** + * Copyright (c) 2011-2012 VMware, Inc. + * + * For the license see COPYING. + * ***** END LICENSE BLOCK ***** + */ + +var SimpleEvent = function(type, obj) { + this.type = type; + if (typeof obj !== 'undefined') { + for(var k in obj) { + if (!obj.hasOwnProperty(k)) continue; + this[k] = obj[k]; + } + } +}; + +SimpleEvent.prototype.toString = function() { + var r = []; + for(var k in this) { + if (!this.hasOwnProperty(k)) continue; + var v = this[k]; + if (typeof v === 'function') v = '[function]'; + r.push(k + '=' + v); + } + return 'SimpleEvent(' + r.join(', ') + ')'; +}; +// [*] End of lib/simpleevent.js + + +// [*] Including lib/eventemitter.js +/* + * ***** BEGIN LICENSE BLOCK ***** + * Copyright (c) 2011-2012 VMware, Inc. + * + * For the license see COPYING. + * ***** END LICENSE BLOCK ***** + */ + +var EventEmitter = function(events) { + var that = this; + that._events = events || []; + that._listeners = {}; +}; +EventEmitter.prototype.emit = function(type) { + var that = this; + that._verifyType(type); + if (that._nuked) return; + + var args = Array.prototype.slice.call(arguments, 1); + if (that['on'+type]) { + that['on'+type].apply(that, args); + } + if (type in that._listeners) { + for(var i = 0; i < that._listeners[type].length; i++) { + that._listeners[type][i].apply(that, args); + } + } +}; + +EventEmitter.prototype.on = function(type, callback) { + var that = this; + that._verifyType(type); + if (that._nuked) return; + + if (!(type in that._listeners)) { + that._listeners[type] = []; + } + that._listeners[type].push(callback); +}; + +EventEmitter.prototype._verifyType = function(type) { + var that = this; + if (utils.arrIndexOf(that._events, type) === -1) { + utils.log('Event ' + JSON.stringify(type) + + ' not listed ' + JSON.stringify(that._events) + + ' in ' + that); + } +}; + +EventEmitter.prototype.nuke = function() { + var that = this; + that._nuked = true; + for(var i=0; i= 3000 && code <= 4999); +}; + +// See: http://www.erg.abdn.ac.uk/~gerrit/dccp/notes/ccid2/rto_estimator/ +// and RFC 2988. +utils.countRTO = function (rtt) { + var rto; + if (rtt > 100) { + rto = 3 * rtt; // rto > 300msec + } else { + rto = rtt + 200; // 200msec < rto <= 300msec + } + return rto; +} + +utils.log = function() { + if (_window.console && console.log && console.log.apply) { + console.log.apply(console, arguments); + } +}; + +utils.bind = function(fun, that) { + if (fun.bind) { + return fun.bind(that); + } else { + return function() { + return fun.apply(that, arguments); + }; + } +}; + +utils.flatUrl = function(url) { + return url.indexOf('?') === -1 && url.indexOf('#') === -1; +}; + +utils.amendUrl = function(url) { + var dl = _document.location; + if (!url) { + throw new Error('Wrong url for SockJS'); + } + if (!utils.flatUrl(url)) { + throw new Error('Only basic urls are supported in SockJS'); + } + + // '//abc' --> 'http://abc' + if (url.indexOf('//') === 0) { + url = dl.protocol + url; + } + // '/abc' --> 'http://localhost:80/abc' + if (url.indexOf('/') === 0) { + url = dl.protocol + '//' + dl.host + url; + } + // strip trailing slashes + url = url.replace(/[/]+$/,''); + return url; +}; + +// IE doesn't support [].indexOf. +utils.arrIndexOf = function(arr, obj){ + for(var i=0; i < arr.length; i++){ + if(arr[i] === obj){ + return i; + } + } + return -1; +}; + +utils.arrSkip = function(arr, obj) { + var idx = utils.arrIndexOf(arr, obj); + if (idx === -1) { + return arr.slice(); + } else { + var dst = arr.slice(0, idx); + return dst.concat(arr.slice(idx+1)); + } +}; + +// Via: https://gist.github.com/1133122/2121c601c5549155483f50be3da5305e83b8c5df +utils.isArray = Array.isArray || function(value) { + return {}.toString.call(value).indexOf('Array') >= 0 +}; + +utils.delay = function(t, fun) { + if(typeof t === 'function') { + fun = t; + t = 0; + } + return setTimeout(fun, t); +}; + + +// Chars worth escaping, as defined by Douglas Crockford: +// https://github.com/douglascrockford/JSON-js/blob/47a9882cddeb1e8529e07af9736218075372b8ac/json2.js#L196 +var json_escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g, + json_lookup = { +"\u0000":"\\u0000","\u0001":"\\u0001","\u0002":"\\u0002","\u0003":"\\u0003", +"\u0004":"\\u0004","\u0005":"\\u0005","\u0006":"\\u0006","\u0007":"\\u0007", +"\b":"\\b","\t":"\\t","\n":"\\n","\u000b":"\\u000b","\f":"\\f","\r":"\\r", +"\u000e":"\\u000e","\u000f":"\\u000f","\u0010":"\\u0010","\u0011":"\\u0011", +"\u0012":"\\u0012","\u0013":"\\u0013","\u0014":"\\u0014","\u0015":"\\u0015", +"\u0016":"\\u0016","\u0017":"\\u0017","\u0018":"\\u0018","\u0019":"\\u0019", +"\u001a":"\\u001a","\u001b":"\\u001b","\u001c":"\\u001c","\u001d":"\\u001d", +"\u001e":"\\u001e","\u001f":"\\u001f","\"":"\\\"","\\":"\\\\", +"\u007f":"\\u007f","\u0080":"\\u0080","\u0081":"\\u0081","\u0082":"\\u0082", +"\u0083":"\\u0083","\u0084":"\\u0084","\u0085":"\\u0085","\u0086":"\\u0086", +"\u0087":"\\u0087","\u0088":"\\u0088","\u0089":"\\u0089","\u008a":"\\u008a", +"\u008b":"\\u008b","\u008c":"\\u008c","\u008d":"\\u008d","\u008e":"\\u008e", +"\u008f":"\\u008f","\u0090":"\\u0090","\u0091":"\\u0091","\u0092":"\\u0092", +"\u0093":"\\u0093","\u0094":"\\u0094","\u0095":"\\u0095","\u0096":"\\u0096", +"\u0097":"\\u0097","\u0098":"\\u0098","\u0099":"\\u0099","\u009a":"\\u009a", +"\u009b":"\\u009b","\u009c":"\\u009c","\u009d":"\\u009d","\u009e":"\\u009e", +"\u009f":"\\u009f","\u00ad":"\\u00ad","\u0600":"\\u0600","\u0601":"\\u0601", +"\u0602":"\\u0602","\u0603":"\\u0603","\u0604":"\\u0604","\u070f":"\\u070f", +"\u17b4":"\\u17b4","\u17b5":"\\u17b5","\u200c":"\\u200c","\u200d":"\\u200d", +"\u200e":"\\u200e","\u200f":"\\u200f","\u2028":"\\u2028","\u2029":"\\u2029", +"\u202a":"\\u202a","\u202b":"\\u202b","\u202c":"\\u202c","\u202d":"\\u202d", +"\u202e":"\\u202e","\u202f":"\\u202f","\u2060":"\\u2060","\u2061":"\\u2061", +"\u2062":"\\u2062","\u2063":"\\u2063","\u2064":"\\u2064","\u2065":"\\u2065", +"\u2066":"\\u2066","\u2067":"\\u2067","\u2068":"\\u2068","\u2069":"\\u2069", +"\u206a":"\\u206a","\u206b":"\\u206b","\u206c":"\\u206c","\u206d":"\\u206d", +"\u206e":"\\u206e","\u206f":"\\u206f","\ufeff":"\\ufeff","\ufff0":"\\ufff0", +"\ufff1":"\\ufff1","\ufff2":"\\ufff2","\ufff3":"\\ufff3","\ufff4":"\\ufff4", +"\ufff5":"\\ufff5","\ufff6":"\\ufff6","\ufff7":"\\ufff7","\ufff8":"\\ufff8", +"\ufff9":"\\ufff9","\ufffa":"\\ufffa","\ufffb":"\\ufffb","\ufffc":"\\ufffc", +"\ufffd":"\\ufffd","\ufffe":"\\ufffe","\uffff":"\\uffff"}; + +// Some extra characters that Chrome gets wrong, and substitutes with +// something else on the wire. +var extra_escapable = /[\x00-\x1f\ud800-\udfff\ufffe\uffff\u0300-\u0333\u033d-\u0346\u034a-\u034c\u0350-\u0352\u0357-\u0358\u035c-\u0362\u0374\u037e\u0387\u0591-\u05af\u05c4\u0610-\u0617\u0653-\u0654\u0657-\u065b\u065d-\u065e\u06df-\u06e2\u06eb-\u06ec\u0730\u0732-\u0733\u0735-\u0736\u073a\u073d\u073f-\u0741\u0743\u0745\u0747\u07eb-\u07f1\u0951\u0958-\u095f\u09dc-\u09dd\u09df\u0a33\u0a36\u0a59-\u0a5b\u0a5e\u0b5c-\u0b5d\u0e38-\u0e39\u0f43\u0f4d\u0f52\u0f57\u0f5c\u0f69\u0f72-\u0f76\u0f78\u0f80-\u0f83\u0f93\u0f9d\u0fa2\u0fa7\u0fac\u0fb9\u1939-\u193a\u1a17\u1b6b\u1cda-\u1cdb\u1dc0-\u1dcf\u1dfc\u1dfe\u1f71\u1f73\u1f75\u1f77\u1f79\u1f7b\u1f7d\u1fbb\u1fbe\u1fc9\u1fcb\u1fd3\u1fdb\u1fe3\u1feb\u1fee-\u1fef\u1ff9\u1ffb\u1ffd\u2000-\u2001\u20d0-\u20d1\u20d4-\u20d7\u20e7-\u20e9\u2126\u212a-\u212b\u2329-\u232a\u2adc\u302b-\u302c\uaab2-\uaab3\uf900-\ufa0d\ufa10\ufa12\ufa15-\ufa1e\ufa20\ufa22\ufa25-\ufa26\ufa2a-\ufa2d\ufa30-\ufa6d\ufa70-\ufad9\ufb1d\ufb1f\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40-\ufb41\ufb43-\ufb44\ufb46-\ufb4e\ufff0-\uffff]/g, + extra_lookup; + +// JSON Quote string. Use native implementation when possible. +var JSONQuote = (JSON && JSON.stringify) || function(string) { + json_escapable.lastIndex = 0; + if (json_escapable.test(string)) { + string = string.replace(json_escapable, function(a) { + return json_lookup[a]; + }); + } + return '"' + string + '"'; +}; + +// This may be quite slow, so let's delay until user actually uses bad +// characters. +var unroll_lookup = function(escapable) { + var i; + var unrolled = {} + var c = [] + for(i=0; i<65536; i++) { + c.push( String.fromCharCode(i) ); + } + escapable.lastIndex = 0; + c.join('').replace(escapable, function (a) { + unrolled[ a ] = '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); + return ''; + }); + escapable.lastIndex = 0; + return unrolled; +}; + +// Quote string, also taking care of unicode characters that browsers +// often break. Especially, take care of unicode surrogates: +// http://en.wikipedia.org/wiki/Mapping_of_Unicode_characters#Surrogates +utils.quote = function(string) { + var quoted = JSONQuote(string); + + // In most cases this should be very fast and good enough. + extra_escapable.lastIndex = 0; + if(!extra_escapable.test(quoted)) { + return quoted; + } + + if(!extra_lookup) extra_lookup = unroll_lookup(extra_escapable); + + return quoted.replace(extra_escapable, function(a) { + return extra_lookup[a]; + }); +} + +var _all_protocols = ['websocket', + 'xdr-streaming', + 'xhr-streaming', + 'iframe-eventsource', + 'iframe-htmlfile', + 'xdr-polling', + 'xhr-polling', + 'iframe-xhr-polling', + 'jsonp-polling']; + +utils.probeProtocols = function() { + var probed = {}; + for(var i=0; i<_all_protocols.length; i++) { + var protocol = _all_protocols[i]; + // User can have a typo in protocol name. + probed[protocol] = SockJS[protocol] && + SockJS[protocol].enabled(); + } + return probed; +}; + +utils.detectProtocols = function(probed, protocols_whitelist, info) { + var pe = {}, + protocols = []; + if (!protocols_whitelist) protocols_whitelist = _all_protocols; + for(var i=0; i 0) { + maybe_push(protos); + } + } + } + + // 1. Websocket + if (info.websocket !== false) { + maybe_push(['websocket']); + } + + // 2. Streaming + if (pe['xhr-streaming'] && !info.null_origin) { + protocols.push('xhr-streaming'); + } else { + if (pe['xdr-streaming'] && !info.cookie_needed && !info.null_origin) { + protocols.push('xdr-streaming'); + } else { + maybe_push(['iframe-eventsource', + 'iframe-htmlfile']); + } + } + + // 3. Polling + if (pe['xhr-polling'] && !info.null_origin) { + protocols.push('xhr-polling'); + } else { + if (pe['xdr-polling'] && !info.cookie_needed && !info.null_origin) { + protocols.push('xdr-polling'); + } else { + maybe_push(['iframe-xhr-polling', + 'jsonp-polling']); + } + } + return protocols; +} +// [*] End of lib/utils.js + + +// [*] Including lib/dom.js +/* + * ***** BEGIN LICENSE BLOCK ***** + * Copyright (c) 2011-2012 VMware, Inc. + * + * For the license see COPYING. + * ***** END LICENSE BLOCK ***** + */ + +// May be used by htmlfile jsonp and transports. +var MPrefix = '_sockjs_global'; +utils.createHook = function() { + var window_id = 'a' + utils.random_string(8); + if (!(MPrefix in _window)) { + var map = {}; + _window[MPrefix] = function(window_id) { + if (!(window_id in map)) { + map[window_id] = { + id: window_id, + del: function() {delete map[window_id];} + }; + } + return map[window_id]; + } + } + return _window[MPrefix](window_id); +}; + + + +utils.attachMessage = function(listener) { + utils.attachEvent('message', listener); +}; +utils.attachEvent = function(event, listener) { + if (typeof _window.addEventListener !== 'undefined') { + _window.addEventListener(event, listener, false); + } else { + // IE quirks. + // According to: http://stevesouders.com/misc/test-postmessage.php + // the message gets delivered only to 'document', not 'window'. + _document.attachEvent("on" + event, listener); + // I get 'window' for ie8. + _window.attachEvent("on" + event, listener); + } +}; + +utils.detachMessage = function(listener) { + utils.detachEvent('message', listener); +}; +utils.detachEvent = function(event, listener) { + if (typeof _window.addEventListener !== 'undefined') { + _window.removeEventListener(event, listener, false); + } else { + _document.detachEvent("on" + event, listener); + _window.detachEvent("on" + event, listener); + } +}; + + +var on_unload = {}; +// Things registered after beforeunload are to be called immediately. +var after_unload = false; + +var trigger_unload_callbacks = function() { + for(var ref in on_unload) { + on_unload[ref](); + delete on_unload[ref]; + }; +}; + +var unload_triggered = function() { + if(after_unload) return; + after_unload = true; + trigger_unload_callbacks(); +}; + +// 'unload' alone is not reliable in opera within an iframe, but we +// can't use `beforeunload` as IE fires it on javascript: links. +utils.attachEvent('unload', unload_triggered); + +utils.unload_add = function(listener) { + var ref = utils.random_string(8); + on_unload[ref] = listener; + if (after_unload) { + utils.delay(trigger_unload_callbacks); + } + return ref; +}; +utils.unload_del = function(ref) { + if (ref in on_unload) + delete on_unload[ref]; +}; + + +utils.createIframe = function (iframe_url, error_callback) { + var iframe = _document.createElement('iframe'); + var tref, unload_ref; + var unattach = function() { + clearTimeout(tref); + // Explorer had problems with that. + try {iframe.onload = null;} catch (x) {} + iframe.onerror = null; + }; + var cleanup = function() { + if (iframe) { + unattach(); + // This timeout makes chrome fire onbeforeunload event + // within iframe. Without the timeout it goes straight to + // onunload. + setTimeout(function() { + if(iframe) { + iframe.parentNode.removeChild(iframe); + } + iframe = null; + }, 0); + utils.unload_del(unload_ref); + } + }; + var onerror = function(r) { + if (iframe) { + cleanup(); + error_callback(r); + } + }; + var post = function(msg, origin) { + try { + // When the iframe is not loaded, IE raises an exception + // on 'contentWindow'. + if (iframe && iframe.contentWindow) { + iframe.contentWindow.postMessage(msg, origin); + } + } catch (x) {}; + }; + + iframe.src = iframe_url; + iframe.style.display = 'none'; + iframe.style.position = 'absolute'; + iframe.onerror = function(){onerror('onerror');}; + iframe.onload = function() { + // `onload` is triggered before scripts on the iframe are + // executed. Give it few seconds to actually load stuff. + clearTimeout(tref); + tref = setTimeout(function(){onerror('onload timeout');}, 2000); + }; + _document.body.appendChild(iframe); + tref = setTimeout(function(){onerror('timeout');}, 15000); + unload_ref = utils.unload_add(cleanup); + return { + post: post, + cleanup: cleanup, + loaded: unattach + }; +}; + +utils.createHtmlfile = function (iframe_url, error_callback) { + var doc = new ActiveXObject('htmlfile'); + var tref, unload_ref; + var iframe; + var unattach = function() { + clearTimeout(tref); + }; + var cleanup = function() { + if (doc) { + unattach(); + utils.unload_del(unload_ref); + iframe.parentNode.removeChild(iframe); + iframe = doc = null; + CollectGarbage(); + } + }; + var onerror = function(r) { + if (doc) { + cleanup(); + error_callback(r); + } + }; + var post = function(msg, origin) { + try { + // When the iframe is not loaded, IE raises an exception + // on 'contentWindow'. + if (iframe && iframe.contentWindow) { + iframe.contentWindow.postMessage(msg, origin); + } + } catch (x) {}; + }; + + doc.open(); + doc.write('' + + 'document.domain="' + document.domain + '";' + + ''); + doc.close(); + doc.parentWindow[WPrefix] = _window[WPrefix]; + var c = doc.createElement('div'); + doc.body.appendChild(c); + iframe = doc.createElement('iframe'); + c.appendChild(iframe); + iframe.src = iframe_url; + tref = setTimeout(function(){onerror('timeout');}, 15000); + unload_ref = utils.unload_add(cleanup); + return { + post: post, + cleanup: cleanup, + loaded: unattach + }; +}; +// [*] End of lib/dom.js + + +// [*] Including lib/dom2.js +/* + * ***** BEGIN LICENSE BLOCK ***** + * Copyright (c) 2011-2012 VMware, Inc. + * + * For the license see COPYING. + * ***** END LICENSE BLOCK ***** + */ + +var AbstractXHRObject = function(){}; +AbstractXHRObject.prototype = new EventEmitter(['chunk', 'finish']); + +AbstractXHRObject.prototype._start = function(method, url, payload, opts) { + var that = this; + + try { + that.xhr = new XMLHttpRequest(); + } catch(x) {}; + + if (!that.xhr) { + try { + that.xhr = new _window.ActiveXObject('Microsoft.XMLHTTP'); + } catch(x) {}; + } + if (_window.ActiveXObject || _window.XDomainRequest) { + // IE8 caches even POSTs + url += ((url.indexOf('?') === -1) ? '?' : '&') + 't='+(+new Date); + } + + // Explorer tends to keep connection open, even after the + // tab gets closed: http://bugs.jquery.com/ticket/5280 + that.unload_ref = utils.unload_add(function(){that._cleanup(true);}); + try { + that.xhr.open(method, url, true); + } catch(e) { + // IE raises an exception on wrong port. + that.emit('finish', 0, ''); + that._cleanup(); + return; + }; + + if (!opts || !opts.no_credentials) { + // Mozilla docs says https://developer.mozilla.org/en/XMLHttpRequest : + // "This never affects same-site requests." + that.xhr.withCredentials = 'true'; + } + if (opts && opts.headers) { + for(var key in opts.headers) { + that.xhr.setRequestHeader(key, opts.headers[key]); + } + } + + that.xhr.onreadystatechange = function() { + if (that.xhr) { + var x = that.xhr; + switch (x.readyState) { + case 3: + // IE doesn't like peeking into responseText or status + // on Microsoft.XMLHTTP and readystate=3 + try { + var status = x.status; + var text = x.responseText; + } catch (x) {}; + // IE returns 1223 for 204: http://bugs.jquery.com/ticket/1450 + if (status === 1223) status = 204; + + // IE does return readystate == 3 for 404 answers. + if (text && text.length > 0) { + that.emit('chunk', status, text); + } + break; + case 4: + var status = x.status; + // IE returns 1223 for 204: http://bugs.jquery.com/ticket/1450 + if (status === 1223) status = 204; + + that.emit('finish', status, x.responseText); + that._cleanup(false); + break; + } + } + }; + that.xhr.send(payload); +}; + +AbstractXHRObject.prototype._cleanup = function(abort) { + var that = this; + if (!that.xhr) return; + utils.unload_del(that.unload_ref); + + // IE needs this field to be a function + that.xhr.onreadystatechange = function(){}; + + if (abort) { + try { + that.xhr.abort(); + } catch(x) {}; + } + that.unload_ref = that.xhr = null; +}; + +AbstractXHRObject.prototype.close = function() { + var that = this; + that.nuke(); + that._cleanup(true); +}; + +var XHRCorsObject = utils.XHRCorsObject = function() { + var that = this, args = arguments; + utils.delay(function(){that._start.apply(that, args);}); +}; +XHRCorsObject.prototype = new AbstractXHRObject(); + +var XHRLocalObject = utils.XHRLocalObject = function(method, url, payload) { + var that = this; + utils.delay(function(){ + that._start(method, url, payload, { + no_credentials: true + }); + }); +}; +XHRLocalObject.prototype = new AbstractXHRObject(); + + + +// References: +// http://ajaxian.com/archives/100-line-ajax-wrapper +// http://msdn.microsoft.com/en-us/library/cc288060(v=VS.85).aspx +var XDRObject = utils.XDRObject = function(method, url, payload) { + var that = this; + utils.delay(function(){that._start(method, url, payload);}); +}; +XDRObject.prototype = new EventEmitter(['chunk', 'finish']); +XDRObject.prototype._start = function(method, url, payload) { + var that = this; + var xdr = new XDomainRequest(); + // IE caches even POSTs + url += ((url.indexOf('?') === -1) ? '?' : '&') + 't='+(+new Date); + + var onerror = xdr.ontimeout = xdr.onerror = function() { + that.emit('finish', 0, ''); + that._cleanup(false); + }; + xdr.onprogress = function() { + that.emit('chunk', 200, xdr.responseText); + }; + xdr.onload = function() { + that.emit('finish', 200, xdr.responseText); + that._cleanup(false); + }; + that.xdr = xdr; + that.unload_ref = utils.unload_add(function(){that._cleanup(true);}); + try { + // Fails with AccessDenied if port number is bogus + that.xdr.open(method, url); + that.xdr.send(payload); + } catch(x) { + onerror(); + } +}; + +XDRObject.prototype._cleanup = function(abort) { + var that = this; + if (!that.xdr) return; + utils.unload_del(that.unload_ref); + + that.xdr.ontimeout = that.xdr.onerror = that.xdr.onprogress = + that.xdr.onload = null; + if (abort) { + try { + that.xdr.abort(); + } catch(x) {}; + } + that.unload_ref = that.xdr = null; +}; + +XDRObject.prototype.close = function() { + var that = this; + that.nuke(); + that._cleanup(true); +}; + +// 1. Is natively via XHR +// 2. Is natively via XDR +// 3. Nope, but postMessage is there so it should work via the Iframe. +// 4. Nope, sorry. +utils.isXHRCorsCapable = function() { + if (_window.XMLHttpRequest && 'withCredentials' in new XMLHttpRequest()) { + return 1; + } + // XDomainRequest doesn't work if page is served from file:// + if (_window.XDomainRequest && _document.domain) { + return 2; + } + if (IframeTransport.enabled()) { + return 3; + } + return 4; +}; +// [*] End of lib/dom2.js + + +// [*] Including lib/sockjs.js +/* + * ***** BEGIN LICENSE BLOCK ***** + * Copyright (c) 2011-2012 VMware, Inc. + * + * For the license see COPYING. + * ***** END LICENSE BLOCK ***** + */ + +var SockJS = function(url, dep_protocols_whitelist, options) { + if (this === _window) { + // makes `new` optional + return new SockJS(url, dep_protocols_whitelist, options); + } + + var that = this, protocols_whitelist; + that._options = {devel: false, debug: false, protocols_whitelist: [], + info: undefined, rtt: undefined}; + if (options) { + utils.objectExtend(that._options, options); + } + that._base_url = utils.amendUrl(url); + that._server = that._options.server || utils.random_number_string(1000); + if (that._options.protocols_whitelist && + that._options.protocols_whitelist.length) { + protocols_whitelist = that._options.protocols_whitelist; + } else { + // Deprecated API + if (typeof dep_protocols_whitelist === 'string' && + dep_protocols_whitelist.length > 0) { + protocols_whitelist = [dep_protocols_whitelist]; + } else if (utils.isArray(dep_protocols_whitelist)) { + protocols_whitelist = dep_protocols_whitelist + } else { + protocols_whitelist = null; + } + if (protocols_whitelist) { + that._debug('Deprecated API: Use "protocols_whitelist" option ' + + 'instead of supplying protocol list as a second ' + + 'parameter to SockJS constructor.'); + } + } + that._protocols = []; + that.protocol = null; + that.readyState = SockJS.CONNECTING; + that._ir = createInfoReceiver(that._base_url); + that._ir.onfinish = function(info, rtt) { + that._ir = null; + if (info) { + if (that._options.info) { + // Override if user supplies the option + info = utils.objectExtend(info, that._options.info); + } + if (that._options.rtt) { + rtt = that._options.rtt; + } + that._applyInfo(info, rtt, protocols_whitelist); + that._didClose(); + } else { + that._didClose(1002, 'Can\'t connect to server', true); + } + }; +}; +// Inheritance +SockJS.prototype = new REventTarget(); + +SockJS.version = "0.3.4"; + +SockJS.CONNECTING = 0; +SockJS.OPEN = 1; +SockJS.CLOSING = 2; +SockJS.CLOSED = 3; + +SockJS.prototype._debug = function() { + if (this._options.debug) + utils.log.apply(utils, arguments); +}; + +SockJS.prototype._dispatchOpen = function() { + var that = this; + if (that.readyState === SockJS.CONNECTING) { + if (that._transport_tref) { + clearTimeout(that._transport_tref); + that._transport_tref = null; + } + that.readyState = SockJS.OPEN; + that.dispatchEvent(new SimpleEvent("open")); + } else { + // The server might have been restarted, and lost track of our + // connection. + that._didClose(1006, "Server lost session"); + } +}; + +SockJS.prototype._dispatchMessage = function(data) { + var that = this; + if (that.readyState !== SockJS.OPEN) + return; + that.dispatchEvent(new SimpleEvent("message", {data: data})); +}; + +SockJS.prototype._dispatchHeartbeat = function(data) { + var that = this; + if (that.readyState !== SockJS.OPEN) + return; + that.dispatchEvent(new SimpleEvent('heartbeat', {})); +}; + +SockJS.prototype._didClose = function(code, reason, force) { + var that = this; + if (that.readyState !== SockJS.CONNECTING && + that.readyState !== SockJS.OPEN && + that.readyState !== SockJS.CLOSING) + throw new Error('INVALID_STATE_ERR'); + if (that._ir) { + that._ir.nuke(); + that._ir = null; + } + + if (that._transport) { + that._transport.doCleanup(); + that._transport = null; + } + + var close_event = new SimpleEvent("close", { + code: code, + reason: reason, + wasClean: utils.userSetCode(code)}); + + if (!utils.userSetCode(code) && + that.readyState === SockJS.CONNECTING && !force) { + if (that._try_next_protocol(close_event)) { + return; + } + close_event = new SimpleEvent("close", {code: 2000, + reason: "All transports failed", + wasClean: false, + last_event: close_event}); + } + that.readyState = SockJS.CLOSED; + + utils.delay(function() { + that.dispatchEvent(close_event); + }); +}; + +SockJS.prototype._didMessage = function(data) { + var that = this; + var type = data.slice(0, 1); + switch(type) { + case 'o': + that._dispatchOpen(); + break; + case 'a': + var payload = JSON.parse(data.slice(1) || '[]'); + for(var i=0; i < payload.length; i++){ + that._dispatchMessage(payload[i]); + } + break; + case 'm': + var payload = JSON.parse(data.slice(1) || 'null'); + that._dispatchMessage(payload); + break; + case 'c': + var payload = JSON.parse(data.slice(1) || '[]'); + that._didClose(payload[0], payload[1]); + break; + case 'h': + that._dispatchHeartbeat(); + break; + } +}; + +SockJS.prototype._try_next_protocol = function(close_event) { + var that = this; + if (that.protocol) { + that._debug('Closed transport:', that.protocol, ''+close_event); + that.protocol = null; + } + if (that._transport_tref) { + clearTimeout(that._transport_tref); + that._transport_tref = null; + } + + while(1) { + var protocol = that.protocol = that._protocols.shift(); + if (!protocol) { + return false; + } + // Some protocols require access to `body`, what if were in + // the `head`? + if (SockJS[protocol] && + SockJS[protocol].need_body === true && + (!_document.body || + (typeof _document.readyState !== 'undefined' + && _document.readyState !== 'complete'))) { + that._protocols.unshift(protocol); + that.protocol = 'waiting-for-load'; + utils.attachEvent('load', function(){ + that._try_next_protocol(); + }); + return true; + } + + if (!SockJS[protocol] || + !SockJS[protocol].enabled(that._options)) { + that._debug('Skipping transport:', protocol); + } else { + var roundTrips = SockJS[protocol].roundTrips || 1; + var to = ((that._options.rto || 0) * roundTrips) || 5000; + that._transport_tref = utils.delay(to, function() { + if (that.readyState === SockJS.CONNECTING) { + // I can't understand how it is possible to run + // this timer, when the state is CLOSED, but + // apparently in IE everythin is possible. + that._didClose(2007, "Transport timeouted"); + } + }); + + var connid = utils.random_string(8); + var trans_url = that._base_url + '/' + that._server + '/' + connid; + that._debug('Opening transport:', protocol, ' url:'+trans_url, + ' RTO:'+that._options.rto); + that._transport = new SockJS[protocol](that, trans_url, + that._base_url); + return true; + } + } +}; + +SockJS.prototype.close = function(code, reason) { + var that = this; + if (code && !utils.userSetCode(code)) + throw new Error("INVALID_ACCESS_ERR"); + if(that.readyState !== SockJS.CONNECTING && + that.readyState !== SockJS.OPEN) { + return false; + } + that.readyState = SockJS.CLOSING; + that._didClose(code || 1000, reason || "Normal closure"); + return true; +}; + +SockJS.prototype.send = function(data) { + var that = this; + if (that.readyState === SockJS.CONNECTING) + throw new Error('INVALID_STATE_ERR'); + if (that.readyState === SockJS.OPEN) { + that._transport.doSend(utils.quote('' + data)); + } + return true; +}; + +SockJS.prototype._applyInfo = function(info, rtt, protocols_whitelist) { + var that = this; + that._options.info = info; + that._options.rtt = rtt; + that._options.rto = utils.countRTO(rtt); + that._options.info.null_origin = !_document.domain; + var probed = utils.probeProtocols(); + that._protocols = utils.detectProtocols(probed, protocols_whitelist, info); +}; +// [*] End of lib/sockjs.js + + +// [*] Including lib/trans-websocket.js +/* + * ***** BEGIN LICENSE BLOCK ***** + * Copyright (c) 2011-2012 VMware, Inc. + * + * For the license see COPYING. + * ***** END LICENSE BLOCK ***** + */ + +var WebSocketTransport = SockJS.websocket = function(ri, trans_url) { + var that = this; + var url = trans_url + '/websocket'; + if (url.slice(0, 5) === 'https') { + url = 'wss' + url.slice(5); + } else { + url = 'ws' + url.slice(4); + } + that.ri = ri; + that.url = url; + var Constructor = _window.WebSocket || _window.MozWebSocket; + + that.ws = new Constructor(that.url); + that.ws.onmessage = function(e) { + that.ri._didMessage(e.data); + }; + // Firefox has an interesting bug. If a websocket connection is + // created after onunload, it stays alive even when user + // navigates away from the page. In such situation let's lie - + // let's not open the ws connection at all. See: + // https://github.com/sockjs/sockjs-client/issues/28 + // https://bugzilla.mozilla.org/show_bug.cgi?id=696085 + that.unload_ref = utils.unload_add(function(){that.ws.close()}); + that.ws.onclose = function() { + that.ri._didMessage(utils.closeFrame(1006, "WebSocket connection broken")); + }; +}; + +WebSocketTransport.prototype.doSend = function(data) { + this.ws.send('[' + data + ']'); +}; + +WebSocketTransport.prototype.doCleanup = function() { + var that = this; + var ws = that.ws; + if (ws) { + ws.onmessage = ws.onclose = null; + ws.close(); + utils.unload_del(that.unload_ref); + that.unload_ref = that.ri = that.ws = null; + } +}; + +WebSocketTransport.enabled = function() { + return !!(_window.WebSocket || _window.MozWebSocket); +}; + +// In theory, ws should require 1 round trip. But in chrome, this is +// not very stable over SSL. Most likely a ws connection requires a +// separate SSL connection, in which case 2 round trips are an +// absolute minumum. +WebSocketTransport.roundTrips = 2; +// [*] End of lib/trans-websocket.js + + +// [*] Including lib/trans-sender.js +/* + * ***** BEGIN LICENSE BLOCK ***** + * Copyright (c) 2011-2012 VMware, Inc. + * + * For the license see COPYING. + * ***** END LICENSE BLOCK ***** + */ + +var BufferedSender = function() {}; +BufferedSender.prototype.send_constructor = function(sender) { + var that = this; + that.send_buffer = []; + that.sender = sender; +}; +BufferedSender.prototype.doSend = function(message) { + var that = this; + that.send_buffer.push(message); + if (!that.send_stop) { + that.send_schedule(); + } +}; + +// For polling transports in a situation when in the message callback, +// new message is being send. If the sending connection was started +// before receiving one, it is possible to saturate the network and +// timeout due to the lack of receiving socket. To avoid that we delay +// sending messages by some small time, in order to let receiving +// connection be started beforehand. This is only a halfmeasure and +// does not fix the big problem, but it does make the tests go more +// stable on slow networks. +BufferedSender.prototype.send_schedule_wait = function() { + var that = this; + var tref; + that.send_stop = function() { + that.send_stop = null; + clearTimeout(tref); + }; + tref = utils.delay(25, function() { + that.send_stop = null; + that.send_schedule(); + }); +}; + +BufferedSender.prototype.send_schedule = function() { + var that = this; + if (that.send_buffer.length > 0) { + var payload = '[' + that.send_buffer.join(',') + ']'; + that.send_stop = that.sender(that.trans_url, payload, function(success, abort_reason) { + that.send_stop = null; + if (success === false) { + that.ri._didClose(1006, 'Sending error ' + abort_reason); + } else { + that.send_schedule_wait(); + } + }); + that.send_buffer = []; + } +}; + +BufferedSender.prototype.send_destructor = function() { + var that = this; + if (that._send_stop) { + that._send_stop(); + } + that._send_stop = null; +}; + +var jsonPGenericSender = function(url, payload, callback) { + var that = this; + + if (!('_send_form' in that)) { + var form = that._send_form = _document.createElement('form'); + var area = that._send_area = _document.createElement('textarea'); + area.name = 'd'; + form.style.display = 'none'; + form.style.position = 'absolute'; + form.method = 'POST'; + form.enctype = 'application/x-www-form-urlencoded'; + form.acceptCharset = "UTF-8"; + form.appendChild(area); + _document.body.appendChild(form); + } + var form = that._send_form; + var area = that._send_area; + var id = 'a' + utils.random_string(8); + form.target = id; + form.action = url + '/jsonp_send?i=' + id; + + var iframe; + try { + // ie6 dynamic iframes with target="" support (thanks Chris Lambacher) + iframe = _document.createElement('