Added TestableCheckbox
This commit is contained in:
@@ -345,10 +345,6 @@ class TestableElement:
|
||||
elif options:
|
||||
self.fields[name] = options[0]['value']
|
||||
|
||||
def _get_my_ft(self, element: Tag):
|
||||
_inner = element.find(self.tag) if self.tag and self.tag != element.name else element
|
||||
return MyFT(_inner.name, _inner.attrs)
|
||||
|
||||
@staticmethod
|
||||
def _get_input_identifier(input_field, counter):
|
||||
"""
|
||||
@@ -432,14 +428,6 @@ class TestableElement:
|
||||
# Default to string
|
||||
return value
|
||||
|
||||
@staticmethod
|
||||
def _get_element(html_fragment: str):
|
||||
html_fragment = html_fragment.strip()
|
||||
if (not html_fragment.startswith('<div') and
|
||||
not html_fragment.startswith('<form')):
|
||||
html_fragment = "<div>" + html_fragment + "</div>"
|
||||
return BeautifulSoup(html_fragment, 'html.parser').find()
|
||||
|
||||
@staticmethod
|
||||
def _parse(tag, html_fragment: str):
|
||||
elt = BeautifulSoup(html_fragment, 'html.parser')
|
||||
@@ -801,8 +789,8 @@ class TestableForm(TestableElement):
|
||||
# return value
|
||||
|
||||
|
||||
class TestableInput(TestableElement):
|
||||
def __init__(self, client, source):
|
||||
class TestableControl(TestableElement):
|
||||
def __init__(self, client, source, tag):
|
||||
super().__init__(client, source, "input")
|
||||
assert len(self.fields) <= 1
|
||||
self._input_name = next(iter(self.fields))
|
||||
@@ -815,12 +803,40 @@ class TestableInput(TestableElement):
|
||||
def value(self):
|
||||
return self.fields[self._input_name]
|
||||
|
||||
def _send_value(self):
|
||||
if self._input_name and self._support_htmx():
|
||||
return self._send_htmx_request(data={self._input_name: self.value})
|
||||
return None
|
||||
|
||||
|
||||
class TestableInput(TestableControl):
|
||||
def __init__(self, client, source):
|
||||
super().__init__(client, source, "input")
|
||||
|
||||
def send(self, value):
|
||||
self.fields[self.name] = value
|
||||
if self.name and self._support_htmx():
|
||||
return self._send_htmx_request(data={self.name: self.value})
|
||||
|
||||
return None
|
||||
return self._send_value()
|
||||
|
||||
|
||||
class TestableCheckbox(TestableControl):
|
||||
def __init__(self, client, source):
|
||||
super().__init__(client, source, "input")
|
||||
|
||||
@property
|
||||
def is_checked(self):
|
||||
return self.fields[self._input_name] == True
|
||||
|
||||
def check(self):
|
||||
self.fields[self._input_name] = True
|
||||
return self._send_value()
|
||||
|
||||
def uncheck(self):
|
||||
self.fields[self._input_name] = False
|
||||
return self._send_value()
|
||||
|
||||
def toggle(self):
|
||||
self.fields[self._input_name] = not self.fields[self._input_name]
|
||||
return self._send_value()
|
||||
|
||||
|
||||
# def get_value(tag):
|
||||
|
||||
Reference in New Issue
Block a user