SizeDropdown.vue 1015 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. <script lang="ts" name="SizeDropdown" setup>
  2. import { useAppStore } from '@/store/modules/app'
  3. import { propTypes } from '@/utils/propTypes'
  4. import { useDesign } from '@/hooks/web/useDesign'
  5. import { ElementPlusSize } from '@/types/elementPlus'
  6. const { getPrefixCls } = useDesign()
  7. const prefixCls = getPrefixCls('size-dropdown')
  8. defineProps({
  9. color: propTypes.string.def('')
  10. })
  11. const { t } = useI18n()
  12. const appStore = useAppStore()
  13. const sizeMap = computed(() => appStore.sizeMap)
  14. const setCurrentSize = (size: ElementPlusSize) => {
  15. appStore.setCurrentSize(size)
  16. }
  17. </script>
  18. <template>
  19. <ElDropdown :class="prefixCls" trigger="click" @command="setCurrentSize">
  20. <Icon :color="color" :size="18" class="cursor-pointer" icon="mdi:format-size" />
  21. <template #dropdown>
  22. <ElDropdownMenu>
  23. <ElDropdownItem v-for="item in sizeMap" :key="item" :command="item">
  24. {{ t(`size.${item}`) }}
  25. </ElDropdownItem>
  26. </ElDropdownMenu>
  27. </template>
  28. </ElDropdown>
  29. </template>