From 632081e828d2fcb7c6d0d29cabaa5f20ba793dbe Mon Sep 17 00:00:00 2001 From: huangxiaomin Date: Sat, 9 Nov 2024 14:10:17 +0800 Subject: [PATCH] feat: add icon-picker component (#4832) * feat: add icon-picker component * fix: resolve conversations * refactor: resort @vben/hooks --- packages/@core/base/icons/src/index.ts | 7 +- packages/@core/base/icons/src/lucide.ts | 2 + .../src/components/button/icon-button.vue | 8 +- packages/effects/common-ui/package.json | 1 + .../components/icon-picker/icon-picker.vue | 156 ++++ .../src/components/icon-picker/index.ts | 1 + .../effects/common-ui/src/components/index.ts | 1 + packages/effects/hooks/src/index.ts | 1 + packages/effects/hooks/src/use-pagination.ts | 57 ++ .../demos/features/icons/icon-picker.vue | 87 ++ .../views/demos/features/icons/icons.data.ts | 793 ++++++++++++++++++ .../src/views/demos/features/icons/index.vue | 16 +- pnpm-lock.yaml | 3 + 13 files changed, 1130 insertions(+), 3 deletions(-) create mode 100644 packages/effects/common-ui/src/components/icon-picker/icon-picker.vue create mode 100644 packages/effects/common-ui/src/components/icon-picker/index.ts create mode 100644 packages/effects/hooks/src/use-pagination.ts create mode 100644 playground/src/views/demos/features/icons/icon-picker.vue create mode 100644 playground/src/views/demos/features/icons/icons.data.ts diff --git a/packages/@core/base/icons/src/index.ts b/packages/@core/base/icons/src/index.ts index 1e0fe5644..85a47d27a 100644 --- a/packages/@core/base/icons/src/index.ts +++ b/packages/@core/base/icons/src/index.ts @@ -4,4 +4,9 @@ export * from './create-icon'; export * from './lucide'; export type { IconifyIcon as IconifyIconStructure } from '@iconify/vue'; -export { addCollection, addIcon, Icon as IconifyIcon } from '@iconify/vue'; +export { + addCollection, + addIcon, + Icon as IconifyIcon, + listIcons, +} from '@iconify/vue'; diff --git a/packages/@core/base/icons/src/lucide.ts b/packages/@core/base/icons/src/lucide.ts index 592bd73c6..152dc5cd2 100644 --- a/packages/@core/base/icons/src/lucide.ts +++ b/packages/@core/base/icons/src/lucide.ts @@ -27,6 +27,7 @@ export { FoldHorizontal, Fullscreen, Github, + Grip, Info, InspectionPanel, Languages, @@ -40,6 +41,7 @@ export { Minimize, Minimize2, MoonStar, + Package2, Palette, PanelLeft, PanelRight, diff --git a/packages/@core/ui-kit/shadcn-ui/src/components/button/icon-button.vue b/packages/@core/ui-kit/shadcn-ui/src/components/button/icon-button.vue index 7c123a91d..ac626c1b4 100644 --- a/packages/@core/ui-kit/shadcn-ui/src/components/button/icon-button.vue +++ b/packages/@core/ui-kit/shadcn-ui/src/components/button/icon-button.vue @@ -14,6 +14,7 @@ interface Props extends VbenButtonProps { disabled?: boolean; onClick?: () => void; tooltip?: string; + tooltipDelayDuration?: number; tooltipSide?: 'bottom' | 'left' | 'right' | 'top'; variant?: ButtonVariants; } @@ -21,6 +22,7 @@ interface Props extends VbenButtonProps { const props = withDefaults(defineProps(), { disabled: false, onClick: () => {}, + tooltipDelayDuration: 200, tooltipSide: 'bottom', variant: 'icon', }); @@ -42,7 +44,11 @@ const showTooltip = computed(() => !!slots.tooltip || !!props.tooltip); - +