/**
* @component ActionSheet
* @description
*
* ## 弹出层 / ActionSheet确认单组件
*
* ### 简介
*
* ActionSheet是一个从底部弹出的按钮表单,一般都是由很多Button组成。当用户点击确认完毕后关闭. 可以把它当做**确认单组件**, 或者**单选组件**, 但是按钮建议不超过6个, 如果超过了组件也能正确处理,
* 比如滚动选择.
*
* ### 关于buttons属性
* - role属性: 可以是cancel(关闭)/destructive(警告/删除)/null, destructive在IOS下有用, 样式为红色字体
* - icon属性: 具体参考Icon组件的写法
*
* ### 注意点
*
* - 组件挂载点在App组件中定义, 是在业务页面之上, 且开启loading/toast都不会遮盖他.
* - 弹出层默认都是根据路由相应的, 当路由切换则弹层自动关闭, 这部分可用`dismissOnPageChange`修改.
* - 可以点击背景关闭组件, 这个在`enableBackdropDismiss`中定义.
* - 建议在关闭动画Promise之后处理请他业务, 这样动画会顺滑一些, 这里监听动画的关闭不是使用setTimeout, 而是监听transitionEnd事件, 因此更可靠.
*
* @demo #/action-sheet
* @example
*
* import { ActionSheet } from 'vimo'
*
* ActionSheet.present({
* title: '请选择操作',
* subTitle: '注意,选择后不能撤销!',
* cssClass: 'ActionSheetCssClass1 ActionSheetCssClass2',
* enableBackdropDismiss: true,
* buttons: [
* {
* text: '删除',
* role: 'destructive',
* icon: 'trash',
* cssClass: ' DestructiveBtnCssClass1 DestructiveBtnCssClass2 ',
* handler: () => {
* console.log('Destructive clicked');
* }
* },
* {
* text: '分享',
* icon: 'share',
* handler: () => {
* console.log('Archive1 clicked');
* }
* },
* {
* text: '播放',
* icon: 'play',
* handler: () => {
* console.log('Archive4 clicked');
* }
* },
* {
* text: '取消',
* role: 'cancel',
* icon: 'close',
* handler: () => {
* ActionSheet.dismiss().then((data) => {
* console.debug('promise的退出方式')
* });
* }
* }
* ]
* })
*
*/
/**
* @function present
* @description
* 开启ActionSheet组件, 当开启动画过度完毕时触发 `Promise` 的 `resolve` 。
* @param {object} options - 传入参数
* @param {String} [options.title] - ActionSheet的标题
* @param {string} [options.subTitle] - ActionSheet的副标题
* @param {string} [options.cssClass] - 自定义样式
* @param {Boolean} [options.enableBackdropDismiss=true] - 允许点击backdrop关闭actionsheet
* @param {Boolean} [options.dismissOnPageChange=true] - 路由切换关闭组件
* @param {string} [options.mode=ios] - 样式模式
* @param {string} [options.isH5=false] - 强制使用H5组件
* @param {Array} [options.buttons] - button数组,包含全部role
* @param {Array} options.buttons.text - button显示文本
* @param {Array} options.buttons.icon - button显示的icon的name, 具体参考Icon组件
* @param {Array} options.buttons.role - 可以是cancel(关闭)/destructive(警告/删除)/null
* @param {Array} options.buttons.handler - 默认是关闭组件
* @param {Array} options.buttons.cssClass - 自定义样式
* @return {Promise}
* */
/**
* @function dismiss
* @description
* 关闭ActionSheet组件, 当关闭动画过度完毕时触发 `Promise` 的 `resolve` 。
* @return {Promise}
* */
import actionSheetComponent from './action-sheet.vue'
import GeneratePopUpInstance from '../../util/GeneratePopUpInstance.js'
class ActionSheetInstance extends GeneratePopUpInstance {
isPresentHandled (options) {
return !options.isH5 &&
window.VM &&
window.VM.platform &&
window.VM.platform.actionSheet &&
window.VM.platform.actionSheet(options)
}
}
export default new ActionSheetInstance(actionSheetComponent, 'sheetPortal')