BigW Consortium Gitlab
Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gitlab-ce
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Forest Godfrey
gitlab-ce
Commits
3f5919e2
Commit
3f5919e2
authored
Mar 09, 2017
by
Eric Eastwood
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add frequently used emojis back to awards menu
Thanks @filipa for the shout`
parent
130fd255
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
61 additions
and
23 deletions
+61
-23
awards_handler.js
app/assets/javascripts/awards_handler.js
+12
-18
add-frequently-used-emojis-back-to-menu.yml
...gs/unreleased/add-frequently-used-emojis-back-to-menu.yml
+4
-0
awards_handler_spec.js
spec/javascripts/awards_handler_spec.js
+45
-5
No files found.
app/assets/javascripts/awards_handler.js
View file @
3f5919e2
...
...
@@ -45,12 +45,12 @@ function buildCategoryMap() {
});
}
function
renderCategory
(
name
,
emojiList
)
{
function
renderCategory
(
name
,
emojiList
,
opts
=
{}
)
{
return
`
<h5 class="emoji-menu-title">
${
name
}
</h5>
<ul class="clearfix emoji-menu-list">
<ul class="clearfix emoji-menu-list
${
opts
.
menuListClass
}
">
${
emojiList
.
map
(
emojiName
=>
`
<li class="emoji-menu-list-item">
<button class="emoji-menu-btn text-center js-emoji-btn" type="button">
...
...
@@ -140,9 +140,6 @@ AwardsHandler.prototype.showEmojiMenu = function showEmojiMenu($addBtn) {
const
$createdMenu
=
$
(
'.emoji-menu'
);
$addBtn
.
removeClass
(
'is-loading'
);
this
.
positionMenu
(
$createdMenu
,
$addBtn
);
if
(
!
this
.
frequentEmojiBlockRendered
)
{
this
.
renderFrequentlyUsedBlock
();
}
return
setTimeout
(()
=>
{
$createdMenu
.
addClass
(
'is-visible'
);
$
(
'#emoji_search'
).
focus
();
...
...
@@ -165,11 +162,21 @@ AwardsHandler.prototype.createEmojiMenu = function createEmojiMenu(callback) {
const
emojisInCategory
=
categoryMap
[
categoryNameKey
];
const
firstCategory
=
renderCategory
(
categoryLabelMap
[
categoryNameKey
],
emojisInCategory
);
// Render the frequently used
const
frequentlyUsedEmojis
=
this
.
getFrequentlyUsedEmojis
();
let
frequentlyUsedCatgegory
=
''
;
if
(
frequentlyUsedEmojis
.
length
>
0
)
{
frequentlyUsedCatgegory
=
renderCategory
(
'Frequently used'
,
frequentlyUsedEmojis
,
{
menuListClass
:
'frequent-emojis'
,
});
}
const
emojiMenuMarkup
=
`
<div class="emoji-menu">
<input type="text" name="emoji_search" id="emoji_search" value="" class="emoji-search search-input form-control" placeholder="Search emoji" />
<div class="emoji-menu-content">
${
frequentlyUsedCatgegory
}
${
firstCategory
}
</div>
</div>
...
...
@@ -457,19 +464,6 @@ AwardsHandler.prototype.getFrequentlyUsedEmojis = function getFrequentlyUsedEmoj
return
_
.
compact
(
_
.
uniq
(
frequentlyUsedEmojis
));
};
AwardsHandler
.
prototype
.
renderFrequentlyUsedBlock
=
function
renderFrequentlyUsedBlock
()
{
if
(
Cookies
.
get
(
'frequently_used_emojis'
))
{
const
frequentlyUsedEmojis
=
this
.
getFrequentlyUsedEmojis
();
const
ul
=
$
(
'<ul class="clearfix emoji-menu-list frequent-emojis">'
);
for
(
let
i
=
0
,
len
=
frequentlyUsedEmojis
.
length
;
i
<
len
;
i
+=
1
)
{
const
emoji
=
frequentlyUsedEmojis
[
i
];
$
(
`.emoji-menu-content [data-name="
${
emoji
}
"]`
).
closest
(
'li'
).
clone
().
appendTo
(
ul
);
}
$
(
'.emoji-menu-content'
).
prepend
(
ul
).
prepend
(
$
(
'<h5>'
).
text
(
'Frequently used'
));
}
this
.
frequentEmojiBlockRendered
=
true
;
};
AwardsHandler
.
prototype
.
setupSearch
=
function
setupSearch
()
{
this
.
registerEventListener
(
'on'
,
$
(
'input.emoji-search'
),
'input'
,
(
e
)
=>
{
const
term
=
$
(
e
.
target
).
val
().
trim
();
...
...
changelogs/unreleased/add-frequently-used-emojis-back-to-menu.yml
0 → 100644
View file @
3f5919e2
---
title
:
Add frequently used emojis back to awards menu
merge_request
:
author
:
spec/javascripts/awards_handler_spec.js
View file @
3f5919e2
/* eslint-disable space-before-function-paren, no-var, one-var, one-var-declaration-per-line, no-unused-expressions, comma-dangle, new-parens, no-unused-vars, quotes, jasmine/no-spec-dupes, prefer-template, max-len */
import
promisePolyfill
from
'es6-promise'
;
import
Cookies
from
'js-cookie'
;
import
AwardsHandler
from
'~/awards_handler'
;
promisePolyfill
.
polyfill
();
...
...
@@ -208,8 +209,8 @@ promisePolyfill.polyfill();
expect
(
$
(
'[data-name=alien]'
).
is
(
':visible'
)).
toBe
(
true
);
})
.
then
(
done
)
.
catch
(()
=>
{
done
.
fail
(
'Failed to open and build emoji menu'
);
.
catch
((
err
)
=>
{
done
.
fail
(
`Failed to open and build emoji menu:
${
err
.
message
}
`
);
});
});
});
...
...
@@ -232,8 +233,8 @@ promisePolyfill.polyfill();
it
(
'should add selected emoji to awards block'
,
function
(
done
)
{
return
openEmojiMenuAndAddEmoji
()
.
then
(
done
)
.
catch
(()
=>
{
done
.
fail
(
'Failed to open and build emoji menu'
);
.
catch
((
err
)
=>
{
done
.
fail
(
`Failed to open and build emoji menu:
${
err
.
message
}
`
);
});
});
it
(
'should remove already selected emoji'
,
function
(
done
)
{
...
...
@@ -247,7 +248,46 @@ promisePolyfill.polyfill();
})
.
then
(
done
)
.
catch
((
err
)
=>
{
done
.
fail
(
'Failed to open and build emoji menu'
);
done
.
fail
(
`Failed to open and build emoji menu:
${
err
.
message
}
`
);
});
});
});
describe
(
'frequently used emojis'
,
function
()
{
beforeEach
(()
=>
{
// Clear it out
Cookies
.
set
(
'frequently_used_emojis'
,
''
);
});
it
(
'shouldn
\'
t have any "Frequently used" heading if no frequently used emojis'
,
function
(
done
)
{
return
openAndWaitForEmojiMenu
()
.
then
(()
=>
{
const
emojiMenu
=
document
.
querySelector
(
'.emoji-menu'
);
Array
.
prototype
.
forEach
.
call
(
emojiMenu
.
querySelectorAll
(
'.emoji-menu-title'
),
(
title
)
=>
{
expect
(
title
.
textContent
.
trim
().
toLowerCase
()).
not
.
toBe
(
'frequently used'
);
});
})
.
then
(
done
)
.
catch
((
err
)
=>
{
done
.
fail
(
`Failed to open and build emoji menu:
${
err
.
message
}
`
);
});
});
it
(
'should have any frequently used section when there are frequently used emojis'
,
function
(
done
)
{
awardsHandler
.
addEmojiToFrequentlyUsedList
(
'8ball'
);
return
openAndWaitForEmojiMenu
()
.
then
(()
=>
{
const
emojiMenu
=
document
.
querySelector
(
'.emoji-menu'
);
const
hasFrequentlyUsedHeading
=
Array
.
prototype
.
some
.
call
(
emojiMenu
.
querySelectorAll
(
'.emoji-menu-title'
),
title
=>
title
.
textContent
.
trim
().
toLowerCase
()
===
'frequently used'
);
expect
(
hasFrequentlyUsedHeading
).
toBe
(
true
);
})
.
then
(
done
)
.
catch
((
err
)
=>
{
done
.
fail
(
`Failed to open and build emoji menu:
${
err
.
message
}
`
);
});
});
});
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment