色彩選取器

Framework7 附帶終極模組化色彩選擇器元件,可建立色彩選擇器,並具備無限制的「色彩模組」組合。

色彩選擇器應用程式方法

讓我們來看看相關的應用程式方法,以使用色彩選擇器

app.colorPicker.create(parameters)- 建立色彩選擇器執行個體

  • parameters - 物件。包含色彩選擇器參數的物件

方法傳回建立的色彩選擇器執行個體

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',
  },
});

色彩選擇器參數

讓我們來看看所有可用的色彩選擇器參數清單

參數類型預設值說明
value物件包含 色彩選擇器值 的物件
modules陣列['wheel']包含 色彩選擇器模組 的陣列,依其出現順序排列
palette陣列

包含調色盤模組色彩的陣列,其中每個調色盤色彩都必須指定為 HEX 字串。

它可以是包含調色盤值的純陣列,例如

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> 元素,以便直接編輯
barLabel布林值false啟用後,它會顯示帶有文字的長條標籤
barValue布林值false啟用後,它會顯示長條值
barValueEdiable布林值false啟用後,它會將長條值顯示為 <input> 元素,以便直接編輯
hexLabel布林值false啟用後,它會顯示 HEX 模組標籤文字,例如 HEX
hexValueEditable布林值false啟用後,它會將 HEX 模組值顯示為 <input> 元素,以便直接編輯
標籤文字
redLabelText字串'R'紅色滑塊/長條標籤文字
greenLabelText字串'G'綠色滑塊/長條標籤文字
blueLabelText字串'B'藍色滑塊/長條標籤文字
hueLabelText字串'H'色相滑塊標籤文字
saturationLabelText字串'S'飽和度滑塊標籤文字
brightnessLabelText字串'B'亮度滑塊標籤文字
hexLabelText字串'HEX'HEX 模組標籤文字
alphaLabelText字串'A'Alpha (不透明度) 滑塊標籤文字
formatValue函式 (值)格式化輸入值的函式,應傳回新的/格式化的字串值。色彩選擇器值 物件。預設會傳回 HEX 值。
容器/開啟器特定參數
containerEl字串
HTMLElement
包含 CSS 選擇器或 HTMLElement 的字串,用於放置產生的色彩選擇器 HTML。僅用於內嵌色彩選擇器
openIn字串彈出視窗可以是 autopopover (在彈出視窗中開啟色彩選擇器)、sheet (在表單模式中開啟)、popup (在快顯視窗中開啟) 或 page (在頁面中開啟)。如果為 auto,它會在小螢幕上指定 openInPhone 參數,在大螢幕上則指定彈出視窗。
openInPhone字串快顯視窗定義當 openIn: "auto" 時如何在小螢幕上開啟色彩選擇器
popupPush布林值false在開啟時,啟用色彩選擇器快顯視窗將視圖/s 推至後方
popupSwipeToClose布林值未定義啟用使用滑動關閉色彩選擇器快顯視窗的功能。未指定時,它會繼承應用程式的快顯視窗 swipeToClose 參數
sheetPush布林值false在開啟時,啟用色彩選擇器工作表將視圖/s 推至後方
sheetSwipeToClose布林值未定義啟用使用滑動關閉色彩選擇器工作表的功能。未指定時,它會繼承應用程式的表單 swipeToClose 參數
inputEl字串或 HTMLElement包含 CSS 選擇器的字串或包含相關輸入元素的 HTMLElement
targetEl字串或 HTMLElement包含 CSS 選擇器的字串或包含相關目標元素的 HTMLElement。除了輸入元素之外,您可能還想要放置顯示目前所選色彩的額外元素。此類元素可以指定為目標元素。如果色彩選擇器在快顯視窗中開啟,它將圍繞此目標元素定位。按一下指定的目標元素也會開啟色彩選擇器。
targetElSetBackgroundColor布林值false啟用後,如果您已傳遞 targetEl,它會將 background-color 設定為目前選取的值,並傳遞至目標元素。
scrollToInput布林值true在色彩選擇器開啟時,將視窗(頁面內容)捲動至輸入
inputReadOnly布林值true在指定的輸入上設定「唯讀」屬性
cssClass字串要在色彩選擇器容器上設定的額外 CSS 類別名稱
closeByOutsideClick布林值true如果啟用,按一下選擇器或相關輸入元素的外部,將會關閉選擇器
toolbarSheet布林值true在表單模式中開啟時,顯示工具列
toolbarPopover布林值false在快顯視窗模式中開啟時,顯示工具列
toolbarCloseText字串完成完成/關閉工具列按鈕的文字
navbarPopup布林值true在快顯視窗模式中開啟時,顯示導覽列
navbarCloseText字串完成完成/關閉導覽列按鈕的文字
navbarTitleText字串色彩導覽列標題的文字
navbarBackLinkText字串返回導覽列返回連結的文字,在色彩選擇器在頁面中開啟時可用
routableModals布林值false會將開啟的色彩選擇器新增至路由器記錄,這提供了透過返回路由器記錄並將目前路線設定為色彩選擇器模式來關閉它的功能
網址字串color/將設定為目前路徑的 Color Picker modal 網址
檢視物件當啟用 routableModals 時,設定路由的檢視。預設為 inputEl 的父檢視,如果找不到父檢視,則為主要檢視
背景布林值啟用 Color Picker 背景(深色半透明層)。預設在 Color Picker 在 Popover 或 Popup 中開啟時啟用。
按背景關閉布林值true啟用後,按背景會關閉 Color Picker
呈現功能
renderToolbar函式呈現工具列的函式。必須傳回工具列 HTML 字串
renderNavbarfunction(date)呈現導覽列的函式。必須傳回導覽列 HTML 字串
render函式呈現 color picker 的函式。必須傳回完整的 color picker HTML 字串
事件
on物件

包含事件處理常式的物件。例如

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

請注意,所有下列參數都可以在 colorPicker 屬性下的全域應用程式參數中使用,以設定所有 color picker 的預設值。例如

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

Color Picker 模組

您可以在 Color Picker 建立時,指定要在 modules 陣列參數中使用的模組,以建立自己的 Color Picker 版面。有下列模組可用

輪盤

色相輪,內含彩度-亮度光譜

sb-光譜

彩度-亮度光譜。建議與 色相滑桿 搭配使用

色相滑桿

單一色相滑桿

hs-光譜

色相-彩度光譜。建議與 亮度滑桿 搭配使用

亮度滑桿

單一亮度滑桿

rgb 滑桿

紅色、綠色和藍色滑桿

hsb 滑桿

色相、彩度和亮度滑桿

alpha 滑桿

Alpha(不透明度)單一滑桿

rgb 長條

垂直紅色、綠色和藍色滑桿

palette

模組顯示 palette 參數中指定的調色盤顏色

十六進位

包含目前十六進位值的模組

目前顏色

模組顯示目前選取的顏色

初始目前顏色

模組顯示目前選取的顏色和初始顏色(Color Picker 開啟前選取的顏色)。按一下初始顏色會將 Color Picker 值設定為初始顏色。

自訂模組

也可以使用並建立自訂 color picker 模組。此類自訂模組可用於建立自訂挑選器,或只是在模組之間加入一些自訂內容。

若要新增自訂色彩選擇器模組,我們需要傳遞一個物件,而不是字串給 modules 陣列參數。自訂模組物件可以包含下列方法。每個方法接收色彩選擇器實例作為引數。

render(colorPicker)模組渲染函式。它必須傳回模組 HTML 內容
init(colorPicker)模組初始化函式。它會在模組渲染並新增到 DOM 時執行。您應該在此定義任何自訂事件監聽器
update(colorPicker)此方法會在色彩選擇器值更新時執行
destroy(colorPicker)此方法會在模組銷毀時執行。您應該在此移除所有事件監聽器

例如,如果我們需要在模組之間新增一些自訂文字,我們可以使用如此簡單的模組

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',
  ]
})

若要獲得靈感,以及了解模組中的運作方式,請查看 內建模組原始碼

色彩選擇器值

色彩選擇器實例值表示為具有下列屬性的物件。

十六進位字串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.opened如果顏色選擇器目前已開啟,則為 true
colorPicker.inline當使用內嵌顏色選擇器時為 true
colorPicker.url顏色選擇器 URL(在 url 參數中傳遞)
colorPicker.view顏色選擇器檢視(在 view 參數中傳遞)或找到的父檢視
colorPicker.params包含初始化參數的物件
方法
colorPicker.setValue(value)設定新的顏色選擇器值。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(event, handler)新增事件處理常式
colorPicker.once(event, handler)新增事件處理常式,在觸發後將會移除
colorPicker.off(event, handler)移除事件處理常式
colorPicker.off(event)移除指定事件的所有處理常式
colorPicker.emit(event, ...args)在實例上觸發事件

顏色選擇器事件

顏色選擇器將在顏色選擇器元素上觸發下列 DOM 事件,以及在 app 和顏色選擇器實例上觸發事件

DOM 事件

事件說明
colorpicker:open當顏色選擇器開始其開啟動畫時,將觸發事件
colorpicker:opened色彩選取器完成開啟動畫後觸發事件
colorpicker:close色彩選取器開始關閉動畫時觸發事件
colorpicker:closed色彩選取器完成關閉動畫後觸發事件

應用程式和色彩選取器實例事件

色彩選取器實例在自身實例和應用程式實例上發出事件。應用程式實例事件有相同的名稱,字首加上 colorPicker

事件目標參數說明
變更colorPicker(colorPicker, value)色彩選取器值變更時觸發事件
colorPickerChangeapp
initcolorPicker(colorPicker)色彩選取器初始化時觸發事件
colorPickerInitapp
opencolorPicker(colorPicker)色彩選取器開始開啟動畫時觸發事件。事件處理常式接收色彩選取器實例作為參數
colorPickerOpenapp
openedcolorPicker(colorPicker)色彩選取器完成開啟動畫後觸發事件。事件處理常式接收色彩選取器實例作為參數
colorPickerOpenedapp
closecolorPicker(colorPicker)色彩選取器開始關閉動畫時觸發事件。事件處理常式接收色彩選取器實例作為參數
colorPickerCloseapp
closedcolorPicker(colorPicker)色彩選取器完成關閉動畫後觸發事件。事件處理常式接收色彩選取器實例作為參數
colorPickerClosedapp
beforeDestroycolorPicker(colorPicker)色彩選取器實例即將被銷毀前觸發事件。事件處理常式接收色彩選取器實例作為參數
colorPickerBeforeDestroyapp

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);
}

範例

color-picker.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>