about summary refs log tree commit diff
path: root/src/components/forms/InputGroup.tsx
blob: 6908d4df8e3e6a6d73a2a7300e03ad9557efaac6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import React from 'react'
import {View} from 'react-native'

import {atoms, useTheme} from '#/alf'

/**
 * NOT FINISHED, just here as a reference
 */
export function InputGroup(props: React.PropsWithChildren<{}>) {
  const t = useTheme()
  const children = React.Children.toArray(props.children)
  const total = children.length
  return (
    <View style={[atoms.w_full]}>
      {children.map((child, i) => {
        return React.isValidElement(child) ? (
          <React.Fragment key={i}>
            {i > 0 ? (
              <View
                style={[atoms.border_b, {borderColor: t.palette.contrast_500}]}
              />
            ) : null}
            {React.cloneElement(child, {
              // @ts-ignore
              style: [
                ...(Array.isArray(child.props?.style)
                  ? child.props.style
                  : [child.props.style || {}]),
                {
                  borderTopLeftRadius: i > 0 ? 0 : undefined,
                  borderTopRightRadius: i > 0 ? 0 : undefined,
                  borderBottomLeftRadius: i < total - 1 ? 0 : undefined,
                  borderBottomRightRadius: i < total - 1 ? 0 : undefined,
                  borderBottomWidth: i < total - 1 ? 0 : undefined,
                },
              ],
            })}
          </React.Fragment>
        ) : null
      })}
    </View>
  )
}