diff --git a/browser/components/NoteItem.js b/browser/components/NoteItem.js index 2013cfa0..d5d3d549 100644 --- a/browser/components/NoteItem.js +++ b/browser/components/NoteItem.js @@ -100,7 +100,7 @@ const NoteItem = ({ {note.isStarred ? : '' } - {note.isPinned && !pathname.match(/\/home|\/starred|\/trash/) + {note.isPinned && !pathname.match(/\/starred|\/trash/) ? : '' } {note.type === 'MARKDOWN_NOTE' diff --git a/browser/components/NoteItem.styl b/browser/components/NoteItem.styl index 5203ccea..4067a6cd 100644 --- a/browser/components/NoteItem.styl +++ b/browser/components/NoteItem.styl @@ -144,18 +144,18 @@ $control-height = 30px padding-bottom 2px .item-star - position relative - width 16px - height 16px + position absolute + right 2px + top 5px color alpha($ui-favorite-star-button-color, 60%) font-size 12px padding 0 border-radius 17px .item-pin - position relative - width 34px - height 34px + position absolute + right 25px + top 7px color #E54D42 font-size 14px padding 0 diff --git a/browser/components/StorageItem.js b/browser/components/StorageItem.js index c92579da..87696a57 100644 --- a/browser/components/StorageItem.js +++ b/browser/components/StorageItem.js @@ -8,6 +8,17 @@ import CSSModules from 'browser/lib/CSSModules' import _ from 'lodash' import { SortableHandle } from 'react-sortable-hoc' +const DraggableIcon = SortableHandle(({ className }) => ( + +)) + +const FolderIcon = ({ className, color, isActive }) => { + const iconStyle = isActive ? 'fa-folder-open-o' : 'fa-folder-o' + return ( + + ) +} + /** * @param {boolean} isActive * @param {Function} handleButtonClick @@ -22,34 +33,51 @@ import { SortableHandle } from 'react-sortable-hoc' * @return {React.Component} */ const StorageItem = ({ - isActive, handleButtonClick, handleContextMenu, folderName, - folderColor, isFolded, noteCount, handleDrop, handleDragEnter, handleDragLeave + styles, + isActive, + handleButtonClick, + handleContextMenu, + folderName, + folderColor, + isFolded, + noteCount, + handleDrop, + handleDragEnter, + handleDragLeave }) => { - const FolderDragger = SortableHandle(({ className }) => ) return ( - ) } diff --git a/browser/components/StorageItem.styl b/browser/components/StorageItem.styl index c89d195f..842f8d66 100644 --- a/browser/components/StorageItem.styl +++ b/browser/components/StorageItem.styl @@ -13,6 +13,7 @@ border none overflow ellipsis font-size 14px + align-items: center &:first-child margin-top 0 &:hover @@ -22,7 +23,7 @@ &:active color $$ui-button-default-color background-color alpha($ui-button-default--active-backgroundColor, 20%) - + .folderList-item--active @extend .folderList-item color #1EC38B @@ -34,9 +35,7 @@ .folderList-item-name display block flex 1 - padding 0 12px - height 26px - line-height 26px + padding-right: 10px border-width 0 0 0 2px border-style solid border-color transparent @@ -69,9 +68,20 @@ .folderList-item-name--folded @extend .folderList-item-name padding-left 7px - text + .folderList-item-icon font-size 9px +.folderList-item-icon + padding-right: 10px + +.folderList-item-reorder + font-size: 9px + padding: 10px 8px 10px 9px; + color: rgba(147, 147, 149, 0.3) + cursor: ns-resize + &:before + content: "\f142 \f142" + body[data-theme="white"] .folderList-item color $ui-inactive-text-color @@ -127,4 +137,4 @@ body[data-theme="solarized-dark"] background-color $ui-solarized-dark-button-backgroundColor &:hover color $ui-solarized-dark-text-color - background-color $ui-solarized-dark-button-backgroundColor \ No newline at end of file + background-color $ui-solarized-dark-button-backgroundColor diff --git a/browser/lib/markdown.js b/browser/lib/markdown.js index a2b9da51..22f581e4 100644 --- a/browser/lib/markdown.js +++ b/browser/lib/markdown.js @@ -55,9 +55,38 @@ class Markdown { // Sanitize use rinput before other plugins this.md.use(sanitize, { - allowedTags: ['img', 'iframe', 'input'], + allowedTags: ['iframe', 'input', 'b', + 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'h7', 'h8', 'br', 'b', 'i', 'strong', 'em', 'a', 'pre', 'code', 'img', 'tt', + 'div', 'ins', 'del', 'sup', 'sub', 'p', 'ol', 'ul', 'table', 'thead', 'tbody', 'tfoot', 'blockquote', + 'dl', 'dt', 'dd', 'kbd', 'q', 'samp', 'var', 'hr', 'ruby', 'rt', 'rp', 'li', 'tr', 'td', 'th', 's', 'strike', 'summary', 'details' + ], allowedAttributes: { - '*': ['alt', 'style'], + '*': [ + 'style', + 'abbr', 'accept', 'accept-charset', + 'accesskey', 'action', 'align', 'alt', 'axis', + 'border', 'cellpadding', 'cellspacing', 'char', + 'charoff', 'charset', 'checked', + 'clear', 'cols', 'colspan', 'color', + 'compact', 'coords', 'datetime', 'dir', + 'disabled', 'enctype', 'for', 'frame', + 'headers', 'height', 'hreflang', + 'hspace', 'ismap', 'label', 'lang', + 'maxlength', 'media', 'method', + 'multiple', 'name', 'nohref', 'noshade', + 'nowrap', 'open', 'prompt', 'readonly', 'rel', 'rev', + 'rows', 'rowspan', 'rules', 'scope', + 'selected', 'shape', 'size', 'span', + 'start', 'summary', 'tabindex', 'target', + 'title', 'type', 'usemap', 'valign', 'value', + 'vspace', 'width', 'itemprop' + ], + 'a': ['href'], + 'div': ['itemscope', 'itemtype'], + 'blockquote': ['cite'], + 'del': ['cite'], + 'ins': ['cite'], + 'q': ['cite'], 'img': ['src', 'width', 'height'], 'iframe': ['src', 'width', 'height', 'frameborder', 'allowfullscreen'], 'input': ['type', 'id', 'checked'] diff --git a/browser/main/NoteList/index.js b/browser/main/NoteList/index.js index 2c46f6f3..cfde1f84 100644 --- a/browser/main/NoteList/index.js +++ b/browser/main/NoteList/index.js @@ -21,6 +21,7 @@ import i18n from 'browser/lib/i18n' const { remote } = require('electron') const { Menu, MenuItem, dialog } = remote const WP_POST_PATH = '/wp/v2/posts' +const markdown = new Markdown() function sortByCreatedAt (a, b) { return new Date(b.createdAt) - new Date(a.createdAt) @@ -670,7 +671,7 @@ class NoteList extends React.Component { } copyNoteLink (note) { - const noteLink = `[${note.title}](${note.storage}-${note.key})` + const noteLink = `[${note.title}](${note.key})` return copy(noteLink) } @@ -709,7 +710,7 @@ class NoteList extends React.Component { authToken = `Bearer ${token}` } const contentToRender = firstNote.content.replace(`# ${firstNote.title}`, '') - var data = { + const data = { title: firstNote.title, content: markdown.render(contentToRender), status: 'publish' diff --git a/package.json b/package.json index 9afbae5f..af53fe1d 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "boost", "productName": "Boostnote", - "version": "0.11.1", + "version": "0.11.2", "main": "index.js", "description": "Boostnote", "license": "GPL-3.0",