add gs
This commit is contained in:
+116
@@ -0,0 +1,116 @@
|
||||
--[[
|
||||
Create a Roact toggle button
|
||||
Props:
|
||||
Key : Variant - The key for the toggle button.
|
||||
Text : String - The text of the button.
|
||||
Size : UDim2 - The size of the this button.
|
||||
AnchorPoint : Vector2 - The anchor point of the button.
|
||||
Position : UDim2 - The position of the button.
|
||||
|
||||
Toggle : bool - Whether or not the button is toggled or not.
|
||||
Focused : bool - Is the button selected.
|
||||
Disabled : bool - Whether or not this button is disabled.
|
||||
Selected : bool - Should the button be selected.
|
||||
Selectable : bool - Whether or not the button is selectable.
|
||||
OnSelectionGained : function(key : Variant) - Fired when the GuiObject is being focused on with the Gamepad selector.
|
||||
OnSelectionLost : function(key : Variant) - Fired when the Gamepad selector stops focusing on the GuiObject.
|
||||
OnActivated : function() - Fires when the button is activated.
|
||||
]]
|
||||
|
||||
local Modules = game:GetService("CoreGui").RobloxGui.Modules
|
||||
|
||||
local Roact = require(Modules.Common.Roact)
|
||||
local Immutable = require(Modules.Common.Immutable)
|
||||
local GlobalSettings = require(Modules.Shell.GlobalSettings)
|
||||
|
||||
local RoundedButton = require(Modules.Shell.Components.Common.RoundedButton)
|
||||
|
||||
local ToggleButton = Roact.Component:extend("ToggleButton")
|
||||
|
||||
local TOGGLE_ICON_SIZE = 32
|
||||
|
||||
local TOGGLE_ICON_OFFSET_X = 20
|
||||
|
||||
function ToggleButton:init()
|
||||
self.key = self.props.Key
|
||||
self.state =
|
||||
{
|
||||
selected = false,
|
||||
active = false,
|
||||
}
|
||||
self.onSelectionGained = function()
|
||||
if self.props.OnSelectionGained then self.props.OnSelectionGained(self.key) end
|
||||
end
|
||||
self.onSelectionLost = function()
|
||||
if self.props.OnSelectionLost then self.props.OnSelectionLost(self.key) end
|
||||
end
|
||||
self.onActivated = function()
|
||||
if self.props.OnActivated then self.props.OnActivated() end
|
||||
end
|
||||
end
|
||||
|
||||
function ToggleButton:render()
|
||||
local buttonProps = {}
|
||||
local textProps = {}
|
||||
local size = self.props.Size
|
||||
local position = self.props.Position
|
||||
local anchorPoint = self.props.AnchorPoint
|
||||
local focused = self.props.Focused
|
||||
local disabled = self.props.Disabled
|
||||
local selected = self.props.Selected
|
||||
--Default is unknown since its not on or off
|
||||
local iconColor = GlobalSettings.Colors.StatusIconUnknown
|
||||
if self.props.Toggle == true then
|
||||
iconColor = GlobalSettings.Colors.StatusIconEnabled
|
||||
elseif self.props.Toggle == false then
|
||||
iconColor = GlobalSettings.Colors.StatusIconDisabled
|
||||
end
|
||||
|
||||
buttonProps.Size = UDim2.new(1, 0, 1, 0)
|
||||
buttonProps.AnchorPoint = Vector2.new(0.5, 0.5)
|
||||
buttonProps.Position = UDim2.new(0.5, 0, 0.5, 0)
|
||||
buttonProps.Selectable = self.props.Selectable
|
||||
|
||||
textProps.Text = self.props.Text
|
||||
textProps.Size = UDim2.new(1, 0, 1, 0)
|
||||
textProps.AnchorPoint = Vector2.new(0, 0.5)
|
||||
textProps.Position = UDim2.new(0, TOGGLE_ICON_SIZE+2*TOGGLE_ICON_OFFSET_X, 0.5, 0)
|
||||
|
||||
local toggleImage = Roact.createElement("ImageLabel",
|
||||
{
|
||||
Size = UDim2.new(0, TOGGLE_ICON_SIZE, 0, TOGGLE_ICON_SIZE),
|
||||
Image = GlobalSettings.Images.EnabledStatusIcon,
|
||||
ImageColor3 = iconColor,
|
||||
Position = UDim2.new(0, TOGGLE_ICON_OFFSET_X, 0.5, 0),
|
||||
AnchorPoint = Vector2.new(0, 0.5),
|
||||
BackgroundTransparency = 1,
|
||||
})
|
||||
|
||||
local button = Roact.createElement(RoundedButton,
|
||||
{
|
||||
Button = buttonProps,
|
||||
Text = textProps,
|
||||
Focused = focused,
|
||||
Disabled = disabled,
|
||||
Selected = selected,
|
||||
OnSelectionGained = self.onSelectionGained,
|
||||
OnSelectionLost = self.onSelectionLost,
|
||||
OnActivated = self.onActivated,
|
||||
},{
|
||||
ToggleImage = toggleImage,
|
||||
})
|
||||
|
||||
local children = self.props[Roact.Children] or {}
|
||||
return Roact.createElement("Frame",
|
||||
{
|
||||
Size = size,
|
||||
Position = position,
|
||||
AnchorPoint = anchorPoint,
|
||||
BackgroundTransparency = 1,
|
||||
}, Immutable.JoinDictionaries(
|
||||
{
|
||||
Button = button,
|
||||
}, children))
|
||||
end
|
||||
|
||||
return ToggleButton
|
||||
Reference in New Issue
Block a user