カラーピッカー
Framework7には、究極のモジュール式カラーピッカーコンポーネントが搭載されており、「カラーモジュール」を無限に組み合わせてカラーピッカーを作成することができます。
カラーピッカーアプリのメソッド
ここでは、Color Pickerに関連するアプリのメソッドを紹介します。
app.colorPicker.create(parameters)- カラーピッカーのインスタンス作成
- parameters - object. Color Pickerのパラメータを持つオブジェクト
作成したColor Pickerのインスタンスを返すメソッド
app.colorPicker.destroy(el)- Color Pickerインスタンスの破棄
- el - HTMLElementまたはstring(CSSセレクタを使用)またはobject。破壊するカラーピッカー要素またはカラーピッカーインスタンスを指定します。
app.colorPicker.get(el)- HTML要素でカラーピッカーのインスタンスを取得
- el - HTMLElement または string (CSS Selectorを使用). Color Pickerの要素です。
メソッドは、Color Pickerのインスタンスを返します。
app.colorPicker.close(el)- 閉じるカラーピッカー
- el - HTMLElement または string (CSS Selectorを使用した場合)。Color Pickerの要素を閉じます。
メソッドはColor Pickerのインスタンスを返します。
例:
var colorPicker = app.colorPicker.create({
inputEl: '#color-input',
value: {
hex: '#ff000',
},
});
カラーピッカーのパラメータ
利用可能なColor Pickerのパラメータの一覧を見てみましょう。
Parameter | Type | Default | Description |
---|---|---|---|
value | object | カラーピッカーの値を持つオブジェクト | |
modules | array | ['wheel'] | カラーピッカーのモジュールを見た目の順に並べた配列 |
palette | array | パレットモジュールの色を指定した配列で、各パレットの色はHEX文字列で指定する必要があります。 のようなパレット値を持つプレーンな配列にすることもできます。
あるいは、パレットの "行 "を配列にして、各項目を色の配列で指定することもできます。
デフォルトでは次のようになります。
| |
groupedModules | boolean | false | 有効にすると、スライダーモジュールの露出を増やして、より分離して見えるようにします。 |
centerModules | boolean | true | 有効にすると、十分なスペースがあれば、モジュールを垂直方向に中央に配置しようとします。 |
sliderLabel | boolean | false | 有効にすると、スライダのラベルをテキストで表示します。 |
sliderValue | boolean | false | 有効にすると、スライダの値を表示します。 |
sliderValueEdiable | boolean | false | 有効にすると、スライダの値を <input> 要素として表示し、直接編集できるようになります。 |
barLabel | boolean | false | 有効にすると、バーのラベルをテキストで表示します。 |
barValue | boolean | false | 有効にすると、バーの値が表示されます。 |
barValueEdiable | boolean | false | 有効にすると、バーの値が <input> 要素として表示され、直接編集することが可能になります。 |
hexLabel | boolean | false | 有効にすると、HEXモジュールのラベルテキストを表示します(例:HEX )。 |
hexValueEditable | boolean | false | 有効にすると、HEXモジュールの値が <input> 要素として表示され、直接編集が可能になります。 |
Labels Texts | |||
redLabelText | string | 'R' | 赤色のスライダー/バーのラベルテキスト |
greenLabelText | string | 'G' | 緑のスライダ/バーのラベルテキスト |
blueLabelText | string | 'B' | 青色のスライダ/バーのラベルテキスト |
hueLabelText | string | 'H' | 色相スライダのラベルテキスト |
saturationLabelText | string | 'S' | 彩度スライダのラベルテキスト |
brightnessLabelText | string | 'B' | 輝度スライダのラベルテキスト |
hexLabelText | string | 'HEX' | HEXモジュールのラベルテキスト |
alphaLabelText | string | 'A' | Alpha (opacity) スライダーのラベルテキスト |
formatValue | function (value) | 入力された値を整形する関数で、整形された文字列を返します。valueはカラーピッカーの値オブジェクトです。デフォルトではHEX値を返します。 | |
Container/opener-specific parameters | |||
containerEl | string HTMLElement | 生成されたカラーピッカーのHTMLを配置するCSSセレクタまたはHTML要素を含む文字列です。インラインのカラーピッカーにのみ使用します。 | |
openIn | string | popover | auto、 popover (カラーピッカーをポップオーバーで開く)、 sheet (シートモーダルで開く)、 popup (ポップアップで開く)、 page (ページで開く)のいずれかを指定します。auto の場合、小さい画面では openInPhone パラメータで指定されたとおりに、大きい画面ではポップオーバーで開きます。 |
openInPhone | string | popup | 小さな画面では、openIn: "auto" の場合 |
popupPush | boolean | false | カラーピッカーを開いたときに、その後ろにビューを表示するようにします。 |
popupSwipeToClose | boolean | undefined | スワイプでカラーピッカーのポップアップを閉じる機能を有効にします。指定されていない場合は、アプリの Popup swipeToClose パラメータを継承します。 |
sheetPush | boolean | false | カラーピッカーシートを開いた時に、ビューを後ろに押す機能を有効にします。 |
sheetSwipeToClose | boolean | undefined | スワイプでカラーピッカーシートを閉じる機能を有効にします。指定されていない場合は、アプリのSheetの swipeToClose パラメータを継承します。 |
inputEl | string or HTMLElement | 関連する入力要素を持つCSSセレクタまたはHTMLElementを持つ文字列 | |
targetEl | string or HTMLElement | CSSセレクタまたはHTMLElementと関連するtarget elementを持つ文字列。入力要素に加えて、現在選択されている色を表示する要素を追加で配置したい場合があります。そのような要素はターゲット要素として指定することができます。ポップオーバーでカラーピッカーを開いた場合、このターゲット要素を中心に配置されます。指定したターゲット要素をクリックすると、カラーピッカーも開きます。 | |
targetElSetBackgroundColor | boolean | false | 有効になっていて、かつ targetEl を渡している場合は、現在選択されている値の background-color をターゲット要素に設定します。 |
scrollToInput | boolean | true | カラーピッカーが開いたときに、ビューポート(ページコンテンツ)を入力にスクロールします。 |
inputReadOnly | boolean | true | 指定された入力に "readonly" 属性を設定する。 |
cssClass | string | カラーピッカーのコンテナに設定される追加のCSSクラス名 | |
closeByOutsideClick | boolean | true | 有効にすると、ピッカーまたは関連する入力要素の外側をクリックしたときにピッカーが閉じられるようになる |
toolbarSheet | boolean | true | シートモーダルで開いたときにツールバーを表示する |
toolbarPopover | boolean | false | ポップオーバーモーダルで開いたときにツールバーを表示する |
toolbarCloseText | string | Done | Done/Closeツールバーボタンのテキスト |
navbarPopup | boolean | true | Popup modalで開いたときにナビバーを表示する |
navbarCloseText | string | Done | ナビバーボタンの「完了/終了」のテキスト |
navbarTitleText | string | Color | ナビバーのタイトルのテキスト |
navbarBackLinkText | string | Back | ページ内でカラーピッカーを開いたときに表示されるナビバーのバックリンクのテキスト |
routableModals | boolean | false | 開いたカラーピッカーをルータの履歴に追加し、ルータの履歴に戻って現在のルートをカラーピッカーのモーダルに設定することで閉じることができるようにします。 |
url | string | color/ | カレントルートとして設定されるカラーピッカーモーダルのURL |
view | object | routableModalsが有効な場合にルーティングを設定するビューです。親ビューが見つからない場合は、 inputEl` の親ビュー、もしくはメインビューがデフォルトとなります。 | |
backdrop | boolean | カラーピッカーの背景(後ろの暗い半透明のレイヤー)を有効にします。デフォルトでは、PopoverまたはPopupでColor Pickerを開いたときに有効になります。 | |
closeByBackdropClick | boolean | true | 有効にすると、背景をクリックするとカラーピッカーが閉じます。 |
Render Functions | |||
renderToolbar | function | ツールバーをレンダリングする関数です。ツールバーのHTML文字列を返す必要があります。 | |
renderNavbar | function(date) | ナビバーを描画する関数です。ナビバーのHTML文字列を返す必要があります。 | |
render | function | カラーピッカーを表示する関数です。フルカラーピッカーを表示する関数です。 | |
Events | |||
on | object | イベントハンドラーを持つオブジェクトです。例えば、以下のようなものがあります。
|
以下のすべてのパラメータは、アプリのグローバルパラメータの colorPicker
プロパティで使用して、すべてのカラーピッカーのデフォルトを設定できることに注意してください。例えば、以下のようになります。
var app = new Framework7({
colorPicker: {
modules: ['hb-spectrum', 'hue-slider'],
url: 'select-color/',
}
});
カラーピッカーモジュール
カラーピッカー作成時の配列パラメータ modules
に使用したいモジュールを指定することで、独自のカラーピッカーレイアウトを作成することができます。以下のモジュールが用意されています。
wheel | 内部に彩度-明度スペクトルを持つ色相ホイール |
sb-spectrum | 彩度-明度スペクトル。hue-slider`と一緒に使うことをお勧めします。 |
hue-slider | 単一の色相スライダ |
hs-spectrum | 色相-彩度のスペクトル。brightness-slider` と一緒に使うことをお勧めします。 |
brightness-slider | 単一の輝度スライダ |
rgb-sliders | 赤、緑、青のスライダ |
hsb-sliders | 色相、彩度、明るさスライダ |
alpha-slider | アルファ(不透明度)シングルスライダ |
rgb-bars | 赤、緑、青の縦型スライダ |
palette | モジュールは、 |
hex | モジュールに現在のHEX値を表示 |
current-color | 現在選択されている色を表示するモジュール |
initial-current-colors | モジュールは、現在選択されている色と、初期色(カラーピッカーを開く前に選択されていた色)を表示します。初期色をクリックすると、カラーピッカーの値が初期色に設定されます。 |
カスタムモジュール
カスタムモジュールを使って、カラーピッカーを作成することもできます。このようなカスタムモジュールは、カスタムピッカーを作成したり、モジュール間にカスタムコンテンツを追加したりするのに使用できます。
カスタムカラーピッカーモジュールを追加するには、 modules
の配列パラメータに文字列ではなくオブジェクトを渡す必要があります。カスタムモジュールオブジェクトには、以下のようなメソッドがあります。各メソッドには、カラーピッカーのインスタンスが引数として渡されます。
render(colorPicker) | モジュールのレンダリング機能。モジュールのHTMLコンテンツを返す必要があります。 |
init(colorPicker) | モジュールのinit関数です。これは、モジュールがレンダリングされ、DOMに追加されたときに実行されます。カスタムイベントリスナーを定義する必要があります。 |
update(colorPicker) | このメソッドは、カラーピッカーの値が更新されたときに実行されます。 |
destroy(colorPicker) | このメソッドは、モジュールの破棄時に実行されます。ここですべてのイベントリスナーを解除する必要があります。 |
例えば、モジュールとモジュールの間にカスタムテキストを追加する必要がある場合、このようなシンプルなモジュールを使用することができます。
var colorPicker = app.colorPicker.create({
// ...
modules: [
'sb-spectrum',
// レンダリング機能のみのカスタムモジュール
{
render: function() {
return '<p class="text-align-center">Enter HUE value:</p>'
},
},
'hue-slider',
]
})
モジュールでどのように動作するかのヒントは、組み込みモジュールのソースコードをご覧ください。
カラーピッカーの値
Color Pickerのインスタンス値は、以下のプロパティを持つObjectとして表されます。
hex | string | HEXカラーの値 (例: #ff0000 ) |
rgb | array | RGB ([Red, Green, Blue]) カラーの配列、例えば [255, 100, 20] 。 |
hsl | array | HSL([Hue, Saturation, Lightness])の色の配列、例えば、[320, 0.1, 0.9] 。 |
hsb | array | HSB/V([色相、彩度、明度])の色を持つ配列(例:[180, 0.5, 0.3]`)。 |
alpha | number | アルファ(不透明度)の値(0から1まで)、例:0.6 . |
hue | number | 色相の値(0から360まで)、例えば320 。 |
rgba | array | RGBA([Red, Green, Blue, Alpha])カラーの配列、例えば、[255, 100, 20, 0.5] 。 |
hsla | array | HSLA([Hue, Saturation, Lightness, 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
変数)に格納され、便利なメソッドとプロパティが用意されます。
Properties | |
---|---|
colorPicker.app | グローバルアプリのインスタンスへのリンク |
colorPicker.containerEl | カラーピッカーのラッピングコンテナ HTML 要素 (インラインカラーピッカーが使用されている場合) |
colorPicker.$containerEl | カラーピッカーをラッピングしたコンテナのHTML要素を持つDom7インスタンス(インラインカラーピッカーを使用している場合 |
colorPicker.el | カラーピッカーのHTML要素 |
colorPicker.$el | カラーピッカーを持つ Dom7 インスタンス HTML 要素 |
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 | 初期化パラメータを持つオブジェクト |
Methods | |
colorPicker.setValue(value) | 新しいカラーピッカーの値を設定します。value` は カラーピッカーの値 オブジェクトで、部分的に指定することができます。
|
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イベントをカラーピッカー要素に、イベントをアプリとカラーピッカーのインスタンスに発行します。
DOM イベント
Event | Description |
---|---|
colorpicker:open | イベントは、Color Picker がオープニングアニメーションを開始したときに発生します。 |
colorpicker:opened | イベントは、カラーピッカーがオープニングアニメーションを完了した後に発生します。 |
colorpicker:close | イベントは、カラーピッカーが閉じるアニメーションを開始したときに発生します。 |
colorpicker:closed | イベントは、Color Pickerが閉じるアニメーションを完了した後に発生します。 |
アプリと Color Picker インスタンスのイベント
Color Picker のインスタンスは、self インスタンスと app インスタンスの両方でイベントを発行します。アプリのイベントは同じ名前で、プレフィックスとして colorPicker
が付きます。
Event | Target | Arguments | Description |
---|---|---|---|
change | colorPicker | (colorPicker, value) | カラーピッカーの値が変更されるとイベントが発生します。 |
colorPickerChange | app | ||
init | colorPicker | (colorPicker) | イベントはカラーピッカーが初期化されたときに発生します。 |
colorPickerInit | app | ||
open | colorPicker | (colorPicker) | イベントは、カラーピッカーがオープニングアニメーションを開始したときに発生します。イベントハンドラの引数として、カラーピッカーのインスタンスを受け取ります。 |
colorPickerOpen | app | ||
opened | colorPicker | (colorPicker) | イベントは、カラーピッカーがそのオープニングアニメーションを完了した後にトリガされます。As an argument event handler receives color picker instance |
colorPickerOpened | app | ||
close | colorPicker | (colorPicker) | イベントは、カラーピッカーが閉じるアニメーションを開始するときにトリガされます。As an argument event handler receives color picker instance |
colorPickerClose | app | ||
closed | colorPicker | (colorPicker) | イベントは、カラーピッカーが閉じるアニメーションを完了した後にトリガされます。As an argument event handler receives color picker instance |
colorPickerClosed | app | ||
beforeDestroy | colorPicker | (colorPicker) | イベントは、カラーピッカーのインスタンスが破壊される直前に発生します。As an argument event handler receive color picker instance |
colorPickerBeforeDestroy | app |
CSS Variables
Below is the list of related CSS variables (CSS custom properties).
: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 .theme-dark,
:root.theme-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);
}
Examples
<template>
<div class="page">
<div class="navbar">
<div class="navbar-bg"></div>
<div class="navbar-inner">
<div class="title">Color Picker</div>
</div>
</div>
<div class="page-content">
<div class="block-title">Color Wheel</div>
<div class="list no-hairlines-md">
<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="list no-hairlines-md">
<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 no-hairlines-md">
<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="list no-hairlines-md">
<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="list no-hairlines-md">
<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="list no-hairlines-md">
<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="list no-hairlines-md">
<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="list no-hairlines-md">
<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="list no-hairlines-md">
<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="list no-hairlines-md">
<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 block-strong no-padding">
<div id="demo-color-picker-inline"></div>
</div>
</div>
</div></template>
<style>
.demo-list-icon,
.icon-f7 {
background: #ccc;
display: block;
position: relative;
}
.ios .demo-list-icon {
width: 29px;
height: 29px;
border-radius: 6px;
box-sizing: border-box;
}
.md .demo-list-icon,
.aurora .demo-list-icon {
width: 24px;
height: 24px;
border-radius: 4px;
}
</style>
<script>
export default (props, { $, $f7, $on }) => {
let colorPickerWheel;
let colorPickerSpectrum;
let colorPickerHsSpectrum;
let colorPickerRgb;
let colorPickerRgba;
let colorPickerHsb;
let colorPickerRgbBars;
let colorPickerRgbInitialCurrentColors;
let colorPickerPalette;
let colorPickerRgbPro;
let colorPickerInline;
$on('pageInit', () => {
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',
},
});
colorPickerRgbInitialCurrentColors = 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'],
value: {
hex: '#77ff66',
},
});
});
return $render;
}
</script>