@davicotico/iconpicker
Version:
Vanilla Javascript Icon Picker (made with Typescript)
125 lines (90 loc) • 2.84 kB
Markdown
Vanilla Javascript Icon Picker (made with Typescript)
## [>>> Demo <<<](https://davidticona.com/demos/javascript-iconpicker/)
## Features
* Vanilla Javascript
* Fully customizable (custom iconset, custom style)
* Dark/Light mode
* Lightweight (24 KB gzipped)
## Installation
### Via NPM
```
npm i @davicotico/iconpicker
```
## Usage
Using a div element (inline)
```html
<div style="250px" id="element-id"></div>
```
Or using a button (open a popover)
```html
<button id="element-id" class="btn btn-primary"></button>
```
```javascript
import { IconPicker } from "@davicotico/iconpicker";
import '@davicotico/iconpicker/css/styles.css';
import '@davicotico/iconpicker/css/themes/dark.css';
import '@davicotico/iconpicker/css/themes/light.css';
import { bi } from '@davicotico/iconpicker/iconsets/bi'; /* bootstrap iconset */
// or
/*const iconset = ['fa-solid fa-home', 'fa-solid fa-star',...]; */
const iconPicker = new IconPicker('element-id', bi, 20, { iconButtonClass: 'btn btn-secondary' });
iconPicker.onChange((params) => {
console.log(params.icon);
});
iconPicker.mount();
```
```
{
iconButtonClass: string;
selectedIconButtonClass: string;
navButtonClass: string;
inputPlaceholder: string;
inputClass: string;
arrowPrevIconClass: string;
arrowNextIconClass: string;
templateFooter: string;
placement: PopOverPlacement; // 'bottom' | 'top' | 'left' | 'right'
popoverTheme: string;
}
```
```javascript
//const iconset = ['fa-solid fa-home', 'fa-solid fa-star',...];
var iconPicker = new IconPicker('element-id', iconset, 30, {});
```
```javascript
iconPicker.setSelected('fa-solid fa-home');
```
Only when the icon picker is a button
```javascript
iconPicker.setPopoverTheme('dark'); // 'dark' | 'light'
```
Build and renderize the icon picker
```javascript
iconPicker.mount();
```
```javascript
iconPicker.onChange((params) => {
console.log('Icon: ' + params.icon);
});
```
MIT
* fix: styles path
* fix: iconsets path, styles path
* First release
[](https://www.linkedin.com/in/david-ticona-saravia/)
[](https://x.com/davicotico)