Add two new icon classes

Add new icon classes based on Font Awesome that support
layering, masking and combining glyphs.

Signed-off-by: Roberto Rosario <Roberto.Rosario@mayan-edms.com>
This commit is contained in:
Roberto Rosario
2018-12-27 04:42:06 -04:00
parent 0ee82e9efe
commit 945eed7ad5
3 changed files with 64 additions and 1 deletions

View File

@@ -28,6 +28,34 @@ class FontAwesomeDriver(IconDriver):
)
class FontAwesomeDualDriver(IconDriver):
name = 'fontawesome-dual'
template_name = 'appearance/icons/font_awesome_layers.html'
def __init__(self, primary_symbol, secondary_symbol):
self.primary_symbol = primary_symbol
self.secondary_symbol = secondary_symbol
def render(self):
return get_template(self.template_name).render(
context={
'data': (
{
'class': 'fas fa-circle',
'transform': 'down-3 right-10',
'mask': 'fas fa-{}'.format(self.primary_symbol)
},
{'class': 'far fa-circle', 'transform': 'down-3 right-10'},
{
'class': 'fas fa-{}'.format(self.secondary_symbol),
'transform': 'shrink-4 down-3 right-10'
},
)
}
)
class FontAwesomeCSSDriver(IconDriver):
name = 'fontawesomecss'
template_name = 'appearance/icons/font_awesome_css.html'
@@ -41,6 +69,32 @@ class FontAwesomeCSSDriver(IconDriver):
)
class FontAwesomeMasksDriver(IconDriver):
name = 'fontawesome-masks'
template_name = 'appearance/icons/font_awesome_masks.html'
def __init__(self, data):
self.data = data
def render(self):
return get_template(self.template_name).render(
context={'data': self.data}
)
class FontAwesomeLayersDriver(IconDriver):
name = 'fontawesome-layers'
template_name = 'appearance/icons/font_awesome_layers.html'
def __init__(self, data):
self.data = data
def render(self):
return get_template(self.template_name).render(
context={'data': self.data}
)
class Icon(object):
def __init__(self, driver_name, **kwargs):
self.driver = IconDriver.get(name=driver_name)(**kwargs)
@@ -49,5 +103,8 @@ class Icon(object):
return self.driver.render(**kwargs)
IconDriver.register(driver_class=FontAwesomeDriver)
IconDriver.register(driver_class=FontAwesomeCSSDriver)
IconDriver.register(driver_class=FontAwesomeDriver)
IconDriver.register(driver_class=FontAwesomeDualDriver)
IconDriver.register(driver_class=FontAwesomeLayersDriver)
IconDriver.register(driver_class=FontAwesomeMasksDriver)

View File

@@ -0,0 +1,5 @@
<span class="fa-layers fa-fw" style="margin-right: 7px;">
{% for entry in data %}
<i class="{{ entry.class }}" data-fa-transform="{{ entry.transform }}" data-fa-mask="{{ entry.mask }}"></i>
{% endfor %}
</span>

View File

@@ -0,0 +1 @@
<i class="{{ data.class }}" data-fa-transform="{{ data.transform }}" data-fa-mask="{{ data.mask }}"></i>