import { MoveStyleUtils, type Rock, type RockConfig } from "@ruiapp/move-style"; import { renderRock } from "@ruiapp/react-renderer"; import RapidEntityListMeta from "./RapidToolbarModalButtonMeta"; import type { RapidToolbarModalButtonRockConfig } from "./rapid-toolbar-modal-button-types"; export default { onInit(context, props) {}, onReceiveMessage(message, state, props) {}, Renderer(context, props) { const buttonRockConfig: RockConfig = { ...MoveStyleUtils.omitSystemRockConfigFields(props), $id: `${props.$id}-btn`, $type: "rapidToolbarButton", onAction: [ { $action: "setVars", vars: { "modal-open": true, }, }, { $action: "handleEvent", eventName: "onModalOpen", handlers: props.onModalOpen, }, ], }; const modalRockConfig: RockConfig = { $type: "antdModal", $id: `${props.$id}-modal`, title: props.modalTitle || props.text, $exps: { open: "!!$scope.vars['modal-open']", }, children: props.modalBody, onOk: [ { $action: "handleEvent", eventName: "onModalOk", handlers: props.onModalOk, }, { $action: "setVars", vars: { "modal-open": false, }, }, ], onCancel: [ { $action: "handleEvent", eventName: "onModalCancel", handlers: props.onModalCancel, }, { $action: "setVars", vars: { "modal-open": false, }, }, ], }; const rockConfig: RockConfig = { $type: "scope", $id: `${props.$id}-scope`, children: [buttonRockConfig, modalRockConfig], }; return renderRock({ context, rockConfig: rockConfig }); }, ...RapidEntityListMeta, } as Rock;