import { css, html, LitElement, nothing } from "lit"; import { customElement, property } from "lit/decorators.js"; import Subscriber from "@supersoniks/concorde/core/mixins/Subscriber"; import Fetcher from "@supersoniks/concorde/core/mixins/Fetcher"; import { LoaderMode } from "../../ui/loader/loader"; import { TemplatesContainer } from "@supersoniks/concorde/mixins"; import { templateContent } from "lit/directives/template-content.js"; import { DirectiveResult } from "lit/async-directive.js"; const tagName = "sonic-fetch"; // For Astro.build /** * ###Fetch charge un contenu via un appel d'api web. * Extends mixins : Fetcher, [Subscriber](./?path=/docs/miscallenous-🔔-subscriber--page) * * #### Configuration via les attributs * * | nom | sur quelle balise | Description | Exemple de valeur | défaut / requis | * | -------------------------------------------------------------------------------------- | * | serviceURL |Fetcher ou un de ses parents | URL de base des services. | http://la-billetterie.net/api/v2 | domain du site | * | endpoint |Fetcher | point d'accès d'un service | user/2 | valeur de l'attribut dataProvider | * | dataProvider |Fetcher ou un de ses parents | Identifiant d'un publisher qui stock les données, voir [subscriber](./?path=/docs/miscallenous-🔔-subscriber--page). | billetterie/user/2 | *REQUIS* | * | headersDataProvider |Fetcher ou un de ses parents | Identifiant d'un publisher qui stock les données destinées à être envoyées en entêtes de la requetes | MyCoockieHEaders | null | * | key |Fetcher | extrait une sous propriété de la donnée chargée avant de l'assignée à son publisher | ma.data | null | * * *Si la données est `{ma:{data:{a:1,b:2}}}` et `key="ma.data"`, la données disponible dans le composant sera `{a:1, b:2}`* #### Intégration auto de basic auth (pour tester une api qui nécessite une authentification) * Fetch utilise le service pour générer le token et l'ajoute au header de l'appel qui récupère les données. * | nom | sur quelle balise | Description | Exemple de valeur | défaut / requis | * | -------------------------------------------------------------------------------------- | * | userName | Fetcher ou un de ses parents | Nom de l'utilisateur | DjuDju | null | * | password | Fetcher ou un de ses parents | mot de passe | pom_549 | null | * | tokenProvider | Fetcher ou un de ses parents | point d'accès du service fournissant le token | auth | null | * | token | Fetcher ou un de ses parents | A fournir à la place des autres attributs si on le possède | q`; } renderSkeleton() { const template = this.templateParts["skeleton"]; if (!(this.isLoading && template)) return nothing; return templateContent(template) as DirectiveResult; } render() { return html` ${this.renderSkeleton()} ${this.renderLoader()} ${!this.isLoading ? html`` : nothing} `; } }