颜色选择器

Framework7 附带终极模块化颜色选择器组件,允许创建具有无限颜色模块组合的颜色选择器。

颜色选择器应用程序方法

让我们看看与颜色选择器相关的方法:

app.colorPicker.create(参数)- 创建颜色选择器实例

  • 参数 - 对象. 带有颜色选择器参数的对象

方法返回创建的颜色选择器实例

app.colorPicker.destroy(el)- 销毁颜色选择器实例

  • el - HTMLElement字符串(使用 CSS 选择器) 或对象. 要销毁的颜色选择器元素或颜色选择器实例。

app.colorPicker.get(el)- 通过 HTML 元素获取颜色选择器实例

  • el - HTMLElement字符串(使用 CSS 选择器)。颜色选择器元素。

方法返回颜色选择器的实例

app.colorPicker.close(el)- 关闭颜色选择器

  • el - HTMLElement字符串(使用 CSS 选择器)。要关闭的颜色选择器元素。

方法返回颜色选择器的实例

例如:

var colorPicker = app.colorPicker.create({
  inputEl: '#color-input',
  value: {
    hex: '#ff000',
  },
});

颜色选择器参数

让我们看看所有可用颜色选择器参数的列表:

参数类型默认描述
对象带有颜色选择器值
模块数组['wheel']包含颜色选择器模块按它们出现的顺序
调色板数组

包含调色板模块颜色的数组,其中每个调色板颜色必须指定为十六进制字符串。

它可以是一个包含调色板值的普通数组,如:

palette: ['#ff0000', '#00ff00', ...]

或者它可以是一个包含调色板“行”的数组,其中每个项目指定为包含颜色的数组:

palette: [
  // first row
  ['#ff0000', '#00ff00', ...]
  // second row
  ['#0000ff', '#f0000f', ...]
  ...
]

默认情况下它是:

[
  ['#FFEBEE', '#FFCDD2', '#EF9A9A', '#E57373', '#EF5350', '#F44336', '#E53935', '#D32F2F', '#C62828', '#B71C1C'],
  ['#F3E5F5', '#E1BEE7', '#CE93D8', '#BA68C8', '#AB47BC', '#9C27B0', '#8E24AA', '#7B1FA2', '#6A1B9A', '#4A148C'],
  ['#E8EAF6', '#C5CAE9', '#9FA8DA', '#7986CB', '#5C6BC0', '#3F51B5', '#3949AB', '#303F9F', '#283593', '#1A237E'],
  ['#E1F5FE', '#B3E5FC', '#81D4FA', '#4FC3F7', '#29B6F6', '#03A9F4', '#039BE5', '#0288D1', '#0277BD', '#01579B'],
  ['#E0F2F1', '#B2DFDB', '#80CBC4', '#4DB6AC', '#26A69A', '#009688', '#00897B', '#00796B', '#00695C', '#004D40'],
  ['#F1F8E9', '#DCEDC8', '#C5E1A5', '#AED581', '#9CCC65', '#8BC34A', '#7CB342', '#689F38', '#558B2F', '#33691E'],
  ['#FFFDE7', '#FFF9C4', '#FFF59D', '#FFF176', '#FFEE58', '#FFEB3B', '#FDD835', '#FBC02D', '#F9A825', '#F57F17'],
  ['#FFF3E0', '#FFE0B2', '#FFCC80', '#FFB74D', '#FFA726', '#FF9800', '#FB8C00', '#F57C00', '#EF6C00', '#E65100'],
]
groupedModules布尔值false启用后,它将增加滑块模块的曝光度,使它们看起来更分开
centerModules布尔值true启用后,如果空间足够,它将尝试垂直居中模块
sliderLabel布尔值false启用后,它将显示带有文本的滑块标签
sliderValue布尔值false启用后,它将显示滑块值
sliderValueEdiable布尔值false启用后,它将显示滑块值作为可以直接编辑的元素<input>hexLabel
barLabel布尔值false启用后,它将显示带有文本的条形标签
barValue布尔值false启用后,它将显示条形值
barValueEdiable布尔值false启用后,它将显示条形值作为可以直接编辑的元素<input>hexLabel
hexLabel布尔值false启用后,它将显示十六进制模块标签文本,例如:HEX
hexValueEditable布尔值false启用后,它将显示十六进制模块值作为可以直接编辑的元素<input> element to edit directly
标签文本
redLabelText字符串'R'红色滑块/条形标签文本
greenLabelText字符串'G'绿色滑块/条形标签文本
blueLabelText字符串'B'蓝色滑块/条形标签文本
hueLabelText字符串'H'色相滑块标签文本
saturationLabelText字符串'S'饱和度滑块标签文本
brightnessLabelText字符串'B'亮度滑块标签文本
hexLabelText字符串'HEX'十六进制模块标签文本
alphaLabelText字符串'A'透明度滑块标签文本
formatValuefunction (value)用于格式化输入值的函数,应返回新的/格式化的字符串值。颜色选择器值对象。默认情况下它返回十六进制值。
容器/打开器特定参数
containerEl字符串
HTMLElement
包含生成颜色选择器 HTML 的 CSS 选择器或 HTMLElement。仅用于内联颜色选择器
openIn字符串弹出可以是auto, popover(在弹出中打开颜色选择器),sheet(在表单模态中打开),popup(在弹出中打开) 或page(在页面中打开)。如果是auto它将按指定参数在小型屏幕上显示,并在大型屏幕上的弹出中显示。openInPhone parameter on small screens and in popover on large screens.
openInPhone字符串弹出定义在小屏幕上如何打开颜色选择器,当openIn: "auto"
popupPush布尔值false启用颜色选择器弹出以在打开时推后视图/。
popupSwipeToClose布尔值undefined启用使用滑动手势关闭颜色选择器弹出的能力。如果没有指定,它将继承应用的弹出。swipeToCloseparameter
sheetPush布尔值false启用颜色选择器表单在打开时推后视图/。
sheetSwipeToClose布尔值undefined启用使用滑动手势关闭颜色选择器表单的能力。如果没有指定,它将继承应用的表单。swipeToCloseparameter
inputEl字符串或 HTMLElement包含相关输入元素的 CSS 选择器或 HTMLElement。
targetEl字符串或 HTMLElement包含相关目标元素的 CSS 选择器或 HTMLElement。除了输入元素之外,您可能还想放置一个显示当前选中颜色的附加元素。此类元素可以作为目标元素指定。如果颜色选择器在弹出中打开,它将围绕此目标元素定位。点击指定的目标元素也将打开颜色选择器。
targetElSetBackgroundColor布尔值false启用后,如果您传递了targetEl,它将使用当前选中值设置background-color的目标元素。
scrollToInput布尔值true颜色选择器打开时滚动视口(page-content)到输入
inputReadOnly布尔值true在指定输入上设置“readonly”属性
cssClass字符串要添加到颜色选择器容器的附加 CSS 类名
closeByOutsideClick布尔值true启用后,点击颜色选择器或相关输入元素外部将关闭选择器
toolbarSheet布尔值true在表单模态中打开时显示工具栏
toolbarPopover布尔值false在弹出模态中打开时显示工具栏
toolbarCloseText字符串完成完成/关闭工具栏按钮的文本
navbarPopup布尔值true在弹出模态中打开时显示导航栏
navbarCloseText字符串完成完成/关闭导航栏按钮的文本
navbarTitleText字符串颜色导航栏标题的文本
navbarBackLinkText字符串Back导航栏返回链接的文本,当颜色选择器在页面中打开时可用
routableModals布尔值false将打开的颜色选择器添加到路由历史,这提供了通过在路由历史中后退来关闭它的能力,并将当前路由设置为颜色选择器模态
url字符串color/颜色选择器模态 URL,它将被设置为当前路由
view对象routableModals启用时,要设置路由的位置。默认情况下为inputEl的父视图,如果找不到父视图,则为主视图
背景遮罩布尔值启用颜色选择器背景(背后的深色半透明层)。默认情况下,当颜色选择器在弹出或弹出中打开时,它是启用的。
closeByBackdropClick布尔值true启用后,点击背景将关闭颜色选择器
渲染函数
renderToolbar函数用于渲染工具栏的函数。必须返回工具栏的HTML字符串
renderNavbarfunction(date)用于渲染导航栏的函数。必须返回导航栏的HTML字符串
render函数用于渲染颜色选择器的函数。必须返回完整的颜色选择器HTML字符串
事件
on对象

带有事件处理程序的对象。例如:

var colorPicker = app.colorPicker.create({
  ...
  on: {
    opened: function () {
      console.log('Color Picker opened')
    }
  }
})

注意,所有以下参数都可以在colorPicker属性用于为所有颜色选择器设置默认值。例如:

var app = new Framework7({
  colorPicker: {
    modules: ['hb-spectrum', 'hue-slider'],
    url: 'select-color/',
  }
});

颜色选择器模块

您可以通过指定在颜色选择器创建时要使用的模块数组参数来创建自己的颜色选择器布局。有以下几个模块可用:moduleswheel

带有饱和度-亮度光谱的色轮

Hue wheel with Saturation-Brightness spectrum inside

sb-spectrum

饱和度-亮度光谱。建议与hue-slider

hue-slider

单色滑块

hs-spectrum

色相-饱和度光谱。建议与brightness-slider

亮度滑块

单亮度滑块

rgb-sliders

红色、绿色和蓝色滑块

hsb-sliders

色相、饱和度和亮度滑块

alpha-slider

Alpha(不透明度)单滑块

rgb-bars

垂直红色、绿色和蓝色滑块

调色板

模块显示在paletteparameter

hex

带有当前HEX值的模块

current-color

模块显示当前选择的颜色

initial-current-colors

模块显示当前选择的颜色和初始颜色(颜色选择器打开之前的颜色)。点击初始颜色将设置颜色选择器的值为初始颜色。

自定义模块

还可以使用和创建自定义颜色选择器模块。此类自定义模块可用于创建自定义选择器或只是在模块之间添加一些自定义内容。

要添加自定义颜色选择器模块,我们需要将modules数组参数传递一个对象而不是字符串。自定义模块对象可以包含以下方法。每个方法接收颜色选择器实例作为参数。

render(颜色选择器)模块渲染函数。它必须返回模块的HTML内容
init(颜色选择器)模块初始化函数。当模块渲染并添加到DOM时执行。您应该在这里定义任何自定义事件监听器
update(颜色选择器)当颜色选择器值更新时执行此方法
destroy(颜色选择器)在模块销毁时执行此方法。您应该在这里断开所有事件监听器

例如,如果我们需要在模块之间添加一些自定义文本,我们可以使用这样的简单模块:

var colorPicker = app.colorPicker.create({
  // ...
  modules: [
    'sb-spectrum',
    // custom module with only render function
    {
      render: function() {
        return '<p class="text-align-center">Enter HUE value:</p>'
      },
    },
    'hue-slider',
  ]
})

查看内置模块的源代码以获取灵感和了解模块的工作原理built-in modules source code.

颜色选择器值

颜色选择器实例值表示为具有以下属性的对象。

hex字符串HEX颜色值,例如#ff0000
rgb数组RGB数组([红色,绿色,蓝色])颜色,例如[255, 100, 20]
hsl数组HSL数组([色相,饱和度,亮度])颜色,例如[320, 0.1, 0.9]
hsb数组HSB/V数组([色相,饱和度,亮度])颜色,例如[180, 0.5, 0.3]
alpha数字Alpha(不透明度)值(从0到1),例如0.6
hue数字色相值(从0到360),例如320
rgba数组RGBA数组([红色,绿色,蓝色,Alpha])颜色,例如[255, 100, 20, 0.5]
hsla数组HSLA数组([色相,饱和度,亮度,Alpha])颜色,例如[320, 0.1, 0.9, 0.2]

例如:

var colorPicker = app.colorPicker.create({
  ...
  on: {
    change: function (value) {
      console.log(`HEX value is ${value.hex}. Opacity is ${value.alpha}`);
      $('.some-element').css('background-color', `rgba(${value.rgba.join(', ')})`);
    }
  }
})

颜色选择器方法和属性

初始化颜色选择器后,我们在变量(如colorPicker示例中使用的变量)中拥有颜色选择器的初始化实例,其中包含有用的方法和属性:

属性
colorPicker.app链接到全局应用实例
colorPicker.containerEl颜色选择器包装容器的HTML元素(当内联颜色选择器使用时)
colorPicker.$containerEl包含颜色选择器包装容器HTML元素的Dom7实例(当内联颜色选择器使用时)
colorPicker.el颜色选择器的HTML元素
colorPicker.$el包含颜色选择器HTML元素的Dom7实例(传递在
colorPicker.inputEl颜色选择器的输入HTML元素(传递在inputEl参数中)
colorPicker.$inputEl包含颜色选择器输入HTML元素的Dom7实例(传递在inputEl参数中)
colorPicker.targetEl颜色选择器的目标HTML元素(传递在targetEl参数中)
colorPicker.$targetEl包含颜色选择器目标HTML元素的Dom7实例(传递在targetEl参数中)
colorPicker.value带有颜色选择器值
colorPicker.openedtrue如果颜色选择器当前打开
colorPicker.inlinetrue当使用内联颜色选择器时
colorPicker.url颜色选择器URL(传递在url参数中)
colorPicker.view颜色选择器视图(传递在view参数中)或找到的父视图
colorPicker.params包含初始化参数的对象
方法
colorPicker.setValue()设置新的颜色选择器值。value颜色选择器值对象,可以部分指定:
var colorPicker = app.colorPicker.create({
  value: '#ff0000',
});

// update only hue
colorPicker.setValue({ hue: 200 });

// update only alpha
colorPicker.setValue({ alpha: 0.2 });

// set value by hex
colorPicker.setValue({ hex: '#ff00ff' });
colorPicker.getValue()返回当前颜色选择器值
colorPicker.update()更新颜色选择器模块布局(当打开或内联时)
colorPicker.open()打开颜色选择器
colorPicker.close()关闭颜色选择器
colorPicker.destroy()销毁颜色选择器实例并移除所有事件
colorPicker.on(事件上触发, 处理程序)添加事件处理程序
colorPicker.once(事件上触发, 处理程序)添加在触发后将被移除的事件处理程序
colorPicker.off(事件上触发, 处理程序)移除事件处理程序
colorPicker.off(事件上触发)移除指定事件的所有处理程序
colorPicker.emit(事件上触发, ...args)在实例上触发事件

颜色选择器事件

颜色选择器将在颜色选择器元素上触发以下DOM事件,并在应用和颜色选择器实例上触发事件:

DOM 事件

事件描述
colorpicker:open当颜色选择器开始打开动画时将触发此事件
colorpicker:opened颜色选择器完成打开动画后触发此事件
colorpicker:close当颜色选择器开始关闭动画时将触发此事件
colorpicker:closed颜色选择器完成关闭动画后触发此事件

应用程序和颜色选择器实例事件

颜色选择器实例在自身实例和应用程序实例上发出事件。应用程序实例事件具有相同名称,以colorPicker.

事件Target参数描述
change颜色选择器(颜色选择器, 值)当颜色选择器的值变化时,将触发事件
colorPickerChangeapp
init颜色选择器(颜色选择器)当颜色选择器初始化时,将触发事件
颜色选择器初始化app
open为前缀颜色选择器(颜色选择器)当颜色选择器开始其打开动画时,将触发事件。作为参数,事件处理程序接收颜色选择器实例
颜色选择器打开app
opened颜色选择器(颜色选择器)当颜色选择器完成其打开动画后,将触发事件。作为参数,事件处理程序接收颜色选择器实例
颜色选择器已打开app
close颜色选择器(颜色选择器)当颜色选择器开始其关闭动画时,将触发事件。作为参数,事件处理程序接收颜色选择器实例
颜色选择器关闭app
closed颜色选择器(颜色选择器)当颜色选择器完成其关闭动画后,将触发事件。作为参数,事件处理程序接收颜色选择器实例
颜色选择器已关闭app
beforeDestroy颜色选择器(颜色选择器)在颜色选择器实例将被销毁之前,将触发事件。作为参数,事件处理程序接收颜色选择器实例
颜色选择器销毁前app

CSS 变量

以下是相关CSS 变量(CSS 自定义属性) 的列表。

:root {
  --f7-color-picker-popover-width: 350px;
  --f7-color-picker-slider-size: 6px;
  --f7-color-picker-slider-knob-size: 16px;
  --f7-color-picker-bar-size: 50px;
  --f7-color-picker-bar-min-height: 260px;
  --f7-color-picker-value-width: 64px;
  --f7-color-picker-value-height: 32px;
  --f7-color-picker-value-font-size: 16px;
  --f7-color-picker-value-border-radius: 4px;
  --f7-color-picker-hex-value-width: 84px;
  --f7-color-picker-label-font-size: 14px;
  --f7-color-picker-label-width: 10px;
  --f7-color-picker-label-height: 14px;
  --f7-color-picker-sb-spectrum-height: 260px;
  --f7-color-picker-sb-spectrum-handle-size: 16px;
  --f7-color-picker-wheel-width: 330px;
  --f7-color-picker-palette-value-width: 36px;
  --f7-color-picker-palette-value-height: 36px;
  --f7-color-picker-initial-current-color-height: 40px;
  --f7-color-picker-initial-current-color-border-radius: 4px;
  --f7-color-picker-sheet-bg-color: #fff;
  --f7-color-picker-popup-bg-color: #fff;
  --f7-color-picker-value-bg-color: rgba(0, 0, 0, 0.05);
  --f7-color-picker-group-bg-color: rgba(0, 0, 0, 0.05);
  --f7-color-picker-group-value-bg-color: #fff;
}
:root .dark,
:root.dark {
  --f7-color-picker-sheet-bg-color: #121212;
  --f7-color-picker-popup-bg-color: #121212;
  --f7-color-picker-value-bg-color: rgba(255, 255, 255, 0.1);
  --f7-color-picker-group-bg-color: #000;
  --f7-color-picker-group-value-bg-color: rgba(255, 255, 255, 0.12);
}

示例

颜色选择器.html
<template>
  <div class="page">
    <div class="navbar">
      <div class="navbar-bg"></div>
      <div class="navbar-inner sliding">
        <div class="title">Color Picker</div>
      </div>
    </div>
    <div class="page-content">
      <div class="block block-strong-ios block-outline-ios">
        <p>Framework7 comes with ultimate modular Color Picker component that allows to create color picker with
          limitless combinations of color modules.</p>
      </div>

      <div class="block-title">Color Wheel</div>
      <div class="block-header">Minimal example with color wheel in Popover</div>
      <div class="list list-strong-ios list-outline-ios">
        <ul>
          <li>
            <div class="item-content item-input">
              <div class="item-media">
                <i class="icon demo-list-icon" id="demo-color-picker-wheel-value"></i>
              </div>
              <div class="item-inner">
                <div class="item-input-wrap">
                  <input type="text" placeholder="Color" readonly="readonly" id="demo-color-picker-wheel" />
                </div>
              </div>
            </div>
          </li>
        </ul>
      </div>

      <div class="block-title">Saturation-Brightness Spectrum</div>
      <div class="block-header">SB Spectrum + Hue Slider in Popover</div>
      <div class="list list-strong-ios list-outline-ios">
        <ul>
          <li>
            <div class="item-content item-input">
              <div class="item-media">
                <i class="icon demo-list-icon" id="demo-color-picker-spectrum-value"></i>
              </div>
              <div class="item-inner">
                <div class="item-input-wrap">
                  <input type="text" placeholder="Color" readonly="readonly" id="demo-color-picker-spectrum" />
                </div>
              </div>
            </div>
          </li>
        </ul>
      </div>

      <div class="block-title">Hue-Saturation Spectrum</div>
      <div class="block-header">HS Spectrum + Brightness Slider in Popover</div>
      <div class="list list-strong-ios list-outline-ios">
        <ul>
          <li>
            <div class="item-content item-input">
              <div class="item-media">
                <i class="icon demo-list-icon" id="demo-color-picker-hs-spectrum-value"></i>
              </div>
              <div class="item-inner">
                <div class="item-input-wrap">
                  <input type="text" placeholder="Color" readonly="readonly" id="demo-color-picker-hs-spectrum" />
                </div>
              </div>
            </div>
          </li>
        </ul>
      </div>

      <div class="block-title">RGB Sliders</div>
      <div class="block-header">RGB sliders with labels and values in Popover</div>
      <div class="list list-strong-ios list-outline-ios">
        <ul>
          <li>
            <div class="item-content item-input">
              <div class="item-media">
                <i class="icon demo-list-icon" id="demo-color-picker-rgb-value"></i>
              </div>
              <div class="item-inner">
                <div class="item-input-wrap">
                  <input type="text" placeholder="Color" readonly="readonly" id="demo-color-picker-rgb" />
                </div>
              </div>
            </div>
          </li>
        </ul>
      </div>

      <div class="block-title">RGBA Sliders</div>
      <div class="block-header">RGB sliders + Alpha Slider with labels and values in Popover</div>
      <div class="list list-strong-ios list-outline-ios">
        <ul>
          <li>
            <div class="item-content item-input">
              <div class="item-media">
                <i class="icon demo-list-icon" id="demo-color-picker-rgba-value"></i>
              </div>
              <div class="item-inner">
                <div class="item-input-wrap">
                  <input type="text" placeholder="Color" readonly="readonly" id="demo-color-picker-rgba" />
                </div>
              </div>
            </div>
          </li>
        </ul>
      </div>

      <div class="block-title">HSB Sliders</div>
      <div class="block-header">HSB sliders with labels and values in Popover</div>
      <div class="list list-strong-ios list-outline-ios">
        <ul>
          <li>
            <div class="item-content item-input">
              <div class="item-media">
                <i class="icon demo-list-icon" id="demo-color-picker-hsb-value"></i>
              </div>
              <div class="item-inner">
                <div class="item-input-wrap">
                  <input type="text" placeholder="Color" readonly="readonly" id="demo-color-picker-hsb" />
                </div>
              </div>
            </div>
          </li>
        </ul>
      </div>

      <div class="block-title">RGB Bars</div>
      <div class="block-header">RGB bars with labels and values in Popover on tablet and in Popup on phone</div>
      <div class="list list-strong-ios list-outline-ios">
        <ul>
          <li>
            <div class="item-content item-input">
              <div class="item-media">
                <i class="icon demo-list-icon" id="demo-color-picker-rgb-bars-value"></i>
              </div>
              <div class="item-inner">
                <div class="item-input-wrap">
                  <input type="text" placeholder="Color" readonly="readonly" id="demo-color-picker-rgb-bars" />
                </div>
              </div>
            </div>
          </li>
        </ul>
      </div>

      <div class="block-title">RGB Sliders + Colors</div>
      <div class="block-header">RGB sliders with labels and values in Popover, and previous and current color values
        blocks</div>
      <div class="list list-strong-ios list-outline-ios">
        <ul>
          <li>
            <div class="item-content item-input">
              <div class="item-media">
                <i class="icon demo-list-icon" id="demo-color-picker-rgb-initial-current-colors-value"></i>
              </div>
              <div class="item-inner">
                <div class="item-input-wrap">
                  <input type="text" placeholder="Color" readonly="readonly"
                    id="demo-color-picker-rgb-initial-current-colors" />
                </div>
              </div>
            </div>
          </li>
        </ul>
      </div>

      <div class="block-title">Palette</div>
      <div class="block-header">Palette opened in Sheet modal on phone and Popover on larger screens</div>
      <div class="list list-strong-ios list-outline-ios">
        <ul>
          <li>
            <div class="item-content item-input">
              <div class="item-media">
                <i class="icon demo-list-icon" id="demo-color-picker-palette-value"></i>
              </div>
              <div class="item-inner">
                <div class="item-input-wrap">
                  <input type="text" placeholder="Color" readonly="readonly" id="demo-color-picker-palette" />
                </div>
              </div>
            </div>
          </li>
        </ul>
      </div>

      <div class="block-title">Pro Mode</div>
      <div class="block-header">Current Color + HSB Sliders + RGB sliders + Alpha Slider + HEX + Palette with labels and
        editable values</div>
      <div class="list list-strong-ios list-outline-ios">
        <ul>
          <li>
            <div class="item-content item-input">
              <div class="item-media">
                <i class="icon demo-list-icon" id="demo-color-picker-pro-value"></i>
              </div>
              <div class="item-inner">
                <div class="item-input-wrap">
                  <input type="text" placeholder="Color" readonly="readonly" id="demo-color-picker-pro" />
                </div>
              </div>
            </div>
          </li>
        </ul>
      </div>

      <div class="block-title">Inline Color Picker</div>
      <div class="block-header">SB Spectrum + HSB Sliders</div>
      <div class="block block-strong block-outline no-padding">
        ${colorPickerInlineValue && $h`
        <div class="padding">
          HEX: ${colorPickerInlineValue.hex}<br />
          Alpha: ${colorPickerInlineValue.alpha}<br />
          Hue: ${colorPickerInlineValue.hue}<br />
          RGB: ${colorPickerInlineValue.rgb.join(', ')}<br />
          HSL: ${colorPickerInlineValue.hsl.join(', ')}<br />
          HSB: ${colorPickerInlineValue.hsb.join(', ')}<br />
          RGBA: ${colorPickerInlineValue.rgba.join(', ')}<br />
          HSLA: ${colorPickerInlineValue.hsla.join(', ')}
        </div>
        `}

        <div id="demo-color-picker-inline"></div>
      </div>

    </div>
  </div>
</template>
<script>
  export default (props, { $f7, $on, $update }) => {
    let colorPickerInlineValue = null;

    let colorPickerWheel;
    let colorPickerSpectrum;
    let colorPickerHsSpectrum;
    let colorPickerRgb;
    let colorPickerRgba;
    let colorPickerHsb;
    let colorPickerRgbBars;
    let colorPickerRgbPrevCurrentColors;
    let colorPickerPalette;
    let colorPickerRgbPro;
    let colorPickerInline;

    $on('pageInit', () => {
      // Default
      colorPickerWheel = app.colorPicker.create({
        inputEl: '#demo-color-picker-wheel',
        targetEl: '#demo-color-picker-wheel-value',
        targetElSetBackgroundColor: true,
        modules: ['wheel'],
        openIn: 'popover',
        value: {
          hex: '#00ff00',
        },
      });
      colorPickerSpectrum = app.colorPicker.create({
        inputEl: '#demo-color-picker-spectrum',
        targetEl: '#demo-color-picker-spectrum-value',
        targetElSetBackgroundColor: true,
        modules: ['sb-spectrum', 'hue-slider'],
        openIn: 'popover',
        value: {
          hex: '#ff0000',
        },
      });
      colorPickerHsSpectrum = app.colorPicker.create({
        inputEl: '#demo-color-picker-hs-spectrum',
        targetEl: '#demo-color-picker-hs-spectrum-value',
        targetElSetBackgroundColor: true,
        modules: ['hs-spectrum', 'brightness-slider'],
        openIn: 'popover',
        value: {
          hex: '#ff0000',
        },
      });
      colorPickerRgb = app.colorPicker.create({
        inputEl: '#demo-color-picker-rgb',
        targetEl: '#demo-color-picker-rgb-value',
        targetElSetBackgroundColor: true,
        modules: ['rgb-sliders'],
        openIn: 'popover',
        sliderValue: true,
        sliderLabel: true,
        value: {
          hex: '#0000ff',
        },
      });
      colorPickerRgba = app.colorPicker.create({
        inputEl: '#demo-color-picker-rgba',
        targetEl: '#demo-color-picker-rgba-value',
        targetElSetBackgroundColor: true,
        modules: ['rgb-sliders', 'alpha-slider'],
        openIn: 'popover',
        sliderValue: true,
        sliderLabel: true,
        value: {
          hex: '#ff00ff',
        },
        formatValue: function (value) {
          return 'rgba(' + value.rgba.join(', ') + ')';
        },
      });
      colorPickerHsb = app.colorPicker.create({
        inputEl: '#demo-color-picker-hsb',
        targetEl: '#demo-color-picker-hsb-value',
        targetElSetBackgroundColor: true,
        modules: ['hsb-sliders'],
        openIn: 'popover',
        sliderValue: true,
        sliderLabel: true,
        formatValue: function (value) {
          return 'hsb(' + value.hsb[0] + (', ' + value.hsb[1] * 1000 / 10 + '%') + (', ' + value.hsb[2] * 1000 / 10 + '%') + ')';
        },
        value: {
          hex: '#00ff00',
        },
      });
      colorPickerRgbBars = app.colorPicker.create({
        inputEl: '#demo-color-picker-rgb-bars',
        targetEl: '#demo-color-picker-rgb-bars-value',
        targetElSetBackgroundColor: true,
        modules: ['rgb-bars'],
        openIn: 'auto',
        barValue: true,
        barLabel: true,
        formatValue: function (value) {
          return 'rgb(' + value.rgb.join(', ') + ')';
        },
        value: {
          hex: '#0000ff',
        },
      });
      colorPickerRgbPrevCurrentColors = app.colorPicker.create({
        inputEl: '#demo-color-picker-rgb-initial-current-colors',
        targetEl: '#demo-color-picker-rgb-initial-current-colors-value',
        targetElSetBackgroundColor: true,
        modules: ['initial-current-colors', 'rgb-sliders'],
        openIn: 'popover',
        sliderValue: true,
        sliderLabel: true,
        formatValue: function (value) {
          return 'rgb(' + value.rgb.join(', ') + ')';
        },
        value: {
          hex: '#ffff00',
        },
      });
      colorPickerPalette = app.colorPicker.create({
        inputEl: '#demo-color-picker-palette',
        targetEl: '#demo-color-picker-palette-value',
        targetElSetBackgroundColor: true,
        modules: ['palette'],
        openIn: 'auto',
        openInPhone: 'sheet',
        palette: [
          ['#FFEBEE', '#FFCDD2', '#EF9A9A', '#E57373', '#EF5350', '#F44336', '#E53935', '#D32F2F', '#C62828', '#B71C1C'],
          ['#F3E5F5', '#E1BEE7', '#CE93D8', '#BA68C8', '#AB47BC', '#9C27B0', '#8E24AA', '#7B1FA2', '#6A1B9A', '#4A148C'],
          ['#E8EAF6', '#C5CAE9', '#9FA8DA', '#7986CB', '#5C6BC0', '#3F51B5', '#3949AB', '#303F9F', '#283593', '#1A237E'],
          ['#E1F5FE', '#B3E5FC', '#81D4FA', '#4FC3F7', '#29B6F6', '#03A9F4', '#039BE5', '#0288D1', '#0277BD', '#01579B'],
          ['#E0F2F1', '#B2DFDB', '#80CBC4', '#4DB6AC', '#26A69A', '#009688', '#00897B', '#00796B', '#00695C', '#004D40'],
          ['#F1F8E9', '#DCEDC8', '#C5E1A5', '#AED581', '#9CCC65', '#8BC34A', '#7CB342', '#689F38', '#558B2F', '#33691E'],
          ['#FFFDE7', '#FFF9C4', '#FFF59D', '#FFF176', '#FFEE58', '#FFEB3B', '#FDD835', '#FBC02D', '#F9A825', '#F57F17'],
          ['#FFF3E0', '#FFE0B2', '#FFCC80', '#FFB74D', '#FFA726', '#FF9800', '#FB8C00', '#F57C00', '#EF6C00', '#E65100'],
        ],
        value: {
          hex: '#FFEBEE',
        },
        formatValue: function (value) {
          return value.hex;
        },
      });

      colorPickerRgbPro = app.colorPicker.create({
        inputEl: '#demo-color-picker-pro',
        targetEl: '#demo-color-picker-pro-value',
        targetElSetBackgroundColor: true,
        modules: ['initial-current-colors', 'sb-spectrum', 'hsb-sliders', 'rgb-sliders', 'alpha-slider', 'hex', 'palette'],
        openIn: 'auto',
        sliderValue: true,
        sliderValueEditable: true,
        sliderLabel: true,
        hexLabel: true,
        hexValueEditable: true,
        groupedModules: true,
        palette: [
          ['#FFEBEE', '#FFCDD2', '#EF9A9A', '#E57373', '#EF5350', '#F44336', '#E53935', '#D32F2F', '#C62828', '#B71C1C'],
          ['#F3E5F5', '#E1BEE7', '#CE93D8', '#BA68C8', '#AB47BC', '#9C27B0', '#8E24AA', '#7B1FA2', '#6A1B9A', '#4A148C'],
          ['#E8EAF6', '#C5CAE9', '#9FA8DA', '#7986CB', '#5C6BC0', '#3F51B5', '#3949AB', '#303F9F', '#283593', '#1A237E'],
          ['#E1F5FE', '#B3E5FC', '#81D4FA', '#4FC3F7', '#29B6F6', '#03A9F4', '#039BE5', '#0288D1', '#0277BD', '#01579B'],
          ['#E0F2F1', '#B2DFDB', '#80CBC4', '#4DB6AC', '#26A69A', '#009688', '#00897B', '#00796B', '#00695C', '#004D40'],
          ['#F1F8E9', '#DCEDC8', '#C5E1A5', '#AED581', '#9CCC65', '#8BC34A', '#7CB342', '#689F38', '#558B2F', '#33691E'],
          ['#FFFDE7', '#FFF9C4', '#FFF59D', '#FFF176', '#FFEE58', '#FFEB3B', '#FDD835', '#FBC02D', '#F9A825', '#F57F17'],
          ['#FFF3E0', '#FFE0B2', '#FFCC80', '#FFB74D', '#FFA726', '#FF9800', '#FB8C00', '#F57C00', '#EF6C00', '#E65100'],
        ],
        formatValue: function (value) {
          return 'rgba(' + value.rgba.join(', ') + ')';
        },
        value: {
          hex: '#00ffff',
        },
      });

      colorPickerInline = app.colorPicker.create({
        containerEl: '#demo-color-picker-inline',
        modules: ['sb-spectrum', 'hsb-sliders', 'alpha-slider'],
        on: {
          change(cp, value) {
            colorPickerInlineValue = value;
            $update();
          },
        },
        value: {
          hex: '#77ff66',
        },
      });
    });
    $on('pageBeforeRemove', () => {
      colorPickerWheel.destroy();
      colorPickerSpectrum.destroy();
      colorPickerHsSpectrum.destroy();
      colorPickerRgb.destroy();
      colorPickerRgba.destroy();
      colorPickerHsb.destroy();
      colorPickerRgbBars.destroy();
      colorPickerRgbPrevCurrentColors.destroy();
      colorPickerPalette.destroy();
      colorPickerRgbPro.destroy();
      colorPickerInline.destroy();
    });

    return $render;
  };

</script>