Quantcast
Channel: Active questions tagged svelte - Stack Overflow
Viewing all articles
Browse latest Browse all 1541

svelte 5 - how to write JSDoc for props

$
0
0

I have following snippet file, in which I would like to add JSDoc in order to defines tables and table in {each} part of the code.

<script>    import { dialog } from "../store/dialog.svelte";    /**     * The tables to be displayed.     */    let { tables } = $props();    /**     * Logs the ID of a table for an order.     *     * @function     * @param {Object} table - The table object containing information about the order.     * @param {number} table.id - The unique identifier for the table.     * @param {string} table.name - The name of the table.     * @returns {void}    */    function getOrder(table){        dialog.open = true;        dialog.title = `${table.name} Order`;    }</script>{#each tables as table}<div class="card bg-base-100 shadow-xl"><div class="card-body py-2 px-1"><h2 class="card-title">{table.name}<sup class="text-sm">({table.seats}<i class="fa-solid fa-chair"></i>)</sup>                {#if table.order }<sup><button class="bg-green-500 text-white p-2 rounded-full                    transition duration-300 ease-in-out transform hover:scale-105 animate-pulse"></button></sup>                {/if}</h2><div class="card-actions justify-end"><button class="btn btn-info btn-xs"                onclick="{() => getOrder(table)}">Show Order</button></div></div></div>{/each}

This is where the props are passed:

<script>    import { tables } from "../store/tables.svelte";    import Table from "../snippets/Table.svelte";</script><nav id="mainNav"><h3>Tables</h3><div class="divider"></div><div class="border grid grid-cols-4 gap-4 justify-between py-5 px-2 bg-gray-100"><Table tables={tables.tables}></Table></div></nav>

This is store for the tables:

import { user } from "./user.svelte"function createTables(){    /**     * @typedef {Object} Waiter     * @property {number} id     */    /**     * @typedef {Object} table     * @property {number} id     * @property {string} name     * @property {number|null} seats     * @property {null|Object} order     * @property {Waiter} waiter     */    /**     * @type {Array.<table>} tables     */    let tables = $state([])    let userTables = $derived(() => {        return tables.filter(table => {            return +user.currentUser?.id === +table.waiter?.id        })    })    let userTablesFree = $derived(() => {        return tables.filter(table => {            return +user.currentUser?.id === +table.waiter?.id &&            table.order === null        })    })    let userTablesUsed = $derived(() => {        return tables.filter(table => {            return +user.currentUser?.id === +table.waiter?.id &&            table.order !== null        })    })    let otherTablesFree = $derived(() => {        return tables.filter(table => {            return +user.currentUser?.id !== +table.waiter?.id &&            table.order === null        })    })    let otherTablesUsed = $derived(() => {        return tables.filter(table => {            return +user.currentUser?.id !== +table.waiter?.id &&            table.order !== null        })    })    return {        get tables(){            return tables        },        set tables(newValue){            tables = newValue        },        userTables,        userTablesFree,        userTablesUsed,        otherTablesFree,        otherTablesUsed    }}export const tables = createTables()

Viewing all articles
Browse latest Browse all 1541

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>