index.vue 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <template>
  2. <view class="u-demo">
  3. <view class="u-demo-wrap">
  4. <view class="u-demo-title">演示效果</view>
  5. <view class="u-demo-area">
  6. <u-toast ref="uToast"></u-toast>
  7. <u-button @click="btnClick">唤起弹窗</u-button>
  8. <u-popup border-radius="10" v-model="show"
  9. @close="close" @open="open" :mode="mode"
  10. length="50%" :mask="mask"
  11. :closeable="closeable"
  12. :close-icon-pos="closeIconPos"
  13. >
  14. <view v-if="mode == 'center'" style="height: 400rpx">
  15. <view class="close-btn">
  16. <u-button @click="show = false;" size="medium">关闭弹窗</u-button>
  17. </view>
  18. </view>
  19. <view class="close-btn" v-if="mode != 'center'">
  20. <u-button size="medium" @click="show = false;">关闭弹窗</u-button>
  21. </view>
  22. </u-popup>
  23. </view>
  24. </view>
  25. <view class="u-config-wrap">
  26. <view class="u-config-title u-border-bottom">
  27. 参数配置
  28. </view>
  29. <view class="u-config-item">
  30. <view class="u-item-title">状态</view>
  31. <u-subsection :current="show == false ? 1 : 0" :list="['打开', '关闭']" @change="showChange"></u-subsection>
  32. </view>
  33. <view class="u-config-item">
  34. <view class="u-item-title">弹出方向</view>
  35. <u-subsection :current="2" :list="['上', '下', '左', '右', '中']" @change="modeChange"></u-subsection>
  36. </view>
  37. <view class="u-config-item">
  38. <view class="u-item-title">关闭按钮</view>
  39. <u-subsection :list="['显示', '隐藏']" @change="closeChange"></u-subsection>
  40. </view>
  41. <view class="u-config-item">
  42. <view class="u-item-title">关闭按钮位置</view>
  43. <u-subsection :current="1" :list="['左上角', '右上角', '左下角', '右下角']" @change="closePosChange"></u-subsection>
  44. </view>
  45. </view>
  46. </view>
  47. </template>
  48. <script>
  49. export default {
  50. data() {
  51. return {
  52. show: false,
  53. mode: 'left',
  54. mask: true, // 是否显示遮罩
  55. closeable: true,
  56. closeIconPos: 'top-right'
  57. }
  58. },
  59. watch: {
  60. show(n) {
  61. // console.log(n);
  62. }
  63. },
  64. methods: {
  65. modeChange(index) {
  66. this.mode = index == 0 ? 'top' : index == 1 ? 'bottom' : index == 2 ? 'left' : index == 3 ? 'right' : 'center';
  67. this.show = true;
  68. },
  69. showChange(index) {
  70. this.show = index == 0 ? true : false;
  71. },
  72. closeChange(index) {
  73. this.closeable = !index;
  74. },
  75. closePosChange(index) {
  76. this.closeIconPos = ['top-left', 'top-right', 'bottom-left', 'bottom-right'][index];
  77. },
  78. close() {
  79. // console.log('close');
  80. },
  81. open() {
  82. // console.log('open');
  83. },
  84. btnClick() {
  85. this.show = true;
  86. }
  87. }
  88. }
  89. </script>
  90. <style lang="scss" scoped>
  91. .wrap {
  92. padding: 24rpx;
  93. }
  94. .close-btn {
  95. height: 100%;
  96. display: flex;
  97. align-items: center;
  98. justify-content: center;
  99. }
  100. </style>