Vue 3
Vue 3 nécessite un indice de compilation pour traiter les balises <wink-*> comme des éléments personnalisés natifs au lieu de composants Vue non résolus. Après cela, ils fonctionnent comme n’importe quel autre élément HTML.
@wink/elements npm package Installez et chargez le bundle CDN avec les types TypeScript.
Installation
Section intitulée « Installation »npm install @wink/elementsConfigurer le compilateur
Section intitulée « Configurer le compilateur »Vite + Vue (vite.config.ts)
Section intitulée « Vite + Vue (vite.config.ts) »import { defineConfig } from 'vite';import vue from '@vitejs/plugin-vue';
export default defineConfig({ plugins: [ vue({ template: { compilerOptions: { // Traiter toutes les balises commençant par "wink-" comme des éléments personnalisés isCustomElement: (tag) => tag.startsWith('wink-'), }, }, }), ],});Vue CLI (vue.config.js)
Section intitulée « Vue CLI (vue.config.js) »module.exports = { chainWebpack(config) { config.module .rule('vue') .use('vue-loader') .tap((options) => ({ ...options, compilerOptions: { isCustomElement: (tag) => tag.startsWith('wink-'), }, })); },};Charger le CDN une fois au démarrage de l’application
Section intitulée « Charger le CDN une fois au démarrage de l’application »import { createApp } from 'vue';import App from './App.vue';import { load } from '@wink/elements';
load({ clientId: import.meta.env.VITE_WINK_CLIENT_ID });
createApp(App).mount('#app');Utilisation dans les templates
Section intitulée « Utilisation dans les templates »<template> <main> <wink-content-loader layout="HOTEL" :id="layoutId" /> <wink-lookup /> </main></template>
<script setup lang="ts">const layoutId = 'YOUR_LAYOUT_ID';</script>TypeScript — étendre les types globaux des éléments
Section intitulée « TypeScript — étendre les types globaux des éléments »Vue 3 + TypeScript lit les types des éléments personnalisés depuis le HTMLElementTagNameMap global. Ajoutez un fichier de déclaration :
import type { WinkContentLoaderAttributes, WinkLookupAttributes, WinkSearchButtonAttributes, WinkAccountButtonAttributes, WinkItineraryButtonAttributes, WinkShoppingCartButtonAttributes, WinkAppLoaderAttributes,} from '@wink/elements';
declare global { interface HTMLElementTagNameMap { 'wink-content-loader': HTMLElement & WinkContentLoaderAttributes; 'wink-lookup': HTMLElement & WinkLookupAttributes; 'wink-search-button': HTMLElement & WinkSearchButtonAttributes; 'wink-account-button': HTMLElement & WinkAccountButtonAttributes; 'wink-itinerary-button': HTMLElement & WinkItineraryButtonAttributes; 'wink-shopping-cart-button': HTMLElement & WinkShoppingCartButtonAttributes; 'wink-app-loader': HTMLElement & WinkAppLoaderAttributes; }}Variables d’environnement
Section intitulée « Variables d’environnement »Ajoutez dans .env.local :
VITE_WINK_CLIENT_ID=your-client-idVite expose uniquement les variables préfixées par VITE_ au bundle client.