From b87c8d775177effd72533c31f6389972386c45af Mon Sep 17 00:00:00 2001 From: vasu Date: Tue, 13 Jun 2023 14:51:41 +0530 Subject: [PATCH 01/12] feat(component): New select component --- docs/components/select.md | 74 +++++++++++++++++++ .../select/examples/DisabledSelect.vue | 17 +++++ .../select/examples/SelectExample.vue | 17 +++++ .../components/select/examples/SelectSize.vue | 17 +++++ .../select/examples/UnderlinedSelect.vue | 17 +++++ src/components/Select/Select.vue | 51 +++++++++++++ .../Select/composables/useSelectClasses.ts | 35 +++++++++ src/components/Select/types.ts | 4 + src/index.ts | 2 + 9 files changed, 234 insertions(+) create mode 100644 docs/components/select.md create mode 100644 docs/components/select/examples/DisabledSelect.vue create mode 100644 docs/components/select/examples/SelectExample.vue create mode 100644 docs/components/select/examples/SelectSize.vue create mode 100644 docs/components/select/examples/UnderlinedSelect.vue create mode 100644 src/components/Select/Select.vue create mode 100644 src/components/Select/composables/useSelectClasses.ts create mode 100644 src/components/Select/types.ts diff --git a/docs/components/select.md b/docs/components/select.md new file mode 100644 index 0000000..44cda73 --- /dev/null +++ b/docs/components/select.md @@ -0,0 +1,74 @@ + + +# Vue Select Components - Flowbite + +#### Get started with the select component to allow the user to choose from one or more options from a dropdown list based on multiple styles, sizes, and variants + +--- + +:::tip +Original reference: [https://flowbite.com/docs/forms/select/](https://flowbite.com/docs/forms/select/) +::: + +The select input component can be used to gather information from users based on multiple options in the form of a dropdown list and by browsing this page you will find multiple options, styles, sizes, and variants built with the utility classes from Tailwind CSS also available in dark mode. + +## Default +```vue + + +``` + + + +## Disabled + +```vue + +``` + + + +## Underlined + +```vue + +``` + + + +## Size + +```vue + +``` + + \ No newline at end of file diff --git a/docs/components/select/examples/DisabledSelect.vue b/docs/components/select/examples/DisabledSelect.vue new file mode 100644 index 0000000..878a76f --- /dev/null +++ b/docs/components/select/examples/DisabledSelect.vue @@ -0,0 +1,17 @@ + + + \ No newline at end of file diff --git a/docs/components/select/examples/SelectExample.vue b/docs/components/select/examples/SelectExample.vue new file mode 100644 index 0000000..36c81e4 --- /dev/null +++ b/docs/components/select/examples/SelectExample.vue @@ -0,0 +1,17 @@ + + + \ No newline at end of file diff --git a/docs/components/select/examples/SelectSize.vue b/docs/components/select/examples/SelectSize.vue new file mode 100644 index 0000000..c08866f --- /dev/null +++ b/docs/components/select/examples/SelectSize.vue @@ -0,0 +1,17 @@ + + + \ No newline at end of file diff --git a/docs/components/select/examples/UnderlinedSelect.vue b/docs/components/select/examples/UnderlinedSelect.vue new file mode 100644 index 0000000..9b2d69c --- /dev/null +++ b/docs/components/select/examples/UnderlinedSelect.vue @@ -0,0 +1,17 @@ + + + \ No newline at end of file diff --git a/src/components/Select/Select.vue b/src/components/Select/Select.vue new file mode 100644 index 0000000..c56dd6d --- /dev/null +++ b/src/components/Select/Select.vue @@ -0,0 +1,51 @@ + + + \ No newline at end of file diff --git a/src/components/Select/composables/useSelectClasses.ts b/src/components/Select/composables/useSelectClasses.ts new file mode 100644 index 0000000..29d8568 --- /dev/null +++ b/src/components/Select/composables/useSelectClasses.ts @@ -0,0 +1,35 @@ +import type { Ref } from 'vue' +import { computed } from 'vue' +import { simplifyTailwindClasses } from '@/utils/simplifyTailwindClasses' +import type { InputSize } from '@/components/Input/types' + +// SELECT +const defaultSelectClasses = 'w-full text-gray-900 bg-gray-50 border-[1px] border-gray-300 rounded-lg focus:ring-primary-500 focus:border-primary-500 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-primary-500 dark:focus:border-primary-500' +const disabledSelectClasses = 'cursor-not-allowed bg-gray-100' +const underlineSelectClasses = 'bg-transparent dark:bg-transparent border-0 border-b-2 border-gray-200 appearance-none dark:border-gray-700 focus:outline-none focus:ring-0 focus:border-gray-200 peer rounded-none' +const selectSizeClasses: Record = { + lg: 'p-4', + md: 'p-2.5 text-sm', + sm: 'p-2 text-sm', +} + +export type UseSelectClassesProps = { + size: Ref + disabled: Ref + underline: Ref +} + +export function useSelectClasses(props: UseSelectClassesProps) { + const selectClasses = computed(() => { + return simplifyTailwindClasses(defaultSelectClasses, selectSizeClasses[props.size.value], props.disabled.value ? disabledSelectClasses : '') + }) + + const underlineClasses = computed(() => { + return underlineSelectClasses + }) + + return { + selectClasses, + underlineClasses, + } +} \ No newline at end of file diff --git a/src/components/Select/types.ts b/src/components/Select/types.ts new file mode 100644 index 0000000..2ad533f --- /dev/null +++ b/src/components/Select/types.ts @@ -0,0 +1,4 @@ +export type optionsType = { + value: string, + name: string, +} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 1a34345..a1b73bd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -52,4 +52,6 @@ export { default as Input } from './components/Input/Input.vue' export { default as SlotListener } from './components/utils/SlotListener/SlotListener.vue' +export { default as Select } from './components/Select/Select.vue' + export * from './composables' From 2c97b192849bb68b3b88b5a628a632d8cfc9c29b Mon Sep 17 00:00:00 2001 From: vasu Date: Tue, 13 Jun 2023 15:00:35 +0530 Subject: [PATCH 02/12] feat(component): New select component docs --- docs/.vitepress/config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 649fdf6..8cf9f9f 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -65,6 +65,7 @@ function getComponents() { function getFormComponents() { return [ { text: 'Input', link: 'components/input' }, + { text: 'Select', link: 'components/select' }, ] } From 996064edae81e2b270030a77203f18e92ad9e9a3 Mon Sep 17 00:00:00 2001 From: vasu Date: Tue, 13 Jun 2023 18:44:13 +0530 Subject: [PATCH 03/12] feat(component): adding label to select --- docs/components/select.md | 2 ++ docs/components/select/examples/DisabledSelect.vue | 2 +- docs/components/select/examples/SelectExample.vue | 2 +- docs/components/select/examples/SelectSize.vue | 6 ++++-- docs/components/select/examples/UnderlinedSelect.vue | 2 +- src/components/Select/Select.vue | 7 ++++++- src/components/Select/composables/useSelectClasses.ts | 8 ++++++++ 7 files changed, 23 insertions(+), 6 deletions(-) diff --git a/docs/components/select.md b/docs/components/select.md index 44cda73..c3d3059 100644 --- a/docs/components/select.md +++ b/docs/components/select.md @@ -67,6 +67,8 @@ const countries = [ ``` diff --git a/docs/components/select/examples/DisabledSelect.vue b/docs/components/select/examples/DisabledSelect.vue index 878a76f..e6b4508 100644 --- a/docs/components/select/examples/DisabledSelect.vue +++ b/docs/components/select/examples/DisabledSelect.vue @@ -1,6 +1,6 @@ diff --git a/docs/components/select/examples/SelectExample.vue b/docs/components/select/examples/SelectExample.vue index 36c81e4..d1f84fd 100644 --- a/docs/components/select/examples/SelectExample.vue +++ b/docs/components/select/examples/SelectExample.vue @@ -1,6 +1,6 @@ diff --git a/docs/components/select/examples/SelectSize.vue b/docs/components/select/examples/SelectSize.vue index c08866f..5583775 100644 --- a/docs/components/select/examples/SelectSize.vue +++ b/docs/components/select/examples/SelectSize.vue @@ -1,6 +1,8 @@ diff --git a/docs/components/select/examples/UnderlinedSelect.vue b/docs/components/select/examples/UnderlinedSelect.vue index 9b2d69c..809ac8b 100644 --- a/docs/components/select/examples/UnderlinedSelect.vue +++ b/docs/components/select/examples/UnderlinedSelect.vue @@ -1,6 +1,6 @@ diff --git a/src/components/Select/Select.vue b/src/components/Select/Select.vue index c56dd6d..d22cc96 100644 --- a/src/components/Select/Select.vue +++ b/src/components/Select/Select.vue @@ -1,5 +1,6 @@