diff --git a/Makefile b/Makefile
index bef7500..b2759b1 100644
--- a/Makefile
+++ b/Makefile
@@ -65,8 +65,6 @@ deps:
cp node_modules/medium-editor/dist/css/medium-editor.css vendor/
cp node_modules/medium-editor-autolist/dist/autolist.js vendor/
cp node_modules/lozad/dist/lozad.js vendor/
- wget https://raw.githubusercontent.com/philzet/ColorPick.js/master/src/colorPick.js -O vendor/colorPick.js
- wget https://raw.githubusercontent.com/philzet/ColorPick.js/master/src/colorPick.css -O vendor/colorPick.css
depsmin:
mkdir -p vendor
@@ -78,8 +76,6 @@ depsmin:
cp node_modules/medium-editor/dist/css/medium-editor.min.css vendor/medium-editor.css
cp node_modules/medium-editor-autolist/dist/autolist.min.js vendor/autolist.js
cp node_modules/lozad/dist/lozad.min.js vendor/lozad.js
- wget https://raw.githubusercontent.com/philzet/ColorPick.js/master/src/colorPick.js -O vendor/colorPick.js
- wget https://raw.githubusercontent.com/philzet/ColorPick.js/master/src/colorPick.css -O vendor/colorPick.css
js-templates:
node_modules/handlebars/bin/handlebars js/templates -f js/templates.js
diff --git a/css/qn-colorpick.scss b/css/qn-colorpick.scss
new file mode 100644
index 0000000..018979c
--- /dev/null
+++ b/css/qn-colorpick.scss
@@ -0,0 +1,32 @@
+.colorPickWrapper {
+ position: relative;
+ width: 0;
+ height: 0;
+}
+
+#colorPick {
+ background: #fff;
+ -webkit-backdrop-filter: blur(15px);
+ position: absolute;
+ border-radius: 8px;
+ box-shadow: 0px 3px 8px rgba(0, 0, 0, 0.2);
+ padding: 10px;
+ width: auto;
+ box-sizing: content-box;
+ z-index: 2500;
+ display: flex;
+}
+
+.colorPickButton {
+ border-radius: 50%;
+ width: 24px;
+ height: 24px;
+ margin: 0px 3px;
+ cursor: pointer;
+ display: inline-block;
+ border: 1px solid rgba(0, 0, 0, 0.2);
+}
+
+.colorPickButton:hover {
+ transform: scale(1.1);
+}
diff --git a/css/style.scss b/css/style.scss
index 2328916..e2810e1 100644
--- a/css/style.scss
+++ b/css/style.scss
@@ -360,20 +360,4 @@ div.select2-container {
height: 32px;
padding: 0px !important;
border-radius: 50%;
-}
-
-/* Color Picker */
-
-#colorPick {
- border-radius: 8px;
- padding: 12px;
- background-color: var(--color-background-dark);
- opacity: 1.0 !important;
- z-index: 2500;
-}
-
-#colorPick span {
- color: var(--color-main-text);
- font-size: 13px;
- text-transform: initial;
-}
+}
\ No newline at end of file
diff --git a/js/qn-colorpick.js b/js/qn-colorpick.js
new file mode 100644
index 0000000..2262ef7
--- /dev/null
+++ b/js/qn-colorpick.js
@@ -0,0 +1,64 @@
+function QnColorPick(parentSelector, onSelectColor) {
+
+ this._parentSelector = parentSelector;
+ this._onSelectColor = onSelectColor;
+
+ this._color = undefined;
+
+ this._template = '' +
+ '
' +
+ '
' +
+ '
' +
+ '
' +
+ '
' +
+ '
' +
+ '
' +
+ '
' +
+ '
' +
+ '
' +
+ '
' +
+ '
' +
+ '
' +
+ '
';
+
+ this.select = function (hexcolor) {
+ this._color = hexcolor;
+ }
+
+ this.close = function () {
+ var picker = document.getElementById("colorPickWrapper");
+ picker.remove();
+ }
+
+ this.show = function (hexcolor) {
+ var self = this;
+
+ var parent = document.querySelector(this._parentSelector);
+ parent.innerHTML += this._template;
+
+ var colors = document.querySelectorAll(".colorPickButton");
+ colors.forEach (function(color) {
+ if (hexcolor == color.getAttribute("hexvalue")) {
+ color.classList.add("icon-checkmark");
+ }
+ color.addEventListener("click", function () {
+ self._color = color.getAttribute("hexvalue");
+ self._onSelectColor(self._color);
+ self.close ();
+ });
+ });
+ }
+
+ this.isVisible = function () {
+ var picker = document.getElementById("colorPickWrapper");
+ return picker != null;
+ };
+
+ this.toggle = function () {
+ if (this.isVisible()) {
+ this.close();
+ } else {
+ this.show(this._color);
+ }
+ };
+}
\ No newline at end of file
diff --git a/js/script.js b/js/script.js
index 4b2acdb..2910a92 100644
--- a/js/script.js
+++ b/js/script.js
@@ -188,6 +188,7 @@ var View = function (notes) {
this._editor = undefined;
this._isotope = undefined;
+ this._colorPick = undefined;
this._changed = false;
};
@@ -298,6 +299,10 @@ View.prototype = {
}
}
});
+
+ this._colorPick = new QnColorPick(".modal-content", function (color) {
+ $("#modal-note-div .quicknote").css("background-color", color);
+ });
}
// Save instance of View
@@ -314,7 +319,7 @@ View.prototype = {
// Open notes when clicking them.
$("#notes-grid-div").on("click", ".quicknote", function (event) {
event.stopPropagation();
- var id = parseInt($(this).data('id'), 10);
+ var id = parseInt($(this).attr('data-id'), 10);
self.editNote(id);
});
@@ -337,7 +342,7 @@ View.prototype = {
event.stopPropagation();
var gridnote = $(this).parent().parent().parent();
- var id = parseInt(gridnote.data('id'), 10);
+ var id = parseInt(gridnote.attr('data-id'), 10);
var note = self._notes.read(id);
OC.dialogs.confirm(
@@ -384,7 +389,7 @@ View.prototype = {
var icon = $(this);
var gridNote = icon.parent().parent().parent();
- var id = parseInt(gridNote.data('id'), 10);
+ var id = parseInt(gridNote.attr('data-id'), 10);
var note = self._notes.read(id);
note.isPinned = true;
@@ -408,7 +413,7 @@ View.prototype = {
var icon = $(this);
var gridNote = icon.parent().parent().parent();
- var id = parseInt(gridNote.data('id'), 10);
+ var id = parseInt(gridNote.attr('data-id'), 10);
var note = self._notes.read(id);
note.isPinned = false;
@@ -431,6 +436,10 @@ View.prototype = {
// Cancel when click outside the modal.
$('#div-content').on('click', '.modal-note-background', function (event) {
event.stopPropagation();
+ if (self._colorPick.isVisible()) {
+ self._colorPick.close();
+ return;
+ }
if (!self._changed) {
self.cancelEdit();
return;
@@ -499,13 +508,13 @@ View.prototype = {
});
// Handle tags on modal
- $('#modal-note-div').on('click', '.slim-tag', function (event) {
+ $('#modal-note-div').on("click", ".slim-tag", function (event) {
event.stopPropagation();
$('#modal-note-div #tag-button').trigger( "click");
});
// handle tags button.
- $('#modal-note-div #share-button').click(function (event) {
+ $('#modal-note-div').on("click", "#share-button", function (event) {
event.stopPropagation();
QnDialogs.shares(
self._notes.getUsersSharing(),
@@ -518,13 +527,13 @@ View.prototype = {
);
});
- // FIXME: Hack to sent click event to colorPicker.
- $('#modal-note-div .icon-toggle-background').click(function (event) {
- $(this).parent().click();
+ $('#modal-note-div').on("click", "#color-button", function (event) {
+ event.stopPropagation();
+ self._colorPick.toggle();
});
// handle attach button.
- $('#modal-note-div #attach-button').click(function (event) {
+ $('#modal-note-div').on("click", "#attach-button", function (event) {
event.stopPropagation();
OC.dialogs.filepicker(t('quicknotes', 'Select file to attach'), function(datapath, returntype) {
OC.Files.getClient().getFileInfo(datapath).then((status, fileInfo) => {
@@ -542,7 +551,7 @@ View.prototype = {
});
// handle tags button.
- $('#modal-note-div #tag-button').click(function (event) {
+ $('#modal-note-div').on("click", "#tag-button", function (event) {
event.stopPropagation();
var noteTags = self._editableTags();
QnDialogs.tags(
@@ -557,19 +566,19 @@ View.prototype = {
});
// handle cancel editing notes.
- $('#modal-note-div #close-button').click(function (event) {
+ $('#modal-note-div').on("click", "#close-button", function (event) {
event.stopPropagation();
self.cancelEdit();
});
// handle cancel editing notes.
- $('#modal-note-div #cancel-button').click(function (event) {
+ $('#modal-note-div').on("click", "#cancel-button", function (event) {
event.stopPropagation();
self.cancelEdit();
});
// Handle save note
- $('#modal-note-div #save-button').click(function (event) {
+ $('#modal-note-div').on("click", "#save-button", function (event) {
event.stopPropagation();
self.saveNote();
});
@@ -791,9 +800,9 @@ View.prototype = {
},
_editableId: function(id) {
if (id === undefined)
- return $("#modal-note-div .quicknote").data('id');
+ return $("#modal-note-div .quicknote").attr('data-id');
else
- $("#modal-note-div .quicknote").data('id', id);
+ $("#modal-note-div .quicknote").attr('data-id', id);
},
_editableTitle: function(title) {
if (title === undefined)
@@ -828,16 +837,7 @@ View.prototype = {
return this._colorToHex($("#modal-note-div .quicknote").css("background-color"));
else {
$("#modal-note-div .quicknote").css("background-color", color);
- /*$("#color-button").colorPick({
- 'initialColor': color,
- 'paletteLabel': t('quicknotes', 'Colors'),
- 'palette': ['#F7EB96', '#88B7E3', '#C1ECB0', '#BFA6E9', '#DAF188', '#FF96AC', '#FCF66F', '#F2F1EF', '#C1D756', '#CECECE'],
- 'allowRecent': false,
- 'allowCustomColor': false,
- 'onColorSelected': function() {
- $("#modal-note-div .quicknote").css("background-color", this.color);
- }
- });*/
+ this._colorPick.select(color);
}
},
_editableShares: function(shared_with) {
diff --git a/templates/main.php b/templates/main.php
index 157c7e3..e80596f 100644
--- a/templates/main.php
+++ b/templates/main.php
@@ -6,12 +6,12 @@ vendor_script('quicknotes', 'medium-editor');
vendor_style('quicknotes', 'medium-editor');
vendor_script('quicknotes', 'autolist');
vendor_script('quicknotes', 'lozad');
-//vendor_script('quicknotes', 'colorPick');
-//vendor_style('quicknotes', 'colorPick');
script('quicknotes', 'qn-dialogs');
+script('quicknotes', 'qn-colorpick');
script('quicknotes', 'script');
style('quicknotes', 'style');
style('quicknotes', 'medium');
+style('quicknotes', 'qn-colorpick');
?>