@@ -33,102 +33,6 @@ def widget_attrs(self, widget):
3333 return attrs
3434
3535
36- class BoundChoiceField (forms .BoundField ):
37- """
38- Specialisation of BoundField that can deal with conditionally shown fields,
39- and divider content between choices.
40- This can be used to render a set of radios or checkboxes with text boxes to capture
41- more details.
42- """
43-
44- def __init__ (self , form : forms .Form , field : "ChoiceField" , name : str ):
45- super ().__init__ (form , field , name )
46-
47- self ._conditional_html = {}
48- self .dividers = {}
49-
50- def add_conditional_html (self , value , html ):
51- if isinstance (self .field .widget , widgets .Select ):
52- raise ValueError (
53- "select component does not support conditional fields" )
54-
55- self ._conditional_html [value ] = html
56-
57- def conditional_html (self , value ):
58- return self ._conditional_html .get (value )
59-
60- def add_divider_after (self , previous , divider ):
61- self .dividers [previous ] = divider
62-
63- def get_divider_after (self , previous ):
64- return self .dividers .get (previous )
65-
66-
67- class ChoiceField (forms .ChoiceField ):
68- """
69- A ChoiceField that renders using NHS.UK design system radios/select
70- components.
71- """
72-
73- widget = widgets .RadioSelect
74- bound_field_class = BoundChoiceField
75-
76- def __init__ (
77- self ,
78- * args ,
79- hint = None ,
80- label_classes = None ,
81- classes = None ,
82- ** kwargs ,
83- ):
84- kwargs ["template_name" ] = ChoiceField ._template_name (
85- kwargs .get ("widget" , self .widget )
86- )
87-
88- self .hint = hint
89- self .classes = classes
90- self .label_classes = label_classes
91-
92- super ().__init__ (* args , ** kwargs )
93-
94- @staticmethod
95- def _template_name (widget ):
96- if (isinstance (widget , type ) and widget is widgets .RadioSelect ) or isinstance (
97- widget , widgets .RadioSelect
98- ):
99- return "forms/radios.jinja"
100- elif (isinstance (widget , type ) and widget is widgets .Select ) or isinstance (
101- widget , widgets .Select
102- ):
103- return "forms/select.jinja"
104-
105-
106- class MultipleChoiceField (forms .MultipleChoiceField ):
107- """
108- A MultipleChoiceField that renders using the NHS.UK design system checkboxes
109- component.
110- """
111-
112- widget = widgets .CheckboxSelectMultiple
113- bound_field_class = BoundChoiceField
114-
115- def __init__ (
116- self ,
117- * args ,
118- hint = None ,
119- label_classes = None ,
120- classes = None ,
121- ** kwargs ,
122- ):
123- kwargs ["template_name" ] = "forms/checkboxes.jinja"
124-
125- self .hint = hint
126- self .classes = classes
127- self .label_classes = label_classes
128-
129- super ().__init__ (* args , ** kwargs )
130-
131-
13236class ImperialHeightWidget (widgets .MultiWidget ):
13337 """
13438 A widget that splits height into feet and inches inputs.
0 commit comments