* Override __getattr__ and __setattr__ on ElementCollection.
* fix: bug when using a string to query an ElementCollection.
* Use Element.find when indexing ElementCollection with a string.
* For consistency also have a find method on ElementCollection.
* ElementCollection.find now returns a collection of collections :)
* fix tests: for textContent
* Revert to extend for ElementCollection.find :)
* Make element_from_dom a classmethod Element.from_dom
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* rename: Element.from_dom -> Element.from_dom_element
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* PyCharm warning sweep.
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Workaround for mp not allowing setting via __dict__
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* change pydom example to use new pyscript.web namespace
* change tests to use new pyscript.web namespace
* create new pyscript.web package and move pydom to pyscript.web.dom
* add __init__ to pyscript.web and expose the dom instance instead of the pyscript.web.dom module
* move elements from pyweb.ui to pyscript.web and temp fix pydom import
* moved of elements file completed
* moved media from pyweb to pyscript.web
* RIP pyweb
* move JSProperty from pyscript.web.dom to pyscript.web.elements
* move element classes from pyscript.web.dom to pyscript.web.elements
* first round of fixes while running tests
* fix test typo
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* restore right type type returned for Element.parent. ALL TESTS PASS LOCALLY NOW
* lint
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* clean up dom.py from dead commented code and osbolete comments
* bugfix: dom shouldn't return None when it can't find any element for a specific selector so it now returns an empty collection
* additional cleanup in tests
* lint
* initial cleaning up of unused modules
* change element.append to not consider types anymore and add tests for appending elements.Element or a JsProxy object
* add Element.append tests for append JS elements directly and appending nodeList as well
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Tag and create the correct subclass of Element.
* Move: Element.snap -> video.snap
* Move: Element.download and draw to canvas.download and draw.
* Minor cleanups.
* Commenting.
* Allow css classes to be passed to Element constructor.
* Commenting.
* Typo fix.
* Make html, id and text JSProperties.
* Commenting.
* Remove unnecessary selected attribute on BaseElement.
* Extract: BaseElement.from_js -> element_from_js
* Pass *args and **kwargs to element_from_js and remove BaseElement.create
* Move value attribute to specific Element subclasses.
* fix: wrapping of existing js elements.
* Add body and head elements so parent and children work everywhere.
* Revert order of HasOptions mixin for the select element.
* Comment out tests that are no longer relevant (see comment).
* Use correct super args in mixin.
* Have to use element_from_js when returning options from OptionsProxy.
* rename: StyleProxy -> Style, OptionsProxy -> Options and added Classes.
* Remove cached_property.
* Remove list-y methods from Classes collection.
* Allow explicit children or *args for containers.
* controversial: fix tests to use find rather than dom
* Add html element so (say) body.parent does what is expected.
* Collapse Element class hierarchy.
* rename: js_element -> dom_element
* rename: element_from_js -> element_from_dom
* replace: JS with DOM
* rename: _js -> _dom_element
* fix dom tests.
* Complete element list with void elements derived from Element.
* Added attributes to the newly added Element subclasses.
* remove dom module, replace with instance.
Also, remove media :)
* fix: typo in test for 'b' element.
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Remove dom and media modules.
* fix up ts definitions.
* Added missing import (used in content property).
* Added TODO :)
* wip: Add ClassesCollection
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Attempt to ask black to leave class list alone.
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Add classes attribute to ElementCollection
* wip: work on classes collection
* Extract code to get set of all class names in ClassesCollection.
* Update elements.py
* Polishing.
* Make children return an ElementCollection
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* wip: Add the ability to set multiple properties.
* Add __getitem__ back to the dom object.
* Put validation when setting DOM properties back in.
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* All tests green.
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* Remove unnecessary comment.
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Martin <martin.chilvers@gmail.com>
* change pydom example to use new pyscript.web namespace
* change tests to use new pyscript.web namespace
* create new pyscript.web package and move pydom to pyscript.web.dom
* add __init__ to pyscript.web and expose the dom instance instead of the pyscript.web.dom module
* move elements from pyweb.ui to pyscript.web and temp fix pydom import
* moved of elements file completed
* moved media from pyweb to pyscript.web
* RIP pyweb
* move JSProperty from pyscript.web.dom to pyscript.web.elements
* move element classes from pyscript.web.dom to pyscript.web.elements
* first round of fixes while running tests
* fix test typo
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* restore right type type returned for Element.parent. ALL TESTS PASS LOCALLY NOW
* lint
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* clean up dom.py from dead commented code and osbolete comments
* bugfix: dom shouldn't return None when it can't find any element for a specific selector so it now returns an empty collection
* additional cleanup in tests
* lint
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* add missing test for html attribute
* add test for text attribute
* fix text attribute test
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Andrea Giammarchi <andrea.giammarchi@gmail.com>
* fix pydom example
* fix the pydom test example to use a python syntax that works with MicroPython by replacing datetime
* add note about capturing errors importing when
* patch event_handler to handle compat with micropython
* turn pyweb into a package and remove hack to make pydom a sort of module with an ugly hack
* add pydom example using micropython
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* fix select element test
* change pydom test page to let pytest tests load it properly
* add missing folders to test dev server so it can run examples in the manual tests folder
* add pydom tests to the test suite as integration tests
* lint
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* improve fixes in event_handling
* change when decorator to actually dynamically fail in micropython and support handlers with or without arguments
* simplify when decorator code
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* add type declaration back for the MP use case
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
* removed code to access pydom get index as I can't think of any proper use case
* remove old commented hack to replace pydom module with class
* fix examples title
* precommit checks
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
* add tests for select options
* add classes to support select and options management
* fix add methond and implement clear on options
* fix optionsproxy.add
* fix select.add method
* add test adding a second option to select
* add tests around adding options in multiple flavors
* add test to add an option by passing the option it wants to be added before
* complete test around adding options
* add select to add test on remove
* add tests and support for selected item
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Andrea Giammarchi <andrea.giammarchi@gmail.com>
* add base test for input value field
* add value property to Element
* add test for non supported element
* prevent users to set value attribute on elements that do not support it
* add test for setting value on collections
* add value property to collection and add more tests
* [pre-commit.ci] auto fixes from pre-commit.com hooks
for more information, see https://pre-commit.ci
---------
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
pre-commit.ci has been disabled for a while.
This PR ensures that all the files has been validated/formatted by pre-commit, to avoid spurious diffs in subsequent PRs.
During the process, ruff broke the code because it removed an "unused" import which was actually used.
A linter which breaks my code is a linter which I cannot trust, so I just removed it. I re-enabled isort instead.
* add pyweb
* build
* add test file
* fix pydom example code
* remove old reference to js
* temporarily comment out query functions on BaseElement while rearranging code to reuse the same underlying logic accross PyDom and other elements
* add temp TODO comment to content as it breaks with template elements
* update pydom example to define code on external file
* fix name type while renaming document -> dom
* add real pydom test files
* add classes to dom scope
* __len__ to ElementCollection
* fix some of the old tests
* rename test from test_query_by_class to test_getitem_by_class
* change test for read and write multiple elements
* add find method to BaseElement
* fix remaining tests
* add Collection Tests
* add equality to Collection
* add test for collection style manipulation
* fix getter for style property and rename style related attribute from pop to remove
* add single element creation test
* remove append on BaseElement and add body and head to dom
* add test_create_element_child to verify child creation
* add children getter property to Element
* remove old code
* remove more old code, change style attribute from visibility to visible and now default getters on collection to return a list with the value of an attribute for every element in the collection
* remove more old code and add possibility to customize test flags via url
* add support to pass Js and pydom.Element elements to when decorator
* remove methods related to input type of elements until we have a better design for it
* rename _element to _js
* add test_when decorator with a ElementCollection input
* when decorator now supporte pydom.ElementCollection as input
* update pyscript.js
* remove useless variable from when decorator
* remove base.py from pyweb
* add nodes for append collection test and add better feedback on successes vs failure
* add tests and fix code for support of append Element and ElementCollection
* manage access to content attribute when tagname is template
* fix comment
---------
Co-authored-by: Fabio Pliger <fpliger@anaconda.com>