Skip to content

cardgraph22/svelte5-commenter

Repository files navigation

Blog posts, forum posts and news articles usually have a comments section.

This project was created using Svelte 5, and demonstrates a 'comment section'; a series of recursive, nested comments, and their replies, and their replies (and so forth) by using the element:

svelte:self

which is invoked in the Comments.svelte component (which is in $lib/Components)

This:


Comment 1
  Reply 1
    Sub Reply 1    
    Sub Reply 2
  Reply 2
Comment 2

is generated with this:


{#if blog.replies && showReplies}
  {#each blog.replies as blog}
    <div style="margin-left: {indent};">   
      <svelte:self {blog}/>
    </div>
  {/each}
{/if}

The key concept here is that the 'replies' blog property (an array) has its own 'replies' property (again, an array) as a member.

So, if a reply has more replies under it (ie, a non-empty replies array), the component

<svelte:self {blog}  />

IE:

<Comments {blog}  />

is invoked until there are no more nested replies.

Take careful note of the 'blog.replies' array in the preceeding code and 'replies' array in the following schema. If non-empty, recursion occurs.


testBlogs = [{
  "userid": 1,
  "username": "Wilma",
  "title": "'Blog' from Wilma",  
  "entry": "Blog entry...",
  "likes":0,
  "dislikes":0,
  "replies": [
    {
      "userid": 2
      "username": "Gordo",
      "entry": "comment 1",
      "likes": 0,
      "dislikes": 0,
      "replies": [],
    }
  ],
}]

The 'Add Item' button just adds another item (blog, in this case) to the list of 'commentable items'.


The backend uses zod validation and MongoDB (Mongoose) for the database. The Documentation on the website (see the nav bar) gives further details.

To try this out, download/clone the project, go into that folder, type 'npm install'
Then, go into Visual Code, open a terminal, and type 'npm run dev'

Acknowledgements

The project uses picnic.css for styling and ICONPACKS (www.iconpacks.net) for icons.

About

Svelte 5 Comments component demonstration

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published