Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/yurayarosh/select-custom

JS plugin for making custom wrap around HTML select element
https://github.com/yurayarosh/select-custom

Last synced: 8 days ago
JSON representation

JS plugin for making custom wrap around HTML select element

Awesome Lists containing this project

README

        

# select-custom

### Example

* [Codesandbox](https://codesandbox.io/s/krcji)

### Install

```html
npm i select-custom
```

```html

Option 1
Option 2
Option 3

```

```js
import Select from 'select-custom';

const selects = [...document.querySelectorAll('.js-select')];

selects.forEach((el) => {
const select = new Select(el, {
// some options
});
select.init();
});
```

### Options

Standart options
```js
{
optionBuilder: undefined,
panelItem: { position: '', item: '', className: '' },
changeOpenerText: true,
multipleSelectionOnSingleClick: true,
multipleSelectOpenerText: { labels: false, array: false },
allowPanelClick: false,
openOnHover: false,
closeOnMouseleave: false,
wrapDataAttributes: false,
openerLabel: false,
}
```

`optionBuilder` - `function` arguments `option, customOption` allows add elements to custom option.

`panelItem` - `object` options: `{ item: element or string, position: 'top', className: '' }`, `{ item: element or string, position: 'bottom', className: '' }`- add element in custom panel above or under options.

`changeOpenerText` - `boolean` if `false` - text in opener panel won't change.

If native select has attribute `multiple` - select allows multiple selection.

`multipleSelectionOnSingleClick` - `boolean` if `true` - allows multiple selection witout CTRL button.

`multipleSelectOpenerText` - if `{ array: true }` - in opener pannel will be added array with selected options text, if `{ labels: true }` - in opener pannel will be added span elements with button and option text.

`allowPanelClick` - `boolean` if `true` - option panel won't close on selection.

`openOnHover` - `boolean` if `true` - allows open on hover.

`closeOnMouseleave` - `boolean` if `true` - allows close on mouseleave.

`wrapDataAttributes` - `boolean` if `true` - data attributes from native `select` element will be added to custom wrap.

`openerLabel` - `boolean` add span inner to custom opener.

Supports standart attributs `multiple`, `disabled`, `disabled` for `option`.

### Events

Native select
```js
const select = new Select(el, { options });
select.init();

el.addEventListener('change', (e) => {
// some function
});

```

### Methods

On open and on close custom select
```js
const select = new Select(el, { options });

select.onOpen = (select) => {
// some function
};

select.onClose = (select) => {
// some function
};

select.init();

```
Destroy method (for proper using watch example on [Codesandbox](https://codesandbox.io/s/krcji))
```js
select.destroy();
```