TabsDemo_en.svelte 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <!-- Tabs Demo -->
  2. <script>
  3. import { Tabs, Tab, TabContent, Divider } from '../../../../packages/stdf/components';
  4. import { fly } from 'svelte/transition';
  5. const labels = [{ text: 'aircraft' }, { text: 'steamer' }, { text: 'train' }, { text: 'car' }];
  6. const labels1 = [
  7. { icon: { name: 'ri-plane-line', theme: true, size: 20 } },
  8. { icon: { name: 'ri-ship-2-line', theme: true, size: 20 } },
  9. { icon: { name: 'ri-train-line', theme: true, size: 20 } },
  10. { icon: { name: 'ri-car-line', theme: true, size: 20 } },
  11. ];
  12. const labels2 = [
  13. { text: 'aircraft', icon: { name: 'ri-plane-line', theme: true, size: 16, top: -1 } },
  14. { text: 'steamer', icon: { name: 'ri-ship-2-line', theme: true, size: 16, top: -1 } },
  15. { text: 'train', icon: { name: 'ri-train-line', theme: true, size: 16, top: -1 } },
  16. { text: 'car', icon: { name: 'ri-car-line', theme: true, size: 16, top: -1 } },
  17. ];
  18. let width = 0;
  19. let changeActive = 0;
  20. let active = 2;
  21. const clicktabFun = e => {
  22. active = e.detail;
  23. };
  24. const tabsChangeFun = e => {
  25. changeActive = e.detail;
  26. };
  27. </script>
  28. <div class="py-8">
  29. <div class="font-bold text-xl px-4">use Tabs</div>
  30. <div class="space-y-4 my-4">
  31. <div class="font-bold px-4">Basic usage</div>
  32. <Tabs tab={{ labels }}>
  33. <TabContent>I am a plane</TabContent>
  34. <TabContent>I am a ship</TabContent>
  35. <TabContent>I am a train</TabContent>
  36. <TabContent>I am a car</TabContent>
  37. </Tabs>
  38. <Divider />
  39. <div class="font-bold px-4">Accelerate the transition</div>
  40. <Tabs duration="fast" tab={{ labels }}>
  41. <TabContent>I am a plane</TabContent>
  42. <TabContent>I am a ship</TabContent>
  43. <TabContent>I am a train</TabContent>
  44. <TabContent>I am a car</TabContent>
  45. </Tabs>
  46. <Divider />
  47. <div class="font-bold px-4">Transition mitigation</div>
  48. <Tabs duration="slower" tab={{ labels }}>
  49. <TabContent>I am a plane</TabContent>
  50. <TabContent>I am a ship</TabContent>
  51. <TabContent>I am a train</TabContent>
  52. <TabContent>I am a car</TabContent>
  53. </Tabs>
  54. <Divider />
  55. <div class="font-bold px-4">Use linear style</div>
  56. <Tabs tab={{ labels, lineType: true }}>
  57. <TabContent>I am a plane</TabContent>
  58. <TabContent>I am a ship</TabContent>
  59. <TabContent>I am a train</TabContent>
  60. <TabContent>I am a car</TabContent>
  61. </Tabs>
  62. <Divider />
  63. <div class="font-bold px-4">The TAB is located at the bottom</div>
  64. <Tabs tab={{ labels }} placement="b">
  65. <TabContent>I am a plane</TabContent>
  66. <TabContent>I am a ship</TabContent>
  67. <TabContent>I am a train</TabContent>
  68. <TabContent>I am a car</TabContent>
  69. </Tabs>
  70. <Divider />
  71. <div class="font-bold px-4">The TAB is located on the left</div>
  72. <Tabs tab={{ labels }} placement="l" let:active>
  73. <TabContent show={active === 0}>I am a plane</TabContent>
  74. <TabContent show={active === 1}>I am a ship</TabContent>
  75. <TabContent show={active === 2}>I am a train</TabContent>
  76. <TabContent show={active === 3}>I am a car</TabContent>
  77. </Tabs>
  78. <Divider />
  79. <div class="font-bold px-4">The TAB is located on the right</div>
  80. <Tabs tab={{ labels }} placement="r" let:active>
  81. <TabContent show={active === 0}>I am a plane</TabContent>
  82. <TabContent show={active === 1}>I am a ship</TabContent>
  83. <TabContent show={active === 2}>I am a train</TabContent>
  84. <TabContent show={active === 3}>I am a car</TabContent>
  85. </Tabs>
  86. <Divider />
  87. <div class="font-bold px-4" bind:clientWidth={width}>Custom transition</div>
  88. <Tabs tab={{ labels }} let:active transition={false}>
  89. <div class="relative py-8">
  90. {#if active === 0}
  91. <div class="absolute" in:fly={{ y: -60, x: 0, duration: 1000 }}>I am a plane</div>
  92. {:else if active === 1}
  93. <div class="absolute" in:fly={{ y: -60, x: width / 4, duration: 1000 }}>I am a ship</div>
  94. {:else if active === 2}
  95. <div class="absolute" in:fly={{ y: -60, x: width / 2, duration: 1000 }}>I am a train</div>
  96. {:else if active === 3}
  97. <div class="absolute" in:fly={{ y: -60, x: (width / 4) * 3, duration: 1000 }}>I am a car</div>
  98. {/if}
  99. </div>
  100. </Tabs>
  101. <Divider />
  102. <div class="font-bold px-4">monitor change event</div>
  103. <Tabs tab={{ labels }} on:change={tabsChangeFun}>
  104. <TabContent>I am a plane</TabContent>
  105. <TabContent>I am a ship</TabContent>
  106. <TabContent>I am a train</TabContent>
  107. <TabContent>I am a car</TabContent>
  108. </Tabs>
  109. <div class="mt-4">At present Tabs activated active:{changeActive}</div>
  110. </div>
  111. <Divider />
  112. <div class="font-bold mt-8 text-xl">different Tab style</div>
  113. <div class="flex flex-col space-y-2 mt-4">
  114. <div class="font-bold px-4">Different fillet</div>
  115. <Tab {labels} radius="none" />
  116. <Tab {labels} />
  117. <Tab {labels} radius="xl" />
  118. <Tab {labels} radius="full" />
  119. <div class="font-bold px-4">Match text with ICONS</div>
  120. <Tab {labels} />
  121. <Tab labels={labels1} />
  122. <Tab labels={labels2} />
  123. <div class="font-bold px-4">Care edition</div>
  124. <Tab {labels} love />
  125. <div class="font-bold px-4">Linear style</div>
  126. <Tab {labels} lineType />
  127. <Tab labels={labels2} lineType />
  128. <div class="font-bold px-4">customize Tab Outer style</div>
  129. <Tab {labels} injClass="bg-gradient-to-b from-[#e3c6ff] to-[#b6aeff]" />
  130. <div class="font-bold px-4">customize Tab style</div>
  131. <Tab {labels} tabInjClass="underline text-primary decoration-primary dark:text-dark dark:decoration-dark" />
  132. <div class="font-bold px-4">Custom selection Tab style</div>
  133. <Tab {labels} activeTabInjClass="text-primary dark:text-dark !text-base transition-all" />
  134. <div class="font-bold px-4">Customize the indicator style</div>
  135. <Tab {labels} activeInjClass="bg-gradient-to-b from-[#CE9FFC] to-[#7367F0]" activeTabInjClass="text-white" />
  136. <Tab {labels} lineType activeInjClass="bg-gradient-to-r from-[#CE9FFC] to-[#7367F0]" />
  137. </div>
  138. <Divider />
  139. <div class="font-bold my-8 text-xl">Use alone Tab</div>
  140. <div class="my-4">
  141. <Tab {labels} {active} on:clicktab={clicktabFun} />
  142. <div class="mt-4">At present Tab clickable active:{active}</div>
  143. </div>
  144. <Divider />
  145. </div>