Commit Graph
7 Commits
Author SHA1 Message Date
Thomas Camlong 4c6ffcd0fa refactor(custom-widgets): extract domain package 2026-07-14 16:59:06 +02:00
Thomas Camlong c5703e7e53 fix(custom-widgets): address review feedback 2026-07-12 15:08:59 +02:00
Thomas Camlong 46add018bf feat(custom-widgets): add secure v2 authoring 2026-07-12 14:35:35 +02:00
ajnart d37545c98e style: auto-fix lint and format 2026-07-11 22:44:04 +00:00
Thomas Camlong aa8410d326 feat(custom-widgets): full Mantine v9 + SubFetch support for custom JSX
Massively expands the custom JSX widget system to support virtually all
Mantine v9 components and adds in-widget HTTP request capabilities via
a server-proxied SubFetch system.

- Whitelist ~100 Mantine components (core, all 16 charts, dates)
- Add SubFetch, SubData, ActionButton, ToggleSwitch, RefreshButton
- Add server-side subFetch tRPC mutation with same-origin + auth
- Show HTTP method warning badges in widget and admin preview
- Remove `fetch` from forbidden keywords, increase template to 50KB
- Expand bindings: Date.*, parseInt, parseFloat, Array.from, etc.
- Update AI prompt with full component reference + demo templates
2026-07-12 00:42:31 +02:00
Thomas Camlong 065b78fa3e fix(widgets): prevent TabsContainer state reset on data refetch
react-jsx-parser auto-generates random keys on every render, causing
full remounts that reset uncontrolled Tabs to defaultValue. Fix by:
- Adding disableKeyGeneration to preserve React reconciliation
- Memoizing bindings to avoid unnecessary re-parses
- Converting TabsContainer to controlled Tabs with useState
- Validating defaultTab against actual panel values
- Clearing stale parseErrors when template/data changes
2026-06-16 17:55:37 +02:00
Thomas aecbca2b81 feat: custom widgets (#5889) 2026-06-10 18:58:14 +02:00