diff --git a/src/docs/constants.ts b/src/docs/constants.ts index c7c76737..10a56e7b 100644 --- a/src/docs/constants.ts +++ b/src/docs/constants.ts @@ -19,6 +19,7 @@ import { mdiDotsCircle, mdiFormatHeaderPound, mdiFormDropdown, + mdiFormSelect, mdiFormTextbox, mdiFormTextboxPassword, mdiHelpBox, @@ -93,6 +94,7 @@ export const componentGroups = [ }, { name: 'PasswordInput', icon: mdiFormTextboxPassword }, { name: 'Select', icon: mdiFormDropdown }, + { name: 'Dropdown', icon: mdiFormSelect }, { name: 'Switch', icon: mdiToggleSwitchOutline, activeIcon: mdiToggleSwitch }, ], }, diff --git a/src/lib/components/Dropdown/Dropdown.svelte b/src/lib/components/Dropdown/Dropdown.svelte new file mode 100644 index 00000000..ebe975d3 --- /dev/null +++ b/src/lib/components/Dropdown/Dropdown.svelte @@ -0,0 +1,134 @@ + + + + + + + + {#snippet child({ props })} + {#if trigger} + {@render trigger({ props, selectedIcon: value?.icon })} + {:else} + + {/if} + {/snippet} + + + + {#snippet child({ props, wrapperProps, open })} + + {#if open} +
+
+ {#each options as option (option.value)} + {@const buttonStyle = option.disabled + ? '' + : 'transition-all hover:bg-gray-300 dark:hover:bg-gray-800'} + + {/each} +
+
+ {/if} + {/snippet} +
+
+
diff --git a/src/routes/components/dropdown/+page.svelte b/src/routes/components/dropdown/+page.svelte new file mode 100644 index 00000000..b974d57a --- /dev/null +++ b/src/routes/components/dropdown/+page.svelte @@ -0,0 +1,35 @@ + + + + + Allows the user to select a single option from a dropdown list that is triggered by a button + + + diff --git a/src/routes/components/dropdown/BasicExample.svelte b/src/routes/components/dropdown/BasicExample.svelte new file mode 100644 index 00000000..8c18b95d --- /dev/null +++ b/src/routes/components/dropdown/BasicExample.svelte @@ -0,0 +1,17 @@ + + + + {}} + /> + diff --git a/src/routes/components/dropdown/BigList.svelte b/src/routes/components/dropdown/BigList.svelte new file mode 100644 index 00000000..6da29f0f --- /dev/null +++ b/src/routes/components/dropdown/BigList.svelte @@ -0,0 +1,37 @@ + + + + {}} + /> + diff --git a/src/routes/components/dropdown/CustomTrigger.svelte b/src/routes/components/dropdown/CustomTrigger.svelte new file mode 100644 index 00000000..829ebaee --- /dev/null +++ b/src/routes/components/dropdown/CustomTrigger.svelte @@ -0,0 +1,25 @@ + + + + + {#snippet trigger({ props, selectedIcon })} + + {/snippet} + + diff --git a/src/routes/components/dropdown/OutlineButton.svelte b/src/routes/components/dropdown/OutlineButton.svelte new file mode 100644 index 00000000..afc9132c --- /dev/null +++ b/src/routes/components/dropdown/OutlineButton.svelte @@ -0,0 +1,17 @@ + + + + +