Skip to content

Commit dfe653e

Browse files
author
Ryan A. Johnson
committed
feat(Icons): Update Icons
* Replace non-compliant icons * Deprecate `input-url` in favor of `globe` * Deprecate `technical-change` in favor of `server-config` * Deprecate `technical-incident` in favor of `server-incident` * Correct geometry of several icons * Add `file` * Add `flag` * Add `globe` * Add `key` * Add `mime-archive` * Add `mime-audio` * Add `mime-code` * Add `mime-data` * Add `mime-image` * Add `mime-system` * Add `mime-text` * Add `mime-video` * Add `paperclip` * Add `server-config` * Add `server-incident` * Update visual regression snapshots Closes #163, SURF-981
1 parent e721877 commit dfe653e

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+459
-58
lines changed

docs/_data/icons.json5

Lines changed: 276 additions & 0 deletions
Large diffs are not rendered by default.

docs/components/icons/icon-demo.js

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,46 @@ if (document.getElementById('vue-iconDemo')) {
2424
onFilterUpdate: function (evt) {
2525
this.filter = evt.currentTarget.value || '';
2626
},
27+
matchesName: function (icon) {
28+
let _name = icon.name.toLowerCase();
29+
return _name.indexOf(this.downcaseFilter) >= 0;
30+
},
31+
matchesAlias: function (icon) {
32+
if (!icon.alias) {
33+
return false;
34+
}
35+
let _alias = icon.alias.toLowerCase();
36+
return _alias.indexOf(this.downcaseFilter) >= 0;
37+
},
38+
matchesKeyword: function (icon) {
39+
if (!icon.keywords) {
40+
return false;
41+
}
42+
43+
return icon.keywords.some(keyword => {
44+
return keyword.indexOf(this.downcaseFilter) >= 0;
45+
});
46+
},
2747
},
2848
computed: {
49+
downcaseFilter: function () {
50+
return this.filter.toLowerCase();
51+
},
2952
hasFilter: function () {
3053
return this.filter !== '';
3154
},
55+
filterConditions: function () {
56+
return [
57+
this.matchesName,
58+
this.matchesAlias,
59+
this.matchesKeyword,
60+
];
61+
},
3262
filteredIcons: function () {
3363
let filtered = this.icons;
3464
if (this.hasFilter) {
35-
filtered = this.icons.filter((icon) => {
36-
return icon.name.indexOf(this.filter) >= 0;
65+
filtered = this.icons.filter(icon => {
66+
return this.filterConditions.some(fn => fn(icon));
3767
});
3868
}
3969
return filtered;

docs/components/icons/index.html

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,38 @@ <h2 id="available-icons">Icons</h2>
6262
</div>
6363
<div v-if="filteredIcons.length" class="hxRow">
6464
<template v-for="icon in filteredIcons">
65-
<div class="hxCol hxSpan-12-xs hxSpan-12-sm hxSpan-6-md hxSpan-4-xl" key="icon.name">
65+
<div class="hxCol hxSpan-12-xs hxSpan-12-sm hxSpan-6-md hxSpan-4-xl" :key="icon.name">
6666
<div class="media icon-media">
6767
{% raw %}
6868
<div class="media__icon">
6969
<hx-icon :type="icon.name"></hx-icon>
7070
</div>
7171
<div class="media__body">
7272
<h3 class="hxHeading-4">{{icon.name}}</h3>
73-
<small class="hxSubdued">Added: v{{icon.minver}}</small>
73+
<p>
74+
<!-- alias -->
75+
<span v-if="icon.alias" class="hxSubdued">
76+
<small>(alias: {{icon.alias}})</small><br />
77+
</span>
78+
79+
<!-- version/deprecation -->
80+
<hx-error v-if="icon.deprecated" class="hxSubBody">
81+
Deprecated
82+
</hx-error>
83+
<span v-else>
84+
<small v-if="icon.minver" class="hxSubdued">Added: v{{icon.minver}}</small>
85+
<i v-else class="hxSubdued hxSubBody">New!</i>
86+
</span>
87+
</p>
88+
89+
<!-- keywords/tags -->
90+
<p v-if="icon.keywords" class="hxSubBody hxSubdued">
91+
<hx-icon type="tag"></hx-icon>
92+
<span v-for="(word, idx) in icon.keywords" :key="word">
93+
<span v-if="(idx + 1) < icon.keywords.length">{{word}}, </span>
94+
<span v-else>{{word}}</span>
95+
</span>
96+
</p>
7497
</div>
7598
{% endraw %}
7699
</div>

docs/styles/demo/icon-docs.less

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,18 @@
22
background-color: @gray-0;
33
border: 1px solid @gray-400;
44
height: 100%;
5+
padding: 1.25rem;
56

67
.media__icon {
7-
align-items: center;
8+
color: @gray-1000;
89
display: flex;
910
font-size: 2em;
1011
line-height: 1;
1112
}
13+
14+
.media__body {
15+
margin-left: 1.25rem;
16+
}
1217
}
1318

1419
hx-icon {

src/helix-ui/icons.js

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@ import _exclamationDiamond from './icons/exclamation-diamond.svg';
2121
import _exclamationTriangle from './icons/exclamation-triangle.svg';
2222
import _export from './icons/export.svg';
2323
import _externalLink from './icons/external-link.svg';
24+
import _file from './icons/file.svg';
2425
import _filter from './icons/filter.svg';
26+
import _flag from './icons/flag.svg';
27+
import _globe from './icons/globe.svg';
2528
import _helpCircle from './icons/help-circle.svg';
2629
import _infoCircle from './icons/info-circle.svg';
2730
import _inputFile from './icons/input-file.svg';
2831
import _inputTime from './icons/input-time.svg';
29-
import _inputUrl from './icons/input-url.svg';
3032
import _kbdArrowDown from './icons/kbd-arrow-down.svg';
3133
import _kbdArrowLeft from './icons/kbd-arrow-left.svg';
3234
import _kbdArrowRight from './icons/kbd-arrow-right.svg';
@@ -40,31 +42,41 @@ import _kbdReturn from './icons/kbd-return.svg';
4042
import _kbdShift from './icons/kbd-shift.svg';
4143
import _kbdSpace from './icons/kbd-space.svg';
4244
import _kbdTab from './icons/kbd-tab.svg';
45+
import _key from './icons/key.svg';
4346
import _lock from './icons/lock.svg';
47+
import _mimeArchive from './icons/mime-archive.svg';
48+
import _mimeAudio from './icons/mime-audio.svg';
49+
import _mimeCode from './icons/mime-code.svg';
50+
import _mimeData from './icons/mime-data.svg';
51+
import _mimeImage from './icons/mime-image.svg';
52+
import _mimeSystem from './icons/mime-system.svg';
53+
import _mimeText from './icons/mime-text.svg';
54+
import _mimeVideo from './icons/mime-video.svg';
4455
import _minus from './icons/minus.svg';
4556
import _minusCircle from './icons/minus-circle.svg';
4657
import _monitoring from './icons/monitoring.svg';
58+
import _paperclip from './icons/paperclip.svg';
4759
import _payment from './icons/payment.svg';
4860
import _pencil from './icons/pencil.svg';
4961
import _phone from './icons/phone.svg';
5062
import _plus from './icons/plus.svg';
5163
import _plusOrMinus from './icons/plus-or-minus.svg';
5264
import _search from './icons/search.svg';
5365
import _server from './icons/server.svg';
66+
import _serverConfig from './icons/server-config.svg';
67+
import _serverIncident from './icons/server-incident.svg';
5468
import _sort from './icons/sort.svg';
5569
import _sortDown from './icons/sort-down.svg';
5670
import _sortUp from './icons/sort-up.svg';
5771
import _support from './icons/support.svg';
5872
import _tag from './icons/tag.svg';
59-
import _technicalChange from './icons/technical-change.svg';
60-
import _technicalIncident from './icons/technical-incident.svg';
6173
import _ticketing from './icons/ticketing.svg';
6274
import _times from './icons/times.svg';
6375
import _timesCircle from './icons/times-circle.svg';
6476
import _trash from './icons/trash.svg';
6577
import _user from './icons/user.svg';
6678

67-
export default {
79+
const MAP = {
6880
'account': _account,
6981
'angle-bottom': _angleBottom,
7082
'angle-down': _angleDown,
@@ -88,12 +100,14 @@ export default {
88100
'exclamation-triangle': _exclamationTriangle,
89101
'export': _export,
90102
'external-link': _externalLink,
103+
'file': _file,
91104
'filter': _filter,
105+
'flag': _flag,
106+
'globe': _globe,
92107
'help-circle': _helpCircle,
93108
'info-circle': _infoCircle,
94109
'input-file': _inputFile,
95110
'input-time': _inputTime,
96-
'input-url': _inputUrl,
97111
'kbd-arrow-down': _kbdArrowDown,
98112
'kbd-arrow-left': _kbdArrowLeft,
99113
'kbd-arrow-right': _kbdArrowRight,
@@ -107,27 +121,44 @@ export default {
107121
'kbd-shift': _kbdShift,
108122
'kbd-space': _kbdSpace,
109123
'kbd-tab': _kbdTab,
124+
'key': _key,
110125
'lock': _lock,
126+
'mime-archive': _mimeArchive,
127+
'mime-audio': _mimeAudio,
128+
'mime-code': _mimeCode,
129+
'mime-data': _mimeData,
130+
'mime-image': _mimeImage,
131+
'mime-system': _mimeSystem,
132+
'mime-text': _mimeText,
133+
'mime-video': _mimeVideo,
111134
'minus': _minus,
112135
'minus-circle': _minusCircle,
113136
'monitoring': _monitoring,
137+
'paperclip': _paperclip,
114138
'payment': _payment,
115139
'pencil': _pencil,
116140
'phone': _phone,
117141
'plus': _plus,
118142
'plus-or-minus': _plusOrMinus,
119143
'search': _search,
120144
'server': _server,
145+
'server-config': _serverConfig,
146+
'server-incident': _serverIncident,
121147
'sort': _sort,
122148
'sort-down': _sortDown,
123149
'sort-up': _sortUp,
124150
'support': _support,
125151
'tag': _tag,
126-
'technical-change': _technicalChange,
127-
'technical-incident': _technicalIncident,
128152
'ticketing': _ticketing,
129153
'times': _times,
130154
'times-circle': _timesCircle,
131155
'trash': _trash,
132156
'user': _user,
133157
};
158+
159+
// DEPRECATED: remove in v1.0.0
160+
MAP['input-url'] = MAP['globe'];
161+
MAP['technical-change'] = MAP['server-config'];
162+
MAP['technical-incident'] = MAP['server-incident'];
163+
164+
export default MAP;
Lines changed: 1 addition & 1 deletion
Loading

src/helix-ui/icons/angle-down.svg

Lines changed: 1 addition & 1 deletion
Loading

src/helix-ui/icons/angle-end.svg

Lines changed: 1 addition & 1 deletion
Loading

src/helix-ui/icons/angle-left.svg

Lines changed: 1 addition & 1 deletion
Loading

src/helix-ui/icons/angle-right.svg

Lines changed: 1 addition & 1 deletion
Loading

0 commit comments

Comments
 (0)