require("common.class") local Field = require("api.page.field") ---@class LinkField: Field ---@field link Page local LinkField = { __name = "LinkField" } ---Create a new LinkField instance ---@param params? LinkField # initial parameters ---@return LinkField function LinkField.new(params) params = params or {} params.link = params.link or nil return CreateInstance(LinkField, params, Field) end ---@param button integer # options are under the `game` table prefixed with `BUTTON` ---@return boolean # true if further button input processing should be stopped, otherwise false function LinkField:handleButtonInput(button) if not self.link then game.Log(tostring(self) .. " does not have a valid link", game.LOGGER_ERROR) return false end if button == game.BUTTON_STA then local parentPage = self:getParentPage() if parentPage and parentPage.viewHandler then game.Log(tostring(self) .. " viewHandler:navigate(" .. tostring(self.link) .. ") called", game.LOGGER_INFO) parentPage.viewHandler:navigate(self.link) return true else local target = (parentPage and parentPage.viewHandler or "PageView") game.Log(tostring(self) .. " can't access " .. tostring(target) .. " instance", game.LOGGER_ERROR) end end return false end return LinkField