@rbxts/react-clean-ui 1.0.38 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/Components/Chart/BarChart.d.ts +1 -0
- package/out/Components/Chart/BarChart.luau +149 -112
- package/out/Components/Chart/Pie.d.ts +1 -0
- package/out/Components/Chart/Pie.luau +21 -5
- package/out/Components/Decorator/BoxShadow.d.ts +1 -0
- package/out/Components/Decorator/BoxShadow.luau +12 -5
- package/out/Components/Decorator/Corners.d.ts +1 -0
- package/out/Components/Decorator/Corners.luau +12 -3
- package/out/Components/Decorator/Padding.d.ts +3 -1
- package/out/Components/Decorator/Padding.luau +12 -7
- package/out/Components/Input/Button.d.ts +1 -0
- package/out/Components/Input/Button.luau +44 -33
- package/out/Components/Input/Checkbox.d.ts +1 -0
- package/out/Components/Input/Checkbox.luau +23 -17
- package/out/Components/Input/HoverButton.d.ts +1 -0
- package/out/Components/Input/HoverButton.luau +44 -40
- package/out/Components/Input/Increment.d.ts +1 -0
- package/out/Components/Input/Increment.luau +10 -3
- package/out/Components/Input/Input.d.ts +3 -1
- package/out/Components/Input/Input.luau +96 -87
- package/out/Components/Input/Input.validation.d.ts +1 -0
- package/out/Components/Input/Input.validation.luau +21 -0
- package/out/Components/Input/Select.d.ts +9 -0
- package/out/Components/Input/Select.luau +311 -34
- package/out/Components/Input/Slider.luau +44 -29
- package/out/Components/Input/Switch.d.ts +9 -0
- package/out/Components/Input/Switch.luau +147 -0
- package/out/Components/Input/index.d.ts +1 -0
- package/out/Components/Input/init.luau +3 -0
- package/out/Components/Interaction/Modal.d.ts +14 -0
- package/out/Components/Interaction/Modal.luau +276 -0
- package/out/Components/Interaction/Toast.d.ts +2 -1
- package/out/Components/Interaction/Toast.luau +53 -28
- package/out/Components/Interaction/Tooltip.luau +36 -24
- package/out/Components/Interaction/index.d.ts +1 -0
- package/out/Components/Interaction/init.luau +3 -0
- package/out/Components/Layout/Accordion.d.ts +4 -3
- package/out/Components/Layout/Accordion.luau +68 -21
- package/out/Components/Layout/Column.d.ts +1 -0
- package/out/Components/Layout/Column.luau +11 -6
- package/out/Components/Layout/Container.d.ts +1 -0
- package/out/Components/Layout/Container.luau +22 -16
- package/out/Components/Layout/Draggable.luau +25 -3
- package/out/Components/Layout/Fieldset.d.ts +1 -0
- package/out/Components/Layout/Fieldset.luau +14 -8
- package/out/Components/Layout/FlexItem.luau +7 -0
- package/out/Components/Layout/Group.d.ts +1 -0
- package/out/Components/Layout/Group.luau +14 -9
- package/out/Components/Layout/HStack.d.ts +4 -0
- package/out/Components/Layout/HStack.luau +17 -9
- package/out/Components/Layout/Pagination.d.ts +32 -0
- package/out/Components/Layout/Pagination.luau +405 -0
- package/out/Components/Layout/Row.d.ts +1 -0
- package/out/Components/Layout/Row.luau +22 -16
- package/out/Components/Layout/Scroller.d.ts +1 -0
- package/out/Components/Layout/Scroller.luau +22 -15
- package/out/Components/Layout/Table.d.ts +31 -0
- package/out/Components/Layout/Table.luau +342 -0
- package/out/Components/Layout/Tabs.d.ts +22 -11
- package/out/Components/Layout/Tabs.luau +139 -122
- package/out/Components/Layout/VStack.d.ts +3 -0
- package/out/Components/Layout/VStack.luau +17 -10
- package/out/Components/Layout/index.d.ts +2 -0
- package/out/Components/Layout/init.luau +6 -0
- package/out/Components/Navigation/Menu.d.ts +1 -0
- package/out/Components/Navigation/Menu.luau +14 -3
- package/out/Components/Surface/Box.d.ts +1 -0
- package/out/Components/Surface/Box.luau +29 -27
- package/out/Components/Surface/Card.d.ts +7 -2
- package/out/Components/Surface/Card.luau +106 -65
- package/out/Components/Surface/Icon.d.ts +1 -0
- package/out/Components/Surface/Icon.luau +25 -16
- package/out/Components/Typography/Text.d.ts +1 -0
- package/out/Components/Typography/Text.luau +57 -47
- package/out/Contexts/index.d.ts +1 -0
- package/out/Contexts/init.luau +3 -0
- package/out/Contexts/modal.context.d.ts +15 -0
- package/out/Contexts/modal.context.luau +26 -0
- package/out/Contexts/toast.context.d.ts +1 -0
- package/out/Helpers/spacing.helper.d.ts +3 -2
- package/out/Helpers/spacing.helper.luau +102 -18
- package/out/Interfaces/css.types.d.ts +2 -0
- package/out/Interfaces/css.types.luau +4 -0
- package/out/Interfaces/index.d.ts +4 -4
- package/out/Interfaces/init.luau +0 -12
- package/out/Providers/app.provider.luau +2 -1
- package/out/Providers/index.d.ts +1 -0
- package/out/Providers/init.luau +3 -0
- package/out/Providers/modal.provider.d.ts +6 -0
- package/out/Providers/modal.provider.luau +86 -0
- package/out/Providers/overlay.provider.luau +1 -0
- package/out/Theme/theme.template.d.ts +99 -3
- package/out/Theme/themes/dark.theme.luau +103 -0
- package/out/Theme/themes/default.theme.luau +130 -0
- package/out/Theme/themes/sandstone.theme.luau +103 -0
- package/out/Theme/themes/wooden.theme.luau +235 -2
- package/package.json +2 -2
|
@@ -103,50 +103,61 @@ local function TooltipPopup(props)
|
|
|
103
103
|
until true
|
|
104
104
|
local intent = ColorHelper:getIntentColors(theme, props.intent, "default", theme.components.tooltip.intents)
|
|
105
105
|
local padding = SpacingHelper:ResolveNumberPadding(SpacingHelper:GetPadding(theme, props.spacing, theme.components.tooltip.spacing))
|
|
106
|
+
local _attributes = {}
|
|
107
|
+
local _condition = props.name
|
|
108
|
+
if _condition == nil then
|
|
109
|
+
_condition = "Tooltip"
|
|
110
|
+
end
|
|
111
|
+
_attributes.key = _condition
|
|
112
|
+
_attributes.Position = UDim2.fromOffset(position.X, position.Y)
|
|
113
|
+
_attributes.AnchorPoint = anchor
|
|
114
|
+
_attributes.Size = UDim2.fromOffset(0, 0)
|
|
115
|
+
_attributes.AutomaticSize = Enum.AutomaticSize.XY
|
|
116
|
+
_attributes.GroupTransparency = groupTransparency
|
|
117
|
+
_attributes.BackgroundTransparency = 1
|
|
106
118
|
local _exp_1 = React.createElement(Padding, {
|
|
107
119
|
resolvedPadding = resolvedPadding,
|
|
108
120
|
})
|
|
109
|
-
local
|
|
110
|
-
setmetatable(
|
|
111
|
-
|
|
112
|
-
local _exp_2 = React.createElement(BoxShadow,
|
|
121
|
+
local _attributes_1 = table.clone(props)
|
|
122
|
+
setmetatable(_attributes_1, nil)
|
|
123
|
+
_attributes_1.value = theme.components.tooltip.boxShadow
|
|
124
|
+
local _exp_2 = React.createElement(BoxShadow, _attributes_1)
|
|
113
125
|
local _exp_3 = React.createElement(Corners, {
|
|
114
126
|
radius = theme.components.button.cornerRadius,
|
|
115
127
|
})
|
|
116
|
-
local
|
|
117
|
-
setmetatable(
|
|
118
|
-
|
|
119
|
-
local _exp_4 = React.createElement(Padding,
|
|
120
|
-
local
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
128
|
+
local _attributes_2 = table.clone(props)
|
|
129
|
+
setmetatable(_attributes_2, nil)
|
|
130
|
+
_attributes_2.resolvedPadding = padding
|
|
131
|
+
local _exp_4 = React.createElement(Padding, _attributes_2)
|
|
132
|
+
local _attributes_3 = {
|
|
133
|
+
key = "Stroke",
|
|
134
|
+
}
|
|
135
|
+
local _condition_1 = props["border-thickness"]
|
|
136
|
+
if _condition_1 == nil then
|
|
137
|
+
_condition_1 = theme.components.box.borderThickness
|
|
124
138
|
end
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
local _exp_5 = React.createElement("uistroke",
|
|
139
|
+
_attributes_3.Thickness = _condition_1
|
|
140
|
+
_attributes_3.BorderStrokePosition = Enum.BorderStrokePosition.Inner
|
|
141
|
+
_attributes_3.Color = props["border-color"] or intent.borderColor
|
|
142
|
+
local _exp_5 = React.createElement("uistroke", _attributes_3)
|
|
129
143
|
local _content = props.content
|
|
130
|
-
return React.createElement("canvasgroup", {
|
|
131
|
-
|
|
132
|
-
AnchorPoint = anchor,
|
|
133
|
-
Size = UDim2.fromOffset(0, 0),
|
|
134
|
-
AutomaticSize = Enum.AutomaticSize.XY,
|
|
135
|
-
GroupTransparency = groupTransparency,
|
|
136
|
-
BackgroundTransparency = 1,
|
|
137
|
-
}, React.createElement("frame", {
|
|
144
|
+
return React.createElement("canvasgroup", _attributes, React.createElement("frame", {
|
|
145
|
+
key = "ShadowPadding",
|
|
138
146
|
Size = UDim2.fromOffset(0, 0),
|
|
139
147
|
AutomaticSize = Enum.AutomaticSize.XY,
|
|
140
148
|
BackgroundTransparency = 1,
|
|
141
149
|
}, _exp_1, React.createElement("frame", {
|
|
150
|
+
key = "Content",
|
|
142
151
|
Size = UDim2.fromOffset(0, 0),
|
|
143
152
|
AutomaticSize = Enum.AutomaticSize.XY,
|
|
144
153
|
BackgroundColor3 = intent.backgroundColor,
|
|
145
154
|
BackgroundTransparency = intent.backgroundTransparency,
|
|
146
155
|
}, _exp_2, _exp_3, _exp_4, _exp_5, if type(_content) == "string" then React.createElement(Text, {
|
|
156
|
+
name = "TooltipText",
|
|
147
157
|
text = props.content,
|
|
148
158
|
TextColor3 = intent.textColor,
|
|
149
159
|
}) else props.content)), pointerSize > 0 and React.createElement("frame", {
|
|
160
|
+
key = "Pointer",
|
|
150
161
|
Size = UDim2.fromOffset(pointerSize, pointerSize),
|
|
151
162
|
AnchorPoint = pointerAnchor,
|
|
152
163
|
Position = pointerPosition,
|
|
@@ -156,6 +167,7 @@ local function TooltipPopup(props)
|
|
|
156
167
|
BackgroundTransparency = intent.backgroundTransparency,
|
|
157
168
|
Rotation = 45,
|
|
158
169
|
}, React.createElement("uigradient", {
|
|
170
|
+
key = "Gradient",
|
|
159
171
|
Transparency = NumberSequence.new({ NumberSequenceKeypoint.new(0, 1), NumberSequenceKeypoint.new(0.4999, 1), NumberSequenceKeypoint.new(0.5, 0), NumberSequenceKeypoint.new(1, 0) }),
|
|
160
172
|
Rotation = pointerRotation,
|
|
161
173
|
})))
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import React from "@rbxts/react";
|
|
2
|
-
import { IconName, ScalableElementProps } from "../../Interfaces";
|
|
2
|
+
import { IconName, PaddingProps, ScalableElementProps } from "../../Interfaces";
|
|
3
3
|
interface AccordionItemProps {
|
|
4
4
|
children?: React.ReactNode;
|
|
5
5
|
value: string;
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
}
|
|
8
8
|
declare function AccordionItem(_props: AccordionItemProps): undefined;
|
|
9
|
-
interface AccordionHeaderProps {
|
|
9
|
+
interface AccordionHeaderProps extends PaddingProps {
|
|
10
10
|
children?: React.ReactNode | string;
|
|
11
11
|
icon?: IconName;
|
|
12
12
|
text?: string;
|
|
13
13
|
}
|
|
14
14
|
declare function AccordionHeader(_props: AccordionHeaderProps): undefined;
|
|
15
|
-
interface AccordionContentProps {
|
|
15
|
+
interface AccordionContentProps extends PaddingProps {
|
|
16
16
|
children?: React.ReactNode;
|
|
17
17
|
text?: string;
|
|
18
18
|
}
|
|
@@ -24,6 +24,7 @@ export interface AccordionProps extends ScalableElementProps {
|
|
|
24
24
|
defaultValue?: string;
|
|
25
25
|
value?: string;
|
|
26
26
|
onValueChange?: (value: string | undefined) => void;
|
|
27
|
+
name?: string;
|
|
27
28
|
}
|
|
28
29
|
type AccordionComponent = React.ForwardRefExoticComponent<AccordionProps & React.RefAttributes<ImageLabel>> & {
|
|
29
30
|
Item: typeof AccordionItem;
|
|
@@ -5,6 +5,7 @@ local useTween = TS.import(script, TS.getModule(script, "@rbxts", "react-ripple"
|
|
|
5
5
|
local CleanThemeContext = TS.import(script, script.Parent.Parent.Parent, "Contexts").CleanThemeContext
|
|
6
6
|
local _Helpers = TS.import(script, script.Parent.Parent.Parent, "Helpers")
|
|
7
7
|
local ColorHelper = _Helpers.ColorHelper
|
|
8
|
+
local CssHelper = _Helpers.CssHelper
|
|
8
9
|
local SizeHelper = _Helpers.SizeHelper
|
|
9
10
|
local SpacingHelper = _Helpers.SpacingHelper
|
|
10
11
|
local TypographyHelper = _Helpers.TypographyHelper
|
|
@@ -75,15 +76,17 @@ local function AccordionHeaderVisual(props)
|
|
|
75
76
|
return props.header.children
|
|
76
77
|
end
|
|
77
78
|
local _exp = React.createElement(Padding, {
|
|
78
|
-
resolvedPadding = SpacingHelper:GetResolvedPadding(theme,
|
|
79
|
+
resolvedPadding = SpacingHelper:GetResolvedPadding(theme, props.header, theme.components.accordion.header.spacing, theme.components.accordion.header.padding),
|
|
79
80
|
})
|
|
80
81
|
local _exp_1 = props.header.icon ~= nil and React.createElement(Icon, {
|
|
82
|
+
name = "AccordionHeaderIcon",
|
|
81
83
|
icon = props.header.icon,
|
|
82
84
|
color = colors.textColor,
|
|
83
85
|
})
|
|
84
86
|
local _result_1
|
|
85
87
|
if props.header.text ~= nil then
|
|
86
88
|
_result_1 = React.createElement(Text, {
|
|
89
|
+
name = "AccordionHeaderText",
|
|
87
90
|
text = props.header.text,
|
|
88
91
|
TextColor3 = colors.textColor,
|
|
89
92
|
typography = TypographyHelper:getTypography(theme, nil, colors.typography or theme.components.accordion.header.typography),
|
|
@@ -91,6 +94,7 @@ local function AccordionHeaderVisual(props)
|
|
|
91
94
|
else
|
|
92
95
|
local _children = props.header.children
|
|
93
96
|
_result_1 = if type(_children) == "string" then React.createElement(Text, {
|
|
97
|
+
name = "AccordionHeaderText",
|
|
94
98
|
text = props.header.children,
|
|
95
99
|
TextColor3 = colors.textColor,
|
|
96
100
|
typography = TypographyHelper:getTypography(theme, nil, colors.typography or theme.components.accordion.header.typography),
|
|
@@ -101,9 +105,13 @@ local function AccordionHeaderVisual(props)
|
|
|
101
105
|
Wraps = false,
|
|
102
106
|
HorizontalFlex = Enum.UIFlexAlignment.Fill,
|
|
103
107
|
}, _exp_1, React.createElement(Container, {
|
|
108
|
+
name = "AccordionHeaderTextContainer",
|
|
104
109
|
Size = UDim2.new(1, theme.components.accordion.header.indicatorSize, 0, 0),
|
|
105
110
|
AutomaticSize = Enum.AutomaticSize.Y,
|
|
106
|
-
}, _result_1), React.createElement(Container,
|
|
111
|
+
}, _result_1), React.createElement(Container, {
|
|
112
|
+
name = "AccordionChevronContainer",
|
|
113
|
+
}, React.createElement(Icon, {
|
|
114
|
+
name = "AccordionChevronIcon",
|
|
107
115
|
icon = "chevron-down",
|
|
108
116
|
color = if props.disabled then colors.textColor else theme.components.accordion.header.indicatorColor,
|
|
109
117
|
Size = UDim2.fromOffset(theme.components.accordion.header.indicatorSize, theme.components.accordion.header.indicatorSize),
|
|
@@ -148,9 +156,13 @@ local function RenderedAccordionItem(props)
|
|
|
148
156
|
local defaultColors = ColorHelper:getIntentColors(theme, "primary", if props.disabled then "disabled" else "default", theme.components.accordion.header.intents)
|
|
149
157
|
local hoverColors = ColorHelper:getIntentColors(theme, "primary", "hover", theme.components.accordion.header.intents)
|
|
150
158
|
local focusColors = ColorHelper:getIntentColors(theme, "primary", "focus", theme.components.accordion.header.intents)
|
|
159
|
+
local defaultBackgroundImage = CssHelper:resolveBackgroundImage(defaultColors.backgroundImage)
|
|
160
|
+
local hoverBackgroundImage = CssHelper:resolveBackgroundImage(hoverColors.backgroundImage)
|
|
161
|
+
local focusBackgroundImage = CssHelper:resolveBackgroundImage(focusColors.backgroundImage)
|
|
151
162
|
local _condition = not props.first
|
|
152
163
|
if _condition then
|
|
153
164
|
local _attributes = {
|
|
165
|
+
key = "Divider",
|
|
154
166
|
BackgroundColor3 = theme.components.accordion.borderColor,
|
|
155
167
|
BackgroundTransparency = 0,
|
|
156
168
|
BorderSizePixel = 0,
|
|
@@ -161,6 +173,7 @@ local function RenderedAccordionItem(props)
|
|
|
161
173
|
_condition = (React.createElement("frame", _attributes))
|
|
162
174
|
end
|
|
163
175
|
local _attributes = {
|
|
176
|
+
name = `AccordionHeaderButton-{props.value}`,
|
|
164
177
|
isSelected = props.open,
|
|
165
178
|
}
|
|
166
179
|
local _object = {
|
|
@@ -169,7 +182,6 @@ local function RenderedAccordionItem(props)
|
|
|
169
182
|
AutoButtonColor = false,
|
|
170
183
|
AutomaticSize = Enum.AutomaticSize.Y,
|
|
171
184
|
Size = UDim2.fromScale(1, 0),
|
|
172
|
-
ImageTransparency = 1,
|
|
173
185
|
BackgroundColor3 = defaultColors.backgroundColor,
|
|
174
186
|
}
|
|
175
187
|
local _left = "BackgroundTransparency"
|
|
@@ -179,6 +191,13 @@ local function RenderedAccordionItem(props)
|
|
|
179
191
|
end
|
|
180
192
|
_object[_left] = _condition_1
|
|
181
193
|
_object.BorderSizePixel = 0
|
|
194
|
+
_object.Image = defaultBackgroundImage.Image
|
|
195
|
+
_object.ImageColor3 = defaultBackgroundImage.ImageColor3
|
|
196
|
+
_object.ImageTransparency = defaultBackgroundImage.ImageTransparency
|
|
197
|
+
_object.ScaleType = defaultBackgroundImage.ScaleType
|
|
198
|
+
_object.SliceCenter = defaultBackgroundImage.SliceCenter
|
|
199
|
+
_object.SliceScale = defaultBackgroundImage.SliceScale
|
|
200
|
+
_object.TileSize = defaultBackgroundImage.TileSize
|
|
182
201
|
_object.Event = {
|
|
183
202
|
Activated = props.onActivate,
|
|
184
203
|
}
|
|
@@ -192,6 +211,13 @@ local function RenderedAccordionItem(props)
|
|
|
192
211
|
_condition_2 = 0
|
|
193
212
|
end
|
|
194
213
|
_object_1[_left_1] = _condition_2
|
|
214
|
+
_object_1.Image = hoverBackgroundImage.Image
|
|
215
|
+
_object_1.ImageColor3 = hoverBackgroundImage.ImageColor3
|
|
216
|
+
_object_1.ImageTransparency = hoverBackgroundImage.ImageTransparency
|
|
217
|
+
_object_1.ScaleType = hoverBackgroundImage.ScaleType
|
|
218
|
+
_object_1.SliceCenter = hoverBackgroundImage.SliceCenter
|
|
219
|
+
_object_1.SliceScale = hoverBackgroundImage.SliceScale
|
|
220
|
+
_object_1.TileSize = hoverBackgroundImage.TileSize
|
|
195
221
|
_attributes.hover = _object_1
|
|
196
222
|
local _object_2 = {
|
|
197
223
|
BackgroundColor3 = focusColors.backgroundColor,
|
|
@@ -202,12 +228,21 @@ local function RenderedAccordionItem(props)
|
|
|
202
228
|
_condition_3 = 0
|
|
203
229
|
end
|
|
204
230
|
_object_2[_left_2] = _condition_3
|
|
231
|
+
_object_2.Image = focusBackgroundImage.Image
|
|
232
|
+
_object_2.ImageColor3 = focusBackgroundImage.ImageColor3
|
|
233
|
+
_object_2.ImageTransparency = focusBackgroundImage.ImageTransparency
|
|
234
|
+
_object_2.ScaleType = focusBackgroundImage.ScaleType
|
|
235
|
+
_object_2.SliceCenter = focusBackgroundImage.SliceCenter
|
|
236
|
+
_object_2.SliceScale = focusBackgroundImage.SliceScale
|
|
237
|
+
_object_2.TileSize = focusBackgroundImage.TileSize
|
|
205
238
|
_attributes.focus = _object_2
|
|
206
239
|
return React.createElement(Container, {
|
|
240
|
+
name = `AccordionItem-{props.value}`,
|
|
207
241
|
width = "100%",
|
|
208
242
|
}, React.createElement(VStack, {
|
|
209
243
|
spacing = "None",
|
|
210
244
|
}, _condition, React.createElement(HoverButton, _attributes, props.first and (React.createElement("uicorner", {
|
|
245
|
+
key = "Corners",
|
|
211
246
|
TopLeftRadius = SizeHelper:toUDim(theme.components.accordion.cornerRadius),
|
|
212
247
|
TopRightRadius = SizeHelper:toUDim(theme.components.accordion.cornerRadius),
|
|
213
248
|
BottomLeftRadius = UDim.new(0, 0),
|
|
@@ -218,6 +253,7 @@ local function RenderedAccordionItem(props)
|
|
|
218
253
|
duration = props.duration,
|
|
219
254
|
open = props.open,
|
|
220
255
|
})), mounted and (React.createElement("frame", {
|
|
256
|
+
key = "ContentClip",
|
|
221
257
|
BackgroundTransparency = 1,
|
|
222
258
|
ClipsDescendants = true,
|
|
223
259
|
Size = height:map(function(value)
|
|
@@ -226,6 +262,7 @@ local function RenderedAccordionItem(props)
|
|
|
226
262
|
return _exp + _arg0
|
|
227
263
|
end),
|
|
228
264
|
}, React.createElement("frame", {
|
|
265
|
+
key = "Content",
|
|
229
266
|
BackgroundColor3 = theme.components.accordion.content.backgroundColor,
|
|
230
267
|
BackgroundTransparency = theme.components.accordion.content.backgroundTransparency,
|
|
231
268
|
Size = UDim2.fromScale(1, 0),
|
|
@@ -244,8 +281,9 @@ local function RenderedAccordionItem(props)
|
|
|
244
281
|
end,
|
|
245
282
|
},
|
|
246
283
|
}, React.createElement(Padding, {
|
|
247
|
-
resolvedPadding = SpacingHelper:GetResolvedPadding(theme,
|
|
284
|
+
resolvedPadding = SpacingHelper:GetResolvedPadding(theme, props.contentProps, theme.components.accordion.content.spacing, theme.components.accordion.content.padding),
|
|
248
285
|
}), if props.contentText ~= nil then React.createElement(Text, {
|
|
286
|
+
name = "AccordionContentText",
|
|
249
287
|
text = props.contentText,
|
|
250
288
|
}) else props.content)))))
|
|
251
289
|
end
|
|
@@ -264,6 +302,7 @@ local Accordion = React.forwardRef(function(props, ref)
|
|
|
264
302
|
return nil
|
|
265
303
|
end
|
|
266
304
|
local header
|
|
305
|
+
local contentProps
|
|
267
306
|
local contentText
|
|
268
307
|
local content
|
|
269
308
|
React.Children.forEach(item.props.children, function(itemChild)
|
|
@@ -274,7 +313,7 @@ local Accordion = React.forwardRef(function(props, ref)
|
|
|
274
313
|
header = itemChild.props
|
|
275
314
|
end
|
|
276
315
|
if itemChild.type == AccordionContent and content == nil then
|
|
277
|
-
|
|
316
|
+
contentProps = itemChild.props
|
|
278
317
|
contentText = contentProps.text
|
|
279
318
|
content = contentProps.children
|
|
280
319
|
end
|
|
@@ -292,6 +331,7 @@ local Accordion = React.forwardRef(function(props, ref)
|
|
|
292
331
|
end
|
|
293
332
|
_object[_left] = _condition
|
|
294
333
|
_object.header = header
|
|
334
|
+
_object.contentProps = contentProps or {}
|
|
295
335
|
_object.contentText = contentText
|
|
296
336
|
_object.content = content
|
|
297
337
|
table.insert(parsed, _object)
|
|
@@ -380,10 +420,22 @@ local Accordion = React.forwardRef(function(props, ref)
|
|
|
380
420
|
_result(nextValues[1])
|
|
381
421
|
end
|
|
382
422
|
end
|
|
423
|
+
local _attributes = {
|
|
424
|
+
ref = ref,
|
|
425
|
+
}
|
|
426
|
+
local _condition = props.name
|
|
427
|
+
if _condition == nil then
|
|
428
|
+
_condition = "Accordion"
|
|
429
|
+
end
|
|
430
|
+
_attributes.name = _condition
|
|
431
|
+
_attributes.width = "100%"
|
|
432
|
+
_attributes.height = "100%"
|
|
433
|
+
_attributes.ClipsDescendants = true
|
|
383
434
|
local _exp = React.createElement(Corners, {
|
|
384
435
|
radius = theme.components.accordion.cornerRadius,
|
|
385
436
|
})
|
|
386
437
|
local _exp_1 = React.createElement("uistroke", {
|
|
438
|
+
key = "Stroke",
|
|
387
439
|
Color = theme.components.accordion.borderColor,
|
|
388
440
|
Thickness = theme.components.accordion.borderThickness,
|
|
389
441
|
BorderStrokePosition = Enum.BorderStrokePosition.Outer,
|
|
@@ -391,35 +443,30 @@ local Accordion = React.forwardRef(function(props, ref)
|
|
|
391
443
|
-- ▼ ReadonlyArray.map ▼
|
|
392
444
|
local _newValue_2 = table.create(#items)
|
|
393
445
|
local _callback_2 = function(item, index)
|
|
394
|
-
local
|
|
446
|
+
local _attributes_1 = {
|
|
395
447
|
key = item.value,
|
|
396
448
|
}
|
|
397
449
|
for _k, _v in item do
|
|
398
|
-
|
|
450
|
+
_attributes_1[_k] = _v
|
|
399
451
|
end
|
|
400
|
-
|
|
452
|
+
_attributes_1.first = index == 0
|
|
401
453
|
local _value = item.value
|
|
402
|
-
|
|
403
|
-
local
|
|
404
|
-
if
|
|
405
|
-
|
|
454
|
+
_attributes_1.open = table.find(openValues, _value) ~= nil
|
|
455
|
+
local _condition_1 = props.animationDuration
|
|
456
|
+
if _condition_1 == nil then
|
|
457
|
+
_condition_1 = theme.components.accordion.animation.duration
|
|
406
458
|
end
|
|
407
|
-
|
|
408
|
-
|
|
459
|
+
_attributes_1.duration = _condition_1
|
|
460
|
+
_attributes_1.onActivate = function()
|
|
409
461
|
return activate(item)
|
|
410
462
|
end
|
|
411
|
-
return React.createElement(RenderedAccordionItem,
|
|
463
|
+
return React.createElement(RenderedAccordionItem, _attributes_1)
|
|
412
464
|
end
|
|
413
465
|
for _k, _v in items do
|
|
414
466
|
_newValue_2[_k] = _callback_2(_v, _k - 1, items)
|
|
415
467
|
end
|
|
416
468
|
-- ▲ ReadonlyArray.map ▲
|
|
417
|
-
return React.createElement(Container, {
|
|
418
|
-
ref = ref,
|
|
419
|
-
width = "100%",
|
|
420
|
-
height = "100%",
|
|
421
|
-
ClipsDescendants = true,
|
|
422
|
-
}, _exp, _exp_1, React.createElement(VStack, {
|
|
469
|
+
return React.createElement(Container, _attributes, _exp, _exp_1, React.createElement(VStack, {
|
|
423
470
|
Padding = UDim.new(0, SpacingHelper:GetPadding(theme, props.scale, theme.components.accordion.spacing)),
|
|
424
471
|
}, _newValue_2))
|
|
425
472
|
end)
|
|
@@ -2,6 +2,7 @@ import React from "@rbxts/react";
|
|
|
2
2
|
import { ResponsiveGridSpan } from "../../Interfaces/";
|
|
3
3
|
interface ColumnProps {
|
|
4
4
|
span?: ResponsiveGridSpan | number | `${number}`;
|
|
5
|
+
name?: string;
|
|
5
6
|
}
|
|
6
7
|
export declare const Column: React.ForwardRefExoticComponent<ColumnProps & React.RefAttributes<Frame>>;
|
|
7
8
|
export {};
|
|
@@ -28,12 +28,17 @@ local Column = React.forwardRef(function(props, ref)
|
|
|
28
28
|
local padding = context.padding
|
|
29
29
|
local widthScale = fraction + ((fraction - 1) * padding.Scale)
|
|
30
30
|
local widthOffset = (fraction - 1) * padding.Offset
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
31
|
+
local _attributes = {}
|
|
32
|
+
local _condition = props.name
|
|
33
|
+
if _condition == nil then
|
|
34
|
+
_condition = "Column"
|
|
35
|
+
end
|
|
36
|
+
_attributes.key = _condition
|
|
37
|
+
_attributes.ref = ref
|
|
38
|
+
_attributes.Size = UDim2.new(widthScale, widthOffset, 0, 0)
|
|
39
|
+
_attributes.AutomaticSize = Enum.AutomaticSize.Y
|
|
40
|
+
_attributes.BackgroundTransparency = 1
|
|
41
|
+
return React.createElement("frame", _attributes, props.children)
|
|
37
42
|
end)
|
|
38
43
|
return {
|
|
39
44
|
Column = Column,
|
|
@@ -4,5 +4,6 @@ import { CssBackgroundImage } from "../../Theme";
|
|
|
4
4
|
export interface ContainerProps extends SizeElementProps, PositionElementProps, ZIndexElementProps, React.InstanceProps<ImageLabel> {
|
|
5
5
|
group?: boolean;
|
|
6
6
|
backgroundImage?: Partial<CssBackgroundImage>;
|
|
7
|
+
name?: string;
|
|
7
8
|
}
|
|
8
9
|
export declare const Container: React.ForwardRefExoticComponent<Omit<ContainerProps, "ref"> & React.RefAttributes<ImageLabel>>;
|
|
@@ -13,20 +13,24 @@ local Container = React.forwardRef(function(props, ref)
|
|
|
13
13
|
local isAutoSizeActive = autoSize ~= Enum.AutomaticSize.None and autoSize ~= "None"
|
|
14
14
|
local centerViaLayout = props.center == true and props.Position == nil and props.AnchorPoint == nil and isAutoSizeActive
|
|
15
15
|
local backgroundImage = CssHelper:resolveBackgroundImage(props.backgroundImage)
|
|
16
|
-
local _attributes = {
|
|
17
|
-
|
|
18
|
-
Archivable = props.Archivable,
|
|
19
|
-
Tag = props.Tag,
|
|
20
|
-
Active = props.Active,
|
|
21
|
-
AnchorPoint = if centerViaLayout then Vector2.zero else SizeHelper:GetAnchor(props),
|
|
22
|
-
AutomaticSize = autoSize,
|
|
23
|
-
BackgroundColor3 = props.BackgroundColor3,
|
|
24
|
-
}
|
|
25
|
-
local _condition = props.BackgroundTransparency
|
|
16
|
+
local _attributes = {}
|
|
17
|
+
local _condition = props.name
|
|
26
18
|
if _condition == nil then
|
|
27
|
-
_condition =
|
|
19
|
+
_condition = "Container"
|
|
28
20
|
end
|
|
29
|
-
_attributes.
|
|
21
|
+
_attributes.key = _condition
|
|
22
|
+
_attributes.ref = ref
|
|
23
|
+
_attributes.Archivable = props.Archivable
|
|
24
|
+
_attributes.Tag = props.Tag
|
|
25
|
+
_attributes.Active = props.Active
|
|
26
|
+
_attributes.AnchorPoint = if centerViaLayout then Vector2.zero else SizeHelper:GetAnchor(props)
|
|
27
|
+
_attributes.AutomaticSize = autoSize
|
|
28
|
+
_attributes.BackgroundColor3 = props.BackgroundColor3
|
|
29
|
+
local _condition_1 = props.BackgroundTransparency
|
|
30
|
+
if _condition_1 == nil then
|
|
31
|
+
_condition_1 = 1
|
|
32
|
+
end
|
|
33
|
+
_attributes.BackgroundTransparency = _condition_1
|
|
30
34
|
_attributes.BorderColor3 = props.BorderColor3
|
|
31
35
|
_attributes.BorderMode = props.BorderMode
|
|
32
36
|
_attributes.BorderSizePixel = props.BorderSizePixel
|
|
@@ -53,11 +57,11 @@ local Container = React.forwardRef(function(props, ref)
|
|
|
53
57
|
_result_1 = _result_1.X
|
|
54
58
|
end
|
|
55
59
|
end
|
|
56
|
-
local
|
|
57
|
-
if
|
|
58
|
-
|
|
60
|
+
local _condition_2 = _result_1
|
|
61
|
+
if _condition_2 == nil then
|
|
62
|
+
_condition_2 = 0
|
|
59
63
|
end
|
|
60
|
-
_result =
|
|
64
|
+
_result = _condition_2
|
|
61
65
|
else
|
|
62
66
|
_result = 0
|
|
63
67
|
end
|
|
@@ -83,11 +87,13 @@ local Container = React.forwardRef(function(props, ref)
|
|
|
83
87
|
return content
|
|
84
88
|
end
|
|
85
89
|
return React.createElement("frame", {
|
|
90
|
+
key = if props.name ~= nil then `{props.name}CenterWrapper` else "ContainerCenterWrapper",
|
|
86
91
|
Size = UDim2.fromScale(1, 1),
|
|
87
92
|
BackgroundTransparency = 1,
|
|
88
93
|
ZIndex = props.ZIndex,
|
|
89
94
|
LayoutOrder = props.LayoutOrder,
|
|
90
95
|
}, React.createElement("uilistlayout", {
|
|
96
|
+
key = "CenterLayout",
|
|
91
97
|
FillDirection = Enum.FillDirection.Horizontal,
|
|
92
98
|
HorizontalAlignment = Enum.HorizontalAlignment.Center,
|
|
93
99
|
VerticalAlignment = Enum.VerticalAlignment.Center,
|
|
@@ -13,6 +13,23 @@ local OverlayConsumer = _Contexts.OverlayConsumer
|
|
|
13
13
|
local createPortal = TS.import(script, TS.getModule(script, "@rbxts", "react-roblox")).createPortal
|
|
14
14
|
local Corners = TS.import(script, script.Parent.Parent, "Decorator").Corners
|
|
15
15
|
local CustomInputService = TS.import(script, script.Parent.Parent.Parent, "Helpers").CustomInputService
|
|
16
|
+
local function isInteractiveDescendantAtInput(handle, input)
|
|
17
|
+
local point = Vector2.new(input.Position.X, input.Position.Y)
|
|
18
|
+
local _exp = GuiHelper:getGuiObjectsAtPosition(handle, point)
|
|
19
|
+
-- ▼ ReadonlyArray.some ▼
|
|
20
|
+
local _result = false
|
|
21
|
+
local _callback = function(guiObject)
|
|
22
|
+
return guiObject ~= handle and guiObject:IsDescendantOf(handle) and (guiObject:IsA("GuiButton") or guiObject:IsA("TextBox"))
|
|
23
|
+
end
|
|
24
|
+
for _k, _v in _exp do
|
|
25
|
+
if _callback(_v, _k - 1, _exp) then
|
|
26
|
+
_result = true
|
|
27
|
+
break
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
-- ▲ ReadonlyArray.some ▲
|
|
31
|
+
return _result
|
|
32
|
+
end
|
|
16
33
|
local function DragHandle(_param)
|
|
17
34
|
local children = _param.children
|
|
18
35
|
local draggable = React.useContext(DraggableContext)
|
|
@@ -53,7 +70,7 @@ local function DragHandle(_param)
|
|
|
53
70
|
_result(instance, input)
|
|
54
71
|
end
|
|
55
72
|
end
|
|
56
|
-
if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
|
|
73
|
+
if (input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch) and not isInteractiveDescendantAtInput(instance, input) then
|
|
57
74
|
draggable.beginDrag(input, instance)
|
|
58
75
|
end
|
|
59
76
|
end
|
|
@@ -62,11 +79,16 @@ local function DragHandle(_param)
|
|
|
62
79
|
end
|
|
63
80
|
local function Placeholder(props)
|
|
64
81
|
local theme = React.useContext(CleanThemeContext)
|
|
65
|
-
local _attributes =
|
|
66
|
-
|
|
82
|
+
local _attributes = {
|
|
83
|
+
key = "DraggablePlaceholder",
|
|
84
|
+
}
|
|
85
|
+
for _k, _v in props do
|
|
86
|
+
_attributes[_k] = _v
|
|
87
|
+
end
|
|
67
88
|
_attributes.BackgroundTransparency = theme.components.draggable.placeholder.backgroundTransparency
|
|
68
89
|
_attributes.BackgroundColor3 = theme.components.draggable.placeholder.backgroundColor
|
|
69
90
|
return React.createElement("frame", _attributes, React.createElement("uistroke", {
|
|
91
|
+
key = "Stroke",
|
|
70
92
|
Thickness = theme.components.draggable.placeholder.borderThickness,
|
|
71
93
|
BorderStrokePosition = Enum.BorderStrokePosition.Inner,
|
|
72
94
|
Color = theme.components.draggable.placeholder.borderColor,
|
|
@@ -16,6 +16,7 @@ local function FieldsetLabel(props)
|
|
|
16
16
|
ShrinkRatio = 0,
|
|
17
17
|
GrowRatio = 0,
|
|
18
18
|
}, React.createElement("imagebutton", {
|
|
19
|
+
key = "FieldsetLabelButton",
|
|
19
20
|
Size = UDim2.fromOffset(0, 0),
|
|
20
21
|
BackgroundTransparency = 1,
|
|
21
22
|
AutomaticSize = Enum.AutomaticSize.XY,
|
|
@@ -65,16 +66,21 @@ local Fieldset = React.forwardRef(function(props, ref)
|
|
|
65
66
|
local breakpoints = props.breakpoints or theme.breakpoints
|
|
66
67
|
local breakpoint = BreakpointHelper:getBreakpoint(width, breakpoints)
|
|
67
68
|
local wrap = BreakpointHelper:compare(breakpoint, "<=", props.wrap or "lg")
|
|
69
|
+
local _attributes = {}
|
|
70
|
+
local _condition = props.name
|
|
71
|
+
if _condition == nil then
|
|
72
|
+
_condition = "Fieldset"
|
|
73
|
+
end
|
|
74
|
+
_attributes.name = _condition
|
|
75
|
+
_attributes.ref = ref
|
|
76
|
+
_attributes.Change = {
|
|
77
|
+
AbsoluteSize = function(instance)
|
|
78
|
+
setWidth(instance.AbsoluteSize.X)
|
|
79
|
+
end,
|
|
80
|
+
}
|
|
68
81
|
return React.createElement(FieldsetContext.Provider, {
|
|
69
82
|
value = fieldsetContext,
|
|
70
|
-
}, React.createElement(Container, {
|
|
71
|
-
ref = ref,
|
|
72
|
-
Change = {
|
|
73
|
-
AbsoluteSize = function(instance)
|
|
74
|
-
setWidth(instance.AbsoluteSize.X)
|
|
75
|
-
end,
|
|
76
|
-
},
|
|
77
|
-
}, React.createElement(HStack, {
|
|
83
|
+
}, React.createElement(Container, _attributes, React.createElement(HStack, {
|
|
78
84
|
Wraps = wrap,
|
|
79
85
|
valign = "Center",
|
|
80
86
|
HorizontalFlex = Enum.UIFlexAlignment.Fill,
|
|
@@ -6,11 +6,18 @@ local FlexItem = React.forwardRef(function(props, ref)
|
|
|
6
6
|
local _attributes = table.clone(props)
|
|
7
7
|
setmetatable(_attributes, nil)
|
|
8
8
|
_attributes.ref = ref
|
|
9
|
+
local _condition = props.name
|
|
10
|
+
if _condition == nil then
|
|
11
|
+
_condition = "FlexItem"
|
|
12
|
+
end
|
|
13
|
+
_attributes.name = _condition
|
|
9
14
|
return React.createElement(Container, _attributes, React.createElement("uiflexitem", {
|
|
15
|
+
key = "FlexItemConstraint",
|
|
10
16
|
FlexMode = props.mode or "Grow",
|
|
11
17
|
GrowRatio = props.GrowRatio,
|
|
12
18
|
ShrinkRatio = props.ShrinkRatio,
|
|
13
19
|
}), React.createElement("uilistlayout", {
|
|
20
|
+
key = "FlexItemLayout",
|
|
14
21
|
HorizontalFlex = props.HorizontalFlex,
|
|
15
22
|
FillDirection = Enum.FillDirection.Horizontal,
|
|
16
23
|
HorizontalAlignment = props.align,
|
|
@@ -11,6 +11,7 @@ interface GroupElementProps {
|
|
|
11
11
|
enabled?: boolean;
|
|
12
12
|
padding?: ResolvedPadding;
|
|
13
13
|
children?: React.ReactNode;
|
|
14
|
+
name?: string;
|
|
14
15
|
}
|
|
15
16
|
declare function GroupElement(props: GroupElementProps): boolean | ReadonlyMap<React.Key, React.ReactNode> | {
|
|
16
17
|
readonly [key: string]: React.ReactNode;
|
|
@@ -71,15 +71,20 @@ local function GroupElement(props)
|
|
|
71
71
|
_condition_4 = 0
|
|
72
72
|
end
|
|
73
73
|
local verticalPadding = _condition_3 + _condition_4
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
74
|
+
local _attributes = {}
|
|
75
|
+
local _condition_5 = props.name
|
|
76
|
+
if _condition_5 == nil then
|
|
77
|
+
_condition_5 = "GroupElement"
|
|
78
|
+
end
|
|
79
|
+
_attributes.key = _condition_5
|
|
80
|
+
_attributes.BackgroundTransparency = 1
|
|
81
|
+
_attributes.AutomaticSize = Enum.AutomaticSize.XY
|
|
82
|
+
_attributes.Change = {
|
|
83
|
+
AbsoluteSize = function(instance)
|
|
84
|
+
context.reportSize(id, Vector2.new(instance.AbsoluteSize.X + horizontalPadding, instance.AbsoluteSize.Y + verticalPadding))
|
|
85
|
+
end,
|
|
86
|
+
}
|
|
87
|
+
return React.createElement("frame", _attributes, props.children)
|
|
83
88
|
end
|
|
84
89
|
local function getMaxVector2(map)
|
|
85
90
|
local max
|