# BaseElement _The base class for all UI elements in Basalt. This class provides basic properties and event handling functionality._ Extends: `PropertySystem` ## Properties |Property|Type|Default|Description| |---|---|---|---| |type|string|BaseElement|The type identifier of the element| |id|string|BaseElement|The unique identifier for the element| |name|string|BaseElement|The name of the element| |eventCallbacks|table|BaseElement|The event callbacks for the element| |enabled|boolean|BaseElement|Whether the element is enabled or not| ## Functions |Method|Returns|Description| |---|---|---| |[BaseElement.defineEvent](#baseelement-defineevent-class-eventname-requiredevent)|-|Registers a new event listener for the element (on class level)| |[BaseElement.registerEventCallback](#baseelement-registereventcallback-class-callbackname-string)|-|Registers a new event callback for the element (on class level)| |[BaseElement:isType](#baseelement-istype-type)|boolean|Checks if the element is a specific type| |[BaseElement:listenEvent](#baseelement-listenevent-eventname-enable)|table|Enables or disables event listening for a specific event| |[BaseElement:registerCallback](#baseelement-registercallback-event-callback)|table|Registers a callback function| |[BaseElement:fireEvent](#baseelement-fireevent-event-any)|table|Triggers an event and calls all registered callbacks| |[BaseElement:onChange](#baseelement-onchange-property-callback)|table|Observes a property and calls a callback when it changes| |[BaseElement:getBaseFrame](#baseelement-getbaseframe)|BaseFrame|Returns the base frame of the element| |[BaseElement:destroy](#baseelement-destroy)|-|Destroys the element and cleans up all references| |[BaseElement:updateRender](#baseelement-updaterender)|table|Requests a render update for this element| ## BaseElement.defineEvent(class, eventName, requiredEvent?) Registers a new event listener for the element (on class level) ### Parameters * `class` `table` The class to register * `eventName` `string` The name of the event to register * `requiredEvent` *(optional)* `string` The name of the required event (optional) ## BaseElement.registerEventCallback(class, callbackName, string) Registers a new event callback for the element (on class level) ### Parameters * `class` `table` The class to register * `callbackName` `string` The name of the callback to register * `string` `The` names of the events to register the callback for ## BaseElement:isType(type) Checks if the element is a specific type ### Parameters * `type` `string` The type to check for ### Returns * `boolean` `isType` Whether the element is of the specified type ## BaseElement:listenEvent(eventName, enable?) Enables or disables event listening for a specific event ### Parameters * `eventName` `string` The name of the event to listen for * `enable` *(optional)* `boolean` Whether to enable or disable the event (default: true) ### Returns * `table` `self` The BaseElement instance ## BaseElement:registerCallback(event, callback) Registers a callback function for an event ### Parameters * `event` `string` The event to register the callback for * `callback` `function` The callback function to register ### Returns * `table` `self` The BaseElement instance ## BaseElement:fireEvent(event, any) Triggers an event and calls all registered callbacks ### Parameters * `event` `string` The event to fire * `any` `Additional` arguments to pass to the callbacks ### Returns * `table` `self` The BaseElement instance ## BaseElement:onChange(property, callback) Observes a property and calls a callback when it changes ### Parameters * `property` `string` The property to observe * `callback` `function` The callback to call when the property changes ### Returns * `table` `self` The BaseElement instance ## BaseElement:getBaseFrame() Returns the base frame of the element ### Returns * `BaseFrame` `BaseFrame` The base frame of the element ## BaseElement:destroy() Destroys the element and cleans up all references ## BaseElement:updateRender() Requests a render update for this element ### Returns * `table` `self` The BaseElement instance