demo.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <template>
  2. <div class="demo-list demo">
  3. <h2>基本用法(选择类)</h2>
  4. <nut-cell
  5. :showIcon="true"
  6. :isLink="true"
  7. @click="switchActionSheet('isVisible1')"
  8. >
  9. <span><label>基础用法</label></span>
  10. <div class="selected-option">{{ state.val1 }}</div>
  11. </nut-cell>
  12. <nut-cell
  13. :showIcon="true"
  14. :isLink="true"
  15. @click="switchActionSheet('isVisible2')"
  16. >
  17. <span><label>展示取消按钮</label></span>
  18. <div class="selected-option">{{ state.val2 }}</div>
  19. </nut-cell>
  20. <nut-cell :isLink="true" @click="switchActionSheet('isVisible3')">
  21. <span><label>展示描述信息</label></span>
  22. <div class="selected-option">{{ state.val3 }}</div>
  23. </nut-cell>
  24. <h2>选项状态</h2>
  25. <nut-cell :isLink="true" @click="switchActionSheet('isVisible4')">
  26. <span><label>选项状态</label></span>
  27. <!-- <div class="selected-option">打开</div> -->
  28. </nut-cell>
  29. <!-- demo 基础用法 -->
  30. <nut-actionsheet
  31. :is-visible="state.isVisible1"
  32. :menu-items="menuItemsOne"
  33. @choose="chooseItem"
  34. ></nut-actionsheet>
  35. <!-- demo(带取消按钮) -->
  36. <nut-actionsheet
  37. :is-visible="state.isVisible2"
  38. cancel-txt="取消"
  39. :menu-items="menuItemsOne"
  40. @choose="chooseItemTwo"
  41. ></nut-actionsheet>
  42. <!-- 展示描述信息 -->
  43. <nut-actionsheet
  44. :is-visible="state.isVisible3"
  45. :description="state.desc"
  46. :menu-items="menuItemsTwo"
  47. @choose="chooseItemThree"
  48. cancel-txt="取消"
  49. >
  50. </nut-actionsheet>
  51. <!-- demo 选项状态-->
  52. <nut-actionsheet
  53. :is-visible="state.isVisible4"
  54. cancel-txt="取消"
  55. :menu-items="menuItemsThree"
  56. :choose-tag-value="state.chooseTagValue"
  57. ></nut-actionsheet>
  58. </div>
  59. </template>
  60. <script lang="ts">
  61. import { reactive } from 'vue';
  62. import { createComponent } from '@/utils/create';
  63. const { createDemo } = createComponent('actionsheet');
  64. interface Item {
  65. name: string;
  66. subname?: string;
  67. disable?: boolean;
  68. }
  69. export default createDemo({
  70. props: {},
  71. setup() {
  72. const state = reactive({
  73. isVisible1: false,
  74. isVisible2: false,
  75. isVisible3: false,
  76. isVisible4: false,
  77. isVisible5: false,
  78. val1: '',
  79. val2: '',
  80. val3: '',
  81. val4: '',
  82. desc: '这是一段描述信息',
  83. chooseTagValue: '着色选项'
  84. });
  85. const menuItemsOne: Item[] = [
  86. {
  87. name: '选项一222'
  88. },
  89. {
  90. name: '选项二'
  91. },
  92. {
  93. name: '选项三'
  94. }
  95. ];
  96. const menuItemsTwo: Item[] = [
  97. {
  98. name: '选项一'
  99. },
  100. {
  101. name: '选项二'
  102. },
  103. {
  104. name: '选项三',
  105. subname: '描述信息'
  106. }
  107. ];
  108. const menuItemsThree: Item[] = [
  109. {
  110. name: '着色选项'
  111. },
  112. {
  113. name: '禁用选项',
  114. disable: true
  115. }
  116. ];
  117. const switchActionSheet = (
  118. param: 'isVisible1' | 'isVisible2' | 'isVisible3' | 'isVisible4'
  119. ) => {
  120. state[param] = !state[param];
  121. };
  122. const chooseItem = (itemParams: any) => {
  123. console.log(itemParams, 'itemParams');
  124. state.val1 = itemParams.name;
  125. };
  126. function chooseItemTwo(itemParams: Item) {
  127. state.val2 = itemParams.name;
  128. }
  129. function chooseItemThree(itemParams: Item) {
  130. state.val3 = itemParams.name;
  131. }
  132. return {
  133. state,
  134. menuItemsOne,
  135. menuItemsTwo,
  136. menuItemsThree,
  137. chooseItem,
  138. chooseItemTwo,
  139. chooseItemThree,
  140. switchActionSheet
  141. };
  142. }
  143. });
  144. </script>
  145. <style lang="scss" scoped>
  146. .custom-wrap {
  147. padding: 110px 0;
  148. text-align: center;
  149. }
  150. .nut-cell {
  151. justify-content: space-between;
  152. }
  153. .myContent {
  154. padding: 10px 10px 160px;
  155. }
  156. </style>