@tamagui/input 1.122.0 → 1.122.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +11 -11
  2. package/src/Input.tsx +43 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/input",
3
- "version": "1.122.0",
3
+ "version": "1.122.1",
4
4
  "sideEffects": [
5
5
  "*.css"
6
6
  ],
@@ -36,18 +36,18 @@
36
36
  }
37
37
  },
38
38
  "dependencies": {
39
- "@tamagui/core": "1.122.0",
40
- "@tamagui/focusable": "1.122.0",
41
- "@tamagui/font-size": "1.122.0",
42
- "@tamagui/get-button-sized": "1.122.0",
43
- "@tamagui/helpers": "1.122.0",
44
- "@tamagui/helpers-tamagui": "1.122.0",
45
- "@tamagui/stacks": "1.122.0",
46
- "@tamagui/text": "1.122.0",
47
- "@tamagui/web": "1.122.0"
39
+ "@tamagui/core": "1.122.1",
40
+ "@tamagui/focusable": "1.122.1",
41
+ "@tamagui/font-size": "1.122.1",
42
+ "@tamagui/get-button-sized": "1.122.1",
43
+ "@tamagui/helpers": "1.122.1",
44
+ "@tamagui/helpers-tamagui": "1.122.1",
45
+ "@tamagui/stacks": "1.122.1",
46
+ "@tamagui/text": "1.122.1",
47
+ "@tamagui/web": "1.122.1"
48
48
  },
49
49
  "devDependencies": {
50
- "@tamagui/build": "1.122.0",
50
+ "@tamagui/build": "1.122.1",
51
51
  "react": "*",
52
52
  "vitest": "^2.1.8"
53
53
  },
package/src/Input.tsx CHANGED
@@ -1,6 +1,7 @@
1
- import React from 'react'
1
+ import React, { type HTMLInputTypeAttribute, type HTMLAttributes } from 'react'
2
2
  import { View, styled, useComposedRefs, useEvent, useTheme } from '@tamagui/core'
3
3
  import { registerFocusable } from '@tamagui/focusable'
4
+ import type { InputModeOptions } from 'react-native'
4
5
 
5
6
  import { styledBody } from './shared'
6
7
  import type { InputProps } from './types'
@@ -93,11 +94,51 @@ export const Input = StyledInput.styleable<InputProps>((inProps, forwardedRef) =
93
94
 
94
95
  const finalProps = {
95
96
  ...rest,
96
- inputMode,
97
97
  disabled,
98
98
  caretColor,
99
99
  id,
100
100
  enterKeyHint,
101
+ ...(process.env.TAMAGUI_TARGET === 'web'
102
+ ? {
103
+ type: (() => {
104
+ if (secureTextEntry) return 'password'
105
+ switch (keyboardType) {
106
+ case 'number-pad':
107
+ case 'numeric':
108
+ return 'number'
109
+ case 'email-address':
110
+ return 'email'
111
+ case 'phone-pad':
112
+ return 'tel'
113
+ case 'url':
114
+ return 'url'
115
+ default:
116
+ return 'text'
117
+ }
118
+ })() satisfies HTMLInputTypeAttribute,
119
+ inputMode: (() => {
120
+ switch (keyboardType) {
121
+ case 'number-pad':
122
+ case 'numeric':
123
+ return 'numeric'
124
+ case 'decimal-pad':
125
+ return 'decimal'
126
+ case 'email-address':
127
+ return 'email'
128
+ case 'phone-pad':
129
+ return 'tel'
130
+ case 'url':
131
+ return 'url'
132
+ default:
133
+ return undefined
134
+ }
135
+ })() satisfies HTMLAttributes<HTMLInputElement>['inputMode'],
136
+ }
137
+ : {
138
+ keyboardType,
139
+ secureTextEntry,
140
+ inputMode,
141
+ }),
101
142
  style: {
102
143
  ...(rest.style as any),
103
144
  ...(placeholderTextColor && {