Commit 846b69f6 authored by Bastien ROUCARIÈS's avatar Bastien ROUCARIÈS

New upstream version 1.13.0+dfsg

parent cdad10dc
# Set the default behavior, in case users don't have core.autocrlf set
* text=auto
# Files that should always be normalized and converted to native line
# endings on checkout.
*.js text
*.json text
*.htm text
*.html text
*.svg text
*.txt text
*.xml text
*.xsl text
*.dtd text
*.css text
*.rest text
*.rst text
*.md text
*.php text
*.phps text
*.inc text
*.sh text
*.bat text
*.styl text
*.less text
Makefile text
README text
CHANGELOG text
LICENSE text
INSTALL text
BUILD text
# Files that are truly binary and should not be modified
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.jar binary
*.zip binary
*.psd binary
......@@ -15,13 +15,11 @@ define([
// 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.
// By default, it's enabled for IE6-11, excluding Windows Phone 8.
// 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)));
(has("ie") || has("trident")) && !/IEMobile\/10\.0/.test(navigator.userAgent)); // No iframe on WP8, to match 1.9 behavior
var _frames = new function(){
// summary:
......
......@@ -27,17 +27,16 @@ If your desired contribution is more than a non-trivial fix, you should discuss
## Contributor License Agreement
We require all contributions, to be covered under the Dojo Foundation's [Contributor License Agreement][cla]. This can
We require all contributions, to be covered under the JS Foundation's [Contributor License Agreement][cla]. This can
be done electronically and essentially ensures that you are making it clear that your contributions are your
contributions, you have the legal right to contribute and you are transferring the copyright of your works to the Dojo
Foundation.
If you are an unfamiliar contributor to the committer assessing your pull request, it is best to make it clear how
you are covered by a CLA in the notes of the pull request. The committer will [verify][claCheck] your status.
you are covered by a CLA in the notes of the pull request. A bot will verify your status.
If your GitHub user id you are submitting your pull request from differs from the Dojo Community ID or e-mail address
which you have signed your CLA under, you should specifically note what you have your CLA filed under (and for CCLA
that you are listed under your companies authorised contributors).
If your GitHub user id you are submitting your pull request from differs from the e-mail address
which you have signed your CLA under, you should specifically note what you have your CLA filed under.
# Submitting a Pull Request
......@@ -215,8 +214,7 @@ unfamiliar to those who are just starting to contribute.
[bug database]: http://bugs.dojotoolkit.org/
[support forum]: http://dojotoolkit.org/community/
[dojo-contrib]: http://mail.dojotoolkit.org/mailman/listinfo/dojo-contributors
[cla]: http://dojofoundation.org/about/cla
[claCheck]: http://dojofoundation.org/about/claCheck
[cla]: http://js.foundation/CLA
[Creating a Pull Request]: https://help.github.com/articles/creating-a-pull-request
[Fork a Repo]: https://help.github.com/articles/fork-a-repo
[Intern]: http://theintern.io/
......
......@@ -7,6 +7,7 @@ define([
"dojo/date/stamp", // stamp.fromISOString
"dojo/dom", // dom.setSelectable
"dojo/dom-class", // domClass.contains
"dojo/dom-attr",
"dojo/_base/lang", // lang.getObject, lang.hitch
"dojo/on",
"dojo/sniff", // has("ie") has("webkit")
......@@ -16,7 +17,7 @@ define([
"dojo/text!./templates/Calendar.html",
"./a11yclick", // not used directly, but template has ondijitclick in it
"./hccss" // not used directly, but sets CSS class on <body>
], function(array, declare, cldrSupplemental, date, locale, stamp, dom, domClass, lang, on, has, string, _WidgetBase, _TemplatedMixin, template){
], function(array, declare, cldrSupplemental, date, locale, stamp, dom, domClass, domAttr, lang, on, has, string, _WidgetBase, _TemplatedMixin, template){
// module:
......@@ -160,7 +161,7 @@ define([
// summary:
// Convert Number into Date, or copy Date object. Then, round to nearest day,
// setting to 1am to avoid issues when DST shift occurs at midnight, see #8521, #9366)
if(value){
if(value || value === 0){
value = new this.dateClassObj(value);
value.setHours(1, 0, 0, 0);
}
......@@ -258,7 +259,13 @@ define([
template.dijitDateValue = dateVal;
// Set Date string (ex: "13").
this._setText(this.dateLabels[idx], date.getDateLocalized ? date.getDateLocalized(this.lang) : date.getDate());
var localizedDate = date.getDateLocalized ? date.getDateLocalized(this.lang) : date.getDate()
this._setText(this.dateLabels[idx], localizedDate);
domAttr.set(template, 'aria-label', locale.format(date, {
selector: 'date',
formatLength: 'long'
}));
}, this);
},
......@@ -423,7 +430,7 @@ define([
// protected
evt.stopPropagation();
evt.preventDefault();
for(var node = evt.target; node && !node.dijitDateValue; node = node.parentNode){
for(var node = evt.target; node && !node.dijitDateValue && node.dijitDateValue !== 0; node = node.parentNode){
;
}
if(node && !domClass.contains(node, "dijitCalendarDisabledDate")){
......
......@@ -15,6 +15,7 @@ define([
"dojo/on",
"dojo/ready",
"dojo/sniff", // has("ie") has("opera") has("dijit-legacy-requires")
"dojo/touch",
"dojo/window", // winUtils.getBox, winUtils.get
"dojo/dnd/Moveable", // Moveable
"dojo/dnd/TimedMoveable", // TimedMoveable
......@@ -32,7 +33,7 @@ define([
"./a11yclick", // template uses ondijitclick
"dojo/i18n!./nls/common"
], function(require, array, aspect, declare, Deferred,
dom, domClass, domGeometry, domStyle, fx, i18n, keys, lang, on, ready, has, winUtils,
dom, domClass, domGeometry, domStyle, fx, i18n, keys, lang, on, ready, has, touch, winUtils,
Moveable, TimedMoveable, focus, manager, _Widget, _TemplatedMixin, _CssStateMixin, _FormMixin, _DialogMixin,
DialogUnderlay, ContentPane, utils, template){
......@@ -126,6 +127,9 @@ define([
aspect.after(this, "onExecute", lang.hitch(this, "hide"), true);
aspect.after(this, "onCancel", lang.hitch(this, "hide"), true);
on(this.closeButtonNode, touch.press, function(e){
e.stopPropagation();
});
this._modalconnects = [];
},
......
......@@ -605,7 +605,11 @@ define([
val = lang.trim(val);
var renderVal = this.renderAsHtml ? val : val.replace(/&/gm, "&amp;").replace(/</gm, "&lt;").replace(/>/gm, "&gt;").replace(/"/gm, "&quot;").replace(/\n/g, "<br>");
this.displayNode.innerHTML = renderVal || this.noValueIndicator;
if(this.editorParams && this.editorParams.type === 'password'){
this.displayNode.innerHTML = "********";
}else{
this.displayNode.innerHTML = renderVal || this.noValueIndicator;
}
this._set("value", val);
if(this._started){
......
Dojo is available under *either* the terms of the modified BSD license *or* the
Academic Free License version 2.1. As a recipient of Dojo, you may choose which
license to receive this code under (except as noted in per-module LICENSE
files). Some modules may not be the copyright of the Dojo Foundation. These
files). Some modules may not be the copyright of the JS Foundation. These
modules contain explicit declarations of copyright in both the LICENSE files in
the directories in which they reside and in the code itself. No external
contributions are allowed under licenses which are fundamentally incompatible
......@@ -13,7 +13,7 @@ The text of the AFL and BSD licenses is reproduced below.
The "New" BSD License:
**********************
Copyright (c) 2005-2016, The Dojo Foundation
Copyright (c) 2005-2016, The JS Foundation
All rights reserved.
Redistribution and use in source and binary forms, with or without
......@@ -24,7 +24,7 @@ modification, are permitted provided that the following conditions are met:
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of the Dojo Foundation nor the names of its contributors
* Neither the name of the JS Foundation nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
......
......@@ -20,7 +20,7 @@ If you are starting out with Dojo and Dijit, the following resources are availab
## License and Copyright
The Dojo Toolkit (including this package) is dual licensed under BSD 3-Clause and AFL. For more information on the
license please see the [License Information][]. The Dojo Toolkit is Copyright (c) 2005-2016, The Dojo Foundation. All
license please see the [License Information][]. The Dojo Toolkit is Copyright (c) 2005-2016, The JS Foundation. All
rights reserved.
[core]: https://github.com/dojo/dojo
......
......@@ -414,10 +414,10 @@ define([
}
// If we've orphaned the focused node then move focus to the root node
if(tree.lastFocusedChild && !dom.isDescendant(tree.lastFocusedChild, tree.domNode)){
if(tree.lastFocusedChild && !dom.isDescendant(tree.lastFocusedChild.domNode, tree.domNode)){
delete tree.lastFocusedChild;
}
if(focusedChild && !dom.isDescendant(focusedChild, tree.domNode)){
if(focusedChild && !dom.isDescendant(focusedChild.domNode, tree.domNode)){
tree.focus(); // could alternately focus this node (parent of the deleted node)
}
......@@ -1647,10 +1647,10 @@ define([
}
// If we've orphaned the focused node then move focus to the root node
if(this.lastFocusedChild && !dom.isDescendant(this.lastFocusedChild, this.domNode)){
if(this.lastFocusedChild && !dom.isDescendant(this.lastFocusedChild.domNode, this.domNode)){
delete this.lastFocusedChild;
}
if(this.focusedChild && !dom.isDescendant(this.focusedChild, this.domNode)){
if(this.focusedChild && !dom.isDescendant(this.focusedChild.domNode, this.domNode)){
this.focus();
}
......
......@@ -110,7 +110,7 @@ define([
//
// Also, don't call preventDefault() on MSPointerDown event (on IE10) because that prevents the button
// from getting focus, and then the focus manager doesn't know what's going on (#17262)
if(e.type != "MSPointerDown" && e.type != "pointerdown"){
if(e.type != "MSPointerDown"){
e.preventDefault();
}
......
......@@ -15,7 +15,7 @@
"url": "https://github.com/dojo/dijit.git"
},
"dependencies": {
"dojo": "1.11.0"
"dojo": "1.13.0"
},
"devDependencies": {
}
......
......@@ -76,8 +76,8 @@ define([
// reference that variable. Alternately, could have a _getLabelAttr() method to return
// this.containerNode.innerHTML.
this.label = lang.trim(this.containerNode.innerHTML);
this.onLabelSet(); // set this.titleNode.title etc. according to label
}
this.onLabelSet(); // set this.titleNode.title etc. according to label
},
_setShowLabelAttr: function(val){
......
define([
"dojo/_base/declare", // declare
"dojo/keys", // keys.DOWN_ARROW keys.ENTER keys.ESCAPE keys.TAB keys.UP_ARROW
"dojo/query",
"dojo/_base/lang", // lang.hitch
"../_TimePicker",
"./_DateTimeTextBox"
], function(declare, keys, lang, _TimePicker, _DateTimeTextBox){
], function(declare, keys, query, lang, _TimePicker, _DateTimeTextBox){
// module:
// dijit/form/TimeTextBox
......@@ -46,6 +47,18 @@ define([
openDropDown: function(/*Function*/ callback){
this.inherited(arguments);
// Fix #18683
var selectedNode = query(".dijitTimePickerItemSelected", this.dropDown.domNode),
parentNode=this.dropDown.domNode.parentNode;
if(selectedNode[0]){
// Center the selected node in the client area of the popup.
parentNode.scrollTop=selectedNode[0].offsetTop-(parentNode.clientHeight-selectedNode[0].clientHeight)/2;
}else{
// There is no currently selected value. Position the list so that the median
// node is visible.
parentNode.scrollTop=(parentNode.scrollHeight-parentNode.clientHeight)/2;
}
// For screen readers, as user arrows through values, populate <input> with latest value.
this.dropDown.on("input", lang.hitch(this, function(){
this.set('value', this.dropDown.get("value"), false);
......
......@@ -131,31 +131,19 @@ define([
if(this.disabled || this.readOnly){ return; }
var key = evt.charOrCode;
var doSearch = false;
this._prev_key_backspace = false;
switch(key){
case keys.DELETE:
case keys.BACKSPACE:
this._prev_key_backspace = true;
this._maskValidSubsetError = true;
doSearch = true;
break;
default:
// Non char keys (F1-F12 etc..) shouldn't start a search..
// Ascii characters and IME input (Chinese, Japanese etc.) should.
//IME input produces keycode == 229.
doSearch = typeof key == 'string' || key == 229;
if (key == keys.DELETE || key == keys.BACKSPACE) {
this._prev_key_backspace = true;
this._maskValidSubsetError = true;
}
if(doSearch){
// need to wait a tad before start search so that the event
// bubbles through DOM and we have value visible
if(!this.store){
this.onSearch();
}else{
this.searchTimer = this.defer("_startSearchFromInput", 1);
}
// need to wait a tad before start search so that the event
// bubbles through DOM and we have value visible
if(!this.store){
this.onSearch();
}else{
this.searchTimer = this.defer("_startSearchFromInput", 1);
}
},
......
......@@ -79,6 +79,12 @@ define([
this.inherited(arguments);
},
removeChild: function(/*dijit/_WidgetBase*/ child) {
// Overrides StackContainer.removeChild().
domClass.remove(child.domNode, "dijitTabPane");
this.inherited(arguments);
},
startup: function(){
if(this._started){
return;
......
{
"name": "dijit",
"version": "1.11.0",
"version": "1.13.0",
"directories": {
"lib": "."
},
"main": "main",
"dependencies": {
"dojo": "1.11.0"
"dojo": "1.13.0"
},
"description": "Dijit provides a complete collection of user interface controls based on Dojo, giving you the power to create web applications that are highly optimized for usability, performance, internationalization, accessibility, but above all deliver an incredible user experience.",
"license" : "BSD-3-Clause OR AFL-2.1",
......
......@@ -252,7 +252,7 @@ define([
// True if widget is LTR, false if widget is RTL. Affects the behavior of "above" and "below"
// positions slightly.
// example:
// | placeAroundNode(node, aroundNode, {'BL':'TL', 'TR':'BR'});
// | placeAroundNode(node, aroundNode, ['below', 'above-alt']);
// This will try to position node such that node's top-left corner is at the same position
// as the bottom left corner of the aroundNode (ie, put node below
// aroundNode, with left edges aligned). If that fails it will try to put
......@@ -305,7 +305,7 @@ define([
}
parent = parent.parentNode;
}
}
}
var x = aroundNodePos.x,
y = aroundNodePos.y,
......
<!DOCTYPE html>
<html>
<head>
<title>Menu Automated (non-robot) Tests</title>
<script type="text/javascript" src="boilerplate.js"></script>
<script type="text/javascript">
require([
"doh/runner",
"dijit/InlineEditBox",
"dijit/registry",
"dojo/parser",
"dojo/domReady!"
], function(doh, InlineEditBox, registry, parser){
doh.register("parse", function parse(){
return parser.parse();
});
doh.register("password", [
function charsAreHidden() {
var password = registry.byId('password'),
notExpected = "password";
password.set("value", notExpected);
doh.isNot(notExpected, password.displayNode.innerHTML);
}
]);
doh.run();
});
</script>
</head>
<body class="claro">
<h1 class="testTitle">Menu Automated (non-robot) tests</h1>
<input id="password" data-dojo-type="dijit/InlineEditBox"
type="password"
>
</div>
</body>
</html>
......@@ -386,6 +386,7 @@
<span id="level4_copy" data-dojo-type="dijit/MenuItem" data-dojo-textdir="ltr" data-dojo-props='iconClass:"dijitEditorIcon dijitEditorIconCopy"'>Copy!</span>
<span id="level4_paste" data-dojo-type="dijit/MenuItem" data-dojo-textdir="rtl" data-dojo-props='iconClass:"dijitEditorIcon dijitEditorIconPaste"'>Paste!</span>
</span>
</span>
</span>
</span>
</span>
......@@ -395,6 +396,5 @@
</p>
<p id="buttonContainer" style="display: none;"></p>
<p id="dropdownButtonContainer" style="display: none;"></p>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<title>Dijit RadioButton Bidi test</title>
<link rel="stylesheet" href="../../../themes/claro/claro.css">
<script type="text/javascript" src="../../../../dojo/dojo.js"
data-dojo-config="isDebug: true, async: true, has: { 'dojo-bidi': true }"></script>
<script>
require([
"doh/runner",
"dojo/parser",
"dijit/registry",
"dijit/form/RadioButton",
"dojo/domReady!"
], function(doh, parser, registry){
doh.register("basic", [
{
name: "creation",
runTest: function(){
// then() calls in parser() make it asynchronous even when module already loaded
return parser.parse().then(function(){
doh.t(registry.byId("radio"), "created");
});
}
}
]);
doh.run();
});
</script>
</head>
<body>
<div data-dojo-type="dijit/form/RadioButton" id="radio"></div>
</body>
</html>
\ No newline at end of file
......@@ -10,6 +10,8 @@ define(["doh/main", "require", "dojo/sniff"], function(doh, require, has){