Weex如何实现对话框 #45

简介: Weex如何实现对话框 #45
<template>
    <div class="modal-wrapper" v-if="show">
        <div class="modal-mask" />
        <div class="dialog-box" :style="{top:top + 'px'}">
            <slot />
            <div class="dialog-footer" v-if="single">
                <div class="footer-btn cancel"
                    @click="secondaryClicked">
                    <text
                        class="btn-text"
                        :style="{ color: secondBtnColor }"
                    >{{ cancelText }}</text>
                </div>
                <div
                    class="footer-btn confirm"
                    @click="primaryClicked"
                >
                    <text
                        class="btn-text"
                        :style="{ color: mainBtnColor }"
                    >{{ confirmText }}</text>
                </div>
            </div>
            <div class="dialog-footer" v-if="!single">
                <div class="footer-btn confirm"
                    @click="primaryClicked">
                    <text
                        class="btn-text"
                        :style="{ color: mainBtnColor }"
                    >{{ confirmText }}</text>
                </div>
            </div>
        </div>
    </div>
</template>
<script>
/** 
 * 二次确认弹窗组件
 * 支持自定义标题、内容、二次确认按钮文案和样式
 * show 是否显示, 默认不显示
 * top 距离顶部的距离,默认400
 * secondBtnColor  取消按钮样式
 * mainBtnColor 确定按钮样式
 * cancelText 取消文案,默认取消
 * confirmText 确定文案,默认确定
 * single 单个按钮 or 两个按钮,默认两个按钮
*/
export default {
    name: 'Modal',
    props: {
        show: {
            type: Boolean,
            default: false,
        },
        top: {
            type: Number,
            default: 400
        },
        secondBtnColor: {
            type: String,
            default: '#666666'
        },
        mainBtnColor: {
            type: String,
            default: '#0081FF'
        },
        cancelText: {
            type: String,
            default: '取消'
        },
        confirmText: {
            type: String,
            default: '确定'
        },
        single: {
            type: Boolean,
            default: true
        },
    },
    methods: {
        secondaryClicked () {
            this.$emit('secondaryClicked', {
                type: 'cancel'
            });
        },
        primaryClicked () {
            this.$emit('primaryClicked', {
                type: 'confirm'
            });
        },
    },
};
</script>
<style scoped>
.modal-mask {
    width: 750px;
    position: fixed;
    left: 0;
    top: 0;
    bottom: 0;
    right: 0;
    opacity: 1;
    background-color: rgba(0, 0, 0, 0.6);
}
.dialog-box {
    z-index: 9999;
    position: fixed;
    left: 96px;
    width: 558px;
    border-radius:8px;
    background-color: #FFFFFF;
}
.dialog-title {
    font-size: 36px;
    text-align: center;
}
.dialog-content {
    padding-top: 36px;
    padding-bottom: 36px;
    padding-left: 36px;
    padding-right: 36px;
}
.dialog-footer {
    flex-direction: row;
    align-items: center;
    border-top-color: #F3F3F3;
    border-top-width: 1px;
}
.footer-btn {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    flex: 1;
    height: 92px;
}
.cancel {
    border-right-color: #F3F3F3;
    border-right-width: 1px;
}
.btn-text {
    font-size: 36px;
    color: #666666;
    text-align: center;
}
</style>
目录
相关文章
|
6月前
|
iOS开发 UED
Flutter 动态修改应用图标功能指南
探索Flutter中动态应用图标的实现方法,了解如何为用户提供独特体验,促进用户升级和应用内购买。
202 0
Flutter 动态修改应用图标功能指南
|
前端开发 JavaScript API
020 Umi@4 中如何实现动态菜单
020 Umi@4 中如何实现动态菜单
1049 0
020 Umi@4 中如何实现动态菜单
|
17天前
|
Dart UED 开发者
Flutter&鸿蒙next中的按钮封装:自定义样式与交互
在Flutter应用开发中,按钮是用户界面的重要组成部分。Flutter提供了多种内置按钮组件,但有时这些样式无法满足特定设计需求。因此,封装一个自定义按钮组件变得尤为重要。自定义按钮组件可以确保应用中所有按钮的一致性、可维护性和可扩展性,同时提供更高的灵活性,支持自定义颜色、形状和点击事件。本文介绍了如何创建一个名为CustomButton的自定义按钮组件,并详细说明了其样式、形状、颜色和点击事件的处理方法。
67 1
|
17天前
|
开发工具 UED
Flutter&鸿蒙next中封装一个输入框组件
本文介绍了如何创建一个简单的Flutter播客应用。首先,通过`flutter create`命令创建项目;接着,在`lib`目录下封装一个自定义输入框组件`CustomInput`;然后,在主应用文件`main.dart`中使用该输入框组件,实现简单的UI布局和功能;最后,通过`flutter run`启动应用。本文还提供了后续扩展建议,如状态管理、网络请求和UI优化。
95 1
|
3月前
|
前端开发
前端ElementPlus框架中的几种图标按钮使用方式
本文介绍了如何在Element Plus前端框架中使用带有图标的按钮,包括设置按钮大小、图标大小、按钮类型以及如何为图标添加点击事件。
318 0
|
4月前
|
小程序 开发工具 开发者
【微信小程序-原生开发】实用教程02-添加全局页面配置、页面、底部导航
【微信小程序-原生开发】实用教程02-添加全局页面配置、页面、底部导航
60 0
|
4月前
|
小程序 JavaScript
【微信小程序-原生开发】实用教程03-自定义底部导航(含自定义tabBar导航高亮需点击两次的解决方案)
【微信小程序-原生开发】实用教程03-自定义底部导航(含自定义tabBar导航高亮需点击两次的解决方案)
132 0
|
6月前
|
Dart
Flutter 中优雅切换应用主题的组件
【Flutter】使用adaptive_theme组件优雅切换应用主题:封装MaterialApp,支持light/dark/system模式,自定义色彩,保存选择,含调试按钮。安装配置、设置主题、监听切换、自定义颜色、读取配置步骤详细。代码示例与学习路径推荐。[查看完整教程](https://flutter.ducafecat.com/blog/flutter-app-theme-switch)
Flutter 中优雅切换应用主题的组件
|
6月前
|
移动开发 小程序 API
uniapp中uview组件库的NoticeBar 滚动通知 使用方法
uniapp中uview组件库的NoticeBar 滚动通知 使用方法
274 1
|
6月前
flutter中使用图标(含自制图标库方案)
flutter中使用图标(含自制图标库方案)
1591 0