demo.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <template>
  2. <div class="demo full">
  3. <h2>{{ translate('title1') }}</h2>
  4. <nut-navbar @on-click-back="back" @on-click-title="title" :title="translate('navTitle1')">
  5. <template #left>
  6. <div>{{ translate('back') }}</div>
  7. </template>
  8. <template #right>
  9. <ShareN width="16px"></ShareN>
  10. </template>
  11. </nut-navbar>
  12. <nut-navbar
  13. @on-click-back="back"
  14. @on-click-title="title"
  15. @on-click-right="rightClick"
  16. :title="translate('navTitle2')"
  17. :desc="translate('desc1')"
  18. ></nut-navbar>
  19. <nut-navbar
  20. :left-show="false"
  21. @on-click-back="back"
  22. @on-click-title="title"
  23. @on-click-icon="icon"
  24. @on-click-right="rightClick"
  25. :title="translate('navTitle3')"
  26. :titleIcon="true"
  27. :desc="translate('desc2')"
  28. >
  29. <template #title-icon>
  30. <Cart2 width="16px"></Cart2>
  31. </template>
  32. <template #right>
  33. <MoreX class="right" width="16px"></MoreX>
  34. </template>
  35. </nut-navbar>
  36. <h2>{{ translate('title2') }}</h2>
  37. <nut-navbar @on-click-back="back" @on-click-title="title" @on-click-right="rightClick" :desc="translate('desc2')">
  38. <template #content>
  39. <nut-tabs v-model="tab1value" @click="changeTab">
  40. <nut-tab-pane :title="translate('tab1')"> </nut-tab-pane>
  41. <nut-tab-pane :title="translate('tab2')"> </nut-tab-pane>
  42. </nut-tabs>
  43. </template>
  44. <template #right>
  45. <MoreX class="right" width="16px"></MoreX>
  46. </template>
  47. </nut-navbar>
  48. <h2>{{ translate('title3') }}</h2>
  49. <nut-navbar @on-click-back="back">
  50. <template #content>
  51. <nut-tabs v-model="tab2value" @click="changeTabList">
  52. <nut-tab-pane :title="translate('tab1')"> </nut-tab-pane>
  53. <nut-tab-pane :title="translate('tab2')"> </nut-tab-pane>
  54. <nut-tab-pane :title="translate('tab3')"> </nut-tab-pane>
  55. </nut-tabs>
  56. </template>
  57. <template #right>
  58. <HorizontalN class="right" width="16px"></HorizontalN>
  59. </template>
  60. </nut-navbar>
  61. </div>
  62. </template>
  63. <script lang="ts">
  64. import { ref } from 'vue';
  65. import { createComponent } from '@/packages/utils/create';
  66. const { createDemo, translate } = createComponent('navbar');
  67. import { useTranslate } from '@/sites/assets/util/useTranslate';
  68. import { ShareN, Cart2, MoreX, HorizontalN } from '@nutui/icons-vue';
  69. const initTranslate = () =>
  70. useTranslate({
  71. 'zh-CN': {
  72. title1: '基础用法',
  73. back: '返回',
  74. navTitle1: '订单详情',
  75. navTitle2: '浏览记录',
  76. desc1: '清空',
  77. navTitle3: '购物车',
  78. desc2: '编辑',
  79. title2: '自定义导航栏中间内容',
  80. tab1: '标题1',
  81. tab2: '标题2',
  82. tab3: '标题3',
  83. title3: '多 tab 切换导航'
  84. },
  85. 'en-US': {
  86. title1: 'Basic Usage',
  87. back: 'Back',
  88. navTitle1: 'Order details',
  89. navTitle2: 'Browsing history',
  90. desc1: 'Clear',
  91. navTitle3: 'Cart',
  92. desc2: 'Edit',
  93. title2: 'Customize the middle content of the navigation bar',
  94. tab1: 'Title1',
  95. tab2: 'Title2',
  96. tab3: 'Title3',
  97. title3: 'Multi-tab switching navigation'
  98. }
  99. });
  100. export default createDemo({
  101. components: { ShareN, Cart2, MoreX, HorizontalN },
  102. setup() {
  103. initTranslate();
  104. const tab1value = ref(0);
  105. const tab2value = ref(0);
  106. const methods = {
  107. back() {
  108. alert('header头部, 点击返回');
  109. },
  110. title() {
  111. alert('header头部, 点击title');
  112. },
  113. icon() {
  114. alert('icon');
  115. },
  116. rightClick() {
  117. alert('右侧点击事件');
  118. },
  119. changeTab(tab: any) {
  120. tab1value.value = tab.paneKey as number;
  121. },
  122. changeTabList(tab: any) {
  123. tab2value.value = tab.paneKey as number;
  124. }
  125. };
  126. return {
  127. translate,
  128. tab1value,
  129. tab2value,
  130. ...methods
  131. };
  132. }
  133. });
  134. </script>
  135. <style lang="scss" scoped>
  136. .right {
  137. margin-left: 10px;
  138. }
  139. </style>