| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 | import _extends from "@babel/runtime/helpers/esm/extends";import _mergeJSXProps from "@vue/babel-helper-vue-jsx-merge-props";import Vue from 'vue'; // Utilsimport { createNamespace } from '../utils';import { emit, inherit } from '../utils/functional'; // Mixinsimport { popupMixinProps } from '../mixins/popup'; // Componentsimport Icon from '../icon';import Popup from '../popup';import Loading from '../loading'; // Typesvar _createNamespace = createNamespace('action-sheet'),    createComponent = _createNamespace[0],    bem = _createNamespace[1];function ActionSheet(h, props, slots, ctx) {  var title = props.title,      cancelText = props.cancelText,      closeable = props.closeable;  function onCancel() {    emit(ctx, 'input', false);    emit(ctx, 'cancel');  }  function Header() {    if (title) {      return h("div", {        "class": bem('header')      }, [title, closeable && h(Icon, {        "attrs": {          "name": props.closeIcon        },        "class": bem('close'),        "on": {          "click": onCancel        }      })]);    }  }  function Option(item, index) {    var disabled = item.disabled,        loading = item.loading,        callback = item.callback;    function onClickOption(event) {      event.stopPropagation();      if (disabled || loading) {        return;      }      if (callback) {        callback(item);      }      if (props.closeOnClickAction) {        emit(ctx, 'input', false);      }      Vue.nextTick(function () {        emit(ctx, 'select', item, index);      });    }    function OptionContent() {      if (loading) {        return h(Loading, {          "class": bem('loading-icon')        });      }      return [h("span", {        "class": bem('name')      }, [item.name]), item.subname && h("div", {        "class": bem('subname')      }, [item.subname])];    }    return h("button", {      "attrs": {        "type": "button"      },      "class": [bem('item', {        disabled: disabled,        loading: loading      }), item.className],      "style": {        color: item.color      },      "on": {        "click": onClickOption      }    }, [OptionContent()]);  }  function CancelText() {    if (cancelText) {      return [h("div", {        "class": bem('gap')      }), h("button", {        "attrs": {          "type": "button"        },        "class": bem('cancel'),        "on": {          "click": onCancel        }      }, [cancelText])];    }  }  function Description() {    var description = (slots.description == null ? void 0 : slots.description()) || props.description;    if (description) {      return h("div", {        "class": bem('description')      }, [description]);    }  }  return h(Popup, _mergeJSXProps([{    "class": bem(),    "attrs": {      "position": "bottom",      "round": props.round,      "value": props.value,      "overlay": props.overlay,      "duration": props.duration,      "lazyRender": props.lazyRender,      "lockScroll": props.lockScroll,      "getContainer": props.getContainer,      "closeOnPopstate": props.closeOnPopstate,      "closeOnClickOverlay": props.closeOnClickOverlay,      "safeAreaInsetBottom": props.safeAreaInsetBottom    }  }, inherit(ctx, true)]), [Header(), Description(), h("div", {    "class": bem('content')  }, [props.actions && props.actions.map(Option), slots.default == null ? void 0 : slots.default()]), CancelText()]);}ActionSheet.props = _extends({}, popupMixinProps, {  title: String,  actions: Array,  duration: [Number, String],  cancelText: String,  description: String,  getContainer: [String, Function],  closeOnPopstate: Boolean,  closeOnClickAction: Boolean,  round: {    type: Boolean,    default: true  },  closeable: {    type: Boolean,    default: true  },  closeIcon: {    type: String,    default: 'cross'  },  safeAreaInsetBottom: {    type: Boolean,    default: true  },  overlay: {    type: Boolean,    default: true  },  closeOnClickOverlay: {    type: Boolean,    default: true  }});export default createComponent(ActionSheet);
 |