// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import React, {useMemo} from 'react'; import {Alert, View} from 'react-native'; import BaseChip from '@components/chips/base_chip'; import CompassIcon from '@components/compass_icon'; import {useTheme} from '@context/theme'; import {useBooleanProp, useDropdownProp, useStringProp} from './hooks'; import {buildComponent} from './utils'; const propPossibilities = {}; const onPress = () => Alert.alert('Button pressed!'); const onActionPress = () => Alert.alert('Action pressed!'); const ChipComponentLibrary = () => { const theme = useTheme(); const [label, labelSelector] = useStringProp('label', 'Chip text', false); const [actionIcon, actionIconPossibilities, actionIconSelector] = useDropdownProp('actionIcon', 'remove', ['remove', 'downArrow'], true); const [hasPrefix, hasPrefixSelector] = useBooleanProp('hasPrefix', false); const actionPossibilities = useMemo(() => { if (!actionIconPossibilities) { return undefined; } return { action: actionIconPossibilities.actionIcon.map((iconName) => ({ icon: iconName, onPress: onActionPress, })), }; }, [actionIconPossibilities]); const components = useMemo( () => buildComponent(BaseChip, propPossibilities, [ actionPossibilities, ], [ label, actionIcon, { onPress, prefix: hasPrefix.hasPrefix ? ( ) : undefined, testID: 'chip-example', theme, }, ]), [actionPossibilities, label, actionIcon, hasPrefix.hasPrefix, theme], ); return ( <> {labelSelector} {actionIconSelector} {hasPrefixSelector} {components} ); }; export default ChipComponentLibrary;