preference-widget.vue 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <script lang="ts" setup>
  2. import type { PreferenceKeys, SupportLocale } from '@vben/types';
  3. import { loadLocaleMessages } from '@vben/locales';
  4. import {
  5. preference,
  6. staticPreference,
  7. updatePreference,
  8. } from '@vben/preference';
  9. import Preference from './preference.vue';
  10. function handleUpdate(key: PreferenceKeys, value: boolean | string) {
  11. updatePreference({
  12. [key]: value,
  13. });
  14. }
  15. function updateLocale(value: string) {
  16. const locale = value as SupportLocale;
  17. updatePreference({
  18. locale,
  19. });
  20. // 更改预览
  21. loadLocaleMessages(locale);
  22. }
  23. </script>
  24. <template>
  25. <Preference
  26. :color-primary-presets="staticPreference.colorPrimaryPresets"
  27. :breadcrumb-visible="preference.breadcrumbVisible"
  28. :breadcrumb-style="preference.breadcrumbStyle"
  29. :color-gray-mode="preference.colorGrayMode"
  30. :breadcrumb-icon="preference.breadcrumbIcon"
  31. :color-primary="preference.colorPrimary"
  32. :color-weak-mode="preference.colorWeakMode"
  33. :content-compact="preference.contentCompact"
  34. :breadcrumb-home="preference.breadcrumbHome"
  35. :side-collapse="preference.sideCollapse"
  36. :layout="preference.layout"
  37. :semi-dark-menu="preference.semiDarkMenu"
  38. :side-visible="preference.sideVisible"
  39. :footer-visible="preference.footerVisible"
  40. :tabs-visible="preference.tabsVisible"
  41. :header-visible="preference.headerVisible"
  42. :footer-fixed="preference.footerFixed"
  43. :header-mode="preference.headerMode"
  44. :theme="preference.theme"
  45. :dynamic-title="preference.dynamicTitle"
  46. :breadcrumb-hide-only-one="preference.breadcrumbHideOnlyOne"
  47. :page-transition="preference.pageTransition"
  48. :page-progress="preference.pageProgress"
  49. :tabs-icon="preference.tabsIcon"
  50. :locale="preference.locale"
  51. :navigation-accordion="preference.navigationAccordion"
  52. :navigation-style="preference.navigationStyle"
  53. :shortcut-keys="preference.shortcutKeys"
  54. :navigation-split="preference.navigationSplit"
  55. :side-collapse-show-title="preference.sideCollapseShowTitle"
  56. :page-transition-enable="preference.pageTransitionEnable"
  57. @update:shortcut-keys="(value) => handleUpdate('shortcutKeys', value)"
  58. @update:navigation-style="(value) => handleUpdate('navigationStyle', value)"
  59. @update:navigation-accordion="
  60. (value) => handleUpdate('navigationAccordion', value)
  61. "
  62. @update:navigation-split="(value) => handleUpdate('navigationSplit', value)"
  63. @update:dynamic-title="(value) => handleUpdate('dynamicTitle', value)"
  64. @update:tabs-icon="(value) => handleUpdate('tabsIcon', value)"
  65. @update:side-collapse="(value) => handleUpdate('sideCollapse', value)"
  66. @update:locale="updateLocale"
  67. @update:header-visible="(value) => handleUpdate('headerVisible', value)"
  68. @update:side-visible="(value) => handleUpdate('sideVisible', value)"
  69. @update:footer-visible="(value) => handleUpdate('footerVisible', value)"
  70. @update:tabs-visible="(value) => handleUpdate('tabsVisible', value)"
  71. @update:header-mode="(value) => handleUpdate('headerMode', value)"
  72. @update:footer-fixed="(value) => handleUpdate('footerFixed', value)"
  73. @update:breadcrumb-visible="
  74. (value) => handleUpdate('breadcrumbVisible', value)
  75. "
  76. @update:breadcrumb-hide-only-one="
  77. (value) => handleUpdate('breadcrumbHideOnlyOne', value)
  78. "
  79. @update:side-collapse-show-title="
  80. (value) => handleUpdate('sideCollapseShowTitle', value)
  81. "
  82. @update:breadcrumb-home="(value) => handleUpdate('breadcrumbHome', value)"
  83. @update:breadcrumb-icon="(value) => handleUpdate('breadcrumbIcon', value)"
  84. @update:breadcrumb-style="(value) => handleUpdate('breadcrumbStyle', value)"
  85. @update:page-transition-enable="
  86. (value) => handleUpdate('pageTransitionEnable', value)
  87. "
  88. @update:color-gray-mode="(value) => handleUpdate('colorGrayMode', value)"
  89. @update:page-transition="(value) => handleUpdate('pageTransition', value)"
  90. @update:page-progress="(value) => handleUpdate('pageProgress', value)"
  91. @update:color-primary="(value) => handleUpdate('colorPrimary', value)"
  92. @update:color-weak-mode="(value) => handleUpdate('colorWeakMode', value)"
  93. @update:content-compact="(value) => handleUpdate('contentCompact', value)"
  94. @update:layout="(value) => handleUpdate('layout', value)"
  95. @update:semi-dark-menu="(value) => handleUpdate('semiDarkMenu', value)"
  96. @update:theme="(value) => handleUpdate('theme', value)"
  97. />
  98. </template>