Snippets Animation

Bootstrap 5 Folder List with Checkbox Selection

A selectable folder list with file counts and dates, a select-all control and an action bar that shows how many folders are chosen and lets you move or delete them.

Bootstrap 5 No jQuery Jun 2020 2.2K views

<section class="wdw-stage">
  <div class="container" style="max-width: 760px">
    <div class="wdw-card overflow-hidden" id="folder-list">
      <div class="d-flex align-items-center justify-content-between gap-3 px-4 py-3 border-bottom">
        <div>
          <span class="wdw-eyebrow">Workspace</span>
          <h2 class="h5 fw-bold mb-0 text-body-emphasis">Project folders</h2>
        </div>
        <div class="form-check m-0">
          <input class="form-check-input" type="checkbox" id="folder-all">
          <label class="form-check-label small fw-semibold" for="folder-all">Select all</label>
        </div>
      </div>
      <ul class="list-group list-group-flush" id="folder-rows">
        <li class="list-group-item folder-item d-flex align-items-center gap-3 p-4">
          <input class="form-check-input folder-check flex-shrink-0 m-0" type="checkbox" id="folder-0">
          <label for="folder-0" class="d-flex align-items-center gap-3 flex-grow-1 m-0" style="cursor:pointer">
            <span class="wdw-icon folder-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg></span>
            <span class="min-w-0">
              <span class="d-block fw-semibold text-body-emphasis">Ogivet Maither</span>
              <span class="d-block small wdw-muted">22 files · Jan 21, 2026</span>
            </span>
          </label>
          <span class="folder-size badge rounded-pill text-bg-light border fw-semibold d-none d-sm-inline-block">48 MB</span>
        </li>
        <li class="list-group-item folder-item d-flex align-items-center gap-3 p-4">
          <input class="form-check-input folder-check flex-shrink-0 m-0" type="checkbox" id="folder-1" checked>
          <label for="folder-1" class="d-flex align-items-center gap-3 flex-grow-1 m-0" style="cursor:pointer">
            <span class="wdw-icon folder-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg></span>
            <span class="min-w-0">
              <span class="d-block fw-semibold text-body-emphasis">Macan Worldgroup</span>
              <span class="d-block small wdw-muted">62 files · Jan 22, 2026</span>
            </span>
          </label>
          <span class="folder-size badge rounded-pill text-bg-light border fw-semibold d-none d-sm-inline-block">212 MB</span>
        </li>
        <li class="list-group-item folder-item d-flex align-items-center gap-3 p-4">
          <input class="form-check-input folder-check flex-shrink-0 m-0" type="checkbox" id="folder-2">
          <label for="folder-2" class="d-flex align-items-center gap-3 flex-grow-1 m-0" style="cursor:pointer">
            <span class="wdw-icon folder-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg></span>
            <span class="min-w-0">
              <span class="d-block fw-semibold text-body-emphasis">Organ parts</span>
              <span class="d-block small wdw-muted">82 files · Jan 29, 2026</span>
            </span>
          </label>
          <span class="folder-size badge rounded-pill text-bg-light border fw-semibold d-none d-sm-inline-block">1.2 GB</span>
        </li>
        <li class="list-group-item folder-item d-flex align-items-center gap-3 p-4">
          <input class="form-check-input folder-check flex-shrink-0 m-0" type="checkbox" id="folder-3">
          <label for="folder-3" class="d-flex align-items-center gap-3 flex-grow-1 m-0" style="cursor:pointer">
            <span class="wdw-icon folder-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg></span>
            <span class="min-w-0">
              <span class="d-block fw-semibold text-body-emphasis">Engine parts</span>
              <span class="d-block small wdw-muted">182 files · Jan 29, 2026</span>
            </span>
          </label>
          <span class="folder-size badge rounded-pill text-bg-light border fw-semibold d-none d-sm-inline-block">3.4 GB</span>
        </li>
        <li class="list-group-item folder-item d-flex align-items-center gap-3 p-4">
          <input class="form-check-input folder-check flex-shrink-0 m-0" type="checkbox" id="folder-4">
          <label for="folder-4" class="d-flex align-items-center gap-3 flex-grow-1 m-0" style="cursor:pointer">
            <span class="wdw-icon folder-icon"><svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 7a2 2 0 0 1 2-2h4l2 2h8a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z"/></svg></span>
            <span class="min-w-0">
              <span class="d-block fw-semibold text-body-emphasis">Turbine parts</span>
              <span class="d-block small wdw-muted">802 files · Feb 3, 2026</span>
            </span>
          </label>
          <span class="folder-size badge rounded-pill text-bg-light border fw-semibold d-none d-sm-inline-block">9.8 GB</span>
        </li>
      </ul>
      <p class="text-center wdw-muted py-5 m-0" id="folder-empty" hidden>No folders left. Everything has been deleted.</p>
      <div class="d-flex align-items-center justify-content-between gap-3 px-4 py-3 bg-body-tertiary border-top" style="min-height:4.25rem">
        <span class="small fw-semibold" id="folder-count" aria-live="polite">No folders selected</span>
        <div class="d-flex gap-2" id="folder-actions" hidden>
          <button type="button" class="btn btn-sm btn-outline-primary rounded-pill" id="folder-move">Move</button>
          <button type="button" class="btn btn-sm btn-danger rounded-pill" id="folder-delete">Delete</button>
        </div>
      </div>
    </div>
  </div>
</section>

Built on Bootstrap 5.3.8 with plain JavaScript — no jQuery. Supports light and dark mode via data-bs-theme.