Skip to content

Commit

Permalink
Updated to use 2 spaces instead of 4
Browse files Browse the repository at this point in the history
  • Loading branch information
DCzajkowski committed Feb 22, 2019
1 parent 20d1f48 commit 84df268
Show file tree
Hide file tree
Showing 4 changed files with 807 additions and 807 deletions.
104 changes: 52 additions & 52 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@
## Table of contents
- [Demo](#demo)
- [Installation](#installation)
- [With npm](#with-npm)
- [With a CDN](#with-a-cdn)
- [With npm](#with-npm)
- [With a CDN](#with-a-cdn)
- [Import](#import)
- [With an ES6 bundler (via npm)](#with-an-es6-bundler-via-npm)
- [Use per component](#use-per-component)
- [Use globally](#use-globally)
- [Using a CDN](#using-a-cdn)
- [With an ES6 bundler (via npm)](#with-an-es6-bundler-via-npm)
- [Use per component](#use-per-component)
- [Use globally](#use-globally)
- [Using a CDN](#using-a-cdn)
- [Usage](#usage)
- [Very simple usage, without any CSS defined](#very-simple-usage-without-any-css-defined)
- [CSS-styled example](#css-styled-example)
- [Very simple usage, without any CSS defined](#very-simple-usage-without-any-css-defined)
- [CSS-styled example](#css-styled-example)
- [Available props](#available-props)
- [License](#license)

Expand Down Expand Up @@ -44,11 +44,11 @@ npm i vue-emoji-picker --save
import EmojiPicker from 'vue-emoji-picker'

export default {
// ...
components: {
EmojiPicker,
},
// ...
// ...
components: {
EmojiPicker,
},
// ...
}
```

Expand All @@ -61,11 +61,11 @@ Vue.use(EmojiPickerPlugin)
### Using a CDN
```html
<script>
Vue.use(EmojiPicker)
Vue.use(EmojiPicker)
new Vue({
// ...
})
new Vue({
// ...
})
</script>
```

Expand All @@ -79,45 +79,45 @@ You will need two things. A textarea (or an input), where emojis will be injecte
<textarea v-model="input"></textarea>

<emoji-picker @emoji="insert" :search="search">
<div slot="emoji-invoker" slot-scope="{ events }" v-on="events">
<button type="button">open</button>
</div>
<div slot="emoji-picker" slot-scope="{ emojis, insert, display }">
<div>
<div>
<input type="text" v-model="search">
</div>
<div>
<div v-for="(emojiGroup, category) in emojis" :key="category">
<h5>{{ category }}</h5>
<div>
<span
v-for="(emoji, emojiName) in emojiGroup"
:key="emojiName"
@click="insert(emoji)"
:title="emojiName"
>{{ emoji }}</span>
</div>
</div>
</div>
<div slot="emoji-invoker" slot-scope="{ events }" v-on="events">
<button type="button">open</button>
</div>
<div slot="emoji-picker" slot-scope="{ emojis, insert, display }">
<div>
<div>
<input type="text" v-model="search">
</div>
<div>
<div v-for="(emojiGroup, category) in emojis" :key="category">
<h5>{{ category }}</h5>
<div>
<span
v-for="(emoji, emojiName) in emojiGroup"
:key="emojiName"
@click="insert(emoji)"
:title="emojiName"
>{{ emoji }}</span>
</div>
</div>
</div>
</div>
</div>
</emoji-picker>
```

```js
{
data() {
return {
input: '',
search: '',
}
},
methods: {
insert(emoji) {
this.input += emoji
},
data() {
return {
input: '',
search: '',
}
},
methods: {
insert(emoji) {
this.input += emoji
},
},
}
```

Expand All @@ -135,11 +135,11 @@ To see what is possible with the component, you can simply have a look at a demo

## Slots
- `emoji-invoker`
- `events` - delares the `v-on:click` toggle of the picker box,
- `events` - delares the `v-on:click` toggle of the picker box,
- `emoji-picker`
- `emojis` - object of unicode emojis,
- `insert()` - method to be invoked when an emoji is clicked,
- `display` - object containting `x`, `y` and `visible` properties.
- `emojis` - object of unicode emojis,
- `insert()` - method to be invoked when an emoji is clicked,
- `display` - object containting `x`, `y` and `visible` properties.

## License
This work is an open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).
208 changes: 104 additions & 104 deletions src/Components/EmojiPicker.vue
Original file line number Diff line number Diff line change
@@ -1,122 +1,122 @@
<template>
<div>
<slot
name="emoji-invoker"
:events="{ click: (e) => toggle(e) }"
></slot>
<div
v-if="display.visible"
v-click-outside="hide"
>
<slot
name="emoji-picker"
:emojis="emojis"
:insert="insert"
:display="display"
></slot>
</div>
<div>
<slot
name="emoji-invoker"
:events="{ click: (e) => toggle(e) }"
></slot>
<div
v-if="display.visible"
v-click-outside="hide"
>
<slot
name="emoji-picker"
:emojis="emojis"
:insert="insert"
:display="display"
></slot>
</div>
</div>
</template>

<script>
import emojis from '../emojis'
import emojis from '../emojis'
export default {
props: {
search: {
type: String,
required: false,
default: '',
},
emojiTable: {
type: Object,
required: false,
default() {
return emojis
},
},
export default {
props: {
search: {
type: String,
required: false,
default: '',
},
emojiTable: {
type: Object,
required: false,
default() {
return emojis
},
data() {
return {
display: {
x: 0,
y: 0,
visible: false,
},
}
},
},
data() {
return {
display: {
x: 0,
y: 0,
visible: false,
},
computed: {
emojis() {
if (this.search) {
const obj = {}
}
},
computed: {
emojis() {
if (this.search) {
const obj = {}
for (const category in this.emojiTable) {
obj[category] = {}
for (const category in this.emojiTable) {
obj[category] = {}
for (const emoji in this.emojiTable[category]) {
if (new RegExp(`.*${this.search}.*`).test(emoji)) {
obj[category][emoji] = this.emojiTable[category][emoji]
}
}
for (const emoji in this.emojiTable[category]) {
if (new RegExp(`.*${this.search}.*`).test(emoji)) {
obj[category][emoji] = this.emojiTable[category][emoji]
}
}
if (Object.keys(obj[category]).length === 0) {
delete obj[category]
}
}
if (Object.keys(obj[category]).length === 0) {
delete obj[category]
}
}
return obj
}
return obj
}
return this.emojiTable
},
},
methods: {
insert(emoji) {
this.$emit('emoji', emoji)
},
toggle(e) {
this.display.visible = ! this.display.visible
this.display.x = e.clientX
this.display.y = e.clientY
},
hide() {
this.display.visible = false
},
escape(e) {
if (this.display.visible === true && e.keyCode === 27) {
this.display.visible = false
}
},
},
directives: {
'click-outside': {
bind(el, binding, vNode) {
if (typeof binding.value !== 'function') {
return
}
return this.emojiTable
},
},
methods: {
insert(emoji) {
this.$emit('emoji', emoji)
},
toggle(e) {
this.display.visible = ! this.display.visible
this.display.x = e.clientX
this.display.y = e.clientY
},
hide() {
this.display.visible = false
},
escape(e) {
if (this.display.visible === true && e.keyCode === 27) {
this.display.visible = false
}
},
},
directives: {
'click-outside': {
bind(el, binding, vNode) {
if (typeof binding.value !== 'function') {
return
}
const bubble = binding.modifiers.bubble
const handler = (e) => {
if (bubble || (! el.contains(e.target) && el !== e.target)) {
binding.value(e)
}
}
el.__vueClickOutside__ = handler
document.addEventListener('click', handler)
},
unbind(el, binding) {
document.removeEventListener('click', el.__vueClickOutside__)
const bubble = binding.modifiers.bubble
const handler = (e) => {
if (bubble || (! el.contains(e.target) && el !== e.target)) {
binding.value(e)
}
}
el.__vueClickOutside__ = handler
el.__vueClickOutside__ = null
},
},
document.addEventListener('click', handler)
},
mounted() {
document.addEventListener('keyup', this.escape)
},
destroyed() {
document.removeEventListener('keyup', this.escape)
unbind(el, binding) {
document.removeEventListener('click', el.__vueClickOutside__)
el.__vueClickOutside__ = null
},
}
},
},
mounted() {
document.addEventListener('keyup', this.escape)
},
destroyed() {
document.removeEventListener('keyup', this.escape)
},
}
</script>
Loading

0 comments on commit 84df268

Please sign in to comment.