From 8ca75d0b1d0207b517ce9cf3bb51ace495e4a549 Mon Sep 17 00:00:00 2001 From: Joshua King Date: Wed, 19 Oct 2022 06:53:38 -0700 Subject: [PATCH 1/5] initial setup and template integration fix pattern context location and add some additional components add account and select patterns fixing cookiecutter config issue and removing unneeded account files rebase fixes rebase fixes poetry relock rebase fixes poetry relock v3 text change to test build v2 --- .github/workflows/project_ci.yml | 2 +- {{cookiecutter.repo_name}}/poetry.lock | 80 +++++++++++++------ {{cookiecutter.repo_name}}/pyproject.toml | 1 + .../config/settings/base.py | 26 ++++++ .../config/settings/local.py | 2 + .../{{cookiecutter.repo_name}}/config/urls.py | 14 +++- .../account/components/account_box.jinja | 19 +---- .../account/components/account_box.yaml | 11 +++ .../templates/components/button/button.jinja | 5 ++ .../templates/components/flyout/flyout.jinja | 6 ++ .../templates/components/flyout/flyout.yaml | 5 ++ .../templates/components/links/link.jinja | 4 + .../templates/components/links/link.yaml | 4 + .../templates/components/toggle/toggle.jinja | 4 + .../templates/components/util.jinja | 4 + .../templates/forms/attrs.yaml | 5 ++ .../templates/forms/checkbox.jinja | 4 + .../templates/forms/field.jinja | 4 + .../templates/forms/input.jinja | 4 + .../templates/forms/label.jinja | 4 + .../templates/forms/label.yaml | 2 + .../templates/forms/password.jinja | 4 + .../templates/forms/select.jinja | 4 + .../templates/library_base.jinja | 20 +++++ .../util/pattern_contexts.py | 69 ++++++++++++++++ 25 files changed, 266 insertions(+), 41 deletions(-) create mode 100644 {{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/account/components/account_box.yaml create mode 100644 {{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/flyout/flyout.yaml create mode 100644 {{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/links/link.yaml create mode 100644 {{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/attrs.yaml create mode 100644 {{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/label.yaml create mode 100644 {{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/library_base.jinja create mode 100644 {{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/util/pattern_contexts.py diff --git a/.github/workflows/project_ci.yml b/.github/workflows/project_ci.yml index 22f59204..1b97d593 100644 --- a/.github/workflows/project_ci.yml +++ b/.github/workflows/project_ci.yml @@ -1,7 +1,7 @@ # In YAML, 'raw' and 'endraw' can't come at the beginning of a token or at the end of a quoted value, which is why they're in weird places. They are # needed to escape YAML templating variables, which still allowing cookiecutter to replace the value of the repository name. -# Instructions to clear caches: +# Instructions to clear all caches: # 1) List all caches for this repo using the Github CLI: gh api -H "Accept: application/vnd.github+json" /repos/Lightmatter/django-hydra/actions/caches # 2) Delete each cache id from the list, e.g.: gh api --method DELETE -H "Accept: application/vnd.github+json" /repos/Lightmatter/django-hydra/actions/caches/1 diff --git a/{{cookiecutter.repo_name}}/poetry.lock b/{{cookiecutter.repo_name}}/poetry.lock index b1026ce4..2deb04c3 100644 --- a/{{cookiecutter.repo_name}}/poetry.lock +++ b/{{cookiecutter.repo_name}}/poetry.lock @@ -256,18 +256,18 @@ uvloop = ["uvloop (>=0.15.2)"] [[package]] name = "boto3" -version = "1.26.70" +version = "1.26.72" description = "The AWS SDK for Python" category = "main" optional = false python-versions = ">= 3.7" files = [ - {file = "boto3-1.26.70-py3-none-any.whl", hash = "sha256:5324c2a9dbc271d2b25eb79f7469b422de411665f9ab1c0b410e8ac820859b1a"}, - {file = "boto3-1.26.70.tar.gz", hash = "sha256:123cf34f3cc58772b4f806dfbb1ae9ffae47459de5088e971be9d3cd2b198975"}, + {file = "boto3-1.26.72-py3-none-any.whl", hash = "sha256:990997248716f12b296d7d30b3119a93347d73b7a4831c015e53aaebbd074a77"}, + {file = "boto3-1.26.72.tar.gz", hash = "sha256:5d6e19d148c4a9d5d85f0d96570d11264f23db610f1e3c9a8b7e8b6898424691"}, ] [package.dependencies] -botocore = ">=1.29.70,<1.30.0" +botocore = ">=1.29.72,<1.30.0" jmespath = ">=0.7.1,<2.0.0" s3transfer = ">=0.6.0,<0.7.0" @@ -276,14 +276,14 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] [[package]] name = "botocore" -version = "1.29.70" +version = "1.29.72" description = "Low-level, data-driven core of boto 3." category = "main" optional = false python-versions = ">= 3.7" files = [ - {file = "botocore-1.29.70-py3-none-any.whl", hash = "sha256:7d9abef42846c1c2f31dacaa559f8450f6fbda74c2c9e3dc6630e06e882ad026"}, - {file = "botocore-1.29.70.tar.gz", hash = "sha256:caaa144f49ef0d01b5e8812c9afa729def2c3358d9c4d9204789be2b56c5e849"}, + {file = "botocore-1.29.72-py3-none-any.whl", hash = "sha256:77fff109e1bdbf030d8400ccab9d28454c03c7be62c1696a239b21792b0873df"}, + {file = "botocore-1.29.72.tar.gz", hash = "sha256:8710f53af0e20f08f36a3bf434d18bc7ceba5d9835495b02aedbedd35df5de9a"}, ] [package.dependencies] @@ -750,8 +750,6 @@ files = [ {file = "cryptography-39.0.1-cp36-abi3-win32.whl", hash = "sha256:fe913f20024eb2cb2f323e42a64bdf2911bb9738a15dba7d3cce48151034e3a8"}, {file = "cryptography-39.0.1-cp36-abi3-win_amd64.whl", hash = "sha256:ced4e447ae29ca194449a3f1ce132ded8fcab06971ef5f618605aacaa612beac"}, {file = "cryptography-39.0.1-pp38-pypy38_pp73-macosx_10_12_x86_64.whl", hash = "sha256:807ce09d4434881ca3a7594733669bd834f5b2c6d5c7e36f8c00f691887042ad"}, - {file = "cryptography-39.0.1-pp38-pypy38_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:c5caeb8188c24888c90b5108a441c106f7faa4c4c075a2bcae438c6e8ca73cef"}, - {file = "cryptography-39.0.1-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:4789d1e3e257965e960232345002262ede4d094d1a19f4d3b52e48d4d8f3b885"}, {file = "cryptography-39.0.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:96f1157a7c08b5b189b16b47bc9db2332269d6680a196341bf30046330d15388"}, {file = "cryptography-39.0.1-pp39-pypy39_pp73-macosx_10_12_x86_64.whl", hash = "sha256:e422abdec8b5fa8462aa016786680720d78bdce7a30c652b7fadf83a4ba35336"}, {file = "cryptography-39.0.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:b0afd054cd42f3d213bf82c629efb1ee5f22eba35bf0eec88ea9ea7304f511a2"}, @@ -844,14 +842,14 @@ files = [ [[package]] name = "django" -version = "4.1.6" +version = "4.1.7" description = "A high-level Python web framework that encourages rapid development and clean, pragmatic design." category = "main" optional = false python-versions = ">=3.8" files = [ - {file = "Django-4.1.6-py3-none-any.whl", hash = "sha256:c6fe7ebe7c017fe59f1029821dae0acb5a2ddcd6c9a0138fd20a8bfefac914bc"}, - {file = "Django-4.1.6.tar.gz", hash = "sha256:bceb0fe1a386781af0788cae4108622756cd05e7775448deec04a71ddf87685d"}, + {file = "Django-4.1.7-py3-none-any.whl", hash = "sha256:f2f431e75adc40039ace496ad3b9f17227022e8b11566f4b363da44c7e44761e"}, + {file = "Django-4.1.7.tar.gz", hash = "sha256:44f714b81c5f190d9d2ddad01a532fe502fa01c4cb8faf1d081f4264ed15dcd8"}, ] [package.dependencies] @@ -1080,6 +1078,27 @@ files = [ [package.dependencies] Django = ">=3.2" +[[package]] +name = "django-pattern-library" +version = "1.0.0" +description = "A module for Django that allows to build pattern libraries for your projects." +category = "dev" +optional = false +python-versions = "^3.7" +files = [] +develop = false + +[package.dependencies] +Django = ">=3.2,<4.2" +Markdown = "^3.1" +PyYAML = ">=5.1,<7.0" + +[package.source] +type = "git" +url = "https://github.com/gone/django-pattern-library.git" +reference = "jinja" +resolved_reference = "555ad190f7ab5849d688ea6a70ec85a0e2fd6f73" + [[package]] name = "django-redis" version = "5.2.0" @@ -1272,14 +1291,14 @@ smmap = ">=3.0.1,<6" [[package]] name = "gitpython" -version = "3.1.30" -description = "GitPython is a python library used to interact with Git repositories" +version = "3.1.31" +description = "GitPython is a Python library used to interact with Git repositories" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "GitPython-3.1.30-py3-none-any.whl", hash = "sha256:cd455b0000615c60e286208ba540271af9fe531fa6a87cc590a7298785ab2882"}, - {file = "GitPython-3.1.30.tar.gz", hash = "sha256:769c2d83e13f5d938b7688479da374c4e3d49f71549aaf462b646db9602ea6f8"}, + {file = "GitPython-3.1.31-py3-none-any.whl", hash = "sha256:f04893614f6aa713a60cbbe1e6a97403ef633103cdd0ef5eb6efe0deb98dbe8d"}, + {file = "GitPython-3.1.31.tar.gz", hash = "sha256:8ce3bcf69adfdf7c7d503e78fd3b1c492af782d58893b650adb2ac8912ddd573"}, ] [package.dependencies] @@ -1829,6 +1848,21 @@ html5 = ["html5lib"] htmlsoup = ["BeautifulSoup4"] source = ["Cython (>=0.29.7)"] +[[package]] +name = "markdown" +version = "3.4.1" +description = "Python implementation of Markdown." +category = "dev" +optional = false +python-versions = ">=3.7" +files = [ + {file = "Markdown-3.4.1-py3-none-any.whl", hash = "sha256:08fb8465cffd03d10b9dd34a5c3fea908e20391a2a90b88d66362cb05beed186"}, + {file = "Markdown-3.4.1.tar.gz", hash = "sha256:3b809086bb6efad416156e00a0da66fe47618a5d6918dd688f53f40c8e4cfeff"}, +] + +[package.extras] +testing = ["coverage", "pyyaml"] + [[package]] name = "markdown-it-py" version = "2.1.0" @@ -3061,14 +3095,14 @@ tornado = ["tornado (>=5)"] [[package]] name = "setuptools" -version = "67.2.0" +version = "67.3.2" description = "Easily download, build, install, upgrade, and uninstall Python packages" category = "main" optional = false python-versions = ">=3.7" files = [ - {file = "setuptools-67.2.0-py3-none-any.whl", hash = "sha256:16ccf598aab3b506593c17378473978908a2734d7336755a8769b480906bec1c"}, - {file = "setuptools-67.2.0.tar.gz", hash = "sha256:b440ee5f7e607bb8c9de15259dba2583dd41a38879a7abc1d43a71c59524da48"}, + {file = "setuptools-67.3.2-py3-none-any.whl", hash = "sha256:bb6d8e508de562768f2027902929f8523932fcd1fb784e6d573d2cafac995a48"}, + {file = "setuptools-67.3.2.tar.gz", hash = "sha256:95f00380ef2ffa41d9bba85d95b27689d923c93dfbafed4aecd7cf988a25e012"}, ] [package.extras] @@ -3252,14 +3286,14 @@ test = ["black (>=22.3.0,<23.0.0)", "coverage (>=5.2,<6.0)", "isort (>=5.0.6,<6. [[package]] name = "typing-extensions" -version = "4.4.0" +version = "4.5.0" description = "Backported and Experimental Type Hints for Python 3.7+" category = "dev" optional = false python-versions = ">=3.7" files = [ - {file = "typing_extensions-4.4.0-py3-none-any.whl", hash = "sha256:16fa4864408f655d35ec496218b85f79b3437c829e93320c7c9215ccfd92489e"}, - {file = "typing_extensions-4.4.0.tar.gz", hash = "sha256:1511434bb92bf8dd198c12b1cc812e800d4181cfcb867674e0f8279cc93087aa"}, + {file = "typing_extensions-4.5.0-py3-none-any.whl", hash = "sha256:fb33085c39dd998ac16d1431ebc293a8b3eedd00fd4a32de0ff79002c19511b4"}, + {file = "typing_extensions-4.5.0.tar.gz", hash = "sha256:5cb5f4a79139d699607b3ef622a1dedafa84e115ab0024e0d9c044a9479ca7cb"}, ] [[package]] @@ -3537,4 +3571,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "a86d7022d59c16b5969922fb91cb5c4d4ec0f07a55797cf3674ea3cfe4ddcd6b" +content-hash = "ebb56ce6603619857204bec8a8f15f238c1b3863ed34c1b3095e007825afcfc1" diff --git a/{{cookiecutter.repo_name}}/pyproject.toml b/{{cookiecutter.repo_name}}/pyproject.toml index e3f21c63..37d3f586 100644 --- a/{{cookiecutter.repo_name}}/pyproject.toml +++ b/{{cookiecutter.repo_name}}/pyproject.toml @@ -62,6 +62,7 @@ pydocstyle = "^6.3.0" pylint-django = "^2.5.3" pylint-celery = "^0.3" ruff = "^0.0.216" +django-pattern-library = { git = "https://github.com/gone/django-pattern-library.git", branch = "jinja" } [tool.poetry.group.test.dependencies] pytest = "^7.2.1" diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/config/settings/base.py b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/config/settings/base.py index 63831d0a..96d2b704 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/config/settings/base.py +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/config/settings/base.py @@ -79,6 +79,7 @@ "heroicons", "hijack", "hijack.contrib.admin", + "pattern_library", ] LOCAL_APPS = [ "{{cookiecutter.repo_name}}.home.apps.HomeConfig", @@ -221,6 +222,7 @@ "builtins": [ "django.templatetags.static", "{{cookiecutter.repo_name}}.util.templatetags.filters", + "pattern_library.loader_tags", ], # https://docs.djangoproject.com/en/dev/ref/settings/#template-context-processors "context_processors": CONTEXT_PROCESSORS, @@ -228,6 +230,30 @@ }, ] +PATTERN_LIBRARY = { + # Groups of templates for the pattern library navigation. The keys + # are the group titles and the values are lists of template name prefixes that will + # be searched to populate the groups. + "SECTIONS": ( + ("account", [("account/components"), "account/snippets"]), + ("forms", ["forms"]), + ("header", ["header"]), + ("components", ["components"]), + ("samples", ["samples"]), + ), + # Configure which files to detect as templates. + "TEMPLATE_SUFFIX": ".jinja", + # Set which template components should be rendered inside of, + # so they may use page-level component dependencies like CSS. + "PATTERN_BASE_TEMPLATE_NAME": "library_base.jinja", + # Any template in BASE_TEMPLATE_NAMES or any template that extends a template in + # BASE_TEMPLATE_NAMES is a "page" and will be rendered as-is without being wrapped. + "BASE_TEMPLATE_NAMES": [ + "patterns/base_page.jinja", + "account/account_base.jinja", + ], +} + # https://docs.djangoproject.com/en/dev/ref/settings/#form-renderer FORM_RENDERER = "django.forms.renderers.TemplatesSetting" diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/config/settings/local.py b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/config/settings/local.py index f5dd76f5..ad7dd086 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/config/settings/local.py +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/config/settings/local.py @@ -44,6 +44,8 @@ # other middleware that modify the response. MIDDLEWARE.remove("corsheaders.middleware.CorsMiddleware") MIDDLEWARE.remove("csp.middleware.CSPMiddleware") +if DEBUG: + X_FRAME_OPTIONS = "SAMEORIGIN" # https://django-debug-toolbar.readthedocs.io/en/latest/installation.html#middleware MIDDLEWARE = [ diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/config/urls.py b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/config/urls.py index f15ddd08..13b7275c 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/config/urls.py +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/config/urls.py @@ -1,10 +1,15 @@ # flake8: noqa: F811 +from django.apps import apps from django.conf import settings from django.conf.urls import handler400, handler403, handler404, handler500 from django.contrib import admin from django.urls import include, path - -from {{cookiecutter.repo_name}}.home.views import FourHundy, FourOhFour, FourOhThree, WorkedLocally +from {{cookiecutter.repo_name}}.home.views import ( + FourHundy, + FourOhFour, + FourOhThree, + WorkedLocally, +) handler400 = FourHundy handler403 = FourOhThree @@ -43,6 +48,11 @@ urlpatterns = [path("__debug__/", include(debug_toolbar.urls))] + urlpatterns + if apps.is_installed("pattern_library"): + urlpatterns += [ + path("pattern-library/", include("pattern_library.urls")), + ] + urlpatterns += [ path("account/", include("{{cookiecutter.repo_name}}.user.urls", namespace="user")), diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/account/components/account_box.jinja b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/account/components/account_box.jinja index 333f1b4e..1ed4881d 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/account/components/account_box.jinja +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/account/components/account_box.jinja @@ -1,18 +1,3 @@ -{% set default_title %} -Did YOU ever hear the Tragedy of Darth Plagueis the Wise? -{% endset %} -{% set default_content %} -

I thought not. It's not a story the Jedi would tell you.

-{% endset %} -{% set default_back %} - - {{ heroicon_solid("arrow-left", class="h-6 w-6 cursor-pointer") }} - -{% endset %} {% macro account_box(title=default_title, content=default_content, back=default_back ) %}
@@ -25,3 +10,7 @@ Did YOU ever hear the Tragedy of Darth Plagueis the Wise?
{% endmacro %} + +{% if is_pattern_library %} + {{ account_box(dpl_account_objects.title, dpl_account_objects.content, dpl_account_objects.back) }} +{% endif %} diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/account/components/account_box.yaml b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/account/components/account_box.yaml new file mode 100644 index 00000000..e3bed7f4 --- /dev/null +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/account/components/account_box.yaml @@ -0,0 +1,11 @@ +context: + dpl_account_objects: + back: + Go Back + + title: Did YOU ever hear the Tragedy of Darth Plagueis the Wise? + content:

I thought not. It's not a story the Jedi would tell you.

diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/button/button.jinja b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/button/button.jinja index 99f88745..8c42b72d 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/button/button.jinja +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/button/button.jinja @@ -49,6 +49,11 @@ {% endif %} {% endmacro %} + +{% if is_pattern_library %} + {{ button() }} +{% endif %} + {# force tailwind to include these styles: text-primary-content bg-primary hover:bg-primary-focus border-primary bg-primary-content hover:text-primary-focus text-primary diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/flyout/flyout.jinja b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/flyout/flyout.jinja index 37d809bc..5afd0bdf 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/flyout/flyout.jinja +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/flyout/flyout.jinja @@ -17,3 +17,9 @@ {% endmacro %} + +{% if is_pattern_library %} + {% call flyout(button=default_button) %} + {{dpl_default_content}} + {% endcall %} +{% endif %} diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/flyout/flyout.yaml b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/flyout/flyout.yaml new file mode 100644 index 00000000..bbc502ea --- /dev/null +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/flyout/flyout.yaml @@ -0,0 +1,5 @@ +context: + dpl_default_content:

Hello World

diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/links/link.jinja b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/links/link.jinja index 7fc9d943..04734350 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/links/link.jinja +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/links/link.jinja @@ -3,3 +3,7 @@ target="{{ target }}" class="text-blue-500; hover:text-blue-700; underline">{{ text }} {% endmacro %} + +{% if is_pattern_library %} + {{ link(jpl_url, jpl_text, jpl_target) }} +{% endif %} diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/links/link.yaml b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/links/link.yaml new file mode 100644 index 00000000..295ac3d3 --- /dev/null +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/links/link.yaml @@ -0,0 +1,4 @@ +context: + jpl_url: "https://example.com/" + jpl_text: "Example Link" + jpl_target: "_blank" diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/toggle/toggle.jinja b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/toggle/toggle.jinja index 55b21a31..b732656f 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/toggle/toggle.jinja +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/toggle/toggle.jinja @@ -76,3 +76,7 @@ {% endif %} {% endmacro %} + +{% if is_pattern_library %} + {{ toggle() }} +{% endif %} diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/util.jinja b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/util.jinja index 2995620e..5d0916a0 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/util.jinja +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/util.jinja @@ -5,3 +5,7 @@ {% endif %} {% endfor %} {% endmacro %} + +{% if is_pattern_library %} + {{ form_attrs(attrs) }} +{% endif %} diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/attrs.yaml b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/attrs.yaml new file mode 100644 index 00000000..fd57dbe9 --- /dev/null +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/attrs.yaml @@ -0,0 +1,5 @@ +name: Attrs +context: + attrs: + name: Test attr + value: test value diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/checkbox.jinja b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/checkbox.jinja index 30bb5ae1..36d55da6 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/checkbox.jinja +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/checkbox.jinja @@ -9,3 +9,7 @@ {% endmacro %} + +{% if is_pattern_library %} + {{ checkbox(field) }} +{% endif %} diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/field.jinja b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/field.jinja index de48c15f..e9cf99c4 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/field.jinja +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/field.jinja @@ -50,3 +50,7 @@ {% endif %} {% endmacro %} + +{% if is_pattern_library %} + {{ field(input) }} +{% endif %} diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/input.jinja b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/input.jinja index fd9f0167..ab38aabf 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/input.jinja +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/input.jinja @@ -11,3 +11,7 @@ {% macro widget_to_input(widget) %} {{ input(type=widget.type, name=widget.name, value=widget.value, event_name=widget.attrs.id, attrs=widget.attrs )}} {% endmacro %} + +{% if is_pattern_library %} + {{ input() }} +{% endif %} diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/label.jinja b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/label.jinja index 23db5e36..95f4e483 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/label.jinja +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/label.jinja @@ -29,3 +29,7 @@ translate-y-2.5 {{ label(label=label, attrs=attrs) }} {% endif %} {% endmacro %} + +{% if is_pattern_library %} + {{ label(dpl_label_text) }} +{% endif %} diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/label.yaml b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/label.yaml new file mode 100644 index 00000000..2e9e1f41 --- /dev/null +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/label.yaml @@ -0,0 +1,2 @@ +context: + dpl_label_text: Sample Label diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/password.jinja b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/password.jinja index 56045ef8..218948cf 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/password.jinja +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/password.jinja @@ -19,3 +19,7 @@ {% macro widget_to_password(widget) %} {{ password(name=widget.name, value=widget.value, event_name=widget.attrs.id, attrs=widget.attrs )}} {% endmacro %} + +{% if is_pattern_library %} + {{ password() }} +{% endif %} diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/select.jinja b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/select.jinja index 36c51937..4016a98b 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/select.jinja +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/forms/select.jinja @@ -39,3 +39,7 @@ {% macro widget_to_select(widget) %} {{select( name=widget.name, value=widget.value, optgroups=widget.optgroups, attrs=widget.attrs )}} {% endmacro %} + +{% if is_pattern_library %} + {{widget_to_select(jplwidget)}} +{% endif %} diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/library_base.jinja b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/library_base.jinja new file mode 100644 index 00000000..3aed92b5 --- /dev/null +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/library_base.jinja @@ -0,0 +1,20 @@ + + + + + + + {{ vite_hmr_client() }} + {{ vite_asset('css/base.js') }} + {{ vite_asset('js/main.ts') }} + {{ django_htmx_script() }} + {% block extra_head %} + Lightmatter Template Library + {% endblock extra_head %} + + + {% block content %} + {{ pattern_library_rendered_pattern }} + {% endblock %} + + diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/util/pattern_contexts.py b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/util/pattern_contexts.py new file mode 100644 index 00000000..174d5a25 --- /dev/null +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/util/pattern_contexts.py @@ -0,0 +1,69 @@ +from django import forms +from pattern_library import register_context_modifier + + +class ExampleForm(forms.Form): + single_line_text = forms.CharField(max_length=255, help_text="Help text hhere") + checkbox = forms.BooleanField( + help_text="Check for yes, uncheck for no", label="Check Box" + ) + choices = (("one", "One"), ("two", "Two"), ("three", "Three"), ("four", "Four")) + select = forms.ChoiceField(choices=choices) + select.widget.attrs = {"test": "testing"} + + +@register_context_modifier +def add_common_forms(context, request): + context["form"] = ExampleForm() + + +@register_context_modifier +def add_field(context, request): + form = ExampleForm() + context["field"] = form["single_line_text"] + + +@register_context_modifier(template="forms/select.jinja") +def add_select(context, request): + form = ExampleForm() + choice_tempate = "django/forms/widgets/select_option.html" + context["jplwidget"] = form["select"] + context["jplwidget"].attrs = {"test1": "1", "test2": "2"} + context["jplwidget"].optgroups = [ + ( + "Sample Group", + [ + { + "template_name": choice_tempate, + "attrs": {"option_number": "1"}, + "label": "Test Label 1", + "value": "1", + }, + { + "template_name": choice_tempate, + "attrs": {"option_number": "2"}, + "label": "Test Label 2", + "value": "2", + }, + { + "template_name": choice_tempate, + "attrs": {"option_number": "3"}, + "label": "Test Label 3", + "value": "3", + }, + ], + 1, + ), + ] + + +@register_context_modifier(template="forms/checkbox.jinja") +def add_checkbox(context, request): + form = ExampleForm() + context["checkfield"] = form["checkbox"] + + +@register_context_modifier(template="forms/field.jinja") +def add_form_field(context, request): + form = ExampleForm() + context["form_field"] = form["single_line_text"] From 0fa064c212ced696b931823116d721266156301c Mon Sep 17 00:00:00 2001 From: Jacob Kent Date: Mon, 6 Feb 2023 13:46:09 -0500 Subject: [PATCH 2/5] remove baker recipes as they're not used --- .../user/baker_recipes.py | 13 ------------- 1 file changed, 13 deletions(-) delete mode 100644 {{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/user/baker_recipes.py diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/user/baker_recipes.py b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/user/baker_recipes.py deleted file mode 100644 index a42acf13..00000000 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/user/baker_recipes.py +++ /dev/null @@ -1,13 +0,0 @@ -from model_bakery.recipe import Recipe, seq - -from .models import User - -email_seq = seq("test@lightmatter.com") - -user = Recipe( - User, - first_name="Johnny", - last_name="Rico", - email="jonnyrico@fednet.gov", -) -user_seq = Recipe(User, first_name="Johnny", last_name=seq("User"), email=email_seq) From 018bd25c35d6824f562e67bdef2ebc9d18021460 Mon Sep 17 00:00:00 2001 From: Jacob Kent Date: Mon, 6 Feb 2023 13:52:48 -0500 Subject: [PATCH 3/5] change comment syntax for jinja files so comments show up in code and not in rendered HTML --- .../templates/components/modal/modal.jinja | 2 +- .../templates/components/toggle/toggle.jinja | 2 +- .../templates/forms/radio.jinja | 2 +- .../templates/header/desktop_center.jinja | 2 +- .../{{cookiecutter.repo_name}}/templates/header/end.jinja | 2 +- .../templates/header/mobile_menu.jinja | 2 +- .../templates/header/mobile_menu_button.jinja | 2 +- .../{{cookiecutter.repo_name}}/templates/index.jinja | 8 ++++---- .../templates/samples/random_chart.jinja | 6 +++--- 9 files changed, 14 insertions(+), 14 deletions(-) diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/modal/modal.jinja b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/modal/modal.jinja index c3650182..ce3d0399 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/modal/modal.jinja +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/modal/modal.jinja @@ -20,7 +20,7 @@ x-transition class="relative w-full bg-white rounded-xl shadow-lg overflow-y-auto {{width_class}}" > - + {# All header, body and footer content should be included within the macro block #} {{caller()}} diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/toggle/toggle.jinja b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/toggle/toggle.jinja index b732656f..7ef7bf67 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/toggle/toggle.jinja +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/components/toggle/toggle.jinja @@ -8,7 +8,7 @@ :class="{ 'opacity-0 ease-out duration-100': on, 'opacity-100 ease-in duration-200': !(on) }"> {{ heroicon_outline("x-mark", class="h-3 w-3 text-gray-400") }} - + {# Enabled: "opacity-100 ease-in duration-200", Not Enabled: "opacity-0 ease-out duration-100" #} - + {# Primary Label #}

{{choice.label}}

diff --git a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/header/desktop_center.jinja b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/header/desktop_center.jinja index c8fc92f3..014b62c6 100644 --- a/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/header/desktop_center.jinja +++ b/{{cookiecutter.repo_name}}/{{cookiecutter.repo_name}}/templates/header/desktop_center.jinja @@ -1,5 +1,5 @@