npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@wsender/input-dropdown

v1.0.60

Published

UI dropdown component

Downloads

132

Readme

wsender-input-dropdown

Установка

npm i @wsender/input-dropdown

Использование

<select id="dropdown" class="ws-dropdown-input"
    data-content-script="dropdown"
    data-placeholder="Выбрать страну"
    data-moretext="Еще страны"
    data-emptytext="Страны не найдены"
    data-search-on="true|false|number"
    data-search-placeholder="Найти страну"
    data-search-empty="Страна не найдена">
        <option value="1">Россия</option>
        <option value="2">Казахстан</option>
        <option value="3">Беларусь</option>
</select>

var inputElem = document.getElementById("dropdown");
new DropDown(inputElem);

Параметры

TextBox берёт параметры из аттрибутов элемента input или textarea.

Поддерживаемые аттрибуты от HTMLSelectElement:

  • required
  • disabled

Кастомные параметры:

  • data-fast - Количество значений в быстром доступе. По умолчанию - 0.
  • data-placeholder - Текст заголовка попапа. По умолчанию - Select.
  • data-moretext - Текст по умолчанию селекта с остальными значениями. По умолчанию - Other.
  • data-emptytext - Текст выводимый в выпадающем списке, если элементы не добавлены. По умолчанию - Empty list.
  • data-search-on - Управление поиском элементов в списке. true - всегда включён. false - всегда выключен. number - минимальное кол-во элементов для включения. По умолчанию - 15.
  • data-search-placeholder - Текст выводимый на поле поиска до начала ввода. По умолчанию - Search.
  • data-search-empty - Текст выводимый в выпадающем списке, если элементов не найдено. По умолчанию - Not found.

API

var inputElem = document.getElementById("dropdown");
const dropdown = new DropDown(inputElem);

dropdown.getValue(): string || null;
dropdown.getSelectedIndex(): number;
dropdown.getSelectedTitle(): string || null;
dropdown.validate(): boolean;
dropdown.destroy(): void;

События

dropdown-change

Изменение значения пользователем в результате ввода, вставки из буфера обмена или через метод setValue.

var inputElem = document.getElementById("dropdown");
const dropdown = new DropDown(inputElem);

dropdown.addEventListener("dropdown-change", (e: CustomEvent<ChangeEventData>) => {
    e.detail.dropdown // экземпляр DropDown, в котором изменено значение
    e.detail.value // новое значение
    e.detail.index // индекс нового значения
    e.detail.title // текст нового значения
});

dropdown.onChange(handler: (e: CustomEvent<ChangeEventData>) => { /* process event */ });

Стилизация

Класс рутового элемента: ws-dropdown Класс body при открытом popup: ws-dropdown-opened

Субклассы состояний:

  • empty - пустой селект
  • fast - наличие значений в быстром доступе (data-fast > 0)
  • select - отображение как select (data-fast == 0)
  • noother - без выпадашки (data-fast >= кол-во значений)
  • expanded - развернуть выпадашку
  • invalid - невалидное значение
  • searchable - включен поиск по элементам в popup
  • required - обязателен для заполнения
  • readonly - обязателен для заполнения
  • disabled - обязателен для заполнения

Миниатюра загрузки

Миниатюра позволяет до создания экземпляра DropDown сохранить высоту и занимаемую область, чтобы после создания DropDown вёрстка не прыгала.

Для отображения миниатюры к тегу select добавьте класс ws-dropdown-input. А сразу под тегом создайте элемент с классом ws-dropdown-miniature.

<select class="ws-dropdown-input" data-content-script="dropdown"</select>
<div class="ws-dropdown-miniature"></div>

Если вам нужно стилизовать миниатюру, то применяйте стили к ws-dropdown-miniature.