Is there a way to adapt and change existing widgets?
For example, I would like to add a custom filter function to the provided 'table-widget'.
Yes, you can edit existing widgets. This does require the use of Developer Edition of ArcGIS Experience Builder and you need to host these widgets. The original files for the table widget can be found in the ArcGISExperianceBuilder installation folder:
..\ArcGISExperienceBuilder\client\dist\widgets\common\table\src.
It is best to load the entire ..\ArcGISExperienceBuilder\client folder into your code editor, such as VSCode.
Below are several links for videos on customizing widgets. They do focus on starting from a sample widget but provide some insight into how the widgets are assembled.
ArcGIS Experience Builder: Customizing and Extending
Developing with ArcGIS Experience Builder
ArcGIS Experience Builder: Building Web Solutions, Advanced Topics
Customize Widgets in ArcGIS Experience Builder with ReactJS & ArcGIS API for JS (part 1)
Customize Widgets in ArcGIS Experience Builder with ReactJS & ArcGIS API for JS (part 2)
Customize Widgets in ArcGIS Experience Builder with ReactJS & ArcGIS API for JS (part 3)
How to deploy Customized Widgets of ArcGIS Experience Builder on ArcGIS Portal