Show more utility

Allow a user to show more or less of a card or list with a button (client side).

github location npm version

Usage

  • data-vf-js-show-more The containing element, does not have to be a direct parent
  • data-vf-js-show-more-pager-size=3 The number of items to show on first page load
  • class="vf-show-more__item" Items to be shown hidden (display done with CSS)
  • data-vf-js-show-more-button The button to show more
  • data-vf-js-show-more-button--less The button to show less, optional

An overview of the HTML strcuture

A condensed example.

<section data-vf-js-show-more data-vf-js-show-more-pager-size="3" class="vf-show-more">
  <a href="#" class="vf-box | vf-show-more__item">
    <p class="vf-box__text">I'm item number 1</p>
  </a>

  <button class="vf-button | vf-show-more__button" data-vf-js-show-more-button>Show more</button>
  <button class="vf-button | vf-show-more__button--less" data-vf-js-show-more-button--less>Show less</button>
</section>

Future development

  • Pager support
  • Currently designed to work with pre-loaded HTML. It should be possible to use it with lazy-loaded HTML with a few considerations.

Variants

Show more demo

foo

I'm item number 1

foo

I'm item number 2

foo

I'm item number 3

foo

I'm item number 4

foo

I'm item number 5

foo

I'm item number 6

foo

I'm item number 7

foo

I'm item number 8

foo

I'm item number 9

Show more demo part 2

  • a list item
  • another list item
  • and another list item
  • yet another list item
HTML
<section data-vf-js-show-more data-vf-js-show-more-pager-size="3" class="vf-show-more">
  <div class="vf-section-header">
    <h2 class="vf-section-header__heading"> Show more demo</h2>
  </div>
  <div class="vf-grid vf-grid__col-3">

    <div class="vf-box vf-box--easy | vf-show-more__item">

      <h3 class="vf-box__heading">foo</h3>
      <p class="vf-box__text">I'm item number 1</p>
    </div>

    <div class="vf-box vf-box--easy | vf-show-more__item">

      <h3 class="vf-box__heading">foo</h3>
      <p class="vf-box__text">I'm item number 2</p>
    </div>

    <div class="vf-box vf-box--easy | vf-show-more__item">

      <h3 class="vf-box__heading">foo</h3>
      <p class="vf-box__text">I'm item number 3</p>
    </div>

    <div class="vf-box vf-box--easy | vf-show-more__item">

      <h3 class="vf-box__heading">foo</h3>
      <p class="vf-box__text">I'm item number 4</p>
    </div>

    <div class="vf-box vf-box--easy | vf-show-more__item">

      <h3 class="vf-box__heading">foo</h3>
      <p class="vf-box__text">I'm item number 5</p>
    </div>

    <div class="vf-box vf-box--easy | vf-show-more__item">

      <h3 class="vf-box__heading">foo</h3>
      <p class="vf-box__text">I'm item number 6</p>
    </div>

    <div class="vf-box vf-box--easy | vf-show-more__item">

      <h3 class="vf-box__heading">foo</h3>
      <p class="vf-box__text">I'm item number 7</p>
    </div>

    <div class="vf-box vf-box--easy | vf-show-more__item">

      <h3 class="vf-box__heading">foo</h3>
      <p class="vf-box__text">I'm item number 8</p>
    </div>

    <div class="vf-box vf-box--easy | vf-show-more__item">

      <h3 class="vf-box__heading">foo</h3>
      <p class="vf-box__text">I'm item number 9</p>
    </div>
  </div>

  <button class="vf-button vf-button--primary vf-button--sm | vf-show-more__button" data-vf-js-show-more-button>Show more</button>
  <button class="vf-button vf-button--primary vf-button--sm | vf-show-more__button--less" data-vf-js-show-more-button--less>Show less</button>
</section>




<section data-vf-js-show-more data-vf-js-show-more-pager-size="2" class="vf-show-more">
  <div class="vf-section-header">
    <h2 class="vf-section-header__heading"> Show more demo part 2</h2>
  </div>
  <ul class="vf-list vf-list--ordered">
    <li class="vf-list__item | vf-show-more__item">a list item</li>
    <li class="vf-list__item | vf-show-more__item">another list item</li>
    <li class="vf-list__item | vf-show-more__item">and another list item</li>
    <li class="vf-list__item | vf-show-more__item">yet another list item</li>
  </ul>

  <button class="vf-button vf-button--primary vf-button--sm | vf-show-more__button" data-vf-js-show-more-button>Show more list items</button>
  <button class="vf-button vf-button--primary vf-button--sm | vf-show-more__button--less" data-vf-js-show-more-button--less>Show less</button>
</section>
              

Examples

Installation info

This repository is distributed with [npm][https://www.npmjs.com/]. After [installing npm][https://www.npmjs.com/get-npm] and yarn, you can install vf-show-more with this command.

$ yarn add --dev @visual-framework/vf-show-more

JS

You should import this component in ./components/vf-component-rollup/scripts.js or your other JS process:

import { vfcomponentName } from 'vf-show-more/vf-show-more';
// Or import directly
// import { vfcomponentName } from '../components/raw/vf-show-more/vf-show-more.js';
vfcomponentName(); // if needed, invoke it

Sass/CSS

If your component uses Sass:

The style files included are written in Sass. If you're using a VF-core project, you can import it like this:

@import "@visual-framework/vf-show-more/index.scss";

Make sure you import Sass requirements along with the modules. You can use a project boilerplate or the vf-sass-starter

Changelog

Changelog

1.1.3

1.1.2

  • Version bump

1.1.1

  • changes any set- style functions to cleaner version

1.1.0

  • drops dynamic css stylesheet in favour of a specific .vf-show-more__item-overflow class
  • support more than one vf-show-more on a page
  • https://github.com/visual-framework/vf-core/issues/1243

1.0.1

  • Bug: Warning message for "pagerSize" was showing in all scenarios

1.0.0

  • JS linting

1.0.0-alpha.1

  • initial release

Assets



File system location: components/vf-show-more

Find an issue on this page? Propose a change or discuss it.

AI Assistant

Welcome! I'm here to help

Try asking me:

Disclaimer: This chatbot is designed to assist you with general information and basic inquiries. See our disclaimer notes.

Review AI generated content for accuracy. Leave feedback.

Close chat and delete conversation?

Are you sure you want to close the chat?
Your current conversation history will be permanently deleted.