Clients/Client2018/content/internal/AppShell/Modules/Shell/Components/Common/Spinner.lua

49 lines
1.2 KiB
Lua

--[[
Creates a component as a spinner
]]
local Modules = game:GetService("CoreGui").RobloxGui.Modules
local Roact = require(Modules.Common.Roact)
local Components = Modules.Shell.Components
local RenderStep = require(Components.RenderStep)
local SPINNER_IMAGE = 'rbxasset://textures/ui/Shell/Icons/LoadingSpinner@1080.png'
local Spinner = Roact.PureComponent:extend("Spinner")
function Spinner:init()
self.state = {
rotation = 0
}
self.speed = 360
self.update = function(dt)
self:setState({
rotation = self.state.rotation + dt * self.speed
})
end
end
function Spinner:render()
local props = self.props
local state = self.state
local rotation = state.rotation
self.speed = props.speed or 360
return Roact.createElement("ImageLabel", {
Rotation = rotation,
BackgroundTransparency = 1,
Size = props.Size or UDim2.new(0, 100, 0, 100),
AnchorPoint = props.AnchorPoint or Vector2.new(0.5, 0.5),
Position = props.Position or UDim2.new(0.5, 0, 0.5, 0),
Image = SPINNER_IMAGE,
ZIndex = props.ZIndex or 10,
ImageTransparency = props.ImageTransparency or 0,
},{
Render = Roact.createElement(RenderStep, {
name = tick(),
priority = Enum.RenderPriority.Input.Value,
callback = self.update,
}),
})
end
return Spinner