framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
1,022 lines (846 loc) • 29.8 kB
JavaScript
"use strict";
exports.__esModule = true;
exports.default = void 0;
var _utils = require("../../shared/utils");
var _class = _interopRequireDefault(require("../../shared/class"));
var _dom = _interopRequireDefault(require("../../shared/dom7"));
var _getDevice = require("../../shared/get-device");
var _alphaSlider = _interopRequireDefault(require("./modules/alpha-slider"));
var _currentColor = _interopRequireDefault(require("./modules/current-color"));
var _hex = _interopRequireDefault(require("./modules/hex"));
var _hsbSliders = _interopRequireDefault(require("./modules/hsb-sliders"));
var _hueSlider = _interopRequireDefault(require("./modules/hue-slider"));
var _brightnessSlider = _interopRequireDefault(require("./modules/brightness-slider"));
var _palette = _interopRequireDefault(require("./modules/palette"));
var _initialCurrentColors = _interopRequireDefault(require("./modules/initial-current-colors"));
var _rgbBars = _interopRequireDefault(require("./modules/rgb-bars"));
var _rgbSliders = _interopRequireDefault(require("./modules/rgb-sliders"));
var _sbSpectrum = _interopRequireDefault(require("./modules/sb-spectrum"));
var _hsSpectrum = _interopRequireDefault(require("./modules/hs-spectrum"));
var _wheel = _interopRequireDefault(require("./modules/wheel"));
var _$jsx = _interopRequireDefault(require("../../shared/$jsx"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
var ColorPicker = /*#__PURE__*/function (_Framework7Class) {
_inheritsLoose(ColorPicker, _Framework7Class);
function ColorPicker(app, params) {
var _this;
if (params === void 0) {
params = {};
}
_this = _Framework7Class.call(this, params, [app]) || this;
var self = _assertThisInitialized(_this);
self.params = (0, _utils.extend)({}, app.params.colorPicker, params);
var $containerEl;
if (self.params.containerEl) {
$containerEl = (0, _dom.default)(self.params.containerEl);
if ($containerEl.length === 0) return self || _assertThisInitialized(_this);
}
var $inputEl;
if (self.params.inputEl) {
$inputEl = (0, _dom.default)(self.params.inputEl);
}
var $targetEl;
if (self.params.targetEl) {
$targetEl = (0, _dom.default)(self.params.targetEl);
}
(0, _utils.extend)(self, {
app: app,
$containerEl: $containerEl,
containerEl: $containerEl && $containerEl[0],
inline: $containerEl && $containerEl.length > 0,
$inputEl: $inputEl,
inputEl: $inputEl && $inputEl[0],
$targetEl: $targetEl,
targetEl: $targetEl && $targetEl[0],
initialized: false,
opened: false,
url: self.params.url,
modules: {
'alpha-slider': _alphaSlider.default,
'current-color': _currentColor.default,
hex: _hex.default,
// eslint-disable-line
'hsb-sliders': _hsbSliders.default,
'hue-slider': _hueSlider.default,
'brightness-slider': _brightnessSlider.default,
palette: _palette.default,
// eslint-disable-line
'initial-current-colors': _initialCurrentColors.default,
'rgb-bars': _rgbBars.default,
'rgb-sliders': _rgbSliders.default,
'sb-spectrum': _sbSpectrum.default,
'hs-spectrum': _hsSpectrum.default,
wheel: _wheel.default // eslint-disable-line
}
});
function onInputClick() {
self.open();
}
function onInputFocus(e) {
e.preventDefault();
}
function onTargetClick() {
self.open();
}
function onHtmlClick(e) {
if (self.destroyed || !self.params) return;
if (self.params.openIn === 'page') return;
var $clickTargetEl = (0, _dom.default)(e.target);
if (!self.opened || self.closing) return;
if ($clickTargetEl.closest('[class*="backdrop"]').length) return;
if ($clickTargetEl.closest('.color-picker-popup, .color-picker-popover').length) return;
if ($inputEl && $inputEl.length > 0) {
if ($clickTargetEl[0] !== $inputEl[0] && $clickTargetEl.closest('.sheet-modal').length === 0) {
self.close();
}
} else if ((0, _dom.default)(e.target).closest('.sheet-modal').length === 0) {
self.close();
}
} // Events
(0, _utils.extend)(self, {
attachInputEvents: function attachInputEvents() {
self.$inputEl.on('click', onInputClick);
if (self.params.inputReadOnly) {
self.$inputEl.on('focus mousedown', onInputFocus);
if (self.$inputEl[0]) {
self.$inputEl[0].f7ValidateReadonly = true;
}
}
},
detachInputEvents: function detachInputEvents() {
self.$inputEl.off('click', onInputClick);
if (self.params.inputReadOnly) {
self.$inputEl.off('focus mousedown', onInputFocus);
if (self.$inputEl[0]) {
delete self.$inputEl[0].f7ValidateReadonly;
}
}
},
attachTargetEvents: function attachTargetEvents() {
self.$targetEl.on('click', onTargetClick);
},
detachTargetEvents: function detachTargetEvents() {
self.$targetEl.off('click', onTargetClick);
},
attachHtmlEvents: function attachHtmlEvents() {
app.on('click', onHtmlClick);
},
detachHtmlEvents: function detachHtmlEvents() {
app.off('click', onHtmlClick);
}
});
self.init();
return self || _assertThisInitialized(_this);
}
var _proto = ColorPicker.prototype;
_proto.attachEvents = function attachEvents() {
var self = this;
self.centerModules = self.centerModules.bind(self);
if (self.params.centerModules) {
self.app.on('resize', self.centerModules);
}
};
_proto.detachEvents = function detachEvents() {
var self = this;
if (self.params.centerModules) {
self.app.off('resize', self.centerModules);
}
};
_proto.centerModules = function centerModules() {
var self = this;
if (!self.opened || !self.$el || self.inline) return;
var $pageContentEl = self.$el.find('.page-content');
if (!$pageContentEl.length) return;
var _$pageContentEl$ = $pageContentEl[0],
scrollHeight = _$pageContentEl$.scrollHeight,
offsetHeight = _$pageContentEl$.offsetHeight;
if (scrollHeight <= offsetHeight) {
$pageContentEl.addClass('justify-content-center');
} else {
$pageContentEl.removeClass('justify-content-center');
}
};
_proto.initInput = function initInput() {
var self = this;
if (!self.$inputEl) return;
if (self.params.inputReadOnly) self.$inputEl.prop('readOnly', true);
};
_proto.getModalType = function getModalType() {
var self = this;
var app = self.app,
modal = self.modal,
params = self.params;
var openIn = params.openIn,
openInPhone = params.openInPhone;
var device = (0, _getDevice.getDevice)();
if (modal && modal.type) return modal.type;
if (openIn !== 'auto') return openIn;
if (self.inline) return null;
if (device.ios) {
return device.ipad ? 'popover' : openInPhone;
}
if (app.width >= 768 || device.desktop && app.theme === 'aurora') {
return 'popover';
}
return openInPhone;
};
_proto.formatValue = function formatValue() {
var self = this;
var value = self.value;
if (self.params.formatValue) {
return self.params.formatValue.call(self, value);
}
return value.hex;
} // eslint-disable-next-line
;
_proto.normalizeHsValues = function normalizeHsValues(arr) {
return [Math.floor(arr[0] * 10) / 10, Math.floor(arr[1] * 1000) / 1000, Math.floor(arr[2] * 1000) / 1000];
};
_proto.setValue = function setValue(value, updateModules) {
if (value === void 0) {
value = {};
}
if (updateModules === void 0) {
updateModules = true;
}
var self = this;
if (typeof value === 'undefined') return;
var _ref = self.value || {},
hex = _ref.hex,
rgb = _ref.rgb,
hsl = _ref.hsl,
hsb = _ref.hsb,
_ref$alpha = _ref.alpha,
alpha = _ref$alpha === void 0 ? 1 : _ref$alpha,
hue = _ref.hue,
rgba = _ref.rgba,
hsla = _ref.hsla;
var needChangeEvent = self.value || !self.value && !self.params.value;
var valueChanged;
Object.keys(value).forEach(function (k) {
if (!self.value || typeof self.value[k] === 'undefined') {
valueChanged = true;
return;
}
var v = value[k];
if (Array.isArray(v)) {
v.forEach(function (subV, subIndex) {
if (subV !== self.value[k][subIndex]) {
valueChanged = true;
}
});
} else if (v !== self.value[k]) {
valueChanged = true;
}
});
if (!valueChanged) return;
if (value.rgb || value.rgba) {
var _ref2 = value.rgb || value.rgba,
r = _ref2[0],
g = _ref2[1],
b = _ref2[2],
_ref2$ = _ref2[3],
a = _ref2$ === void 0 ? alpha : _ref2$;
rgb = [r, g, b];
hex = _utils.colorRgbToHex.apply(void 0, rgb);
hsl = _utils.colorRgbToHsl.apply(void 0, rgb);
hsb = _utils.colorHslToHsb.apply(void 0, hsl);
hsl = self.normalizeHsValues(hsl);
hsb = self.normalizeHsValues(hsb);
hue = hsb[0];
alpha = a;
rgba = [rgb[0], rgb[1], rgb[2], a];
hsla = [hsl[0], hsl[1], hsl[2], a];
}
if (value.hsl || value.hsla) {
var _ref3 = value.hsl || value.hsla,
h = _ref3[0],
s = _ref3[1],
l = _ref3[2],
_ref3$ = _ref3[3],
_a = _ref3$ === void 0 ? alpha : _ref3$;
hsl = [h, s, l];
rgb = _utils.colorHslToRgb.apply(void 0, hsl);
hex = _utils.colorRgbToHex.apply(void 0, rgb);
hsb = _utils.colorHslToHsb.apply(void 0, hsl);
hsl = self.normalizeHsValues(hsl);
hsb = self.normalizeHsValues(hsb);
hue = hsb[0];
alpha = _a;
rgba = [rgb[0], rgb[1], rgb[2], _a];
hsla = [hsl[0], hsl[1], hsl[2], _a];
}
if (value.hsb) {
var _value$hsb = value.hsb,
_h = _value$hsb[0],
_s = _value$hsb[1],
_b = _value$hsb[2],
_value$hsb$ = _value$hsb[3],
_a2 = _value$hsb$ === void 0 ? alpha : _value$hsb$;
hsb = [_h, _s, _b];
hsl = _utils.colorHsbToHsl.apply(void 0, hsb);
rgb = _utils.colorHslToRgb.apply(void 0, hsl);
hex = _utils.colorRgbToHex.apply(void 0, rgb);
hsl = self.normalizeHsValues(hsl);
hsb = self.normalizeHsValues(hsb);
hue = hsb[0];
alpha = _a2;
rgba = [rgb[0], rgb[1], rgb[2], _a2];
hsla = [hsl[0], hsl[1], hsl[2], _a2];
}
if (value.hex) {
rgb = (0, _utils.colorHexToRgb)(value.hex);
hex = _utils.colorRgbToHex.apply(void 0, rgb);
hsl = _utils.colorRgbToHsl.apply(void 0, rgb);
hsb = _utils.colorHslToHsb.apply(void 0, hsl);
hsl = self.normalizeHsValues(hsl);
hsb = self.normalizeHsValues(hsb);
hue = hsb[0];
rgba = [rgb[0], rgb[1], rgb[2], alpha];
hsla = [hsl[0], hsl[1], hsl[2], alpha];
}
if (typeof value.alpha !== 'undefined') {
alpha = value.alpha;
if (typeof rgb !== 'undefined') {
rgba = [rgb[0], rgb[1], rgb[2], alpha];
}
if (typeof hsl !== 'undefined') {
hsla = [hsl[0], hsl[1], hsl[2], alpha];
}
}
if (typeof value.hue !== 'undefined') {
var _hsl = hsl,
_h2 = _hsl[0],
_s2 = _hsl[1],
_l = _hsl[2]; // eslint-disable-line
hsl = [value.hue, _s2, _l];
hsb = _utils.colorHslToHsb.apply(void 0, hsl);
rgb = _utils.colorHslToRgb.apply(void 0, hsl);
hex = _utils.colorRgbToHex.apply(void 0, rgb);
hsl = self.normalizeHsValues(hsl);
hsb = self.normalizeHsValues(hsb);
hue = hsb[0];
rgba = [rgb[0], rgb[1], rgb[2], alpha];
hsla = [hsl[0], hsl[1], hsl[2], alpha];
}
self.value = {
hex: hex,
alpha: alpha,
hue: hue,
rgb: rgb,
hsl: hsl,
hsb: hsb,
rgba: rgba,
hsla: hsla
};
if (!self.initialValue) self.initialValue = (0, _utils.extend)({}, self.value);
self.updateValue(needChangeEvent);
if (self.opened && updateModules) {
self.updateModules();
}
};
_proto.getValue = function getValue() {
var self = this;
return self.value;
};
_proto.updateValue = function updateValue(fireEvents) {
if (fireEvents === void 0) {
fireEvents = true;
}
var self = this;
var $inputEl = self.$inputEl,
value = self.value,
$targetEl = self.$targetEl;
if ($targetEl && self.params.targetElSetBackgroundColor) {
var rgba = value.rgba;
$targetEl.css('background-color', "rgba(" + rgba.join(', ') + ")");
}
if (fireEvents) {
self.emit('local::change colorPickerChange', self, value);
}
if ($inputEl && $inputEl.length) {
var inputValue = self.formatValue(value);
if ($inputEl && $inputEl.length) {
$inputEl.val(inputValue);
if (fireEvents) {
$inputEl.trigger('change');
}
}
}
};
_proto.updateModules = function updateModules() {
var self = this;
var modules = self.modules;
self.params.modules.forEach(function (m) {
if (typeof m === 'string' && modules[m] && modules[m].update) {
modules[m].update(self);
} else if (m && m.update) {
m.update(self);
}
});
};
_proto.update = function update() {
var self = this;
self.updateModules();
};
_proto.renderPicker = function renderPicker() {
var self = this;
var params = self.params,
modules = self.modules;
var html = '';
params.modules.forEach(function (m) {
if (typeof m === 'string' && modules[m] && modules[m].render) {
html += modules[m].render(self);
} else if (m && m.render) {
html += m.render(self);
}
});
return html;
};
_proto.renderNavbar = function renderNavbar() {
var self = this;
if (self.params.renderNavbar) {
return self.params.renderNavbar.call(self, self);
}
var _self$params = self.params,
openIn = _self$params.openIn,
navbarTitleText = _self$params.navbarTitleText,
navbarBackLinkText = _self$params.navbarBackLinkText,
navbarCloseText = _self$params.navbarCloseText;
return (0, _$jsx.default)("div", {
class: "navbar"
}, (0, _$jsx.default)("div", {
class: "navbar-bg"
}), (0, _$jsx.default)("div", {
class: "navbar-inner sliding"
}, openIn === 'page' && (0, _$jsx.default)("div", {
class: "left"
}, (0, _$jsx.default)("a", {
class: "link back"
}, (0, _$jsx.default)("i", {
class: "icon icon-back"
}), (0, _$jsx.default)("span", {
class: "if-not-md"
}, navbarBackLinkText))), (0, _$jsx.default)("div", {
class: "title"
}, navbarTitleText), openIn !== 'page' && (0, _$jsx.default)("div", {
class: "right"
}, (0, _$jsx.default)("a", {
class: "link popup-close",
"data-popup": ".color-picker-popup"
}, navbarCloseText))));
};
_proto.renderToolbar = function renderToolbar() {
var self = this;
if (self.params.renderToolbar) {
return self.params.renderToolbar.call(self, self);
}
return (0, _$jsx.default)("div", {
class: "toolbar toolbar-top no-shadow"
}, (0, _$jsx.default)("div", {
class: "toolbar-inner"
}, (0, _$jsx.default)("div", {
class: "left"
}), (0, _$jsx.default)("div", {
class: "right"
}, (0, _$jsx.default)("a", {
class: "link sheet-close popover-close",
"data-sheet": ".color-picker-sheet-modal",
"data-popover": ".color-picker-popover"
}, self.params.toolbarCloseText))));
};
_proto.renderInline = function renderInline() {
var self = this;
var _self$params2 = self.params,
cssClass = _self$params2.cssClass,
groupedModules = _self$params2.groupedModules;
return (0, _$jsx.default)("div", {
class: "color-picker color-picker-inline " + (groupedModules ? 'color-picker-grouped-modules' : '') + " " + (cssClass || '')
}, self.renderPicker());
};
_proto.renderSheet = function renderSheet() {
var self = this;
var _self$params3 = self.params,
cssClass = _self$params3.cssClass,
toolbarSheet = _self$params3.toolbarSheet,
groupedModules = _self$params3.groupedModules;
return (0, _$jsx.default)("div", {
class: "sheet-modal color-picker color-picker-sheet-modal " + (groupedModules ? 'color-picker-grouped-modules' : '') + " " + (cssClass || '')
}, toolbarSheet && self.renderToolbar(), (0, _$jsx.default)("div", {
class: "sheet-modal-inner"
}, (0, _$jsx.default)("div", {
class: "page-content"
}, self.renderPicker())));
};
_proto.renderPopover = function renderPopover() {
var self = this;
var _self$params4 = self.params,
cssClass = _self$params4.cssClass,
toolbarPopover = _self$params4.toolbarPopover,
groupedModules = _self$params4.groupedModules;
return (0, _$jsx.default)("div", {
class: "popover color-picker-popover " + (cssClass || '')
}, (0, _$jsx.default)("div", {
class: "popover-inner"
}, (0, _$jsx.default)("div", {
class: "color-picker " + (groupedModules ? 'color-picker-grouped-modules' : '')
}, toolbarPopover && self.renderToolbar(), (0, _$jsx.default)("div", {
class: "page-content"
}, self.renderPicker()))));
};
_proto.renderPopup = function renderPopup() {
var self = this;
var _self$params5 = self.params,
cssClass = _self$params5.cssClass,
navbarPopup = _self$params5.navbarPopup,
groupedModules = _self$params5.groupedModules;
return (0, _$jsx.default)("div", {
class: "popup color-picker-popup " + (cssClass || '')
}, (0, _$jsx.default)("div", {
class: "page"
}, navbarPopup && self.renderNavbar(), (0, _$jsx.default)("div", {
class: "color-picker " + (groupedModules ? 'color-picker-grouped-modules' : '')
}, (0, _$jsx.default)("div", {
class: "page-content"
}, self.renderPicker()))));
};
_proto.renderPage = function renderPage() {
var self = this;
var _self$params6 = self.params,
cssClass = _self$params6.cssClass,
groupedModules = _self$params6.groupedModules;
return (0, _$jsx.default)("div", {
class: "page color-picker-page " + (cssClass || ''),
"data-name": "color-picker-page"
}, self.renderNavbar(), (0, _$jsx.default)("div", {
class: "color-picker " + (groupedModules ? 'color-picker-grouped-modules' : '')
}, (0, _$jsx.default)("div", {
class: "page-content"
}, self.renderPicker())));
} // eslint-disable-next-line
;
_proto.render = function render() {
var self = this;
var params = self.params;
if (params.render) return params.render.call(self);
if (self.inline) return self.renderInline();
if (params.openIn === 'page') {
return self.renderPage();
}
var modalType = self.getModalType();
if (modalType === 'popover') return self.renderPopover();
if (modalType === 'sheet') return self.renderSheet();
if (modalType === 'popup') return self.renderPopup();
};
_proto.onOpen = function onOpen() {
var self = this;
var initialized = self.initialized,
$el = self.$el,
app = self.app,
$inputEl = self.$inputEl,
inline = self.inline,
value = self.value,
params = self.params,
modules = self.modules;
self.closing = false;
self.opened = true;
self.opening = true; // Init main events
self.attachEvents();
params.modules.forEach(function (m) {
if (typeof m === 'string' && modules[m] && modules[m].init) {
modules[m].init(self);
} else if (m && m.init) {
m.init(self);
}
});
var updateValue = !value && params.value; // Set value
if (!initialized) {
if (value) self.setValue(value);else if (params.value) {
self.setValue(params.value, false);
} else if (!params.value) {
self.setValue({
hex: '#ff0000'
}, false);
}
} else if (value) {
self.initialValue = (0, _utils.extend)({}, value);
self.setValue(value, false);
} // Update input value
if (updateValue) self.updateValue();
self.updateModules(); // Center modules
if (params.centerModules) {
self.centerModules();
} // Extra focus
if (!inline && $inputEl && $inputEl.length && app.theme === 'md') {
$inputEl.trigger('focus');
}
self.initialized = true; // Trigger events
if ($el) {
$el.trigger('colorpicker:open');
}
if ($inputEl) {
$inputEl.trigger('colorpicker:open');
}
self.emit('local::open colorPickerOpen', self);
};
_proto.onOpened = function onOpened() {
var self = this;
self.opening = false;
if (self.$el) {
self.$el.trigger('colorpicker:opened');
}
if (self.$inputEl) {
self.$inputEl.trigger('colorpicker:opened');
}
self.emit('local::opened colorPickerOpened', self);
};
_proto.onClose = function onClose() {
var self = this;
var app = self.app,
params = self.params,
modules = self.modules;
self.opening = false;
self.closing = true; // Detach events
self.detachEvents();
if (self.$inputEl) {
if (app.theme === 'md') {
self.$inputEl.trigger('blur');
} else {
var validate = self.$inputEl.attr('validate');
var required = self.$inputEl.attr('required');
if (validate && required) {
app.input.validate(self.$inputEl);
}
}
}
params.modules.forEach(function (m) {
if (typeof m === 'string' && modules[m] && modules[m].destroy) {
modules[m].destroy(self);
} else if (m && m.destroy) {
m.destroy(self);
}
});
if (self.$el) {
self.$el.trigger('colorpicker:close');
}
if (self.$inputEl) {
self.$inputEl.trigger('colorpicker:close');
}
self.emit('local::close colorPickerClose', self);
};
_proto.onClosed = function onClosed() {
var self = this;
self.opened = false;
self.closing = false;
if (!self.inline) {
(0, _utils.nextTick)(function () {
if (self.modal && self.modal.el && self.modal.destroy) {
if (!self.params.routableModals) {
self.modal.destroy();
}
}
delete self.modal;
});
}
if (self.$el) {
self.$el.trigger('colorpicker:closed');
}
if (self.$inputEl) {
self.$inputEl.trigger('colorpicker:closed');
}
self.emit('local::closed colorPickerClosed', self);
};
_proto.open = function open() {
var self = this;
var app = self.app,
opened = self.opened,
inline = self.inline,
$inputEl = self.$inputEl,
$targetEl = self.$targetEl,
params = self.params;
if (opened) return;
if (inline) {
self.$el = (0, _dom.default)(self.render());
self.$el[0].f7ColorPicker = self;
self.$containerEl.append(self.$el);
self.onOpen();
self.onOpened();
return;
}
var colorPickerContent = self.render();
if (params.openIn === 'page') {
self.view.router.navigate({
url: self.url,
route: {
content: colorPickerContent,
path: self.url,
on: {
pageBeforeIn: function pageBeforeIn(e, page) {
self.$el = page.$el.find('.color-picker');
self.$el[0].f7ColorPicker = self;
self.onOpen();
},
pageAfterIn: function pageAfterIn() {
self.onOpened();
},
pageBeforeOut: function pageBeforeOut() {
self.onClose();
},
pageAfterOut: function pageAfterOut() {
self.onClosed();
if (self.$el && self.$el[0]) {
self.$el[0].f7ColorPicker = null;
delete self.$el[0].f7ColorPicker;
}
}
}
}
});
} else {
var modalType = self.getModalType();
var backdrop = params.backdrop;
if (backdrop === null || typeof backdrop === 'undefined') {
if (modalType === 'popover' && app.params.popover.backdrop !== false) backdrop = true;
if (modalType === 'popup') backdrop = true;
}
var modalParams = {
targetEl: $targetEl || $inputEl,
scrollToEl: params.scrollToInput ? $targetEl || $inputEl : undefined,
content: colorPickerContent,
backdrop: backdrop,
closeByBackdropClick: params.closeByBackdropClick,
on: {
open: function open() {
var modal = this;
self.modal = modal;
self.$el = modalType === 'popover' || modalType === 'popup' ? modal.$el.find('.color-picker') : modal.$el;
self.$el[0].f7ColorPicker = self;
self.onOpen();
},
opened: function opened() {
self.onOpened();
},
close: function close() {
self.onClose();
},
closed: function closed() {
self.onClosed();
if (self.$el && self.$el[0]) {
self.$el[0].f7ColorPicker = null;
delete self.$el[0].f7ColorPicker;
}
}
}
};
if (modalType === 'popup') {
modalParams.push = params.popupPush;
modalParams.swipeToClose = params.popupSwipeToClose;
}
if (modalType === 'sheet') {
modalParams.push = params.sheetPush;
modalParams.swipeToClose = params.sheetSwipeToClose;
}
if (params.routableModals && self.view) {
var _route;
self.view.router.navigate({
url: self.url,
route: (_route = {
path: self.url
}, _route[modalType] = modalParams, _route)
});
} else {
self.modal = app[modalType].create(modalParams);
self.modal.open();
}
}
};
_proto.close = function close() {
var self = this;
var opened = self.opened,
inline = self.inline;
if (!opened) return;
if (inline) {
self.onClose();
self.onClosed();
return;
}
if (self.params.routableModals && self.view || self.params.openIn === 'page') {
self.view.router.back();
} else {
self.modal.close();
}
};
_proto.init = function init() {
var self = this;
self.initInput();
if (self.inline) {
self.open();
self.emit('local::init colorPickerInit', self);
return;
}
if (!self.initialized && self.params.value) {
self.setValue(self.params.value);
} // Attach input Events
if (self.$inputEl) {
self.attachInputEvents();
}
if (self.$targetEl) {
self.attachTargetEvents();
}
if (self.params.closeByOutsideClick) {
self.attachHtmlEvents();
}
self.emit('local::init colorPickerInit', self);
};
_proto.destroy = function destroy() {
var self = this;
if (self.destroyed) return;
var $el = self.$el;
self.emit('local::beforeDestroy colorPickerBeforeDestroy', self);
if ($el) $el.trigger('colorpicker:beforedestroy');
self.close(); // Detach Events
self.detachEvents();
if (self.$inputEl) {
self.detachInputEvents();
}
if (self.$targetEl) {
self.detachTargetEvents();
}
if (self.params.closeByOutsideClick) {
self.detachHtmlEvents();
}
if ($el && $el.length) delete self.$el[0].f7ColorPicker;
(0, _utils.deleteProps)(self);
self.destroyed = true;
};
_createClass(ColorPicker, [{
key: "view",
get: function get() {
var $inputEl = this.$inputEl,
$targetEl = this.$targetEl,
app = this.app,
params = this.params;
var view;
if (params.view) {
view = params.view;
} else {
if ($inputEl) {
view = $inputEl.parents('.view').length && $inputEl.parents('.view')[0].f7View;
}
if (!view && $targetEl) {
view = $targetEl.parents('.view').length && $targetEl.parents('.view')[0].f7View;
}
}
if (!view) view = app.views.main;
return view;
}
}]);
return ColorPicker;
}(_class.default);
var _default = ColorPicker;
exports.default = _default;