Navigeringsmeny
- Komponent
- Status
-
Produktionsklar
Navigeringsmeny låter användaren navigera i en applikation med flera undersidor och se vilken sida användaren befinner sig på.
Skapa menyalternativ
För att definiera alternativ i menyn används en array av NavigationMenuItem-objekt till routes-prop.
/**
* @public
*/
export interface NavigationMenuItem {
/**
* Text to display for the menu item.
*/
label: string;
/**
* Unique identifier for the menu item.
*/
route: string;
/**
* `href` attribute to add to menu item anchor element
*/
href?: string;
/**
* `target` attribute to add to menu item anchor element.
*/
target?: string;
}
const routes: NavigationMenuItem[] = [
{ label: "label1", route: "ROUTE_1" },
{ label: "label2", route: "ROUTE_2" },
{ label: "label3", route: "ROUTE_3", href: "/", target: "_blank" },
];
labelsätter etiketten för menyalternativet.routemåste vara en unik sträng och används av komponenten för att identifiera olika menyalternativ.hrefsätterhref-värdet för dena-tag som menyalternativet innehåller.targetsättertarget-värdet för dena-tag som menyalternativet innehåller.
Navigera med Vue Router
För att kunna navigera med Vue Router så ska du inte använda href eller target med dina NavigationMenuItem.
Du kommer också behöva koppla dina NavigationMenuItem till de registrerade rutterna.
Om du använder named routes så kan du använda ruttens namn i route för NavigationMenuItem.
const router = createRouter({
history: createWebHistory(),
routes: [
{
path: "/my-awesome-page",
name: "my-awesome-page",
component: AwesomePage,
},
],
});
const app = createApp(App);
app.use(router);
app.mount("#app");
// `NavigationMenuItem.route` = `RouteRecord.name`
const routes: NavigationMenuItem[] = [
{ label: "My awesome page", route: "my-awesome-page" },
];
När ett menyalternativ blir valt så skickar komponenten eventet selected-route som innehåller värdet i route.
Du kan då navigera i respons på eventet i din komponent.
-<f-navigation-menu :routes="routes">
+<f-navigation-menu :routes="routes" @selected-route="onSelectedRoute">
<script setup lang="ts">
import { useRouter } from "vue-router";
const router = useRouter();
function onSelectedRoute(route: string): void {
router.push({
name: route,
});
}
</script>
Visa aktiv sida
För att visa aktiv sida behöver du styra det valda menyalternativet programmatiskt med v-model:route.
När modellen ändras till ett värde som matchar route för en NavigationMenuItem i routes så visas den som vald i menyn.
Om värdet inte matchar något av alternativen visas inget som valt.
-<f-navigation-menu :routes="routes">
+<f-navigation-menu v-model:route="currentRoute" :routes="routes">
Överflödande alternativ
När alla alternativ inte får plats i bredd så placeras de istället i en undermeny (endast för meny som inte har prop vertical).
När detta händer placeras ett nytt alternativ i slutet på menyn som öppnar undermenyn.
Justera fönstrets storlek så att alla alternativ inte får plats för att se överflödesbeteendet.
Skärmläsare
Navigeringsmenyn innehåller två navigeringslandmärken: ett för menyn och ett för popup-menyn.
Som standard är namnet i aria-label Navigeringsmeny för menyn och Popupmeny för popup-menyn.
För att ändra dessa namn använd props menu-aria-label och popup-aria-label.
Se till att du använder tydliga namn som beskriver syftet för respektive navigering.
Om flera navigeringsmenyer eller nav-element används samtidigt, se till att de alla har unika namn.
API
Models
-
v-model:route: stringOptional -
Current route.
Default:
""
Props
-
routes: NavigationMenuItem[] -
The route items to be diplayed in the menu
-
vertical: booleanOptional -
If true, show the menu vertically
-
selectedMenuItemScreenReaderText: stringOptional -
Screen reader text for selected item
Default:
"" -
menuMoreScreenReaderText: stringOptional -
Screen reader text for the more menu item
Default:
"" -
menuMoreWithSelectedItemsScreenReaderText: stringOptional -
Screen reader text for the more menu with selected items
Default:
"" -
menuAriaLabel: stringOptional -
Unique accessible name for navigation landmark in menu.
Default:
"Navigeringsmeny" -
popupAriaLabel: stringOptional -
Unique accessible name for navigation landmark in popup.
Default:
"Popupmeny"
Events
-
selectedRoute -
Event that is dispatched when a menu item is selected, for example, by clicking on the item. In most use cases the event payload is used to call Vue
router.push()from the consumer code.Arguments:
route: string