Consolidate button styles
This patchset will create consistent button styling according
to the styleguide and remove redundant button styles by creating
reusable button classes.
This patchset also implements a consistent strategy for including
icon assets. Currently, svg icons are imported as CSS background
images or inlined into the markup. Inlining an svg is preferred,
especially when used with buttons or links so the colors can
be easily changed for different states (hover, focus, disabled)
without having to request variants.
The icon provider allows us to inline svgs without cluttering
the markup. Webpack config was adjusted to use svg-inline-loader
when resolving svgs that are used by the icon provider directive.
- All svgs were optimized to remove unncessary information.
- Removed unused svg color variants
- Moved icons used by icon provider to separate directory to
avoid Webpack parsing the files twice
- Small changes to navigation icons
Signed-off-by: Yoshie Muranaka <yoshiemuranaka@gmail.com>
Change-Id: I1ca214b74fc502e6b6e760cfee88b48110237c43
diff --git a/app/common/directives/icon-provider.js b/app/common/directives/icon-provider.js
new file mode 100644
index 0000000..5554fdd
--- /dev/null
+++ b/app/common/directives/icon-provider.js
@@ -0,0 +1,28 @@
+/**
+ * Directive to inline an svg icon
+ *
+ * To use–add an <icon> directive with a file attribute with
+ * a value that corresponds to the desired svg file to inline
+ * from the icons directory.
+ *
+ * Example: <icon file="icon-export.svg"></icon>
+ *
+ */
+window.angular && ((angular) => {
+ 'use-strict';
+
+ angular.module('app.common.directives').directive('icon', () => {
+ return {
+ restrict: 'E', link: (scope, element, attrs) => {
+ const file = attrs.file;
+ if (file === undefined) {
+ console.log('File name not provided for <icon> directive.')
+ return;
+ }
+ const svg = require(`../../assets/icons/${file}`);
+ element.html(svg);
+ element.addClass('icon');
+ }
+ }
+ })
+})(window.angular);
\ No newline at end of file