Skip to content

Commit 3c2a022

Browse files
committed
Add searchable icons
1 parent 2f16b95 commit 3c2a022

3 files changed

Lines changed: 95 additions & 3 deletions

File tree

server/documents/elements/icon.html.eco

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ themes : ['Default']
2121

2222
<div class="ui active tab" data-tab="icon">
2323

24+
<iconSearch class="ui search">
25+
<div class="ui icon input">
26+
<input class="prompt" type="text" placeholder="Search icons...">
27+
<i class="search icon"></i>
28+
</div>
29+
<div class="results"></div>
30+
</iconSearch>
31+
2432
<h2 class="ui header">Icon Set</h2>
2533
<p>An icon set contains an arbitrary number of glyphs</p>
2634
<div class="ui ignored warning message">
@@ -3718,4 +3726,4 @@ themes : ['Default']
37183726

37193727
</div>
37203728

3721-
</div>
3729+
</div>

server/files/javascript/icon.js

Lines changed: 72 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,77 @@ semantic.icon.ready = function() {
77
var
88
$grid = $('.ui.five.column.doubling.grid'),
99
// alias
10-
handler
10+
handler = {
11+
getIconList: function() {
12+
var
13+
$examples = $('.icon .example')
14+
icons = []
15+
;
16+
$examples.each(function() {
17+
var
18+
$header = $(this).children('.ui.header'),
19+
$icons = $(this).find('.grid > .column'),
20+
category = $header.text()
21+
;
22+
$icons.each(function() {
23+
var
24+
$icon = $(this).find('.icon'),
25+
icon = $icon.attr('class').replace(' icon', '')
26+
title = '<i class="' + icon +' icon"></i> ' + icon
27+
;
28+
icons.push({
29+
category : category,
30+
title : title,
31+
icon : icon
32+
})
33+
});
34+
});
35+
return icons;
36+
}
37+
}
38+
;
39+
40+
$('iconSearch.ui.search')
41+
.search({
42+
type : 'category',
43+
minCharacters : 1,
44+
maxResults : 10,
45+
source : handler.getIconList(),
46+
onResults : function(result) {
47+
setTimeout(function() {
48+
var
49+
$results = $('iconSearch.ui.search .result')
50+
;
51+
$results.each(function() {
52+
var
53+
$result = $(this)
54+
;
55+
new Clipboard(this, {
56+
text: function() {
57+
var
58+
iconHTML = $result.find('i').get(0).outerHTML
59+
;
60+
return iconHTML;
61+
}
62+
});
63+
});
64+
}, 0);
65+
},
66+
onSelect: function() {
67+
var
68+
$search = $('iconSearch .input > input')
69+
;
70+
$search.blur();
71+
setTimeout(function() {
72+
$('iconSearch').transition('bounce');
73+
$search.val('HTML Copied to clipboard!');
74+
}, 50)
75+
setTimeout(function() {
76+
$search.val('');
77+
}, 1500)
78+
return false;
79+
}
80+
})
1181
;
1282

1383

@@ -17,4 +87,4 @@ semantic.icon.ready = function() {
1787
// attach ready event
1888
$(document)
1989
.ready(semantic.icon.ready)
20-
;
90+
;

server/files/stylesheets/docs.css

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1484,6 +1484,20 @@ body.progress.animated .ui.progress .bar {
14841484
Icon
14851485
---------------*/
14861486

1487+
#example iconSearch.ui.search {
1488+
float: right;
1489+
position: relative;
1490+
z-index: 3;
1491+
}
1492+
#example iconSearch .result i.icon {
1493+
font-size: 20px;
1494+
float: right;
1495+
margin-top: -5px;
1496+
margin-left: 11px;
1497+
color: #000000;
1498+
}
1499+
1500+
14871501
#example .icon.example .grid {
14881502
text-align: left;
14891503
}

0 commit comments

Comments
 (0)