sort/components/html/button.tsx
2024-09-07 08:22:11 +07:00

39 lines
1.2 KiB
TypeScript

import React from 'react';
import { TouchableOpacity, Alert, Text, GestureResponderEvent } from 'react-native';
import RenderHtml, { TChildrenRenderer } from 'react-native-render-html';
import { Cfg } from './action';
import { cfg } from '../lib/cfg';
export function ButtonRenderer({
...props
}: {
[key: string]: any;
}) {
const { tnode } = props;
const { domNode } = tnode;
const { attribs } = domNode;
const onPress = () => {
const config = Cfg.action as { [key: string]: (event: Function) => void };
const custAction: ((event: Function) => void) | null =
(attribs?.action && typeof config[attribs?.action] === 'function')
? config[attribs?.action]
: null;
if(custAction){
attribs.pop = custAction;
custAction(attribs);
}
}
return (
<TouchableOpacity
style={props?.style}
onPress={onPress}
accessibilityLabel="Learn more about this purple button"
>
<Text style={[props?.style, { textAlign: 'center' }]}>
<TChildrenRenderer tchildren={props.tnode.children} />
</Text>
</TouchableOpacity>
);
}