Commit Graph

572 Commits

Author SHA1 Message Date
Elijah Ahianyo
4190a79835
[REF-3334] Validate Toast Props (#3793) 2024-08-15 09:30:32 -07:00
Shubhankar Dimri
911c2af044
#3752 bugfix add domain for XAxis (#3764) 2024-08-09 12:12:49 -07:00
Alek Petuskey
76627c2076
Add comments to html metadata component (#3731) 2024-08-01 13:24:39 -07:00
Khaleel Al-Adhami
800685da68
fix silly bug when style is set directly to breakpoints (#3719)
* fix silly bug when style is set directly to breakpoints

* add helpful comment

Co-authored-by: Masen Furer <m_github@0x26.net>

---------

Co-authored-by: Masen Furer <m_github@0x26.net>
2024-07-29 16:57:33 -07:00
Thomas Brandého
d389f4b5ca
fix var warning (#3704) 2024-07-25 10:50:18 -07:00
Thomas Brandého
b9927b6f49
notifying frontend about backend error looks better (#3491) 2024-07-23 13:58:15 -07:00
Elijah Ahianyo
9666244a87
[REF-3273] Add SVG circle, polygon and rect components (#3684) 2024-07-22 12:05:50 -07:00
Elijah Ahianyo
decdc857be
rx.list Dont set/hardcode list_style_position css prop (#3695) 2024-07-22 10:56:34 -07:00
Thomas Brandého
921a5cd632
fix typo (#3689) 2024-07-19 18:02:50 +02:00
Masen Furer
1da606dd8e
[REF-3197] Browser init workflow (#3673) 2024-07-18 18:51:33 -07:00
Elijah Ahianyo
1bc1978c31
[REF-3135] Radix Primitive components should not ignore provided class_name prop (#3676) 2024-07-18 13:26:46 -07:00
Alek Petuskey
93231f8168
Improve graphing asethetic (#3611)
* Improve graphing asthetic

* Few more updates

* More style updates

* Update reflex/components/recharts/polar.py

Co-authored-by: Masen Furer <m_github@0x26.net>

* Address pr comments

* fix precommit

* Fix types

* PYI

* PYI update

---------

Co-authored-by: Alek Petuskey <alekpetuskey@Aleks-MacBook-Pro.local>
Co-authored-by: Masen Furer <m_github@0x26.net>
2024-07-15 11:25:08 -07:00
Manas Gupta
b04a7dab84
Update Radial Bar Component (#3662)
* add: radial bar properties

* add: generate new pyi file

* style: fix linting

---------

Co-authored-by: coolstorm <manas.gupta@fampay.in>
2024-07-12 13:29:21 -07:00
Masen Furer
0ed895cde7
debounce: pass through key and special_props (#3655)
These fields on the base Component were not being carried onto the
DebounceInput component (to be passed to the child).

Discovered while testing #3653
2024-07-12 13:27:19 -07:00
Elijah Ahianyo
eed0edc12a
Allow DebounceInput as child of FormControl Component (#3660) 2024-07-11 16:07:25 -07:00
Thomas Brandého
7ba61ced14
Make domain props work for y_axis (#3652) 2024-07-11 10:35:34 -07:00
Thomas Brandého
4f9a75b390
add warning when using css props on recharts (#3651) 2024-07-11 10:34:39 -07:00
Tom Gotsman
4c61838608
Tom/recharts missing props (#3645)
* fix axis orientation prop

* add margin prop explanation

* active bar and on animation start

* remove data key from y-axis

* precommit and pyi generator

---------

Co-authored-by: Tom Gotsman <tomgotsman@Toms-MacBook-Pro.local>
Co-authored-by: Tom Gotsman <tomgotsman@toms-mbp.lan>
2024-07-09 18:10:51 -07:00
Maxim Vlah
772a3ef893
Catch unhandled errors on both frontend and backend (#3572) 2024-07-08 19:26:11 -07:00
Tom Gotsman
b20f3ac29a
update graphing (#3606)
* update graphing

* fix pyi

* update graphing

rebase#

* fix pyi

* precommit fail

* fix pyi generator file

* update pyi again

* pyi

* fix pyi generator to have single line builtin check

* change dict to Dict

---------

Co-authored-by: Tom Gotsman <tomgotsman@toms-mbp.lan>
Co-authored-by: Tom Gotsman <tomgotsman@Toms-MacBook-Pro.local>
Co-authored-by: Lendemor <thomas.brandeho@gmail.com>
2024-07-04 14:03:47 +02:00
Alek Petuskey
efe6954552
minor chart clean up (#3551)
* minor chart clean up

* PYI

* fix base pyi

* fix pyi issues

* fix cartesian.pyi

---------

Co-authored-by: Alek Petuskey <alekpetuskey@Aleks-MacBook-Pro.local>
Co-authored-by: Lendemor <thomas.brandeho@gmail.com>
2024-07-04 03:27:07 +02:00
Tom Gotsman
59752d0cde
small update (#3612)
Co-authored-by: Tom Gotsman <tomgotsman@toms-mbp.lan>
2024-07-03 09:13:40 -07:00
Masen Furer
75c5fa2ffe
[REF-3220] Fix rx.cancel_upload EventSpec (#3608)
The formatting of the upload ID had extra single quotes that were not needed.
Now that `_var_name_unwrapped` is used, any `str`-like Vars will automatically
be formatted with backticks
2024-07-03 15:55:41 +02:00
Masen Furer
df7d7b0ba0
Update links to /docs/library/dynamic-rendering/foreach/ (#3609) 2024-07-02 13:41:26 -07:00
Masen Furer
f1dafc0373
pyi_generator cleanup: ruff, remove fully qualified reflex. names (#3591)
* pyi_generator: avoid fully qualified names for reflex. types

The previous method added quite a large line diff to the pyi files, so for now,
lets just add the `Breakpoints` import to the default set along with Var,
EventHandler, Style and others.

* pyi_generator: fix generated files using ruff

also generate updated pyi files in reflex/experimental namespace

* remove black from dev dependencies

* poetry.lock: relock deps

* Update all pyi files with new formatting

* pre-commit fixes

* pyi_generator: fix __init__.pyi files again
2024-06-29 08:48:01 -07:00
Alek Petuskey
1c3d65dd52
Change Strategy Prop to Literal (#3575)
* Better type strategy prop

* Add beter description

* Pre commit

* fix pyi generation

* Default prop assignment must be Var to pass type checking

* fix script.pyi

---------

Co-authored-by: Alek Petuskey <alekpetuskey@Aleks-MacBook-Pro.local>
Co-authored-by: Masen Furer <m_github@0x26.net>
2024-06-28 18:02:37 -07:00
Khaleel Al-Adhami
d253fc4dcd
add responsive props to radix components (#3583)
* implement basic behavior to handle both radix and css

* add all components in theme, AND change pyi to include path of reflex types

* order type annotations in pyi_generator (#3585)

* order type annotations in pyi_generator

* run pyi_generator

* classvars should not be backend vars (#3578)

* classvars should not be backend vars

* cleanup RESERVED_BACKEND_VAR_NAMES

* order type annotations in pyi_generator (#3585)

* order type annotations in pyi_generator

* run pyi_generator

* do not validate non-cached var deps (#3576)

* do not validate non-cached var deps

* further improve Exceptions for misconfigured var deps

* order type annotations in pyi_generator (#3585)

* order type annotations in pyi_generator

* run pyi_generator

* fix git merge remains

* define function globally

* use more modern annotations

* only trigger when direct value and not state

* simplify unions

* accidentally removed avatar oop

---------

Co-authored-by: benedikt-bartscher <31854409+benedikt-bartscher@users.noreply.github.com>
2024-06-28 17:01:23 -07:00
benedikt-bartscher
2027a2f09f
order type annotations in pyi_generator (#3585)
* order type annotations in pyi_generator

* run pyi_generator
2024-06-27 15:58:11 -07:00
Masen Furer
8eb834f816
Add a link to backend in connection error (#3044)
* Automatic authentication for backend on Github Codespaces

When running reflex on Github codespaces, the port forwarding mechanism
requires authentication, which happens automatically when first accessing the
port via HTTPS; however since the backend connects over the WSS protocol
instead, it gets an access error with no way to redirect to Github's
authentication servers to get the port open.

This PR adds an automatic redirection mechanism to a backend route when there
is a connection error accessing the frontend. After the backend route loads, it
redirects back to the frontend, but now it can connect to the backend via
websocket because the port forward is authenticated.

* manually update .pyi file 🫨
2024-06-27 12:20:03 -07:00
Khaleel Al-Adhami
82a0d7f3fb
introduce customizable breakpoints (#3568)
* introduce customizable breakpoints
2024-06-27 01:34:49 +03:00
Thomas Brandého
cca037421b
add props for tabs (#3560) 2024-06-26 13:24:47 -07:00
benedikt-bartscher
d425ede401
fix formatting (#3574) 2024-06-26 13:19:55 -07:00
Elijah Ahianyo
28a72efc83
Radio group fix deprecation warning for creating vars with strings (#3567) 2024-06-26 09:52:56 -07:00
abulvenz
d90fa8a266
fix: Using default components instead of chakra. (#3570) 2024-06-26 09:23:53 -07:00
Thomas Brandého
764f723829
fix small typing issue (#3562) 2024-06-26 09:23:20 -07:00
Masen Furer
956bc0a397
Add Clipboard component for handling global on_paste event (#3513)
* Add Clipboard component for handling global on_paste event

* py3.8 compat

* py3.8 compat (p2)
2024-06-26 09:22:24 -07:00
Emmanuel Onwuegbusi
e4c17deafb
Fix radix radio cards component (#3545)
* ruff format

* fix radio card component

* generated radio_cards.pyi

* ruff format
2024-06-25 15:23:30 +02:00
Masen Furer
0314d19e7e
Ensure rx.match gets memoized to avoid excessive re-rendering (#3552) 2024-06-25 15:20:04 +02:00
Thomas Brandého
046dbdef63
fix hydration error (#3542) 2024-06-21 21:34:47 +02:00
HongyuHansonYao
f41e852b0d
Hanson/radial bar chart (#3532)
* refactored event triggers

* update eventhandler method

* updated pyi files

* .

* Update pyi

* new pyis

* lower passing bar for test coverage to 60

---------

Co-authored-by: Hongyu Yao <hongyuyao@hongyus-mbp-3.lan>
Co-authored-by: Nikhil Rao <nikhil@reflex.dev>
Co-authored-by: Hongyu Yao <hongyuyao@Hongyus-MacBook-Pro-3.local>
2024-06-20 21:41:10 -07:00
Masen Furer
958c4fa7f2
Abstract color_mode related Var creation (#3533)
* StatefulComponent event handler useCallback dependency array

Ensure the useCallback dependency array for event handlers also handled
destructuring objects and the `...` rest parameter.

Avoid hooks that are not variable declarations.

* Abstract color_mode related Var creation

* Allow `set_color_mode` to take a parameter at compile time
* Update type hinting of `Var._replace` to indicate that it returns BaseVar

* color_mode_button with allow_system=True uses new set_color_mode API

`set_color_mode` is now a CallableVar and uses very similar logic internally,
so this bit of code can be replaced.

* Fix for pydantic v1.10.17
2024-06-20 16:46:48 -07:00
HongyuHansonYao
4318bb597f
Hanson/tooltip-improvement/props (#3525)
* added props for tooltip

* formatted

* added pyi

* new pyi

---------

Co-authored-by: Hongyu Yao <hongyuyao@Hongyus-MacBook-Pro-3.local>
2024-06-20 15:09:33 -07:00
Tom Gotsman
a4a5d52e21
add in rx.el.style (#3511) 2024-06-20 11:59:08 -07:00
Thomas Brandého
6709b49cfa
pass validation of valid_parent if inheriting from valid class (#3519) 2024-06-19 23:00:18 +02:00
Thomas Brandého
6ad679ad66
fix segmented_control (#3516)
* fix segmented_control

* fix 3.8 imports

* fix 3.8 typing

* add valid_parent for SegmentedControlItem
2024-06-19 17:47:49 +02:00
Masen Furer
ffb24ceeee
Improve ClientState compatibility with rx.input (#3490)
* Ignore type checking for generic aliases in _var_name_unwrapped

* Allow ClientStateVar.set_value to be used with text inputs

* client_state: If var_name is not provided, create a random name

* client_state: partition the arg value to get `_e0` from `_e0.target.value`
2024-06-19 07:01:46 -07:00
Thomas Brandého
0d39237b3c
upgrade to latest ruff (#3497)
* upgrade to latest ruff

* try to fix dep review

* try to fix dep review (2)

* upgrade black

* upgrade black (2)

* update allowed dependencies

* update allowed dependencies (2)

* update allowed dependencies (3)

* wait between interim and final in yield test

* remove previous commit, increase delay between yield

* forgot to save on the time.sleep(1) removal

* fix integration (maybe?)

* fix pyi?

* what even is going on

* what is realityi?

* test another fix for app harness

* try to wait even longer?

* force uvloop to be optional

* downpin fastapi < 0.111, remove changes to test
2024-06-19 12:32:13 +02:00
Thomas Brandého
d6d14b3f72
add allow_system prop to colormode iconbutton, and clean up logic (#3507)
* add allow_system prop to colormode iconbutton, and clean up logic

* remove segmentedcontrol change from this PR

* make it work for chakraColorProvider too

* add comment to explain resolved_color_mode
2024-06-19 02:02:27 +02:00
HongyuHansonYao
eb397dacc4
(WIP) recharts fixes batch #3 (#3496)
* remove stroke and fill from label as they are unsupported by recharts

* refacted legend

* added props to reference line

* updated type for stroke_width, added stroke, updated type for x y

* added x y to reference dot

* updated reference area

* regenerated pyi

* new pyis

* regenerated pyi

---------

Co-authored-by: Hongyu Yao <hongyuyao@Hongyus-MacBook-Pro-3.local>
Co-authored-by: Hongyu Yao <hongyuyao@hongyus-mbp-3.lan>
2024-06-17 17:07:24 -07:00
Emmanuel Onwuegbusi
b78fa6f210
fix checkbox_group component (#3454) 2024-06-17 17:02:20 -04:00
Sagar Hedaoo
6fdc5a84db
Updated radio group component (#3474) 2024-06-17 16:10:03 -04:00
Thomas Brandého
44d2bd4970
fix missing event triggers from docs (#3495)
* fix missing event triggers from docs

* fix nit

* go for simpler fix
2024-06-14 22:03:35 +02:00
Elijah Ahianyo
69e4bbc301
[REF-2830] server side events and stateless components should not require not require a backend (#3475)
* `rx.color_mode.icon`, `rx.color_mode.button` and `rx.color_mode.switch` should not require a backend`

* remove print statement

* unit tests and precommit fix

* add unit tests

* change logic to check if event handlers actually contain state. Also delay websocket object check in state.js so server side events can get executed for stateless apps

* make sure events are not queued for server side events particularly ones that call queueEvents(clear_local_storage, clear_cookies, remove_local_storage, remove_cookies) when the app is stateless(no ws)

* fix unit tests

* fix broken unit tests in test_app

* modify socket check in processEvent to only return if socket exists and theres any event in the queue that requires state

* Apply suggestions from code review

make queueEvent call async

Co-authored-by: Masen Furer <m_github@0x26.net>

* await queueEventIfSocketExists

* Revert "await queueEventIfSocketExists"

This reverts commit 9ef8070b87.

---------

Co-authored-by: Masen Furer <m_github@0x26.net>
2024-06-14 09:48:53 -07:00
Thomas Brandého
42f34f763e
add event triggers for rx.video (#2700) 2024-06-13 08:03:44 -07:00
HongyuHansonYao
5d3eef7031
Hanson recharts batch #2 (#3472)
1. Updated recharts version to the newest - recharts.py
2. Added `legend_type` back for cartesian class, it was currently commented out - cartesian.py
3. Added `vertical_points` and `horizontal_points` to CartesianGrid class - cartesian.py
4. Added `ticks` `tick` `tick_count` `tick_line` `tick_size` `min_tick_gap`props to Axis class - cartesian.py
5. Refactored `on_click` `on_mouse_down` `on_mouse_up` `on_mouse_move` `on_mouse_out` `on_mouse_enter` `on_mouse_leave` event triggers of `Axis` class using Masen's new method - cartesian.py
6. Added `on_animation_begin` and `on_animation_end` event trigger to `Bar(Cartesian)` class - cartesian.py
7. Added `id` `is_animation_active` `animation_begin` `animation_duration` `animation_easing` `unit` `min_point_size` `name`  prop to `Bar(Cartesian)` class - cartesian.py.
8. Added `unit` `name` props to `Area(Cartesian)` class - cartesian.py
9. Added `unit` `name` props to `Line(Cartesian)` class - cartesian.py
10. Added `id` `is_animation_active` `animation_begin` `animation_duration` `animation_easing` props to `Scatter(Recharts)` class - cartesian.py
11. Refactored eventtriggers for `Scatter(Recharts)` class using Masen's new method - cartesian.py
12. Change the var type of stack_id in `Area(Cartesian)` class to be string and int, it used to be only a string. - cartesian.py
13. Added `name_key` prop and `on_animation_start` and `on_animation_end` prop to `Funnul(Recharts)` class cartesian.py
14. Added `on_mouse_down` `on_mouse_up` `on_mouse_over` `on_mouse_out` event triggers to `PieChart(ChartBase)` and also refactored using Masen's new method - Charts.py
15. Refaactored event triggers for referenceDot(Reference) class using Masen's new method. - Cartesian.py
16. Refactored event triggers for ChartBase(RechartsCharts) class using Masen's new method. - Cartesian.py
17. Refactored event triggers for Piechart(ChartBase) class using Masen's new method, Added `on_mouse_down` `on_mouse_up` `on_mouse_over` `on_mouse_out` event triggers - Cartesian.py

Co-authored-by: Hongyu Yao <hongyuyao@hongyus-mbp-3.lan>
2024-06-12 11:40:05 -07:00
Thomas Brandého
463f7829d4
swap all use of get_event_triggers to rx.EventHandler props (#3458) 2024-06-12 11:11:29 -07:00
Thomas Brandého
462b023019
use add_imports everywhere (#3448) 2024-06-12 09:26:45 -07:00
Carlos
991f6e0183
[REF-3012] Add defs, lineargradient and stop html elements (#3467) 2024-06-12 09:21:36 -07:00
Elijah Ahianyo
8c8156f3aa
[REF-3016] Allow special characters in upload ID (#3449) 2024-06-12 09:21:21 -07:00
Masen Furer
bd799a2680
Override _var_is_string when handling str literals (#3473)
* Override _var_is_string when handling str literals

Maintain the pre 0.5.4 behavior when dealing with string literal
props, without displaying the deprecation warning.

Wait, isn't it weird to pass `_var_is_string=False` when the type is actually a str??

Yes, yes it is. However this is currently needed to avoid raising the
DeprecationWarning internally. These str-type vars with
_var_is_string set to false are handled by
`reflex.utils.format.format_prop`, but setting them to be
_var_is_string=True causes them to get quoted twice, which is not
what we want.

Var operations refactor will take care of cleaning this up, but for
now, we will go with the hack.

* Ignore type checks

Since I'm using an `isinstance` check now, the type checker thinks that `value`
could possibly be a string (instead of Any), which raises typing errors that
have to be ignored (they were ignored before implicitly due to being Any-typed)
2024-06-11 13:18:34 -07:00
Masen Furer
66f0a49b75
Pass _var_is_string parameter to Var.create (#3470) 2024-06-10 14:32:32 -07:00
Tom Gotsman
ccf617ba85
small update to fix radial bar chart (#3468)
* small update to fix radial bar chart

* update add data prop to radar

---------

Co-authored-by: Tom Gotsman <tomgotsman@toms-mbp.lan>
2024-06-10 14:03:47 -07:00
Tom Gotsman
cc0f0bcc22
Fix recharts errors part 1 (#3450) 2024-06-07 17:30:09 -07:00
Alexander Morgan
ad3134413b
Make better/less use of dict.keys() calls (#3455) 2024-06-07 14:28:44 -07:00
Masen Furer
bb44d51f2f
[REF-2879] Make client_state work without global refs (local only) (#3379)
* Make client_state work without global refs (local only)

* client_state: if the default is str, mark _var_is_string=True

Ensure that a string default is not rendered literally

* add `to_int` as a Var operation

* Allow an event handler lambda to return a Var in some cases

If an lambda is passed to an event trigger and it returns a single Var, then
treat it like the Var was directly passed for the event trigger.

This allows ClientState.set_var to be used within a lambda.
2024-06-07 13:29:52 -07:00
HongyuHansonYao
4e990d2716
Recharts supporting radix color, add event triggers (#3430)
Co-authored-by: Hongyu Yao <hongyuyao@hongyus-mbp-3.lan>
2024-06-07 09:47:12 -07:00
Masen Furer
6e719d4c83
[REF-2977] [REF-2982] Merge layout prop and automatic darkmode (#3442)
* [REF-2977] [REF-2982] Merge layout prop and automatic darkmode

* Expose `template` prop in rx.plotly
* Set default `template` to a color_mode_cond that responds to dark mode
* Merge user-provided `layout` and `template` props into the serialized
  plot data

* pyi_generator: avoid affecting the HTML Template component

* Raise warning when importing rx.plotly without plotly installed

* Remove PlotlyLib component and consolidate imports [fixup]
2024-06-07 09:42:50 -07:00
Thomas Brandého
3579513964
fix warning about props (#3451) 2024-06-06 13:45:22 -07:00
Thomas Brandého
e1244b4ea6
promote toast to main namespace (#3422) 2024-06-06 10:38:35 -07:00
Thomas Brandého
4b955d3831
clean up hooks and update component to use add_hooks (#3439) 2024-06-06 10:26:04 -07:00
Masen Furer
096ecf3113
[REF-3006] Inline code rendered in rx.markdown has extra trailing space (#3426)
Avoid replacing newlines with whitespaces... these show up in the rendered
output 😱

Fix #3425
2024-06-05 16:55:02 +02:00
Elijah Ahianyo
6420fb1252
[REF-3010] Circular Imports Fix (#3433) 2024-06-04 11:50:02 -07:00
HongyuHansonYao
1c29bff998
Set use resize handler default to true (#3424)
* init

* empty commit

* set true

* set true

* set true

---------

Co-authored-by: Hongyu Yao <hongyuyao@hongyus-mbp-3.lan>
2024-06-03 12:42:22 -07:00
Carlos
7a12fe2c5e
include resize and radius props to the text area component (#3383)
* include resize and radius props to the text area component

* run scripts/make_pyi.py for text_area

* pre-commit fixup

---------

Co-authored-by: Masen Furer <m_github@0x26.net>
2024-05-31 17:45:59 -07:00
Masen Furer
16fc3936a4
[REF-2202] Implement event handlers for Plotly (#3397)
* pyi_generator: do not generate kwargs for event trigger props

event triggers are handled separately

* Implement event handlers for Plotly

* py38 compat: from __future__ import annotations
2024-05-31 13:04:19 -07:00
HongyuHansonYao
d9e718d7bd
Layout property not pushed through on rx.plotly (#3394)
* init fix

* Update reflex/components/plotly/plotly.py

Co-authored-by: Masen Furer <m_github@0x26.net>

* plotly: treat `data` as a `dict`-type Var in _render

this allows the data to be passed directly as a figure or from a state var

* removed width height prop as they are no longer needed

* updated

* reverted some of the changes

* fixed unit tests

* regen pyi

---------

Co-authored-by: Hongyu Yao <hongyuyao@hongyus-mbp-3.lan>
Co-authored-by: Masen Furer <m_github@0x26.net>
Co-authored-by: Hongyu Yao <hongyuyao@Hongyus-MacBook-Pro-3.local>
2024-05-31 11:48:43 -07:00
Elijah Ahianyo
34bf25071a
[REF-2821]Improve Dynamic Imports (#3345)
* Improve import times

* add lazy loading to rx.el

* add lazy loading to reflex core components

* minor refactor

* Get imports working with reflex web

* get imports to work with all reflex examples

* refactor to define imports only in the root.

* lint

* deadcode remove

* update poetry deps

* unit tests fix

* app_harness fix

* app_harness fix

* pyi file generate

* pyi file generate

* sort pyi order

* fix pyi

* fix docker ci

* rework pyi-generator

* generate pyi for __init__ files

* test pyright

* test pyright ci

* partial pyright fix

* more pyright fix

* pyright fix

* fix pyi_generator

* add rx.serializer and others

* add future annotation import which fixes container CI, then also load recharts lazily

* add new pyi files

* pyright fix

* minor fixes for reflex-web and flexdown

* forward references for py38

* ruff fix

* pyi fix

* unit tests fix

* reduce coverage to 68%

* reduce coverage to 67%

* reduce coverage to 66%as a workaround to coverage's rounding issue

* reduce coverage to 66%as a workaround to coverage's rounding issue

* exclude lazy_loader dependency review checks.

* its lazy-loader

* Add docstrings and regenerate pyi files

* add link

* address Pr comments

* CI fix

* partially address PR comments.

* edit docstrings and fix integration tests

* fix typo in docstring

* pyi fix
2024-05-31 16:43:10 +00:00
Jishnu N
83d99889ec
refactor: radix section default size (#3406) 2024-05-30 20:52:01 -07:00
Kelechi Ebiri
d99c40a763
Add domain prop for the PolarRadiusAxis component (#3349) 2024-05-30 09:14:50 -07:00
Masen Furer
ac1c660bf0
Radix Themes + Tailwind Harmony (#3355) 2024-05-28 12:21:28 -07:00
Thomas Brandého
4bda3eb233
add style for orientation=vertical in tabs (#3332) 2024-05-21 16:21:46 -07:00
benedikt-bartscher
656914edef
fix rx.cond with ComputedVars and use union type (#3336) 2024-05-19 12:14:46 -07:00
Thomas Brandého
9ba179410b
wip connection toaster (#3242)
* wip connection toaster

* never duplicate toast for websocket-error

* wip update banner

* clean up PR

* fix for 3.8

* update pyi

* ConnectionToaster tweaks

* Use `has_too_many_connection_errors` to avoid showing the banner immediately
* Increase toast duration to avoid frequent, distracting flashing of the toast
* Automatically dismiss the toast when the connection comes back up
* Include `close_button` for user to dismiss the toast
* If the user dismisses the toast, do not show it again until the connection comes back and drops again
* Use `connection_error` var instead of a custom util_hook to get the message

* ConnectionPulser: hide behind toast

* Hide the connection pulser behind the toast (33x33)
* Add a title (tooltip) that shows the connection error

* Re-add connection pulser to default overlay_component

If the user dismisses the toast, we still want to indicate that the backend is
actually down.

* Fix pre-commit issue from main

---------

Co-authored-by: Masen Furer <m_github@0x26.net>
2024-05-16 22:08:32 -07:00
Thomas Brandého
47043ae787
throw error for componentstate in foreach (#3243) 2024-05-15 17:59:23 -07:00
Masen Furer
c5f32db756
[REF-2787] add_hooks supports Var-wrapped hooks (#3248)
* [REF-2787] add_hooks supports Var-wrapped hooks

* Fix VarData definition in .pyi file to allow removal of type ignore comments
* Var.create and Var.create_safe accept _var_data parameter
* Replace instances where a set of imports was being passed to VarData
* Update code throughout reduce use of `._replace` to add VarData

* Fixup: user hooks _var_data.imports will never be iterable, just a single ImportDict
2024-05-15 14:59:45 -07:00
Yummy-Yums
efa9fcd6d5
FIX - Error: img is a self-closing tag and must neither have children nor use dangerouslySetInnerHTML. (#3307)
* fixed errors

* fix CI errors

* CI fix again

* used ruff formatting

* pyi fix

* fix app harness

---------

Co-authored-by: Elijah <elijahahianyo@gmail.com>
2024-05-15 11:52:50 -07:00
Masen Furer
76c8b2dfbd
Get action, cancel, on_dismiss and on_auto_close working for rx.toast (#3216)
* Get `action` and `cancel` working for rx.toast

Respect defaults set in ToastProvider toast_options when firing a toast with
it's own ToastProps set.

* Update reflex/components/sonner/toast.py

Co-authored-by: Thomas Brandého <thomas.brandeho@gmail.com>

* Move queueEvent formatting into rx.utils.format module

Implement on_auto_close and on_dismiss callbacks inside ToastProps

* Update rx.call_script to use new format.format_queue_events

Replace duplicate logic in rx.call_script for handling the callback function.

* Move PropsBase to reflex.components.props

This base class will be exposed via rx._x.PropsBase and can be shared by other
wrapped components that need to pass a JS object full of extra props.

---------

Co-authored-by: Thomas Brandého <thomas.brandeho@gmail.com>
2024-05-15 11:54:52 +02:00
Masen Furer
1e9ccecea0
Restore the rx.color_mode.switch (#3294)
This was tentatively removed for 0.5.0 without a deprecation period, so adding
it back to avoid immediate breakage in existing apps.
2024-05-13 16:01:53 -07:00
Masen Furer
6bbd0eee8a
accordion: unify border radius specification (#3290) 2024-05-13 15:37:24 -07:00
Masen Furer
3715462eb4
Allow Component.add_style to return a regular dict (#3264)
* Allow `Component.add_style` to return a regular dict

It's more convenient to allow returning a regular dict without having to import
and wrap the value in `rx.style.Style`.

If the dict contains any Var or encoded VarData f-strings, these will be picked
up when the plain dicts are passed to Style.update().

Because Style.update already merges VarData, there is no reason to explicitly
merge it again in this function; this change keeps the merging logic inside the
Style class.

* Test for Style.update with existing Style with _var_data and kwargs

Should retain the _var_data from the original Style instance

* style: Avoid losing VarData in Style.update

If a Style class with _var_data is passed to `Style.update` along with kwargs,
then the _var_data was lost in the double-splat dictionary expansion.

Instead, only apply the kwargs to an existing or new Style instance to retain
_var_data and properly convert values.

* add_style return annotation is Dict[str, Any]

* nit: use lowercase dict in annotation
2024-05-10 20:25:04 -07:00
Masen Furer
b95e02a805
rx.accordion customizability overhaul (#3266)
* rx.accordion customizability overhaul

* fix low contrast font in "classic" variant
* relative font sizing, so setting font_size on the root works now
* use CSS vars wherever possible to make downstream styling easier
* optional dividers between accordion items
* support `radius`
* support `duration` and `easing` for controlling the animation
* fix animation jank while keeping padding_y
* lookup `data-variant` via CSS instead of passing props in python
* fix "surface" variant to use `--accent-surface` as radix intended

* Restore default variant: "classic"

* Fix accordion primitive radius
2024-05-10 16:50:02 -07:00
Martin Xu
2789f32134
[REF-2774] Add ReflexError and subclasses, send in telemetry (#3271) 2024-05-10 12:12:42 -07:00
Masen Furer
d767dc5fc7
[REF-2802] Foreach should respect modifications to children (#3263)
* Unit tests for add_style and component styles with foreach

The styles should be correctly applied for components that are rendered as part
of a foreach.

* [REF-2802] Foreach should respect modifications to children

Components are mutable, and there is logic that depends on walking through the
component tree and making modifications to components along the way. These
modifications _must_ be respected by foreach for consistency.

Modifications necessary to fix the bug:

* Change the hash function in `_render` to get a hash over the render_fn's
  `__code__` object. This way we get a stable hash without having to call the
  render function with bogus values.
* Call the render function once during `create` and save the result as a child
  of the Foreach component (tree walks will modify this instance).
* Directly render the original (and possibly modified) child component instead
  of calling the render_fn again and creating a new component instance at
  render time.

Additional changes because they're nice:

* Deprecate passing `**props` to `rx.foreach`. No one should have been
  doing this anyway, because it just does not work in any reasonable way.
* Raise `ForeachVarError` when the iterable type is Any
* Raise `ForeachRenderError` when the render function does not take 1 or 2 args.
* Link to the foreach component docs when either of those errors are hit.
* Change the `iterable` arg in `create` to accept `Var[Iterable] | Iterable`
  for better typing support (and remove some type: ignore comments)
* Simplify `_render` and `render` methods -- remove unused and potentially
  confusing code.

* Fixup: `to_bytes` requires `byteorder` arg before py3.11
2024-05-09 15:04:26 -07:00
Masen Furer
554d0d03d2
form: default width="100%" (#3261) 2024-05-09 13:11:54 -07:00
Masen Furer
6fb254ae3d
[REF-2789] Graceful deprecation of rx.input.root and rx.input.input (#3249)
* [REF-2789] Graceful deprecation of rx.input.root and rx.input.input

Handle previously valid code where rx.input.root wrapped
rx.input/rx.input.input and rx.input.slot.

Raise deprecation warnings with hints about how to refactor code.

Copy props from rx.input.root to children inputs and apply any rx.input.slot
components to children inputs in an attempt to keep existing code working as
best as possible.

Fix DebounceInput:
  * pass children through (for rx.input.slots)
  * pass _rename_props through (for color_scheme)

* Fix for case where `rx.input.root` had event triggers

Fix for case where `rx.input.root` had no input children
2024-05-08 14:39:22 -07:00
Masen Furer
7fee5d9e8d
Radix 3.0 tweaks (#3257)
* radix themes progress: expose `max` prop

It doesn't work yet, but PR filed for radix-ui/themes:
https://github.com/radix-ui/themes/pull/492

* Move `progress` and `toast` to `_x`

[REF-2779] Expose skeleton and data_list in top level namespace.
2024-05-08 14:02:37 -07:00
Masen Furer
6b8a6f353b
icon_button: Icon size should be specified as int pixels, not str (#3247) 2024-05-07 19:31:01 -07:00
Nikhil Rao
940afb2c92
Remove deprecations for 0.5.0 (#3222) 2024-05-07 08:55:42 -07:00
Masen Furer
aa8858b113
Expose color_scheme on TabsTrigger (#3112) 2024-05-06 18:36:44 -07:00
Thomas Brandého
57476966f3
add_style api (#3202) 2024-05-06 16:59:11 -07:00
Thomas Brandého
1817c30e22
add toast component (#3186) 2024-05-03 12:09:11 -07:00
Masen Furer
c636c91c9c
[REF-2273] Implement .setvar special EventHandler (#3163)
* Allow EventHandler args to be partially applied

When an EventHandler is called with an incomplete set of args it creates a
partial EventSpec. This change allows Component._create_event_chain to apply
remaining args from an args_spec to an existing EventSpec to make it
functional.

Instead of requiring the use of `lambda` functions to pass arguments to an
EventHandler, they can now be passed directly and any remaining args defined in
the event trigger will be applied after those.

* [REF-2273] Implement `.setvar` special EventHandler

All State subclasses will now have a special `setvar` EventHandler which
appears in the autocomplete drop down, passes static analysis, and canbe used
to set State Vars in response to event triggers.

Before:
    rx.input(value=State.a, on_change=State.set_a)

After:
    rx.input(value=State.a, on_change=State.setvar("a"))

This reduces the "magic" because `setvar` is statically defined on all State
subclasses.

* Catch invalid Var names and types at compile time

* Add test cases for State.setvar

* Use a proper redis-compatible token
2024-05-01 17:13:55 -07:00
Masen Furer
aeca983290
Allow StatefulComponent to also be rendered via __str__ (#3211)
This makes it easier to implement React "render functions" when wrapping
components that require children to be a callable.
2024-05-01 17:03:40 -07:00
khhan0130
be93b1280c
Update CodeBlock class to accept rx.color in custom_style (#3168) 2024-05-01 14:48:33 -07:00
Masen Furer
19d8f6c752
[REF-2523] Implement new public Component API (#3203) 2024-05-01 14:46:27 -07:00
benedikt-bartscher
e31b458a69
allow optional props with None default value (#3179) 2024-05-01 13:33:38 -07:00
Masen Furer
b7e85ecec4
[REF-2574] Default width for Stack (+children) and default padding for container (#3104) 2024-04-30 13:15:57 -07:00
Thomas Brandého
92cdc15896
IconButton for color_mode with nice default and a position props to control it (#3165) 2024-04-26 12:08:09 -07:00
Thomas Brandého
0ef695d842
add default underline for links (#3148) 2024-04-26 11:42:05 -07:00
Masen Furer
0a8aaea599
[REF-2682] Foreach over dict uses Tuple arg value (#3160)
* test_foreach: assert on arg _var_type

* [REF-2682] Foreach over dict uses Tuple arg value

When iterating over a Var with _var_type dict, the resulting arg value
_var_type should be Tuple[key, value] so it can be correctly used with other
var operations.

Fix #3157

* Correct _var_type for iteration over Tuple of multiple types

The arg value when iterating over a tuple could be any of the possible values
mentioned in the annotation.

When only one type is used, the Union collapses to the base type, at least in py3.11

* Add comments
2024-04-25 09:10:55 -07:00
Thomas Brandého
ac36bfc6ea
Radix 3.0 (#3159) 2024-04-25 08:33:29 -07:00
Thomas Brandého
0c0477cffb
extend rx.input allowed types (#3149) 2024-04-24 16:04:56 -07:00
Ogidi Ifechukwu
ce2bd2286e
Refactor upload component and add styled upload component (#3035) 2024-04-24 13:45:22 -07:00
Jirka Borovec
4d567b7ec1
ruff-format: unify Black with Ruff v0.1 (#2837)
* ruff-format: unify Black with Ruff

* ruff lint.

* v0.1.0

* run precommit

* hand fixing

* fix `not isinstance(...)`

Co-authored-by: Thomas Brandého <thomas.brandeho@gmail.com>

* rev isinstance(...) with noqa

* exclude = ["*.pyi"]

* apply precommit

* apply format

* revert pyi

* fixing

* Fix or

Co-authored-by: Thomas Brandého <thomas.brandeho@gmail.com>

* Update reflex/components/datadisplay/code.pyi

* Apply suggestions from code review

Co-authored-by: Thomas Brandého <thomas.brandeho@gmail.com>

* Update tests/components/core/test_colors.py

* Update reflex/app.py

* Update reflex/app.py

* Update benchmarks/test_benchmark_compile_pages.py

* Update benchmarks/test_benchmark_compile_pages.py

* Update benchmarks/test_benchmark_compile_pages.py

---------

Co-authored-by: Thomas Brandého <thomas.brandeho@gmail.com>
2024-04-23 14:40:06 -07:00
Elijah Ahianyo
8e4d6a4781
[REF-2636]Improve Error message for unsupported event trigger (#3147)
* Improve Error message for unsupported event trigger

* typo fix

* fix ci

* add tests

* Update reflex/components/component.py

Co-authored-by: Masen Furer <m_github@0x26.net>

* fix typo

---------

Co-authored-by: Masen Furer <m_github@0x26.net>
2024-04-23 14:36:26 -07:00
Thomas Brandého
36f564d5b0
Experimental layout components (#3066) 2024-04-18 10:54:19 -07:00
Masen Furer
a84bc1e04f
[REF-2586] Pass child event_trigger through DebounceInput (#3092) 2024-04-16 12:31:46 -07:00
Masen Furer
fc0be257a3
Fix annotated EventHandler (#3076) 2024-04-11 15:34:00 -07:00
hugehope
713ee06ab7
chore: fix some typos in comments (#3071) 2024-04-11 14:34:23 -07:00
Thomas Brandého
a3cb475247
minimal fix for upload_url in rx.download (#3073) 2024-04-11 14:08:16 -07:00
Elijah Ahianyo
04ab2b9a71
[REF-2524] Tuple unpacking should apply at component level (#3062) 2024-04-11 14:04:19 -07:00
Masen Furer
1a11941577
[REF-2392] Expose next.config.js transpilePackages key (#3006) 2024-04-11 13:50:42 -07:00
Tom Gotsman
0619017626
adding a reflex logo component (#2994) 2024-04-04 11:26:25 -07:00
Martin Xu
5274f04b66
[REF-2296] Rename recursive functions (#2999) 2024-04-04 09:26:31 -07:00
Swaraj Baral
ae3dfc6412
Added custom_attrs to the list of trigger props (#2980) 2024-04-04 09:24:48 -07:00
Thomas Brandého
bf0ebb8d09
Lendemor/improve coverage (#2988)
* add more tests

* add tests to raise coverage

* more tests, bump coverage to 73

* fix up icon_button test

* fix darglint for app.py

* fix utcnow usage warning

* set threshold to 72

* fix timestamp

* fix unit tests for linux-redis

* removed commented code and put a TODO
2024-04-04 14:31:43 +02:00
Thomas Brandého
34ee07ecd1
use dict instead of set to store hooks (#2995) 2024-04-03 17:13:42 -07:00
Aman Salwan
0e221f0984
Logic for removing the 'None' property along with its corresponding test case. (#2969) 2024-04-02 11:37:05 -07:00
Martin Xu
6d400eddc9
Revert "[REF-2269] Add add_imports API for component class (#2937)" (#2978)
This reverts commit 8edd1dfdc9.
2024-04-01 15:57:03 -07:00
Thomas Brandého
0af4770180
generate pyi files when building/publishing 3rd party component (#2945)
* build pyi files when building/publishing 3rd party

* fix typo in workflow

* add future annotation

* add tests to pass coverage check

* add more unit tests

* omit pyi_generator from test coverage

* change black from dev deps to direct deps

* remake all pyi

* format pyi if black is present, return as if otherwise

* fix requested changes

---------

Co-authored-by: Masen Furer <m_github@0x26.net>
2024-03-29 09:54:21 -07:00
Masen Furer
628c865530
Set is_hydrated=False at route onChangeStart (#2949)
* Connection pulser only depends on has_connection_errors

Avoid showing the WiFi error icon when the state is hydrating / navigating
because not being hydrated is not indicative of a connection error in itself.

* Set is_hydrated=False at route onChangeStart

When navigation event starts, set is_hydrated=False on the client side before
any on_load event is dispatched. This avoids a flickering problem where the
client browser navigates and briefly shows content on the page before
processing on_load events associated with the page.

Fix #2885

* Update pyi
2024-03-29 09:41:18 -07:00
Masen Furer
5510eaf820
[REF-2265] ComponentState: scaffold for copying State per Component instance (#2923)
* [REF-2265] ComponentState: scaffold for copying State per Component instance

Define a base ComponentState which can be used to easily create copies of the
given State definition (Vars and EventHandlers) that are tied to a particular
instance of a Component (returned by get_component)

* Define `State` field on `Component` for typing compatibility.

This is an Optional field of Type[State] and is populated by ComponentState.

* Add integration/test_component_state.py

Create two independent counters and increment them separately

* Add unit test for ComponentState
2024-03-29 09:22:25 -07:00
Martin Xu
f372402ee4
[REF-2272] Support declaring EventHandlers directly in component (#2952) 2024-03-29 06:26:07 -07:00
Masen Furer
8ef193809c
textarea: expose auto_height and enter_key_submit props (#2884)
* textarea: expose auto_height and enter_key_submit props

These two props improve the workflow for chat apps and other situations where
we want multiline input.

auto_height: resize the textarea based on its contents

enter_key_submit: pressing enter submits the enclosing form (shift+enter
inserts new lines)

Fix #1231

* Update pyi
2024-03-28 17:17:30 -07:00
Martin Xu
8edd1dfdc9
[REF-2269] Add add_imports API for component class (#2937) 2024-03-28 11:03:26 -07:00
Thomas Brandého
1810288007
remove inheritance from Flex for list components (#2936) 2024-03-28 10:58:36 -07:00
Thomas Brandého
94823f1317
fix hook order to use ref inside user hooks (#2906)
* fix hook order to use ref inside user hooks

* 2nd attempt to fix ref_hook order

* add missing definition

* remove print statements
2024-03-27 12:49:11 +01:00
Elijah Ahianyo
61c6728006
[REF-2229]Dedupe deprecation warnings (#2871)
* Dedupe deprecation warnings

* Update reflex/utils/console.py

Co-authored-by: Masen Furer <m_github@0x26.net>

* address PR comments

---------

Co-authored-by: Masen Furer <m_github@0x26.net>
2024-03-26 16:33:55 +00:00
Elijah Ahianyo
8a2b92f2e9
[REF-2117]:rx.color_mode_cond to work in f-strings (#2775) 2024-03-25 17:31:53 -07:00
Lucca Psaila
fbc6e7eba3
Update LUCIDE_ICON_LIST with newest Icon names (#2891) 2024-03-25 15:23:10 -07:00
Thomas Brandého
f19a6a8c8d
use radix box instead of chakra one for responsive elements (#2921) 2024-03-25 15:16:48 -07:00
Thomas Brandého
1a66e145b5
make list namespace to follow convention of other comps (#2879) 2024-03-19 18:16:54 -07:00
Masen Furer
f446d063fb
HighLevelSelect: pass flex_shrink prop to SelectTrigger (#2876)
* Revert "Remove width prop from rx.select (#2835)"

This reverts commit d14292dc9b.

* HighLevelSelect: pass flex_shrink prop to SelectTrigger

This allows the high level select to have width="100%" and also shrink-to-fit inside a parent container.

Fix #2824, kind of
2024-03-18 15:49:15 -07:00
Masen Furer
b89a18f632
Separate get_hooks and get_hooks_internal for stable output (#2710)
* Separate `get_hooks` and `get_hooks_internal` for stable output

When downstream component wrappers depend on State when writing hooks, they
need to be assured that all internal hooks (events, var hooks, memoized
handlers, etc) will be rendered prior to user-defined hooks.

This also makes it less likely for downstream components to feel the need to
overwrite `get_hooks` (no underscore) directly and break internal functioning
of Reflex components.

* Include internal hooks in AppWrap and Page

* Apply get_hooks_internal in a few more places
2024-03-15 16:16:09 -07:00
Thomas Brandého
1048f86dd3
convert text inside list_item to span and set icon display to inline (#2860)
* convert text inside list_item to span and set icon display to inline

* fix props

* add comment for reflex-web
2024-03-15 10:57:20 -07:00
Masen Furer
432fcd4a5b
Account for imports of @rx.memo components for frontend package installation (#2863)
* CustomComponent ignores the annotation type in favor of the passed value

Do not require rx.memo wrapped functions to have 100% correct annotations.

* test_custom_component_get_imports: test imports from wrapped custom components

* Account for imports of custom components for frontend installation

Create new ImportVar that only install the package to avoid rendering the
imports in the page that contains the custom component itself.

* Handle Imports that should never be installed

* Fix up double negative logic

* Perf Optimization: use the imports we already calculate during compile

Instead of augmenting _get_imports with a weird, slow, recursive crawl and
dictionary reconstruction, just use the imports that we compile into the
components.js file to install frontend packages needed by the custom
components.

Same effect, but adds essentially zero overhead to the compilation.
2024-03-15 09:59:59 -07:00
Masen Furer
036afa951a
Make @rx.memo work with state vars passed as props (#2810)
* Make @rx.memo work with state vars passed as props

Seems like this was a regression from the StatefulComponent refactor, because
trying to pass a state Var to a CustomComponent gave undefined, likely due to
`_get_vars` not accounting for `self.props` in CustomComponents.

With this change, it works.

Integration test added to `test_var_operations.py`

* Allow CustomComponent props to be Component

Avoid calling `.json()` on all Base types because the Var serializer already
does that, but this way, more specific types (like Component) can be serialized
differently.

When the type is Component, attach a VarData with the imports and hooks to when
the Var is rendered, it also carries the correct imports/hooks and does not
throw frontend errors.
2024-03-13 13:41:17 -07:00
Nikhil Rao
d14292dc9b
Remove width prop from rx.select (#2835) 2024-03-13 12:32:12 -07:00
Masen Furer
eb18ce90d5
[REF-2172] Add DECORATED_PAGES before compiling in thread (#2841) 2024-03-12 10:28:37 -07:00
Masen Furer
94e750a5f1
[REF-2157] Allow rx.download to resolve rx.get_upload_url links (#2813) 2024-03-11 12:29:34 -07:00