/////////////////////////////////////////////////////////////////////////// // 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', 'dojo/_base/lang', 'dojo/_base/html', 'dojo/on', 'dijit/_WidgetBase', 'dijit/_TemplatedMixin', 'jimu/utils' ], function(declare, lang, html, on, _WidgetBase, _TemplatedMixin, jimuUtils) { return declare([_WidgetBase, _TemplatedMixin], { baseClass: 'jimu-foldable-dijit', width: '100%', titleHeight: 20, content: null, //content is a dijit folded: false, templateString: '
' + '
' + '
' + '
' + '
' + '
', startup: function() { this.inherited(arguments); html.setStyle(this.titleNode, { width: this.width, height: this.titleHeight + 'px' }); html.setStyle(this.containerNode, { top: this.titleHeight + 'px' }); html.setStyle(this.titleLabelNode, { lineHeight: this.titleHeight + 'px' }); if (this.label) { this.setTitleLabel(this.label); } this.foldEnable = true; this.own(on(this.titleNode, 'click', lang.hitch(this, function(){ this.onFoldableNodeClick(); }))); }, setTitleLabel: function(label) { this.label = label; this.titleLabelNode.innerHTML = jimuUtils.stripHTML(label); this.titleLabelNode.title = label; }, createFoldableBtn: function() { this.foldableNode = html.create('div', { 'class': 'foldable-btn jimu-float-trailing' }, this.titleNode); this.own(on(this.foldableNode, 'click', lang.hitch(this, function(evt){ evt.stopPropagation(); this.onFoldableNodeClick(); }))); }, onFoldableNodeClick: function(){ if(!this.foldEnable){ return; } if(this.folded){ this.folded = false; html.removeClass(this.foldableNode, 'folded'); }else{ this.folded = true; html.addClass(this.foldableNode, 'folded'); } this.onFoldStateChanged(); }, onFoldStateChanged: function(){} }); });