1.3 KiB
local elementManager = require("elementManager") local VisualElement = elementManager.getElement("VisualElement") local getCenteredPosition = require("libraries/utils").getCenteredPosition
---@class Button : VisualElement local Button = setmetatable({}, VisualElement) Button.__index = Button
---@property text string Button Button text Button.defineProperty(Button, "text", {default = "Button", type = "string", canTriggerRender = true})
---@event mouse_click The event that is triggered when the button is clicked Button.listenTo(Button, "mouse_click") Button.listenTo(Button, "mouse_up")
--- Creates a new Button instance --- @return table self The created instance function Button.new() local self = setmetatable({}, Button):__init() self.set("width", 10) self.set("height", 3) self.set("z", 5) return self end
--- Initializes the Button instance --- @param props table The properties to initialize the element with --- @param basalt table The basalt instance function Button:init(props, basalt) VisualElement.init(self, props, basalt) self.set("type", "Button") end
--- Renders the Button function Button:render() VisualElement.render(self) local text = self.get("text") local xO, yO = getCenteredPosition(text, self.get("width"), self.get("height")) self:textFg(xO, yO, text, self.get("foreground")) end
return Button