소스 검색

fix(dx): resolve_class (#18417) (#18421)

* fix(resolve_class): ignore False values

* fix: allow multiple arguments

* fix: remove unnecessary condition

* test: resolve_class

(cherry picked from commit 4f650854b8)

Co-authored-by: Faris Ansari <netchampfaris@users.noreply.github.com>
version-14
mergify[bot] 2 년 전
committed by GitHub
부모
커밋
c47de0dcdc
No known key found for this signature in database GPG 키 ID: 4AEE18F83AFDEB23
2개의 변경된 파일22개의 추가작업 그리고 4개의 파일을 삭제
  1. +16
    -0
      frappe/tests/test_website.py
  2. +6
    -4
      frappe/utils/jinja_globals.py

+ 16
- 0
frappe/tests/test_website.py 파일 보기

@@ -317,6 +317,22 @@ class TestWebsite(FrappeTestCase):
self.assertIn('<meta name="title" content="Test Title Metatag">', content)
self.assertIn('<meta name="description" content="Test Description for Metatag">', content)

def test_resolve_class(self):
from frappe.utils.jinja_globals import resolve_class

context = frappe._dict(primary=True)
self.assertEqual(resolve_class("test"), "test")
self.assertEqual(resolve_class("test", "test-2"), "test test-2")
self.assertEqual(resolve_class("test", {"test-2": False, "test-3": True}), "test test-3")
self.assertEqual(
resolve_class(["test1", "test2", context.primary and "primary"]), "test1 test2 primary"
)

content = '<a class="{{ resolve_class("btn btn-default", primary and "btn-primary") }}">Test</a>'
self.assertEqual(
frappe.render_template(content, context), '<a class="btn btn-default btn-primary">Test</a>'
)


def set_home_page_hook(key, value):
from frappe import hooks


+ 6
- 4
frappe/utils/jinja_globals.py 파일 보기

@@ -2,12 +2,14 @@
# License: MIT. See LICENSE


def resolve_class(classes):
def resolve_class(*classes):
if classes and len(classes) == 1:
classes = classes[0]

if classes is None:
return ""

if isinstance(classes, str):
return classes
if classes is False:
return ""

if isinstance(classes, (list, tuple)):
return " ".join(resolve_class(c) for c in classes).strip()


불러오는 중...
취소
저장