mirror of
https://github.com/Insality/druid
synced 2025-06-27 10:27:48 +02:00
33 lines
816 B
Lua
33 lines
816 B
Lua
local event = require("event.event")
|
|
local const = require("druid.const")
|
|
local component = require("druid.component")
|
|
|
|
---@class druid.back_handler: druid.component
|
|
---@field on_back event Trigger on back handler action, fun(self, params)
|
|
---@field params any|nil Custom args to pass in the callback
|
|
local M = component.create("back_handler")
|
|
|
|
|
|
---@param callback function|nil
|
|
---@param params any|nil
|
|
function M:init(callback, params)
|
|
self.params = params
|
|
self.on_back = event.create(callback)
|
|
end
|
|
|
|
|
|
---@param action_id hash
|
|
---@param action table
|
|
---@return boolean
|
|
function M:on_input(action_id, action)
|
|
if action.released and (action_id == const.ACTION_BACK or action_id == const.ACTION_BACKSPACE) then
|
|
self.on_back:trigger(self:get_context(), self.params)
|
|
return true
|
|
end
|
|
|
|
return false
|
|
end
|
|
|
|
|
|
return M
|