Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/components/list-group.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ import { FwbListGroup, FwbListGroupItem } from 'flowbite-vue'
```vue
<template>
<fwb-list-group>
<fwb-list-group-item hover>Item 1</fwb-list-group-item>
<fwb-list-group-item active hover>Item 1</fwb-list-group-item>
<fwb-list-group-item hover>Item 2</fwb-list-group-item>
<fwb-list-group-item hover>Item 3</fwb-list-group-item>
<fwb-list-group-item hover>Item 4</fwb-list-group-item>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
<template>
<div class="vp-raw flex flex-col">
<fwb-list-group>
<fwb-list-group-item hover>
<fwb-list-group-item
active
hover
>
Item 1
</fwb-list-group-item>
<fwb-list-group-item hover>
Expand Down
4 changes: 4 additions & 0 deletions src/components/FwbListGroup/FwbListGroupItem.vue
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ const props = defineProps({
type: Boolean,
default: false,
},
active: {
type: Boolean,
default: false,
},
})

const { itemClasses } = useListGroupItemClasses(toRefs(props))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,26 +1,27 @@
import { computed, type Ref } from 'vue'

import { simplifyTailwindClasses } from '@/utils/simplifyTailwindClasses'
import { useMergeClasses } from '@/composables/useMergeClasses'

const defaultItemClasses = 'inline-flex items-center w-full px-4 py-2 border-b border-gray-200 dark:border-gray-600'
const hoverItemClasses = 'block w-full px-4 py-2 cursor-pointer hover:bg-gray-100 hover:text-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-700 focus:text-blue-700 dark:hover:bg-gray-600 dark:hover:text-white dark:focus:ring-gray-500 dark:focus:text-white'
const disabledItemClasses = 'bg-gray-100 cursor-not-allowed dark:bg-gray-600 dark:text-gray-400'
const activeItemClasses = 'text-white bg-blue-700 dark:bg-gray-800 hover:text-white hover:bg-blue-700 hover:dark:bg-gray-800'

export type UseListGroupItemClassesProps = {
hover: Ref<boolean>
disabled: Ref<boolean>
active: Ref<boolean>
}

export function useListGroupItemClasses (props: UseListGroupItemClassesProps): {
itemClasses: Ref<string>
} {
const itemClasses = computed<string>(() => {
return simplifyTailwindClasses(
defaultItemClasses,
props.disabled.value ? disabledItemClasses : '',
!props.disabled.value && props.hover.value ? hoverItemClasses : '',
)
})
const itemClasses = computed(() => useMergeClasses([
defaultItemClasses,
props.disabled.value ? disabledItemClasses : '',
!props.disabled.value && props.hover.value ? hoverItemClasses : '',
!props.disabled.value && props.active.value ? activeItemClasses : '',
]))

return {
itemClasses,
Expand Down
Loading