Skip to content

Commit 5d6d260

Browse files
authored
Feature: active prop added to the FwbListGroupItem component
+ small `useClasses` refactor
2 parents 46f7e6f + 9fc60ab commit 5d6d260

File tree

4 files changed

+18
-10
lines changed

4 files changed

+18
-10
lines changed

docs/components/list-group.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ import { FwbListGroup, FwbListGroupItem } from 'flowbite-vue'
4242
```vue
4343
<template>
4444
<fwb-list-group>
45-
<fwb-list-group-item hover>Item 1</fwb-list-group-item>
45+
<fwb-list-group-item active hover>Item 1</fwb-list-group-item>
4646
<fwb-list-group-item hover>Item 2</fwb-list-group-item>
4747
<fwb-list-group-item hover>Item 3</fwb-list-group-item>
4848
<fwb-list-group-item hover>Item 4</fwb-list-group-item>

docs/components/listGroup/examples/FwbListGroupExampleHover.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
<template>
22
<div class="vp-raw flex flex-col">
33
<fwb-list-group>
4-
<fwb-list-group-item hover>
4+
<fwb-list-group-item
5+
active
6+
hover
7+
>
58
Item 1
69
</fwb-list-group-item>
710
<fwb-list-group-item hover>

src/components/FwbListGroup/FwbListGroupItem.vue

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ const props = defineProps({
3030
type: Boolean,
3131
default: false,
3232
},
33+
active: {
34+
type: Boolean,
35+
default: false,
36+
},
3337
})
3438
3539
const { itemClasses } = useListGroupItemClasses(toRefs(props))

src/components/FwbListGroup/composables/useListGroupItemClasses.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,27 @@
11
import { computed, type Ref } from 'vue'
22

3-
import { simplifyTailwindClasses } from '@/utils/simplifyTailwindClasses'
3+
import { useMergeClasses } from '@/composables/useMergeClasses'
44

55
const defaultItemClasses = 'inline-flex items-center w-full px-4 py-2 border-b border-gray-200 dark:border-gray-600'
66
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'
77
const disabledItemClasses = 'bg-gray-100 cursor-not-allowed dark:bg-gray-600 dark:text-gray-400'
8+
const activeItemClasses = 'text-white bg-blue-700 dark:bg-gray-800 hover:text-white hover:bg-blue-700 hover:dark:bg-gray-800'
89

910
export type UseListGroupItemClassesProps = {
1011
hover: Ref<boolean>
1112
disabled: Ref<boolean>
13+
active: Ref<boolean>
1214
}
1315

1416
export function useListGroupItemClasses (props: UseListGroupItemClassesProps): {
1517
itemClasses: Ref<string>
1618
} {
17-
const itemClasses = computed<string>(() => {
18-
return simplifyTailwindClasses(
19-
defaultItemClasses,
20-
props.disabled.value ? disabledItemClasses : '',
21-
!props.disabled.value && props.hover.value ? hoverItemClasses : '',
22-
)
23-
})
19+
const itemClasses = computed(() => useMergeClasses([
20+
defaultItemClasses,
21+
props.disabled.value ? disabledItemClasses : '',
22+
!props.disabled.value && props.hover.value ? hoverItemClasses : '',
23+
!props.disabled.value && props.active.value ? activeItemClasses : '',
24+
]))
2425

2526
return {
2627
itemClasses,

0 commit comments

Comments
 (0)