Coverage for khufu/typography/li.py : 76%

Hot-keys on this page
r m x p toggle line displays
j k next/prev highlighted chunk
0 (zero) top of page
1 (one) first highlighted chunk
1# encoding: utf-8
2from builtins import range
3from . import *
6def li(
7 content="",
8 span=False,
9 disabled=False,
10 submenuTitle=False,
11 divider=False,
12 navStyle=False,
13 navDropDown=False,
14 pager=False,
15 pull=False,
16 onPhone=True,
17 onTablet=True,
18 onDesktop=True,
19 indent=False,
20 hidden=False):
21 """
22 *Generate a li - TBS style*
24 **Key Arguments**
26 - ``content`` -- the content (if a subMenu for dropdown this should be `<ul>`)
27 - ``span`` -- the column span [ False | 1-12 ]
28 - ``disabled`` -- add the disabled attribute on an grey out this list item. Note you can optionally swap anchors for spans to remove click functionality.
29 - ``submenuTitle`` -- if a submenu (`<ul>`) is to be included as content, use this as the title.
30 - ``divider`` -- if true this list item shall be a line
31 - ``navStyle`` -- how is the navigation element to be displayed? [ active | header ]
32 - ``navDropDown`` -- true if the list item is to be used as a dropdown in navigation
33 - ``pager`` -- use the `<li>` within a pager navigation? [ False | "previous" | "next" ]
36 **Return**
38 - ``li`` -- the li
40 """
41 submenuClass = False
42 falseList = [disabled, submenuClass,
43 submenuTitle, navStyle, navDropDown, pager, span]
44 for i in range(len(falseList)):
45 if not falseList[i]:
46 falseList[i] = ""
47 [disabled, submenuClass, submenuTitle,
48 navStyle, navDropDown, pager, span] = falseList
50 if pull:
51 pull = "pull-%(pull)s" % locals()
52 else:
53 pull = ""
55 if disabled:
56 disabled = """disabled"""
58 if submenuTitle:
59 submenuClass = "dropdown-submenu"
60 submenuTitle = """<a tabindex="-1" href="#">%(submenuTitle)s</a>""" % locals(
61 )
63 if navStyle == "active":
64 if "href" in content:
65 content = content.replace('class="', 'class="active ')
66 elif navStyle:
67 navStyle = "nav-%(navStyle)s" % locals()
69 if navDropDown:
70 navDropDown = """dropdown"""
72 if span:
73 span = "span%(span)s" % locals()
75 if indent:
76 indent = """style="padding-left: 1em" """
77 else:
78 indent = ""
80 if hidden:
81 hidden = "hidden"
82 else:
83 hidden = ""
85 phoneClass = ""
86 tabletClass = ""
87 desktopClass = ""
88 if onPhone:
89 if onTablet:
90 if not onDesktop:
91 desktopClass = "hidden-desktop"
92 else:
93 if not onDesktop:
94 phoneClass = "visible-phone"
95 else:
96 tabletClass = "hidden-tablet"
97 else:
98 if onTablet:
99 if not onDesktop:
100 tabletClass = "visible-tablet"
101 else:
102 phoneClass = "hidden-phone"
103 else:
104 desktopClass = "visible-desktop"
106 li = """<li class="%(disabled)s %(phoneClass)s %(tabletClass)s %(desktopClass)s %(submenuClass)s %(navStyle)s %(pager)s %(span)s %(navDropDown)s %(pull)s %(hidden)s" %(indent)s id=" ">%(submenuTitle)s%(content)s</li>""" % locals(
107 )
109 if divider is True:
110 li = """<li class="divider"></li>"""
112 return li