demo.vue 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. <template>
  2. <div class="demo-list">
  3. <h4>基础用法</h4>
  4. <div class="show-demo">
  5. <nut-checkbox v-model="checkbox1" @change="changeBox1"
  6. >复选框</nut-checkbox
  7. >
  8. <span>{{ checkbox1 }}</span>
  9. </div>
  10. <h4>CheckboxGroup基本用法</h4>
  11. <div class="show-demo">
  12. <nut-checkboxgroup v-model="checkboxGroup1">
  13. <nut-checkbox label="选项一"></nut-checkbox>
  14. <nut-checkbox label="选项二"></nut-checkbox>
  15. </nut-checkboxgroup>
  16. <p>选择状态:{{ checkboxGroup1 }}</p>
  17. </div>
  18. <h4>禁用状态</h4>
  19. <div class="show-demo show-demo-block">
  20. <nut-checkbox v-model="checkbox2" disabled>未选时禁用状态</nut-checkbox>
  21. <nut-checkbox v-model="checkbox3" disabled>已选时禁用状态</nut-checkbox>
  22. </div>
  23. <h4>CheckboxGroup整体禁用</h4>
  24. <div class="show-demo">
  25. <nut-checkboxgroup v-model="checkboxGroup2" disabled>
  26. <nut-checkbox label="选项一"></nut-checkbox>
  27. <nut-checkbox label="选项二"></nut-checkbox>
  28. </nut-checkboxgroup>
  29. <p>选择状态:{{ checkboxGroup2 }}</p>
  30. </div>
  31. <h4>自定义尺寸</h4>
  32. <div class="show-demo show-demo-block">
  33. <nut-checkbox v-model="checkbox4" size="small">小号1</nut-checkbox>
  34. <nut-checkbox v-model="checkbox5" size="base">默认</nut-checkbox>
  35. <nut-checkbox v-model="checkbox6" size="large">大号</nut-checkbox>
  36. <p>size可选值:'small', 'base', 'large'</p>
  37. </div>
  38. <h4>CheckboxGroup整体尺寸</h4>
  39. <div class="show-demo">
  40. <nut-checkboxgroup v-model="checkboxGroup3" size="small">
  41. <nut-checkbox label="选项一"></nut-checkbox>
  42. <nut-checkbox label="选项二"></nut-checkbox>
  43. </nut-checkboxgroup>
  44. </div>
  45. <h4>禁用动效</h4>
  46. <div class="show-demo">
  47. <nut-checkbox v-model="checkbox7" :animation="false"
  48. >没有动效</nut-checkbox
  49. >
  50. <p>animation属性值为false时,禁用自带动效</p>
  51. </div>
  52. <h4>CheckboxGroup整体禁用动效</h4>
  53. <div class="show-demo">
  54. <nut-checkboxgroup v-model="checkboxGroup4" :animation="false">
  55. <nut-checkbox label="没有动效1"></nut-checkbox>
  56. <nut-checkbox label="没有动效2"></nut-checkbox>
  57. </nut-checkboxgroup>
  58. </div>
  59. <h4>事件</h4>
  60. <div class="show-demo">
  61. <div class="demo-box">
  62. <nut-checkbox
  63. v-model="checkbox9"
  64. :label="'change事件'"
  65. @change="checkboxChange"
  66. >备选项</nut-checkbox
  67. >
  68. <span>{{ result1 }}</span>
  69. </div>
  70. </div>
  71. <h4>CheckboxGroup整体事件</h4>
  72. <div class="show-demo">
  73. <div>
  74. <nut-checkboxgroup v-model="checkboxGroup5" @change="getChange">
  75. <nut-checkbox label="选项一"></nut-checkbox>
  76. <nut-checkbox label="选项二"></nut-checkbox>
  77. </nut-checkboxgroup>
  78. </div>
  79. <span>{{ result2 }}</span>
  80. </div>
  81. <h4>自定义Class</h4>
  82. <div class="show-demo">
  83. <nut-checkbox class="my-checkbox" v-model="checkbox12"
  84. >自定义Class:"my-checkbox"</nut-checkbox
  85. >
  86. </div>
  87. <h4>全选与反选</h4>
  88. <div class="show-demo">
  89. <div>
  90. <nut-checkboxgroup
  91. ref="checkboxGroupDemo"
  92. v-model="checkboxGroup6"
  93. @change="getChange2"
  94. >
  95. <nut-checkbox label="选项一"></nut-checkbox>
  96. <nut-checkbox label="选项二"></nut-checkbox>
  97. <nut-checkbox label="选项三"></nut-checkbox>
  98. </nut-checkboxgroup>
  99. </div>
  100. <div>
  101. <span>{{ result3 }}</span>
  102. </div>
  103. <nut-button size="small" type="primary" @click="chooseAll(true)"
  104. >全选</nut-button
  105. >
  106. <nut-button size="small" type="primary" @click="chooseAll()"
  107. >反选</nut-button
  108. >
  109. <nut-button size="small" type="primary" @click="chooseAll(false)"
  110. >取消</nut-button
  111. >
  112. </div>
  113. <h4>CheckboxGroup排列方向</h4>
  114. <div class="show-demo">
  115. <div>
  116. <nut-checkboxgroup
  117. v-model="checkboxGroup7"
  118. direction="vertical"
  119. @change="getChange3"
  120. >
  121. <nut-checkbox label="选项一"></nut-checkbox>
  122. <nut-checkbox label="选项二"></nut-checkbox>
  123. <nut-checkbox label="选项三"></nut-checkbox>
  124. </nut-checkboxgroup>
  125. </div>
  126. <span>{{ result4 }}</span>
  127. </div>
  128. </div>
  129. </template>
  130. <script lang="ts">
  131. import { reactive, ref, toRefs } from 'vue';
  132. import { createComponent } from '@/utils/create';
  133. const { createDemo } = createComponent('checkbox');
  134. export default createDemo({
  135. setup(props, context) {
  136. const data = reactive({
  137. checkbox1: false,
  138. checkbox2: false,
  139. checkbox3: true,
  140. checkbox4: true,
  141. checkbox5: true,
  142. checkbox6: true,
  143. checkbox7: false,
  144. checkbox8: true,
  145. checkbox9: false,
  146. checkbox10: true,
  147. checkbox11: false,
  148. checkbox12: true,
  149. checkbox13: false,
  150. checkboxGroup1: ['选项一'],
  151. checkboxGroup2: ['选项一'],
  152. checkboxGroup3: [],
  153. checkboxGroup4: ['没有动效1'],
  154. checkboxGroup5: ['选项一'],
  155. checkboxGroup6: [],
  156. checkboxGroup7: []
  157. });
  158. const result = reactive({
  159. result1: 'false',
  160. result2: '选中状态选项:',
  161. result3: '选中状态选项:',
  162. result4: '选中状态选项:'
  163. });
  164. const changeBox1 = (state: boolean) => {
  165. data.checkbox1 = state;
  166. };
  167. const checkboxChange = (state: string, val: string) => {
  168. result.result1 = state;
  169. };
  170. const getChange = (val: string) => {
  171. result.result2 = '选中状态选项:' + val;
  172. };
  173. const getChange2 = (val: string) => {
  174. result.result3 = '选中状态选项:' + val;
  175. };
  176. const getChange3 = (val: string) => {
  177. result.result4 = '选中状态选项:' + val;
  178. };
  179. const checkboxGroupDemo = ref();
  180. const chooseAll = (val: boolean | string) => {
  181. (checkboxGroupDemo.value as any).toggleAll(val);
  182. };
  183. return {
  184. changeBox1,
  185. checkboxChange,
  186. checkboxGroupDemo,
  187. getChange,
  188. getChange2,
  189. getChange3,
  190. chooseAll,
  191. ...toRefs(data),
  192. ...toRefs(result)
  193. };
  194. }
  195. });
  196. </script>
  197. <style>
  198. #app {
  199. height: auto;
  200. background: #f6f7f9;
  201. }
  202. </style>
  203. <style lang="scss" scoped>
  204. .demo-list {
  205. margin: 57px 0 60px 0;
  206. padding: 0 17px 17px;
  207. h4 {
  208. margin: 25px 0 10px;
  209. line-height: 20px;
  210. color: #909ca4;
  211. font-size: 14px;
  212. }
  213. .show-demo {
  214. margin-top: 10px;
  215. padding: 15px;
  216. background-color: #ffffff;
  217. border-radius: 7px;
  218. box-shadow: 0px 1px 7px 0px rgba(237, 238, 241, 1);
  219. p,
  220. span {
  221. display: block;
  222. margin-top: 15px;
  223. font-size: 14px;
  224. color: #636363;
  225. }
  226. span {
  227. font-size: 12px;
  228. }
  229. .nut-button {
  230. margin: 10px 10px 0 0;
  231. }
  232. }
  233. .show-demo-block {
  234. view {
  235. display: block;
  236. margin-bottom: 10px;
  237. }
  238. }
  239. .my-checkbox::v-deep .nut-checkbox {
  240. input:checked {
  241. background-image: url('https://img13.360buyimg.com/imagetools/jfs/t1/154120/1/10623/372/5fe013e6E4694fbf9/fd38d389b3a3b9c6.png');
  242. background-size: 100%;
  243. border: none;
  244. }
  245. }
  246. }
  247. </style>