| /** |
| * aui-actionsheet.js |
| * @author 流浪男 |
| * Licensed under the MIT license. |
| * http://www.opensource.org/licenses/mit-license.php |
| */ |
| (function( window, undefined ) { |
| "use strict"; |
| var auiActionsheet = function() { |
| }; |
| var isShow = false; |
| auiActionsheet.prototype = { |
| init: function(params,callback){ |
| this.frameBounces = params.frameBounces; |
| this.title = params.title; |
| this.buttons = params.buttons; |
| this.cancelTitle = params.cancelTitle; |
| this.destructiveTitle = params.destructiveTitle; |
| this.maskDiv; |
| this.actionsheetDiv; |
| var self = this; |
| self.open(params,callback); |
| }, |
| open: function(params,callback) { |
| var titleHtml='',buttonsHtml='',destructiveHtml='',cancelHtml='',btnHtml=''; |
| var self = this; |
| if(self.actionsheetDiv || (!self.title && !self.buttons && !self.cancelTitle && !self.destructiveTitle))return; |
| if(!self.maskDiv){ |
| self.maskDiv = document.createElement("div"); |
| self.maskDiv.className = "aui-mask"; |
| document.body.appendChild(self.maskDiv); |
| } |
| self.actionsheetDiv = document.createElement("div"); |
| self.actionsheetDiv.className = "aui-actionsheet"; |
| document.body.appendChild(self.actionsheetDiv); |
| if(self.title){ |
| titleHtml = '<div class="aui-actionsheet-title aui-border-b aui-font-size-12">'+self.title+'</div>'; |
| } |
| if(self.buttons && self.buttons.length){ |
| for(var i = 0; i < self.buttons.length;i++){ |
| if(i == self.buttons.length-1){ |
| buttonsHtml += '<div class="aui-actionsheet-btn-item">'+self.buttons[i]+'</div>'; |
| }else{ |
| buttonsHtml += '<div class="aui-actionsheet-btn-item aui-border-b">'+self.buttons[i]+'</div>'; |
| } |
| } |
| } |
| if(self.destructiveTitle){ |
| destructiveHtml = '<div class="aui-actionsheet-btn-item aui-border-t aui-text-danger">'+self.destructiveTitle+'</div>'; |
| }else{ |
| var destructiveHtml = ''; |
| } |
| if(self.title || (self.buttons && self.buttons.length)){ |
| btnHtml = '<div class="aui-actionsheet-btn">'+titleHtml+''+buttonsHtml+''+destructiveHtml+'</div>'; |
| } |
| if(self.cancelTitle){ |
| cancelHtml = '<div class="aui-actionsheet-btn"><div class="aui-actionsheet-btn-item">'+self.cancelTitle+'</div></div>'; |
| } |
| self.actionsheetDiv.insertAdjacentHTML('beforeend', btnHtml+cancelHtml); |
| var actionsheetHeight = document.querySelector(".aui-actionsheet").offsetHeight; |
| self.maskDiv.classList.add("aui-mask-in"); |
| self.actionsheetDiv.style.webkitTransform = self.actionsheetDiv.style.transform = "translate3d(0,0,0)"; |
| self.actionsheetDiv.style.opacity = 1; |
| self.actionsheetDiv.addEventListener("touchmove", function(event){ |
| event.preventDefault(); |
| }) |
| self.maskDiv.addEventListener("touchmove", function(event){ |
| event.preventDefault(); |
| }) |
| if(typeof(api) != 'undefined' && typeof(api) == 'object' && self.frameBounces){ |
| api.setFrameAttr({ |
| bounces:false |
| }); |
| } |
| var actionsheetButtons = document.querySelectorAll(".aui-actionsheet-btn-item"); |
| if(actionsheetButtons && actionsheetButtons.length > 0){ |
| setTimeout(function(){ |
| self.maskDiv.onclick = function(){self.close();return;}; |
| for(var ii = 0; ii < actionsheetButtons.length; ii++){ |
| (function(e){ |
| actionsheetButtons[e].onclick = function(){ |
| if(callback){ |
| callback({ |
| buttonIndex: e+1, |
| buttonTitle: this.textContent |
| }); |
| }; |
| self.close(); |
| return; |
| } |
| })(ii) |
| } |
| }, 350) |
| } |
| }, |
| close: function(){ |
| var self = this; |
| if(typeof(api) != 'undefined' && typeof(api) == 'object' && self.frameBounces){ |
| api.setFrameAttr({ |
| bounces:true |
| }); |
| } |
| if(self.actionsheetDiv){ |
| var actionsheetHeight = self.actionsheetDiv.offsetHeight; |
| self.actionsheetDiv.style.webkitTransform = self.actionsheetDiv.style.transform = "translate3d(0,"+actionsheetHeight+"px,0)"; |
| self.maskDiv.style.opacity = 0; |
| setTimeout(function(){ |
| if(self.maskDiv){ |
| self.maskDiv.parentNode.removeChild(self.maskDiv); |
| } |
| self.actionsheetDiv.parentNode.removeChild(self.actionsheetDiv); |
| self.actionsheetDiv = self.maskDiv = false; |
| }, 300) |
| } |
| } |
| }; |
| window.auiActionsheet = auiActionsheet; |
| })(window); |