Megamenu test
This commit is contained in:
@@ -3,6 +3,7 @@ import FwbNavbarExample from './navbar/examples/FwbNavbarExample.vue'
|
|||||||
import FwbNavbarExampleSolid from './navbar/examples/FwbNavbarExampleSolid.vue'
|
import FwbNavbarExampleSolid from './navbar/examples/FwbNavbarExampleSolid.vue'
|
||||||
import FwbNavbarExampleActionButton from './navbar/examples/FwbNavbarExampleActionButton.vue'
|
import FwbNavbarExampleActionButton from './navbar/examples/FwbNavbarExampleActionButton.vue'
|
||||||
import FwbNavbarExampleCustomMobileIcon from './navbar/examples/FwbNavbarExampleCustomMobileIcon.vue'
|
import FwbNavbarExampleCustomMobileIcon from './navbar/examples/FwbNavbarExampleCustomMobileIcon.vue'
|
||||||
|
import FwbNavbarExampleMegamenu from './navbar/examples/FwbNavbarExampleMegamenu.vue'
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
# Vue Navbar – Flowbite
|
# Vue Navbar – Flowbite
|
||||||
@@ -50,7 +51,7 @@ import {
|
|||||||
|
|
||||||
## Solid navbar
|
## Solid navbar
|
||||||
|
|
||||||
<fwb-navbar-example-solid />
|
|
||||||
```vue
|
```vue
|
||||||
<template>
|
<template>
|
||||||
<fwb-navbar solid>
|
<fwb-navbar solid>
|
||||||
@@ -137,6 +138,42 @@ import {
|
|||||||
## Navbar with custom mobile icon
|
## Navbar with custom mobile icon
|
||||||
|
|
||||||
<fwb-navbar-example-custom-mobile-icon />
|
<fwb-navbar-example-custom-mobile-icon />
|
||||||
|
```vue
|
||||||
|
<template>
|
||||||
|
<fwb-navbar>
|
||||||
|
<template #logo>
|
||||||
|
<fwb-navbar-logo alt="Flowbite logo" image-url="/images/logo.svg" link="#">
|
||||||
|
Flowbite
|
||||||
|
</fwb-navbar-logo>
|
||||||
|
</template>
|
||||||
|
<template #default="{isShowMenu}">
|
||||||
|
<fwb-navbar-collapse :is-show-menu="isShowMenu">
|
||||||
|
<fwb-navbar-link is-active link="#">
|
||||||
|
Home
|
||||||
|
</fwb-navbar-link>
|
||||||
|
<fwb-navbar-link link="#">
|
||||||
|
Services
|
||||||
|
</fwb-navbar-link>
|
||||||
|
<fwb-navbar-link link="#">
|
||||||
|
Pricing
|
||||||
|
</fwb-navbar-link>
|
||||||
|
<fwb-navbar-link link="#">
|
||||||
|
Contact
|
||||||
|
</fwb-navbar-link>
|
||||||
|
</fwb-navbar-collapse>
|
||||||
|
</template>
|
||||||
|
<template #menu-icon>
|
||||||
|
<svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M12 6V4m0 2a2 2 0 100 4m0-4a2 2 0 110 4m-6 8a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4m6 6v10m6-2a2 2 0 100-4m0 4a2 2 0 110-4m0 4v2m0-6V4" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" />
|
||||||
|
</svg>
|
||||||
|
</template>
|
||||||
|
</fwb-navbar>
|
||||||
|
</template>
|
||||||
|
```
|
||||||
|
|
||||||
|
## Navbar with Megamenu
|
||||||
|
<fwb-navbar-example-megamenu />
|
||||||
|
|
||||||
```vue
|
```vue
|
||||||
<template>
|
<template>
|
||||||
<fwb-navbar>
|
<fwb-navbar>
|
||||||
|
|||||||
50
docs/components/navbar/examples/FwbNavbarExampleMegamenu.vue
Normal file
50
docs/components/navbar/examples/FwbNavbarExampleMegamenu.vue
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
<template>
|
||||||
|
<div class="vp-raw">
|
||||||
|
<fwb-navbar>
|
||||||
|
<template #logo>
|
||||||
|
<fwb-navbar-logo alt="Flowbite logo" image-url="https://flowbite.com/docs/images/logo.svg" link="https://www.google.com/">
|
||||||
|
Flowbite
|
||||||
|
</fwb-navbar-logo>
|
||||||
|
</template>
|
||||||
|
<template #default="{isShowMenu}">
|
||||||
|
<fwb-navbar-collapse :is-show-menu="isShowMenu">
|
||||||
|
<fwb-navbar-link is-active link="#">
|
||||||
|
Home
|
||||||
|
</fwb-navbar-link>
|
||||||
|
<fwb-navbar-link link="#">
|
||||||
|
Services
|
||||||
|
</fwb-navbar-link>
|
||||||
|
<fwb-mega-menu link="#">
|
||||||
|
Company
|
||||||
|
</fwb-mega-menu>
|
||||||
|
<fwb-navbar-link link="#">
|
||||||
|
Contact
|
||||||
|
</fwb-navbar-link>
|
||||||
|
</fwb-navbar-collapse>
|
||||||
|
</template>
|
||||||
|
<template #right-side>
|
||||||
|
<fwb-button>
|
||||||
|
Get started
|
||||||
|
</fwb-button>
|
||||||
|
</template>
|
||||||
|
<template #mega-menu-dropdown>
|
||||||
|
<fwb-mega-menu-dropdown />
|
||||||
|
</template>
|
||||||
|
</fwb-navbar>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import {
|
||||||
|
FwbButton,
|
||||||
|
FwbNavbar,
|
||||||
|
FwbNavbarCollapse,
|
||||||
|
FwbNavbarLink,
|
||||||
|
FwbNavbarLogo,
|
||||||
|
FwbMegaMenu,
|
||||||
|
FwbMegaMenuDropdown,
|
||||||
|
} from '../../../../src/index'
|
||||||
|
</script>
|
||||||
32
src/components/FwbNavbar/FwbMegaMenu.vue
Normal file
32
src/components/FwbNavbar/FwbMegaMenu.vue
Normal file
File diff suppressed because one or more lines are too long
12
src/components/FwbNavbar/FwbMegaMenuDropdown.vue
Normal file
12
src/components/FwbNavbar/FwbMegaMenuDropdown.vue
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<template>
|
||||||
|
<div id="mega-menu-full-cta-dropdown" :class="megaMenuVisble == false ? 'hidden' : ''" class="mt-1 bg-white border-gray-200 shadow-sm border-y dark:bg-gray-800 dark:border-gray-600">
|
||||||
|
<div class="grid max-w-screen-xl px-4 py-5 mx-auto text-sm text-gray-500 dark:text-gray-400 md:grid-cols-3 md:px-6">
|
||||||
|
<slot name="default"></slot>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { computed, ref, toRef, inject } from 'vue'
|
||||||
|
|
||||||
|
const { megaMenuVisble, toggleMenu } = inject('megaMenuToggle')
|
||||||
|
</script>
|
||||||
@@ -35,11 +35,14 @@
|
|||||||
<slot name="right-side" />
|
<slot name="right-side" />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<slot name="mega-menu-dropdown">
|
||||||
|
|
||||||
|
</slot>
|
||||||
</nav>
|
</nav>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { computed, ref, useSlots } from 'vue'
|
import { computed, ref, useSlots, provide } from 'vue'
|
||||||
import { breakpointsTailwind, useBreakpoints, useToggle } from '@vueuse/core'
|
import { breakpointsTailwind, useBreakpoints, useToggle } from '@vueuse/core'
|
||||||
import { useMergeClasses } from '@/composables/useMergeClasses'
|
import { useMergeClasses } from '@/composables/useMergeClasses'
|
||||||
|
|
||||||
@@ -62,6 +65,17 @@ const props = defineProps({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const megaMenuVisble = ref(false)
|
||||||
|
|
||||||
|
function toggleMenu() {
|
||||||
|
megaMenuVisble.value = !megaMenuVisble.value;
|
||||||
|
}
|
||||||
|
|
||||||
|
provide('megaMenuToggle', {
|
||||||
|
megaMenuVisble,
|
||||||
|
toggleMenu
|
||||||
|
})
|
||||||
|
|
||||||
const slots = useSlots()
|
const slots = useSlots()
|
||||||
|
|
||||||
const breakpoints = useBreakpoints(breakpointsTailwind)
|
const breakpoints = useBreakpoints(breakpointsTailwind)
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ export { default as FwbNavbar } from './components/FwbNavbar/FwbNavbar.vue'
|
|||||||
export { default as FwbNavbarCollapse } from './components/FwbNavbar/FwbNavbarCollapse.vue'
|
export { default as FwbNavbarCollapse } from './components/FwbNavbar/FwbNavbarCollapse.vue'
|
||||||
export { default as FwbNavbarLink } from './components/FwbNavbar/FwbNavbarLink.vue'
|
export { default as FwbNavbarLink } from './components/FwbNavbar/FwbNavbarLink.vue'
|
||||||
export { default as FwbNavbarLogo } from './components/FwbNavbar/FwbNavbarLogo.vue'
|
export { default as FwbNavbarLogo } from './components/FwbNavbar/FwbNavbarLogo.vue'
|
||||||
|
export { default as FwbMegaMenu } from './components/FwbNavbar/FwbMegaMenu.vue'
|
||||||
|
export { default as FwbMegaMenuDropdown } from './components/FwbNavbar/FwbMegaMenuDropdown.vue'
|
||||||
export { default as FwbPagination } from './components/FwbPagination/FwbPagination.vue'
|
export { default as FwbPagination } from './components/FwbPagination/FwbPagination.vue'
|
||||||
export { default as FwbProgress } from './components/FwbProgress/FwbProgress.vue'
|
export { default as FwbProgress } from './components/FwbProgress/FwbProgress.vue'
|
||||||
export { default as FwbRating } from './components/FwbRating/FwbRating.vue'
|
export { default as FwbRating } from './components/FwbRating/FwbRating.vue'
|
||||||
|
|||||||
Reference in New Issue
Block a user