dialog.js 2.35 KB
/*
 * @Description: dialog
 * @Time: 2015/11/18
 * @author: chenglong.wang
 */

var $ = require('yoho-jquery'),
    Hammer = require('yoho-hammer');

var dialogHbs = require('plugin/dialog.hbs');

// fullWithBtn是供详情页获取限购码使用的特殊参数
exports.showDialog = function(data, callback, callbackForLeft, fullWithBtn) {
    var dialogStr,
        $dialogBox,
        defaultHideDuraton,
        $dialogWrapper,
        dialogWrapperHammer;

    $('.dialog-wrapper').remove();

    $('body').append(dialogHbs(data));

    $dialogBox = $('.dialog-box');
    $dialogWrapper = $('.dialog-wrapper');


    dialogWrapperHammer = new Hammer(document.getElementById('dialog-wrapper'));

    // 显示
    if (data.fast) {
        $dialogWrapper.css({
            display: 'block'
        });
    } else {
        $dialogWrapper.fadeIn();
    }

    if (fullWithBtn) {
        $('.dialog-wrapper .dialog-footer > span').css('width', '100%');
        $('.dialog-wrapper .dialog-content').css({
            'padding-left': '1.85rem',
            'padding-right': '1.85rem'
        });
        $dialogWrapper.css('z-index', '10');
    }

    $dialogBox.css({
        top: '50%',
        marginTop: -($dialogBox.height() / 2)
    });

    // 隐藏
    if (data.autoHide) {
        defaultHideDuraton = 1000;
        if (data.autoHide > 1) {
            defaultHideDuraton = data.autoHide;
        }
        setTimeout(function() {
            $dialogWrapper.fadeOut();
        }, defaultHideDuraton);
    }

    // 禁止在dialog上可以上下滚动
    if (!data.student) {
        $dialogWrapper.on('touchmove', function() {
            return false;
        });
    }

    dialogWrapperHammer.on('tap', function(event) {

        if ($(event.target).hasClass('dialog-left-btn')) {
            if (typeof callbackForLeft === 'function') {
                callbackForLeft();
            }
            $dialogWrapper.fadeOut();
        } else if ($(event.target).hasClass('dialog-right-btn')) {
            return callback();
        } else {
            $('.dialog-wrapper').remove();
            $('body').css({
                overflow: '',
                position: '',
            });
        }

        // 防止出现点透问题
        event.preventDefault();
        event.srcEvent.stopPropagation();
    });
};

exports.hideDialog = function() {
    $('.dialog-wrapper').remove();
};