Skip to content

Commit 0c9b04b

Browse files
authored
Add data-slot props to the components (#13)
1 parent 44cf40e commit 0c9b04b

File tree

6 files changed

+60
-42
lines changed

6 files changed

+60
-42
lines changed

reflex_ui/components/base/avatar.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class AvatarRoot(AvatarBaseComponent):
3838
@classmethod
3939
def create(cls, *children, **props) -> Component:
4040
"""Create the avatar root component."""
41+
props["data-slot"] = "avatar"
4142
cls.set_class_name(ClassNames.ROOT, props)
4243
return super().create(*children, **props)
4344

@@ -59,6 +60,7 @@ class AvatarImage(AvatarBaseComponent):
5960
@classmethod
6061
def create(cls, *children, **props) -> Component:
6162
"""Create the avatar image component."""
63+
props["data-slot"] = "avatar-image"
6264
cls.set_class_name(ClassNames.IMAGE, props)
6365
return super().create(*children, **props)
6466

@@ -77,6 +79,7 @@ class AvatarFallback(AvatarBaseComponent):
7779
@classmethod
7880
def create(cls, *children, **props) -> Component:
7981
"""Create the avatar fallback component."""
82+
props["data-slot"] = "avatar-fallback"
8083
cls.set_class_name(ClassNames.FALLBACK, props)
8184
return super().create(*children, **props)
8285

reflex_ui/components/base/scroll_area.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class ScrollAreaRoot(ScrollAreaBaseComponent):
4848
@classmethod
4949
def create(cls, *children, **props) -> Component:
5050
"""Create the scroll area root component."""
51+
props["data-slot"] = "scroll-area"
5152
cls.set_class_name(ClassNames.ROOT, props)
5253
return super().create(*children, **props)
5354

@@ -63,6 +64,7 @@ class ScrollAreaViewport(ScrollAreaBaseComponent):
6364
@classmethod
6465
def create(cls, *children, **props) -> Component:
6566
"""Create the scroll area viewport component."""
67+
props["data-slot"] = "scroll-area-viewport"
6668
cls.set_class_name(ClassNames.VIEWPORT, props)
6769
return super().create(*children, **props)
6870

@@ -78,6 +80,7 @@ class ScrollAreaContent(ScrollAreaBaseComponent):
7880
@classmethod
7981
def create(cls, *children, **props) -> Component:
8082
"""Create the scroll area content component."""
83+
props["data-slot"] = "scroll-area-content"
8184
cls.set_class_name(ClassNames.CONTENT, props)
8285
return super().create(*children, **props)
8386

@@ -99,6 +102,7 @@ class ScrollAreaScrollbar(ScrollAreaBaseComponent):
99102
@classmethod
100103
def create(cls, *children, **props) -> Component:
101104
"""Create the scroll area scrollbar component."""
105+
props["data-slot"] = "scroll-area-scrollbar"
102106
orientation = props.get("orientation", "vertical")
103107

104108
scrollbar_classes = cn(
@@ -125,6 +129,7 @@ class ScrollAreaThumb(ScrollAreaBaseComponent):
125129
@classmethod
126130
def create(cls, *children, **props) -> Component:
127131
"""Create the scroll area thumb component."""
132+
props["data-slot"] = "scroll-area-thumb"
128133
cls.set_class_name(ClassNames.THUMB, props)
129134
return super().create(*children, **props)
130135

@@ -140,6 +145,7 @@ class ScrollAreaCorner(ScrollAreaBaseComponent):
140145
@classmethod
141146
def create(cls, *children, **props) -> Component:
142147
"""Create the scroll area corner component."""
148+
props["data-slot"] = "scroll-area-corner"
143149
cls.set_class_name(ClassNames.CORNER, props)
144150
return super().create(*children, **props)
145151

reflex_ui/components/base/select.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@ class SelectRoot(SelectBaseComponent):
9696
# Whether the user must choose a value before submitting a form
9797
required: Var[bool] = Var.create(False)
9898

99+
@classmethod
100+
def create(cls, *children, **props) -> Component:
101+
"""Create the select root component."""
102+
props["data-slot"] = "select"
103+
return super().create(*children, **props)
104+
99105

100106
class SelectTrigger(SelectBaseComponent):
101107
"""A button that opens the select menu."""
@@ -111,6 +117,7 @@ class SelectTrigger(SelectBaseComponent):
111117
@classmethod
112118
def create(cls, *children, **props) -> Component:
113119
"""Create the select trigger component."""
120+
props["data-slot"] = "select-trigger"
114121
cls.set_class_name(ClassNames.TRIGGER, props)
115122
return super().create(*children, **props)
116123

@@ -126,6 +133,7 @@ class SelectValue(SelectBaseComponent):
126133
@classmethod
127134
def create(cls, *children, **props) -> Component:
128135
"""Create the dialog trigger component."""
136+
props["data-slot"] = "select-value"
129137
cls.set_class_name(ClassNames.VALUE, props)
130138
return super().create(*children, **props)
131139

@@ -195,6 +203,7 @@ class SelectPositioner(SelectBaseComponent):
195203
@classmethod
196204
def create(cls, *children, **props) -> Component:
197205
"""Create the dialog trigger component."""
206+
props["data-slot"] = "select-positioner"
198207
cls.set_class_name(ClassNames.POSITIONER, props)
199208
return super().create(*children, **props)
200209

@@ -210,6 +219,7 @@ class SelectPopup(SelectBaseComponent):
210219
@classmethod
211220
def create(cls, *children, **props) -> Component:
212221
"""Create the dialog trigger component."""
222+
props["data-slot"] = "select-popup"
213223
cls.set_class_name(ClassNames.POPUP, props)
214224
return super().create(*children, **props)
215225

@@ -234,6 +244,7 @@ class SelectItem(SelectBaseComponent):
234244
@classmethod
235245
def create(cls, *children, **props) -> Component:
236246
"""Create the dialog trigger component."""
247+
props["data-slot"] = "select-item"
237248
cls.set_class_name(ClassNames.ITEM, props)
238249
return super().create(*children, **props)
239250

@@ -249,6 +260,7 @@ class SelectItemText(SelectBaseComponent):
249260
@classmethod
250261
def create(cls, *children, **props) -> Component:
251262
"""Create the dialog trigger component."""
263+
props["data-slot"] = "select-item-text"
252264
cls.set_class_name(ClassNames.ITEM_TEXT, props)
253265
return super().create(*children, **props)
254266

@@ -267,6 +279,7 @@ class SelectItemIndicator(SelectBaseComponent):
267279
@classmethod
268280
def create(cls, *children, **props) -> Component:
269281
"""Create the dialog trigger component."""
282+
props["data-slot"] = "select-item-indicator"
270283
cls.set_class_name(ClassNames.ITEM_INDICATOR, props)
271284
return super().create(*children, **props)
272285

@@ -282,6 +295,7 @@ class SelectGroup(SelectBaseComponent):
282295
@classmethod
283296
def create(cls, *children, **props) -> Component:
284297
"""Create the dialog trigger component."""
298+
props["data-slot"] = "select-group"
285299
cls.set_class_name(ClassNames.GROUP, props)
286300
return super().create(*children, **props)
287301

@@ -297,6 +311,7 @@ class SelectGroupLabel(SelectBaseComponent):
297311
@classmethod
298312
def create(cls, *children, **props) -> Component:
299313
"""Create the dialog trigger component."""
314+
props["data-slot"] = "select-group-label"
300315
cls.set_class_name(ClassNames.GROUP_LABEL, props)
301316
return super().create(*children, **props)
302317

@@ -315,6 +330,7 @@ class SelectSeparator(SelectBaseComponent):
315330
@classmethod
316331
def create(cls, *children, **props) -> Component:
317332
"""Create the dialog trigger component."""
333+
props["data-slot"] = "select-separator"
318334
cls.set_class_name(ClassNames.SEPARATOR, props)
319335
return super().create(*children, **props)
320336

@@ -330,6 +346,7 @@ class SelectIcon(SelectBaseComponent):
330346
@classmethod
331347
def create(cls, *children, **props) -> Component:
332348
"""Create the dialog trigger component."""
349+
props["data-slot"] = "select-icon"
333350
cls.set_class_name(ClassNames.ICON, props)
334351
return super().create(*children, **props)
335352

@@ -345,6 +362,7 @@ class SelectArrow(SelectBaseComponent):
345362
@classmethod
346363
def create(cls, *children, **props) -> Component:
347364
"""Create the dialog trigger component."""
365+
props["data-slot"] = "select-arrow"
348366
cls.set_class_name(ClassNames.ARROW, props)
349367
return super().create(*children, **props)
350368

@@ -363,6 +381,7 @@ class SelectScrollUpArrow(SelectBaseComponent):
363381
@classmethod
364382
def create(cls, *children, **props) -> Component:
365383
"""Create the dialog trigger component."""
384+
props["data-slot"] = "select-scroll-up-arrow"
366385
cls.set_class_name(ClassNames.SCROLL_ARROW_UP, props)
367386
return super().create(*children, **props)
368387

@@ -381,6 +400,7 @@ class SelectScrollDownArrow(SelectBaseComponent):
381400
@classmethod
382401
def create(cls, *children, **props) -> Component:
383402
"""Create the dialog trigger component."""
403+
props["data-slot"] = "select-scroll-down-arrow"
384404
cls.set_class_name(ClassNames.SCROLL_ARROW_DOWN, props)
385405
return super().create(*children, **props)
386406

reflex_ui/components/base/slider.py

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
from reflex.vars import Var
99

1010
from reflex_ui.components.base_ui import PACKAGE_NAME, BaseUIComponent
11-
from reflex_ui.utils.twmerge import cn
1211

1312
LiteralOrientation = Literal["horizontal", "vertical"]
1413

@@ -99,6 +98,7 @@ class SliderRoot(SliderBaseComponent):
9998
@classmethod
10099
def create(cls, *children, **props) -> Component:
101100
"""Create the slider root component."""
101+
props["data-slot"] = "slider"
102102
cls.set_class_name(ClassNames.ROOT, props)
103103
return super().create(*children, **props)
104104

@@ -114,6 +114,7 @@ class SliderValue(SliderBaseComponent):
114114
@classmethod
115115
def create(cls, *children, **props) -> Component:
116116
"""Create the slider value component."""
117+
props["data-slot"] = "slider-value"
117118
cls.set_class_name(ClassNames.VALUE, props)
118119
return super().create(*children, **props)
119120

@@ -129,6 +130,7 @@ class SliderControl(SliderBaseComponent):
129130
@classmethod
130131
def create(cls, *children, **props) -> Component:
131132
"""Create the slider control component."""
133+
props["data-slot"] = "slider-control"
132134
cls.set_class_name(ClassNames.CONTROL, props)
133135
return super().create(*children, **props)
134136

@@ -144,6 +146,7 @@ class SliderTrack(SliderBaseComponent):
144146
@classmethod
145147
def create(cls, *children, **props) -> Component:
146148
"""Create the slider track component."""
149+
props["data-slot"] = "slider-track"
147150
cls.set_class_name(ClassNames.TRACK, props)
148151
return super().create(*children, **props)
149152

@@ -159,6 +162,7 @@ class SliderIndicator(SliderBaseComponent):
159162
@classmethod
160163
def create(cls, *children, **props) -> Component:
161164
"""Create the slider indicator component."""
165+
props["data-slot"] = "slider-indicator"
162166
cls.set_class_name(ClassNames.INDICATOR, props)
163167
return super().create(*children, **props)
164168

@@ -183,22 +187,14 @@ class SliderThumb(SliderBaseComponent):
183187
@classmethod
184188
def create(cls, *children, **props) -> Component:
185189
"""Create the slider thumb component."""
190+
props["data-slot"] = "slider-thumb"
186191
cls.set_class_name(ClassNames.THUMB, props)
187192
return super().create(*children, **props)
188193

189194

190195
class HighLevelSlider(SliderRoot):
191196
"""High-level wrapper for the Slider component."""
192197

193-
# Class name for the indicator
194-
indicator_class_name: Var[str]
195-
196-
# Class name for the track
197-
track_class_name: Var[str]
198-
199-
# Class name for the control
200-
control_class_name: Var[str]
201-
202198
@classmethod
203199
def create(cls, **props) -> Component:
204200
"""Create a complete slider component.
@@ -209,21 +205,12 @@ def create(cls, **props) -> Component:
209205
Returns:
210206
The slider component.
211207
"""
212-
# Extract custom class names for the indicator, track, and control
213-
indicator_class_name = props.pop("indicator_class_name", "")
214-
track_class_name = props.pop("track_class_name", "")
215-
control_class_name = props.pop("control_class_name", "")
216-
217208
return SliderRoot.create(
218209
SliderControl.create(
219210
SliderTrack.create(
220-
SliderIndicator.create(
221-
class_name=cn(ClassNames.INDICATOR, indicator_class_name)
222-
),
211+
SliderIndicator.create(),
223212
SliderThumb.create(),
224-
class_name=cn(ClassNames.TRACK, track_class_name),
225213
),
226-
class_name=cn(ClassNames.CONTROL, control_class_name),
227214
),
228215
**props,
229216
)

reflex_ui/components/base/switch.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class SwitchRoot(SwitchBaseComponent):
6464
@classmethod
6565
def create(cls, *children, **props) -> Component:
6666
"""Create the switch root component."""
67+
props["data-slot"] = "switch"
6768
cls.set_class_name(ClassNames.ROOT, props)
6869
return super().create(*children, **props)
6970

@@ -79,6 +80,7 @@ class SwitchThumb(SwitchBaseComponent):
7980
@classmethod
8081
def create(cls, *children, **props) -> Component:
8182
"""Create the switch thumb component."""
83+
props["data-slot"] = "switch-thumb"
8284
cls.set_class_name(ClassNames.THUMB, props)
8385
return super().create(*children, **props)
8486

reflex_ui/components/base/tooltip.py

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -36,27 +36,6 @@ def import_var(self):
3636
return ImportVar(tag="Tooltip", package_path="", install=False)
3737

3838

39-
class TooltipProvider(TooltipBaseComponent):
40-
"""Provider component for tooltips."""
41-
42-
tag = "Tooltip.Provider"
43-
44-
# How long to wait before opening a tooltip. Specified in milliseconds.
45-
delay: Var[int]
46-
47-
# How long to wait before closing a tooltip. Specified in milliseconds.
48-
close_delay: Var[int]
49-
50-
# Another tooltip will open instantly if the previous tooltip is closed within this timeout. Specified in milliseconds. Defaults to 400.
51-
timeout: Var[int]
52-
53-
@classmethod
54-
def create(cls, *children, **props) -> Component:
55-
"""Create the tooltip provider component."""
56-
props["data-slot"] = "tooltip-provider"
57-
return super().create(*children, **props)
58-
59-
6039
class TooltipRoot(TooltipBaseComponent):
6140
"""Root component for a tooltip."""
6241

@@ -92,7 +71,28 @@ class TooltipRoot(TooltipBaseComponent):
9271
@classmethod
9372
def create(cls, *children, **props) -> Component:
9473
"""Create the tooltip root component."""
95-
props["data-slot"] = "tooltip-root"
74+
props["data-slot"] = "tooltip"
75+
return super().create(*children, **props)
76+
77+
78+
class TooltipProvider(TooltipBaseComponent):
79+
"""Provider component for tooltips."""
80+
81+
tag = "Tooltip.Provider"
82+
83+
# How long to wait before opening a tooltip. Specified in milliseconds.
84+
delay: Var[int]
85+
86+
# How long to wait before closing a tooltip. Specified in milliseconds.
87+
close_delay: Var[int]
88+
89+
# Another tooltip will open instantly if the previous tooltip is closed within this timeout. Specified in milliseconds. Defaults to 400.
90+
timeout: Var[int]
91+
92+
@classmethod
93+
def create(cls, *children, **props) -> Component:
94+
"""Create the tooltip provider component."""
95+
props["data-slot"] = "tooltip-provider"
9696
return super().create(*children, **props)
9797

9898

0 commit comments

Comments
 (0)