Commit 6b0f594c authored by Tim Zallmann's avatar Tim Zallmann

Merge branch 'icon-sizes' into 'master'

limit icon component size to valid values

See merge request gitlab-org/gitlab-ce!15618
parents 4d89f520 539ea5eb
...@@ -12,6 +12,9 @@ ...@@ -12,6 +12,9 @@
/> />
*/ */
// only allow classes in images.scss e.g. s12
const validSizes = [8, 12, 16, 18, 24, 32, 48, 72];
export default { export default {
props: { props: {
name: { name: {
...@@ -22,7 +25,10 @@ ...@@ -22,7 +25,10 @@
size: { size: {
type: Number, type: Number,
required: false, required: false,
default: 0, default: 16,
validator(value) {
return validSizes.includes(value);
},
}, },
cssClasses: { cssClasses: {
...@@ -42,10 +48,11 @@ ...@@ -42,10 +48,11 @@
}, },
}; };
</script> </script>
<template> <template>
<svg <svg
:class="[iconSizeClass, cssClasses]"> :class="[iconSizeClass, cssClasses]">
<use <use
v-bind="{'xlink:href':spriteHref}"/> v-bind="{'xlink:href':spriteHref}"/>
</svg> </svg>
</template> </template>
...@@ -11,7 +11,7 @@ describe('Sprite Icon Component', function () { ...@@ -11,7 +11,7 @@ describe('Sprite Icon Component', function () {
icon = mountComponent(IconComponent, { icon = mountComponent(IconComponent, {
name: 'test', name: 'test',
size: 99, size: 32,
cssClasses: 'extraclasses', cssClasses: 'extraclasses',
}); });
}); });
...@@ -34,12 +34,18 @@ describe('Sprite Icon Component', function () { ...@@ -34,12 +34,18 @@ describe('Sprite Icon Component', function () {
}); });
it('should properly compute iconSizeClass', function () { it('should properly compute iconSizeClass', function () {
expect(icon.iconSizeClass).toBe('s99'); expect(icon.iconSizeClass).toBe('s32');
});
it('forbids invalid size prop', () => {
expect(icon.$options.props.size.validator(NaN)).toBeFalsy();
expect(icon.$options.props.size.validator(0)).toBeFalsy();
expect(icon.$options.props.size.validator(9001)).toBeFalsy();
}); });
it('should properly render img css', function () { it('should properly render img css', function () {
const classList = icon.$el.classList; const classList = icon.$el.classList;
const containsSizeClass = classList.contains('s99'); const containsSizeClass = classList.contains('s32');
const containsCustomClass = classList.contains('extraclasses'); const containsCustomClass = classList.contains('extraclasses');
expect(containsSizeClass).toBe(true); expect(containsSizeClass).toBe(true);
expect(containsCustomClass).toBe(true); expect(containsCustomClass).toBe(true);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment