颜色选择器
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'] | 包含颜色选择器模块按它们出现的顺序 |
调色板 | 数组 | 包含调色板模块颜色的数组,其中每个调色板颜色必须指定为十六进制字符串。 它可以是一个包含调色板值的普通数组,如:
或者它可以是一个包含调色板“行”的数组,其中每个项目指定为包含颜色的数组:
默认情况下它是:
| |
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' | 透明度滑块标签文本 |
formatValue | function (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 | 启用使用滑动手势关闭颜色选择器弹出的能力。如果没有指定,它将继承应用的弹出。swipeToClose parameter |
sheetPush | 布尔值 | false | 启用颜色选择器表单在打开时推后视图/。 |
sheetSwipeToClose | 布尔值 | undefined | 启用使用滑动手势关闭颜色选择器表单的能力。如果没有指定,它将继承应用的表单。swipeToClose parameter |
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字符串 | |
renderNavbar | function(date) | 用于渲染导航栏的函数。必须返回导航栏的HTML字符串 | |
render | 函数 | 用于渲染颜色选择器的函数。必须返回完整的颜色选择器HTML字符串 | |
事件 | |||
on | 对象 | 带有事件处理程序的对象。例如:
|
注意,所有以下参数都可以在colorPicker
属性用于为所有颜色选择器设置默认值。例如:
var app = new Framework7({
colorPicker: {
modules: ['hb-spectrum', 'hue-slider'],
url: 'select-color/',
}
});
颜色选择器模块
您可以通过指定在颜色选择器创建时要使用的模块数组参数来创建自己的颜色选择器布局。有以下几个模块可用:modules
wheel
带有饱和度-亮度光谱的色轮 | Hue wheel with Saturation-Brightness spectrum inside |
sb-spectrum | 饱和度-亮度光谱。建议与 |
hue-slider | 单色滑块 |
hs-spectrum | 色相-饱和度光谱。建议与 |
亮度滑块 | 单亮度滑块 |
rgb-sliders | 红色、绿色和蓝色滑块 |
hsb-sliders | 色相、饱和度和亮度滑块 |
alpha-slider | Alpha(不透明度)单滑块 |
rgb-bars | 垂直红色、绿色和蓝色滑块 |
调色板 | 模块显示在 |
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.opened | true 如果颜色选择器当前打开 |
colorPicker.inline | true 当使用内联颜色选择器时 |
colorPicker.url | 颜色选择器URL(传递在url 参数中) |
colorPicker.view | 颜色选择器视图(传递在view 参数中)或找到的父视图 |
colorPicker.params | 包含初始化参数的对象 |
方法 | |
colorPicker.setValue(值) | 设置新的颜色选择器值。value 是颜色选择器值对象,可以部分指定:
|
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 | 颜色选择器 | (颜色选择器, 值) | 当颜色选择器的值变化时,将触发事件 |
colorPickerChange | app | ||
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);
}
示例
<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>