@livelike/react-native
Version:
LiveLike React Native package
67 lines • 1.99 kB
JavaScript
import React, { useCallback, useState } from 'react';
import { StyleSheet, View } from 'react-native';
import { useStyles, useWidgetActions, useWidgetInteractedAnalytics, useWidgetOptions } from '../../hooks';
import { LLWidgetVoteOption } from '../LLWidgetOption';
export function LLVoteWidgetBody(_ref) {
let {
widgetId,
styles: stylesProp,
VoteOptionComponent = LLWidgetVoteOption,
VoteOptionComponentStyles
} = _ref;
const [selectedOptionIndex, setSelectedOptionIndex] = useState(-1);
const styles = useStyles({
componentStylesFn: getVoteWidgetBodyStyles,
stylesProp
});
const widgetOptions = useWidgetOptions({
widgetId
});
const {
updateSelectedOptionIndexAction
} = useWidgetActions({
widgetId
});
const {
trackWidgetInteractedAction
} = useWidgetInteractedAnalytics({
widgetId
});
const onOptionHandler = useCallback(selectedOptionIndex => {
setSelectedOptionIndex(selectedOptionIndex);
updateSelectedOptionIndexAction({
widgetId,
selectedOptionIndex
});
trackWidgetInteractedAction({
interactionItem: widgetOptions[selectedOptionIndex]
});
}, [widgetId, widgetOptions]);
if (!(widgetOptions !== null && widgetOptions !== void 0 && widgetOptions.length)) {
return undefined;
}
return /*#__PURE__*/React.createElement(View, {
style: styles.bodyContainer
}, widgetOptions.map((option, index) => /*#__PURE__*/React.createElement(VoteOptionComponent, {
key: option.id,
optionIndex: index,
widgetId: widgetId,
selectedOptionIndex: selectedOptionIndex,
onOptionChange: onOptionHandler,
OptionComponentStyles: VoteOptionComponentStyles
})));
}
const getVoteWidgetBodyStyles = _ref2 => {
let {
theme
} = _ref2;
return StyleSheet.create({
bodyContainer: {
display: 'flex',
flexDirection: 'column',
marginHorizontal: 16,
marginBottom: 14
}
});
};
//# sourceMappingURL=LLVoteWidgetBody.js.map