///////////////////////////////////////////////////////////////////////////
|
// Copyright © 2014 - 2018 Esri. All Rights Reserved.
|
//
|
// Licensed under the Apache License Version 2.0 (the "License");
|
// you may not use this file except in compliance with the License.
|
// You may obtain a copy of the License at
|
//
|
// http://www.apache.org/licenses/LICENSE-2.0
|
//
|
// Unless required by applicable law or agreed to in writing, software
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// See the License for the specific language governing permissions and
|
// limitations under the License.
|
///////////////////////////////////////////////////////////////////////////
|
|
define(['dojo/_base/declare',
|
'dijit/_WidgetBase',
|
'dojo/_base/lang',
|
'dojo/_base/array',
|
'dojo/on',
|
'dojo/dom-class',
|
'dojo/dom-construct',
|
'dijit/registry'
|
],
|
function(declare, _WidgetBase, lang, array, on, domClass, domConstruct, registry) {
|
return declare(_WidgetBase, {
|
'baseClass': 'jimu-radio',
|
declaredClass: 'jimu.dijit.RadioBtn',
|
|
checked: false,
|
group: null,
|
|
constructor: function(){
|
},
|
postCreate: function(){
|
domConstruct.create('div', {
|
'class': 'jimu-radio-inner'
|
}, this.domNode);
|
if(this.checked){
|
domClass.add(this.domNode, 'jimu-radio-checked');
|
}
|
this.own(
|
on(this.domNode, 'click', lang.hitch(this, function(){
|
if(!this.checked){
|
this.check();
|
}
|
}))
|
);
|
},
|
|
check: function(changeOthersState){
|
if(changeOthersState === undefined){
|
changeOthersState = true;
|
}
|
this.checked = true;
|
domClass.add(this.domNode, 'jimu-radio-checked');
|
if(changeOthersState){
|
this._changeOthersState(false);
|
}
|
this.onStateChange();
|
},
|
|
uncheck: function(changeOthersState){
|
if(changeOthersState === undefined){
|
changeOthersState = true;
|
}
|
this.checked = false;
|
domClass.remove(this.domNode, 'jimu-radio-checked');
|
if(changeOthersState){
|
this._changeOthersState(false);
|
}
|
this.onStateChange();
|
},
|
|
_changeOthersState: function(state){
|
if(this.group === null){
|
return;
|
}
|
array.forEach(registry.toArray(), function(dijit){
|
if(dijit.id !== this.id && dijit['class'] === this['class'] && dijit.group === this.group){
|
if(state){
|
dijit.check(false);
|
}else{
|
dijit.uncheck(false);
|
}
|
}
|
}, this);
|
},
|
|
onStateChange: function(){
|
|
}
|
});
|
});
|