Browse Source

feat: 重构 ConfigProvider 组件,添加 IConfig 接口并优化 locale 管理

as
npmrun 2 weeks ago
parent
commit
fa4dea64c1
  1. 6
      packages/bolt-ui/components/ConfigProvider/src/ConfigProvider.vue
  2. 13
      packages/bolt-ui/components/ConfigProvider/src/Token.ts
  3. 5
      packages/bolt-ui/components/ConfigProvider/src/config.ts
  4. 7
      packages/bolt-ui/components/Container/src/Container.vue
  5. 4
      packages/bolt-ui/theme-chalk/src/container.scss
  6. BIN
      packages/drizzle-pkg/db.sqlite

6
packages/bolt-ui/components/ConfigProvider/src/ConfigProvider.vue

@ -5,13 +5,11 @@
<script setup lang="ts"> <script setup lang="ts">
import { provide, computed, watch } from 'vue' import { provide, computed, watch } from 'vue'
import { ConfigToken } from './Token' import { ConfigToken } from './Token'
import type { LanguagesType } from 'bolt-ui/locales'
import { useLocale } from 'bolt-ui/locales' import { useLocale } from 'bolt-ui/locales'
import { IConfig } from './config';
const props = withDefaults( const props = withDefaults(
defineProps<{ defineProps<IConfig>(),
locale?: LanguagesType
}>(),
{ {
locale: 'zh' locale: 'zh'
} }

13
packages/bolt-ui/components/ConfigProvider/src/Token.ts

@ -1,3 +1,12 @@
import { ComputedRef, InjectionKey } from 'vue' import { computed, ComputedRef, inject, InjectionKey, provide } from 'vue'
import { IConfig, defaultConfig } from './config'
export const ConfigToken: InjectionKey<ComputedRef<{ locale: string }>> = Symbol('ConfigToken') export const ConfigToken: InjectionKey<ComputedRef<IConfig>> = Symbol('ConfigToken')
export function provideData(data: ComputedRef<IConfig>) {
provide(ConfigToken, data)
}
export function useConfigData() {
return inject(ConfigToken, computed(() => (defaultConfig)))
}

5
packages/bolt-ui/components/ConfigProvider/src/config.ts

@ -0,0 +1,5 @@
import type { LanguagesType } from 'bolt-ui/locales'
export interface IConfig { locale: LanguagesType }
export const defaultConfig: IConfig = { locale: 'zh' }

7
packages/bolt-ui/components/Container/src/Container.vue

@ -6,10 +6,12 @@
<script setup lang="ts"> <script setup lang="ts">
import { useNamespace } from 'bolt-ui/utils/hooks/use-namespace' import { useNamespace } from 'bolt-ui/utils/hooks/use-namespace'
import { inject } from 'vue';
import { ConfigToken } from 'bolt-ui/components/ConfigProvider/src/Token';
withDefaults( withDefaults(
defineProps<{ defineProps<{
size?: 'default' | 'large' | 'small' size?: 'default' | 'large' | 'small' | 'full'
}>(), }>(),
{ {
size: 'default' size: 'default'
@ -20,4 +22,7 @@ const { b, m } = useNamespace('container')
defineOptions({ defineOptions({
name: 'BoContainer' name: 'BoContainer'
}) })
const aa = inject(ConfigToken)
</script> </script>

4
packages/bolt-ui/theme-chalk/src/container.scss

@ -13,6 +13,10 @@ $container-sm-max-width: 960px;
margin: 0 auto; margin: 0 auto;
padding: 0 24px; padding: 0 24px;
&#{m('full')} {
max-width: 100%;
}
&#{m('large')} { &#{m('large')} {
max-width: $container-lg-max-width; max-width: $container-lg-max-width;
} }

BIN
packages/drizzle-pkg/db.sqlite

Binary file not shown.
Loading…
Cancel
Save