123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- /**
- * aui-dialog.js
- * @author 流浪男
- * @todo more things to abstract, e.g. Loading css etc.
- * Licensed under the MIT license.
- * http://www.opensource.org/licenses/mit-license.php
- */
- (function( window, undefined ) {
- "use strict";
- var auiDialog = function() {
- };
- var isShow = false;
- auiDialog.prototype = {
- params: {
- title:'',
- msg:'',
- buttons: ['取消','确定'],
- input:false
- },
- create: function(params,callback) {
- var self = this;
- var dialogHtml = '';
- var buttonsHtml = '';
- var headerHtml = params.title ? '<div class="aui-dialog-header">' + params.title + '</div>' : '<div class="aui-dialog-header">' + self.params.title + '</div>';
- if(params.input){
- params.text = params.text ? params.text: '';
- var msgHtml = '<div class="aui-dialog-body"><input type="text" placeholder="'+params.text+'"></div>';
- }else{
- var msgHtml = params.msg ? '<div class="aui-dialog-body">' + params.msg + '</div>' : '<div class="aui-dialog-body">' + self.params.msg + '</div>';
- }
- var buttons = params.buttons ? params.buttons : self.params.buttons;
- if (buttons && buttons.length > 0) {
- for (var i = 0; i < buttons.length; i++) {
- buttonsHtml += '<div class="aui-dialog-btn" tapmode button-index="'+i+'">'+buttons[i]+'</div>';
- }
- }
- var footerHtml = '<div class="aui-dialog-footer">'+buttonsHtml+'</div>';
- dialogHtml = '<div class="aui-dialog">'+headerHtml+msgHtml+footerHtml+'</div>';
- document.body.insertAdjacentHTML('beforeend', dialogHtml);
- // listen buttons click
- var dialogButtons = document.querySelectorAll(".aui-dialog-btn");
- if(dialogButtons && dialogButtons.length > 0){
- for(var ii = 0; ii < dialogButtons.length; ii++){
- dialogButtons[ii].onclick = function(){
- if(callback){
- if(params.input){
- callback({
- buttonIndex: parseInt(this.getAttribute("button-index"))+1,
- text: document.querySelector("input").value
- });
- }else{
- callback({
- buttonIndex: parseInt(this.getAttribute("button-index"))+1
- });
- }
- };
- self.close();
- return;
- }
- }
- }
- self.open();
- },
- open: function(){
- if(!document.querySelector(".aui-dialog"))return;
- var self = this;
- document.querySelector(".aui-dialog").style.marginTop = "-"+Math.round(document.querySelector(".aui-dialog").offsetHeight/2)+"px";
- if(!document.querySelector(".aui-mask")){
- var maskHtml = '<div class="aui-mask"></div>';
- document.body.insertAdjacentHTML('beforeend', maskHtml);
- }
- // document.querySelector(".aui-dialog").style.display = "block";
- setTimeout(function(){
- document.querySelector(".aui-dialog").classList.add("aui-dialog-in");
- document.querySelector(".aui-mask").classList.add("aui-mask-in");
- document.querySelector(".aui-dialog").classList.add("aui-dialog-in");
- }, 10)
- document.querySelector(".aui-mask").addEventListener("touchmove", function(e){
- e.preventDefault();
- })
- document.querySelector(".aui-dialog").addEventListener("touchmove", function(e){
- e.preventDefault();
- })
- return;
- },
- close: function(){
- var self = this;
- document.querySelector(".aui-mask").classList.remove("aui-mask-in");
- document.querySelector(".aui-dialog").classList.remove("aui-dialog-in");
- document.querySelector(".aui-dialog").classList.add("aui-dialog-out");
- if (document.querySelector(".aui-dialog:not(.aui-dialog-out)")) {
- setTimeout(function(){
- if(document.querySelector(".aui-dialog"))document.querySelector(".aui-dialog").parentNode.removeChild(document.querySelector(".aui-dialog"));
- self.open();
- return true;
- },200)
- }else{
- document.querySelector(".aui-mask").classList.add("aui-mask-out");
- document.querySelector(".aui-dialog").addEventListener("webkitTransitionEnd", function(){
- self.remove();
- })
- document.querySelector(".aui-dialog").addEventListener("transitionend", function(){
- self.remove();
- })
- }
- },
- remove: function(){
- if(document.querySelector(".aui-dialog"))document.querySelector(".aui-dialog").parentNode.removeChild(document.querySelector(".aui-dialog"));
- if(document.querySelector(".aui-mask")){
- document.querySelector(".aui-mask").classList.remove("aui-mask-out");
- }
- return true;
- },
- alert: function(params,callback){
- var self = this;
- return self.create(params,callback);
- },
- prompt:function(params,callback){
- var self = this;
- params.input = true;
- return self.create(params,callback);
- }
- };
- window.auiDialog = auiDialog;
- })(window);
|