# Luna Setting
Settings panel.
## Demo
https://luna.liriliri.io/?path=/story/setting
## Install
Add the following script and style to your page.
```html
```
You can also get it on npm.
```bash
npm install luna-setting --save
```
```javascript
import 'luna-setting/luna-setting.css'
import LunaSetting from 'luna-setting'
```
## Usage
```javascript
const setting = new LunaSetting(container)
const title = setting.appendTitle('Title')
setting.appendSeparator()
title.detach()
```
## Configuration
* filter(string | RegExp | AnyFn): Setting filter.
* separatorCollapse(boolean): Whether to collapse separator or not.
## Api
### appendButton(title: string, description: string, handler: AnyFn): LunaSettingButton
Append button.
### appendCheckbox(key: string, value: boolean, title: string, description?: string): LunaSettingCheckbox
Append checkbox setting.
### appendHtml(html: string | HTMLElement): LunaSettingHtml
Append html setting.
### appendInput(key: string, value: string, title: string, description?: string): LunaSettingInput
Append text input setting.
### appendMarkdown(markdown: string): LunaSettingMarkdown
Append markdown description.
### appendNumber(key: string, value: number, title: string, description: string, options: INumberOptions): LunaSettingNumber
Append number setting.
### appendSelect(key: string, value: string, title: string, description: string, options: PlainObj): LunaSettingSelect
Append select setting.
### appendSeparator(): LunaSettingSeparator
Append separator.
### appendTitle(title: string, level?: number): LunaSettingTitle
Append title.
### clear(): void
Clear all settings.
### remove(item: LunaSettingItem): void
Remove setting.
## Types
### INumberOptions
* max(number): Max value.
* min(number): Min value.
* range(boolean): Use slider control or not.
* step(number): Interval between legal numbers.