diff --git a/django_components/templatetags/__init__.py b/django_components/templatetags/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/django_components/templatetags/component_tags.py b/django_components/templatetags/component_tags.py new file mode 100644 index 00000000..108a78f4 --- /dev/null +++ b/django_components/templatetags/component_tags.py @@ -0,0 +1,12 @@ +from django import template +from django_components.component import registry + +register = template.Library() + +@register.simple_tag(name="component_dependencies") +def component_dependencies_tag(): + out = [] + for comp in registry._registry.values(): + out.append(comp.render_dependencies()) + + return "\n".join(out) diff --git a/tests/test_templatetags.py b/tests/test_templatetags.py new file mode 100644 index 00000000..fb8a608f --- /dev/null +++ b/tests/test_templatetags.py @@ -0,0 +1,27 @@ +from textwrap import dedent +import unittest +from django.template import Template, Context +from django_components import component +from .django_test_setup import * # NOQA + +class SimpleComponent(component.Component): + def context(self, variable=None): + return { + "variable": variable, + } + + class Media: + template = "simple_template.html" + css = {"all": "style.css"} + js = ("script.js",) + +class ComponentTemplateTagTest(unittest.TestCase): + def test_component_dependencies(self): + component.registry.register(name="testcomponent", component=SimpleComponent) + + template = Template("{% load component_tags %}{% component_dependencies %}") + rendered = template.render(Context()) + self.assertEqual(rendered, dedent(""" + + + """).strip())