index.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. exports.__esModule = true;
  4. exports["default"] = void 0;
  5. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  6. var _babelHelperVueJsxMergeProps = _interopRequireDefault(require("@vue/babel-helper-vue-jsx-merge-props"));
  7. var _utils = require("../utils");
  8. var _functional = require("../utils/functional");
  9. var _popup = require("../mixins/popup");
  10. var _icon = _interopRequireDefault(require("../icon"));
  11. var _loading = _interopRequireDefault(require("../loading"));
  12. var _popup2 = _interopRequireDefault(require("../popup"));
  13. var _use = (0, _utils.use)('actionsheet'),
  14. sfc = _use[0],
  15. bem = _use[1];
  16. function Actionsheet(h, props, slots, ctx) {
  17. var title = props.title,
  18. cancelText = props.cancelText;
  19. var onCancel = function onCancel() {
  20. (0, _functional.emit)(ctx, 'input', false);
  21. (0, _functional.emit)(ctx, 'cancel');
  22. };
  23. var Header = function Header() {
  24. return h("div", {
  25. "class": [bem('header'), 'van-hairline--top-bottom']
  26. }, [title, h(_icon["default"], {
  27. "attrs": {
  28. "name": "close"
  29. },
  30. "class": bem('close'),
  31. "on": {
  32. "click": onCancel
  33. }
  34. })]);
  35. };
  36. var Option = function Option(item, index) {
  37. return h("div", {
  38. "class": [bem('item', {
  39. disabled: item.disabled || item.loading
  40. }), item.className, 'van-hairline--top'],
  41. "on": {
  42. "click": function click(event) {
  43. event.stopPropagation();
  44. if (!item.disabled && !item.loading) {
  45. if (item.callback) {
  46. item.callback(item);
  47. }
  48. (0, _functional.emit)(ctx, 'select', item, index);
  49. }
  50. }
  51. }
  52. }, [item.loading ? h(_loading["default"], {
  53. "class": bem('loading'),
  54. "attrs": {
  55. "size": "20px"
  56. }
  57. }) : [h("span", {
  58. "class": bem('name')
  59. }, [item.name]), item.subname && h("span", {
  60. "class": bem('subname')
  61. }, [item.subname])]]);
  62. };
  63. return h(_popup2["default"], (0, _babelHelperVueJsxMergeProps["default"])([{
  64. "class": bem({
  65. 'safe-area-inset-bottom': props.safeAreaInsetBottom
  66. }),
  67. "attrs": {
  68. "value": props.value,
  69. "position": "bottom",
  70. "overlay": props.overlay,
  71. "lazyRender": props.lazyRender,
  72. "getContainer": props.getContainer,
  73. "closeOnClickOverlay": props.closeOnClickOverlay
  74. },
  75. "on": {
  76. "input": function input(value) {
  77. (0, _functional.emit)(ctx, 'input', value);
  78. }
  79. }
  80. }, (0, _functional.inherit)(ctx)]), [title ? Header() : props.actions.map(Option), slots["default"] && h("div", {
  81. "class": bem('content')
  82. }, [slots["default"]()]), cancelText && h("div", {
  83. "class": bem('cancel'),
  84. "on": {
  85. "click": onCancel
  86. }
  87. }, [cancelText])]);
  88. }
  89. Actionsheet.props = (0, _extends2["default"])({}, _popup.PopupMixin.props, {
  90. title: String,
  91. actions: Array,
  92. cancelText: String,
  93. safeAreaInsetBottom: Boolean,
  94. overlay: {
  95. type: Boolean,
  96. "default": true
  97. },
  98. closeOnClickOverlay: {
  99. type: Boolean,
  100. "default": true
  101. }
  102. });
  103. var _default = sfc(Actionsheet);
  104. exports["default"] = _default;