demo.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <template>
  2. <div class="demo full">
  3. <h2>基本用法</h2>
  4. <nut-collapse v-model:active="active1" icon="down-arrow" @change="change">
  5. <nut-collapse-item :name="1">
  6. <template v-slot:mTitle>
  7. {{ title1 }}
  8. </template>
  9. NutUI是一套拥有京东风格的轻量级的 Vue 组件库
  10. </nut-collapse-item>
  11. <nut-collapse-item :title="title2" :name="2">
  12. 在产品的功能、体验、易用性和灵活性等各个方面做了全面的升级!
  13. </nut-collapse-item>
  14. <nut-collapse-item :title="title3" :name="3" disabled> </nut-collapse-item>
  15. </nut-collapse>
  16. <h2>无icon样式</h2>
  17. <nut-collapse v-model:active="active4" :accordion="true" @change="change">
  18. <nut-collapse-item :title="title1" :name="1">
  19. 引入Vue3新特性 Composition API、Teleport、Emits 等
  20. </nut-collapse-item>
  21. <nut-collapse-item :title="title2" :name="2"> 全面使用 TypeScipt </nut-collapse-item>
  22. </nut-collapse>
  23. <h2>手风琴</h2>
  24. <nut-collapse v-model:active="active2" :accordion="true" icon="down-arrow">
  25. <nut-collapse-item :title="title1" :name="1"> 基于京东设计语言体系,构建场景 </nut-collapse-item>
  26. <nut-collapse-item :title="title2" :name="2" :sub-title="subTitle"> 提高界⾯的模块化通用程度 </nut-collapse-item>
  27. <nut-collapse-item :title="title3" :name="3">
  28. 采用组合式 API Composition 语法重构,结构清晰,功能模块化
  29. </nut-collapse-item>
  30. </nut-collapse>
  31. <h2>自定义折叠图标</h2>
  32. <nut-collapse v-model:active="active3" :accordion="true" icon="arrow-right2" rotate="90">
  33. <nut-collapse-item :title="title1" :name="1">
  34. <template v-slot:sTitle> 文本测试 </template>
  35. NUTUI3.0重新思考其内在的一致性和可组合性
  36. </nut-collapse-item>
  37. <nut-collapse-item :title="title2" :name="2" sub-title="文本内容">
  38. 提⾼产研输出对接的效率,降低输出工作量
  39. </nut-collapse-item>
  40. </nut-collapse>
  41. <h2>自定义标题图标</h2>
  42. <nut-collapse
  43. v-model:active="active5"
  44. title-icon="issue"
  45. title-icon-color="red"
  46. title-icon-size="20px"
  47. title-icon-position="right"
  48. icon="down-arrow"
  49. :accordion="true"
  50. >
  51. <nut-collapse-item :title="title1" :name="1"> 组件 emits 事件单独提取,增强代码可读性 </nut-collapse-item>
  52. <nut-collapse-item :title="title2" :name="2" sub-title="文本内容">
  53. 使用 Teleport 新特性重构挂载类组件
  54. </nut-collapse-item>
  55. </nut-collapse>
  56. <h2>设置固定内容(不折叠)</h2>
  57. <nut-collapse v-model:active="active6" icon="down-arrow" :accordion="true">
  58. <nut-collapse-item :title="title1" :name="1">
  59. <template v-slot:extraRender>固定内容</template>
  60. NutUI是一套拥有京东风格的轻量级的 Vue 组件库
  61. </nut-collapse-item>
  62. <nut-collapse-item :title="title2" :name="2">
  63. 在产品的功能、体验、易用性和灵活性等各个方面做了全面的升级!
  64. </nut-collapse-item>
  65. </nut-collapse>
  66. </div>
  67. </template>
  68. <script lang="ts">
  69. import { onMounted, reactive, ref, toRefs } from 'vue';
  70. import { createComponent } from '@/packages/utils/create';
  71. const { createDemo } = createComponent('collapse');
  72. export default createDemo({
  73. setup(props, context) {
  74. const data = reactive({
  75. active1: [1, '2'],
  76. active2: 1,
  77. active3: 1,
  78. active4: 1,
  79. active5: 1,
  80. active6: 1,
  81. title1: '标题1',
  82. title2: '标题2',
  83. title3: '标题3',
  84. subTitle: '副标题'
  85. });
  86. const change = (name: string) => {
  87. console.log(`点击了name是${name}的面板`);
  88. };
  89. return {
  90. change,
  91. ...toRefs(data)
  92. };
  93. }
  94. });
  95. </script>
  96. <style lang="scss">
  97. .nut-collapse-item .collapse-extraWrapper .collapse-extraRender {
  98. color: red;
  99. }
  100. </style>