NavBarDemo.svelte 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <!-- NavBar Demo -->
  2. <script>
  3. import { NavBar, Icon, Toast } from '../../../../packages/stdf';
  4. const icons1 = [{ name: 'ri-paint-brush-line', theme: true }, { name: 'ri-share-line' }];
  5. const icons2 = [{ name: 'ri-command-line' }, { name: 'ri-drag-move-line' }];
  6. const icons3 = [{ name: 'ri-indent-decrease' }, { name: 'ri-service-line' }];
  7. const icons4 = [{ name: 'ri-hand-heart-line', theme: true }, { name: 'ri-parent-line' }];
  8. let visible1 = false;
  9. let visible2 = false;
  10. let rightIndex = 0;
  11. let visible3 = false;
  12. </script>
  13. <div class="flex flex-col space-y-8 py-8">
  14. <!-- 基础用法 -->
  15. <NavBar title="基础用法" />
  16. <!-- 右侧使用 Remix Icon -->
  17. <NavBar title="右侧使用 Icon" rights={icons1} />
  18. <!-- 点击左侧 -->
  19. <NavBar title="点击左侧" on:clickleft={() => (visible1 = true)} />
  20. <Toast bind:visible={visible1} message="点击了左侧!" />
  21. <!-- 点击右侧 -->
  22. <NavBar
  23. title="点击右侧"
  24. rights={icons2}
  25. on:clickright={e => {
  26. visible2 = true;
  27. rightIndex = e.detail;
  28. }}
  29. />
  30. <Toast bind:visible={visible2} message={`点击的右侧图标索引值是 ${rightIndex}。`} />
  31. <!-- 无底部分割线,文字过长 -->
  32. <NavBar title="无左侧与底分割线,文字过长长长长长长长" left="" line={false} rights={icons3} />
  33. <!-- 自定义背景颜色 -->
  34. <NavBar title="自定义背景颜色 by injClass" injClass="bg-[wheat] dark:bg-[purple]" />
  35. <!-- 自定义文字颜色 -->
  36. <NavBar titleSlot>
  37. <div slot="title" class="text-[red] dark:text-[green]">自定义文字颜色 by slot</div>
  38. </NavBar>
  39. <!-- 插槽渲染标题区域 -->
  40. <NavBar titleSlot rightSlot>
  41. <div slot="title" class="flex flex-col justify-around text-xs h-12">
  42. <div class="text-sm">title 插槽渲染标题区域</div>
  43. <div>right 插槽渲染右侧且可点击</div>
  44. </div>
  45. <div slot="right">
  46. <!-- svelte-ignore a11y-click-events-have-key-events -->
  47. <div class="h-12 w-12 text-center text-primary dark:text-dark cursor-pointer" on:click={() => (visible3 = true)}>Hello</div>
  48. </div>
  49. </NavBar>
  50. <Toast bind:visible={visible3} message="点击了右侧插槽内容!" />
  51. <!-- 关爱版 -->
  52. <NavBar title="关爱版导航栏" love rights={icons4} />
  53. <!-- 灵活的自定义 -->
  54. <NavBar titleSlot injClass="!bg-transparent" leftSlot line={false} rightSlot>
  55. <div slot="left" class="h-8 w-8 m-2 leading-8 text-center bg-white dark:bg-black/50 rounded-full">
  56. <Icon name="ri-home-7-line" size={18} top={-2} />
  57. </div>
  58. <div slot="title" class="px-3 h-8 my-2 leading-8 text-sm bg-white dark:bg-black/50 rounded-full">
  59. injClass 与 slot 结合自定义样式
  60. </div>
  61. <div slot="right" class="h-8 w-8 m-2 leading-8 text-center bg-white dark:bg-black/50 rounded-full">
  62. <Icon name="ri-customer-service-2-line" size={18} top={-2} />
  63. </div>
  64. </NavBar>
  65. </div>