Git Product home page Git Product logo

item-quantity-dropdown's Introduction

item-quantity-dropdown jQuery plugin

Dropdown menu to select items with quantities

Demo

Dependencies:

  • jquery: ^3.0.0

Installation

Direct Download

  • Download the script here and include it as shown below
  • Download the stylesheet here and include it as shown below
<html>
  <head>
    ···
    <link href="/path/to/item-quantity-dropdown.min.css" rel="stylesheet">
  </head>
  <body>
    ···
    <script src="/path/to/item-quantity-dropdown.min.js"></script>
  </body>
</html>

Yarn + Bower

yarn add item-quantity-dropdown
# or
bower install item-quantity-dropdown --save

Then import/require it:

import 'item-quantity-dropdown';
import 'item-quantity-dropdown/lib/item-quantity-dropdown.css';
require('item-quantity-dropdown');
require('item-quantity-dropdown/lib/item-quantity-dropdown.css');

Usage

Markup

<div class="iqdropdown">
  <p class="iqdropdown-selection"></p>
  <div class="iqdropdown-menu">
    <div class="iqdropdown-menu-option" data-id="item1">
      <div>
        <p class="iqdropdown-item">Item 1</p>
        <p class="iqdropdown-description">A short description</p>
      </div>
    </div>
    <div class="iqdropdown-menu-option" data-id="item2">
      <div>
        <p class="iqdropdown-item">Item 2</p>
        <p class="iqdropdown-description">A short description</p>
      </div>
    </div>
    <div class="iqdropdown-menu-option" data-id="item3">
      <div>
        <p class="iqdropdown-item">Item 3</p>
        <p class="iqdropdown-description">A short description</p>
      </div>
    </div>
  </div>
</div>

JavaScript

$(document).ready(() => {
  $('.iqdropdown').iqDropdown({ [options] });
});

Config options

Dropdown options using data attributes

<div class="iqdropdown" data-placeholder="Custom Placeholder">
  <p class="iqdropdown-selection" data-seletion-text="item" data-text-plural="items"></p>
  <div class="iqdropdown-menu">
    ...
  </div>
</div>

Item specific using data attributes

<li data-id="item1" data-defaultcount="0" data-mincount="0" data-maxcount="1">
  ···
</li>

Globals on initialization

{
  // max total items
  maxItems: Infinity,
  // min total items
  minItems: 0,
  // text to show on the dropdown override data-selection-text attribute
  selectionText: 'item',
  // text to show for multiple items
  textPlural: 'items',
  // text to show placeholder
  placeHolderText: 'Custom Placeholder',
  // optionally can use setSelectionText function to override selectionText
  setSelectionText: (itemCount, totalItems) => { /* return string */ },
  // buttons to increment/decrement
  controls: {
    position: 'right',
    displayCls: 'iqdropdown-item-display',
    controlsCls: 'iqdropdown-item-controls',
    counterCls: 'counter'
  },
  // fires when an item quantity changes
  onChange: (id, count, totalItems) => {},
  // return false to prevent an item decrement
  beforeDecrement: (id, itemCount) => {},
  // return false to prevent an item increment
  beforeIncrement: (id, itemCount) => {}
}

Selection text

Default value.

`${totalItems} item` // if total items is 1
`${totalItems} items` // if total items is not 1

Data attribute data-selection-text override default value.

<p class="iqdropdown-selection" data-seletion-text="item" data-text-plural="items">

Property selectionText override data attribute

options.selectionText = 'item';
options.textPlural = 'items';

Function setSelectionText override selectionText property.

options.setSelectionText = function setSelectionText(itemCount, totalItems)

Arguments:

  • itemCount - keys - items data-id; values - items count
  • totalCount - total items count
  • Return selection text .

    Demo

    A demo is included here

    Contributing

    Running

    # install dependencies
    yarn
    # start the project
    yarn start

    Now open up http://localhost:8080

    Build

    # install dependencies
    yarn
    # make a css and js bundle
    yarn build

    The build script outputs the following (minified) files:

    • item-quantity-dropdown.min.js
    • item-quantity-dropdown.min.css

item-quantity-dropdown's People

Contributors

oquis avatar muratgorken avatar rtgreen86 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.