カラーピッカー
Framework7には、無限の「カラーモジュール」の組み合わせでカラーピッカーを作成できる究極のモジュール式カラーピッカーコンポーネントが付属しています。
カラーピッカーアプリメソッド
カラーピッカーを操作するための関連するアプリメソッドを見てみましょう。
app.colorPicker.create(parameters) - カラーピッカーインスタンスを作成します
- parameters - object。カラーピッカーのパラメーターを持つオブジェクト。
メソッドは、作成されたカラーピッカーインスタンスを返します
app.colorPicker.destroy(el) - カラーピッカーインスタンスを破棄します
- el - HTMLElement または string (CSSセレクター付き) または object。破棄するカラーピッカー要素またはカラーピッカーインスタンス。
app.colorPicker.get(el) - HTML要素でカラーピッカーインスタンスを取得します
- el - HTMLElement または string (CSSセレクター付き)。カラーピッカー要素。
メソッドは、カラーピッカーのインスタンスを返します
app.colorPicker.close(el) - カラーピッカーを閉じます
- el - HTMLElement または string (CSSセレクター付き)。閉じるカラーピッカー要素。
メソッドは、カラーピッカーのインスタンスを返します
例
var colorPicker = app.colorPicker.create({
inputEl: '#color-input',
value: {
hex: '#ff000',
},
});
カラーピッカーのパラメーター
利用可能なすべてのカラーピッカーのパラメーターのリストを見てみましょう
パラメーター | タイプ | デフォルト | 説明 |
---|---|---|---|
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> 要素として表示されます |
ラベルテキスト | |||
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' | アルファ (不透明度) スライダーラベルテキスト |
formatValue | function (value) | 入力値をフォーマットする関数。新しい/フォーマットされた文字列値を返す必要があります。valueはカラーピッカーの値オブジェクトです。デフォルトでは、HEX値を返します。 | |
コンテナ/オープナー固有のパラメーター | |||
containerEl | string HTMLElement | 生成されたカラーピッカーのHTMLを配置するCSSセレクターまたはHTMLElementを持つ文字列。インラインカラーピッカーでのみ使用してください | |
openIn | string | popover | auto 、popover (ポップオーバーでカラーピッカーを開く場合)、sheet (シートモーダルで開く場合)、popup (ポップアップで開く場合)、またはpage (ページで開く場合) を指定できます。auto の場合、小さな画面ではopenInPhone パラメーターで指定されたものとして、大きな画面ではポップオーバーで指定されたものとして扱われます。 |
openInPhone | string | popup | openIn: "auto" の場合、小さな画面でカラーピッカーを開く方法を定義します |
popupPush | boolean | false | カラーピッカーのポップアップを開いたときに、背後のビューをプッシュできるようにします |
popupSwipeToClose | boolean | undefined | スワイプでカラーピッカーのポップアップを閉じることができるようにします。指定されていない場合、アプリのポップアップswipeToClose パラメーターを継承します |
sheetPush | boolean | false | カラーピッカーのシートを開いたときに、背後のビューをプッシュできるようにします |
sheetSwipeToClose | boolean | undefined | スワイプでカラーピッカーのシートを閉じることができるようにします。指定されていない場合、アプリのシートswipeToClose パラメーターを継承します |
inputEl | string または HTMLElement | 関連する入力要素を持つCSSセレクターまたはHTMLElementを持つ文字列 | |
targetEl | string または HTMLElement | 関連するターゲット要素を持つCSSセレクターまたはHTMLElementを持つ文字列。入力要素に加えて、現在選択されている色を表示する追加の要素を配置することもできます。このような要素は、ターゲット要素として指定できます。カラーピッカーがポップオーバーで開かれている場合、このターゲット要素の周囲に配置されます。指定されたターゲット要素をクリックすると、カラーピッカーも開きます。 | |
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 | 完了 | 完了/閉じるツールバーボタンのテキスト |
navbarPopup | boolean | true | ポップアップモーダルで開いたときにナビバーを表示します |
navbarCloseText | string | 完了 | 完了/閉じるナビバーボタンのテキスト |
navbarTitleText | string | 色 | ナビバーのタイトルのテキスト |
navbarBackLinkText | string | 戻る | カラーピッカーがページで開かれた場合に利用可能なナビバーの戻るリンクのテキスト |
routableModals | boolean | false | 開かれたカラーピッカーをルーター履歴に追加します。これにより、ルーター履歴で戻ることでカラーピッカーを閉じ、現在のルートをカラーピッカーモーダルに設定できます。 |
url | string | color/ | 現在のルートとして設定されるカラーピッカーモーダルURL |
view | object | routableModals が有効な場合にルーティングを設定する場所。デフォルトでは、inputEl の親ビュー、または親ビューが見つからない場合はメインビューになります。 | |
backdrop | boolean | カラーピッカーの背景 (背後の暗い半透明のレイヤー) を有効にします。デフォルトでは、カラーピッカーがポップオーバーまたはポップアップで開かれている場合に有効になります。 | |
closeByBackdropClick | boolean | true | 有効にすると、背景をクリックするとカラーピッカーが閉じられます |
レンダー関数 | |||
renderToolbar | function | ツールバーをレンダリングする関数。ツールバーのHTML文字列を返す必要があります | |
renderNavbar | function(date) | ナビバーをレンダリングする関数。ナビバーのHTML文字列を返す必要があります | |
render | function | カラーピッカーをレンダリングする関数。完全なカラーピッカーのHTML文字列を返す必要があります | |
イベント | |||
on | object | イベントハンドラーを持つオブジェクト。例:
|
次のパラメーターはすべて、colorPicker
プロパティの下のグローバルアプリパラメーターで使用して、すべてのカラーピッカーのデフォルトを設定できます。例:
var app = new Framework7({
colorPicker: {
modules: ['hb-spectrum', 'hue-slider'],
url: 'select-color/',
}
});
カラーピッカーモジュール
カラーピッカーの作成時にmodules
配列パラメーターで使用するモジュールを指定することで、独自のカラーピッカーレイアウトを作成できます。利用可能なモジュールは次のとおりです。
wheel | 内側に彩度と明度のスペクトルを持つ色相ホイール |
sb-spectrum | 彩度と明度のスペクトル。 |
hue-slider | 単一の色相スライダー |
hs-spectrum | 色相と彩度のスペクトル。 |
brightness-slider | 単一の明度スライダー |
rgb-sliders | 赤、緑、青のスライダー |
hsb-sliders | 色相、彩度、明度のスライダー |
alpha-slider | アルファ (不透明度) 単一スライダー |
rgb-bars | 垂直の赤、緑、青のスライダー |
palette | モジュールは、 |
hex | 現在のHEX値を持つモジュール |
current-color | モジュールは現在選択されている色を表示します |
initial-current-colors | モジュールには、現在選択されている色と、カラーピッカーを開く前に選択されていた初期色が表示されます。初期色をクリックすると、カラーピッカーの値が初期色に設定されます。 |
カスタムモジュール
カスタムカラーピッカーモジュールを使用および作成することも可能です。このようなカスタムモジュールは、カスタムピッカーを作成したり、モジュール間にカスタムコンテンツを追加したりするために使用できます。
カスタムカラーピッカーモジュールを追加するには、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 | string | HEXカラー値。例:#ff0000 |
rgb | array | RGB ([赤, 緑, 青]) カラーの配列。例:[255, 100, 20] |
hsl | array | HSL ([色相, 彩度, 明度]) カラーの配列。例:[320, 0.1, 0.9] |
hsb | array | HSB/V ([色相, 彩度, 明度]) カラーの配列。例:[180, 0.5, 0.3] |
alpha | 数値 | アルファ(不透明度)値(0〜1)。例:0.6 |
hue | 数値 | 色相の値(0〜360)。例:320 |
rgba | array | RGBA ([赤, 緑, 青, アルファ]) カラーの配列。例:[255, 100, 20, 0.5] |
hsla | array | HSLA ([色相, 彩度, 明度, アルファ]) カラーの配列。例:[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 は、部分的に指定できるカラーピッカーの値オブジェクトです
|
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イベント
イベント | 説明 |
---|---|
colorpicker:open | カラーピッカーが開くアニメーションを開始するときにトリガーされるイベントです |
colorpicker:opened | カラーピッカーが開くアニメーションを完了した後にトリガーされるイベントです |
colorpicker:close | カラーピッカーが閉じるアニメーションを開始するときにトリガーされるイベントです |
colorpicker:closed | カラーピッカーが閉じるアニメーションを完了した後にトリガーされるイベントです |
アプリとカラーピッカーのインスタンスイベント
カラーピッカーのインスタンスは、自身のインスタンスとアプリのインスタンスの両方でイベントを発生させます。アプリのインスタンスイベントには、colorPicker
というプレフィックスが付いた同じ名前が付けられています。
イベント | ターゲット | 引数 | 説明 |
---|---|---|---|
change | colorPicker | (colorPicker, value) | カラーピッカーの値が変更されたときにトリガーされるイベントです |
colorPickerChange | app | ||
init | colorPicker | (colorPicker) | カラーピッカーが初期化されたときにトリガーされるイベントです |
colorPickerInit | app | ||
open | colorPicker | (colorPicker) | カラーピッカーが開くアニメーションを開始するときにトリガーされるイベントです。引数として、イベントハンドラはカラーピッカーのインスタンスを受け取ります |
colorPickerOpen | app | ||
opened | colorPicker | (colorPicker) | カラーピッカーが開くアニメーションを完了した後にトリガーされるイベントです。引数として、イベントハンドラはカラーピッカーのインスタンスを受け取ります |
colorPickerOpened | app | ||
close | colorPicker | (colorPicker) | カラーピッカーが閉じるアニメーションを開始するときにトリガーされるイベントです。引数として、イベントハンドラはカラーピッカーのインスタンスを受け取ります |
colorPickerClose | app | ||
closed | colorPicker | (colorPicker) | カラーピッカーが閉じるアニメーションを完了した後にトリガーされるイベントです。引数として、イベントハンドラはカラーピッカーのインスタンスを受け取ります |
colorPickerClosed | app | ||
beforeDestroy | colorPicker | (colorPicker) | カラーピッカーのインスタンスが破棄される直前にトリガーされるイベントです。引数として、イベントハンドラはカラーピッカーのインスタンスを受け取ります |
colorPickerBeforeDestroy | 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);
}
例
<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>