1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-13 01:36:22 +00:00

add tag autocomplete

This commit is contained in:
Baptiste Augrain
2018-08-21 10:57:25 +02:00
parent 039f73711a
commit 00b4874d09
9 changed files with 146 additions and 1 deletions

View File

@@ -363,6 +363,7 @@ class MarkdownNoteDetail extends React.Component {
<TagSelect
ref='tags'
value={this.state.note.tags}
data={data}
onChange={this.handleUpdateTag.bind(this)}
/>
<TodoListPercentage percentageOfTodo={getTodoPercentageOfCompleted(note.content)} />

View File

@@ -13,6 +13,7 @@ $info-margin-under-border = 30px
display flex
align-items center
padding 0 20px
z-index 99
.info-left
padding 0 10px

View File

@@ -20,6 +20,12 @@ class TagSelect extends React.Component {
componentDidMount () {
this.value = this.props.value
ee.on('editor:add-tag', this.addtagHandler)
new Awesomplete(this.refs.newTag, {
minChars: 1,
autoFirst: true,
list: '#datalist'
})
}
componentDidUpdate () {
@@ -119,7 +125,7 @@ class TagSelect extends React.Component {
}
render () {
const { value, className } = this.props
const { value, className, data } = this.props
const tagList = _.isArray(value)
? value.map((tag) => {
@@ -137,6 +143,14 @@ class TagSelect extends React.Component {
)
})
: []
const datalist = _.sortBy(data.tagNoteMap.map(
(tag, name) => ({ name, size: tag.size })
).filter(
tag => tag.size > 0
), ['name']).map(
tag => <li>{tag.name}</li>
)
return (
<div className={_.isString(className)
@@ -154,6 +168,9 @@ class TagSelect extends React.Component {
onKeyDown={(e) => this.handleNewTagInputKeyDown(e)}
onBlur={(e) => this.handleNewTagBlur(e)}
/>
<ul id='datalist' styleName='datalist'>
{datalist}
</ul>
</div>
)
}

View File

@@ -50,6 +50,9 @@
padding 0 4px
font-size 13px
.datalist
display none
body[data-theme="dark"]
.tag
background-color alpha($ui-dark-tag-backgroundColor, 60%)

View File

@@ -156,3 +156,5 @@ body[data-theme="monokai"]
body[data-theme="default"]
.SideNav ::-webkit-scrollbar-thumb
background-color rgba(255, 255, 255, 0.3)
@import '../styles/awesomplete.styl'

View File

@@ -0,0 +1,114 @@
.awesomplete
display inline-block
position relative
.visually-hidden
position absolute
clip rect(0, 0, 0, 0)
ul
position fixed
z-index 1
box-sizing border-box
list-style none
padding 0
margin 0
border-radius 4px
margin .2em 0 0
background-color $ui-noteList-backgroundColor
border 1px solid rgba(0,0,0,.3)
box-shadow .05em .2em .6em rgba(0,0,0,.2)
text-shadow none
&:empty,
&[hidden]
display none
&:before
content ""
position absolute
top -.43em
left 1em
width 0 height 0
padding .4em
background-color $ui-noteList-backgroundColor
border inherit
border-right 0
border-bottom 0
-webkit-transform rotate(45deg)
transform rotate(45deg)
li
position relative
padding 6px 18px 6px 10px
cursor pointer
li:hover
background-color alpha($ui-button--active-backgroundColor, 20%)
color $ui-text-color
li[aria-selected="true"]
background-color alpha($ui-button--active-backgroundColor, 40%)
color $ui-text-color
body[data-theme="dark"]
.awesomplete ul
border-color $ui-dark-borderColor
background-color $ui-dark-noteList-backgroundColor
color $ui-dark-text-color
&:before
background-color $ui-dark-noteList-backgroundColor
li:hover
background-color alpha($ui-dark-button--active-backgroundColor, 20%)
color $ui-dark-text-color
li[aria-selected="true"]
background-color $ui-dark-button--active-backgroundColor
color $ui-dark-text-color
body[data-theme="white"]
.awesomplete ul
background-color $ui-white-noteList-backgroundColor
li:hover
background-color alpha($ui-button--active-backgroundColor, 60%)
li[aria-selected="true"]
background-color $ui-button--active-backgroundColor
body[data-theme="solarized-dark"]
.awesomplete ul
border-color $ui-solarized-dark-borderColor
background-color $ui-solarized-dark-noteList-backgroundColor
color $ui-solarized-dark-text-color
&:before
background-color $ui-solarized-dark-noteList-backgroundColor
li:hover
background-color alpha($ui-dark-button--active-backgroundColor, 20%)
color $ui-solarized-dark-text-color
li[aria-selected="true"]
background-color $ui-dark-button--active-backgroundColor
color $ui-solarized-dark-text-color
body[data-theme="monokai"]
.awesomplete ul
border-color $ui-monokai-borderColor
background-color $ui-monokai-noteList-backgroundColor
color $ui-monokai-text-color
&:before
background-color $ui-dark-noteList-backgroundColor
li:hover
background-color alpha($ui-dark-button--active-backgroundColor, 20%)
color $ui-monokai-text-color
li[aria-selected="true"]
background-color $ui-monokai-button-backgroundColor
color $ui-monokai-text-color