@tamagui/input 2.0.0-rc.3 → 2.0.0-rc.30
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.
- package/dist/cjs/Input.native.js +1 -26
- package/dist/cjs/Input.native.js.map +1 -1
- package/dist/cjs/TextArea.native.js.map +1 -1
- package/dist/cjs/index.js +19 -13
- package/dist/cjs/inputTypes.test-d.cjs +92 -0
- package/dist/cjs/inputTypes.test-d.native.js +95 -0
- package/dist/cjs/inputTypes.test-d.native.js.map +1 -0
- package/dist/cjs/shared.cjs +4 -1
- package/dist/cjs/shared.native.js +4 -1
- package/dist/cjs/shared.native.js.map +1 -1
- package/dist/esm/Input.mjs.map +1 -1
- package/dist/esm/Input.native.js +2 -27
- package/dist/esm/Input.native.js.map +1 -1
- package/dist/esm/TextArea.mjs.map +1 -1
- package/dist/esm/TextArea.native.js.map +1 -1
- package/dist/esm/index.js +4 -7
- package/dist/esm/index.js.map +1 -6
- package/dist/esm/inputTypes.test-d.mjs +93 -0
- package/dist/esm/inputTypes.test-d.mjs.map +1 -0
- package/dist/esm/inputTypes.test-d.native.js +93 -0
- package/dist/esm/inputTypes.test-d.native.js.map +1 -0
- package/dist/esm/shared.mjs +4 -1
- package/dist/esm/shared.mjs.map +1 -1
- package/dist/esm/shared.native.js +4 -1
- package/dist/esm/shared.native.js.map +1 -1
- package/dist/jsx/Input.mjs.map +1 -1
- package/dist/jsx/Input.native.js +1 -26
- package/dist/jsx/Input.native.js.map +1 -1
- package/dist/jsx/TextArea.mjs.map +1 -1
- package/dist/jsx/TextArea.native.js.map +1 -1
- package/dist/jsx/index.js +4 -7
- package/dist/jsx/index.js.map +1 -6
- package/dist/jsx/inputTypes.test-d.mjs +93 -0
- package/dist/jsx/inputTypes.test-d.mjs.map +1 -0
- package/dist/jsx/inputTypes.test-d.native.js +95 -0
- package/dist/jsx/inputTypes.test-d.native.js.map +1 -0
- package/dist/jsx/shared.mjs +4 -1
- package/dist/jsx/shared.mjs.map +1 -1
- package/dist/jsx/shared.native.js +4 -1
- package/dist/jsx/shared.native.js.map +1 -1
- package/package.json +20 -22
- package/src/Input.native.tsx +3 -30
- package/src/Input.tsx +5 -3
- package/src/TextArea.tsx +3 -3
- package/src/index.ts +1 -1
- package/src/inputTypes.test-d.ts +237 -0
- package/src/shared.tsx +3 -0
- package/src/types.ts +24 -14
- package/types/Input.d.ts +17 -6
- package/types/Input.d.ts.map +1 -1
- package/types/Input.native.d.ts +15 -6
- package/types/Input.native.d.ts.map +1 -1
- package/types/TextArea.d.ts +11 -4
- package/types/TextArea.d.ts.map +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +1 -1
- package/types/shared.d.ts +3 -0
- package/types/shared.d.ts.map +1 -1
- package/types/types.d.ts +14 -4
- package/types/types.d.ts.map +1 -1
- package/types/v1/Input.d.ts +15 -6
- package/types/v1/Input.d.ts.map +1 -1
- package/types/v1/Input.native.d.ts +15 -6
- package/types/v1/Input.native.d.ts.map +1 -1
- package/types/v1/TextArea.d.ts +9 -3
- package/types/v1/TextArea.d.ts.map +1 -1
- package/dist/cjs/Input.js +0 -143
- package/dist/cjs/Input.js.map +0 -6
- package/dist/cjs/InputNativeProps.js +0 -14
- package/dist/cjs/InputNativeProps.js.map +0 -6
- package/dist/cjs/TextArea.js +0 -43
- package/dist/cjs/TextArea.js.map +0 -6
- package/dist/cjs/shared.js +0 -108
- package/dist/cjs/shared.js.map +0 -6
- package/dist/cjs/types.js +0 -14
- package/dist/cjs/types.js.map +0 -6
- package/dist/cjs/v1/Input.js +0 -171
- package/dist/cjs/v1/Input.js.map +0 -6
- package/dist/cjs/v1/TextArea.js +0 -43
- package/dist/cjs/v1/TextArea.js.map +0 -6
- package/dist/cjs/v1/index.js +0 -16
- package/dist/cjs/v1/index.js.map +0 -6
- package/dist/cjs/v1/types.js +0 -14
- package/dist/cjs/v1/types.js.map +0 -6
- package/dist/esm/Input.js +0 -124
- package/dist/esm/Input.js.map +0 -6
- package/dist/esm/InputNativeProps.js +0 -1
- package/dist/esm/InputNativeProps.js.map +0 -6
- package/dist/esm/TextArea.js +0 -29
- package/dist/esm/TextArea.js.map +0 -6
- package/dist/esm/shared.js +0 -96
- package/dist/esm/shared.js.map +0 -6
- package/dist/esm/types.js +0 -1
- package/dist/esm/types.js.map +0 -6
- package/dist/esm/v1/Input.js +0 -152
- package/dist/esm/v1/Input.js.map +0 -6
- package/dist/esm/v1/TextArea.js +0 -29
- package/dist/esm/v1/TextArea.js.map +0 -6
- package/dist/esm/v1/index.js +0 -3
- package/dist/esm/v1/index.js.map +0 -6
- package/dist/esm/v1/types.js +0 -1
- package/dist/esm/v1/types.js.map +0 -6
- package/dist/jsx/Input.js +0 -124
- package/dist/jsx/Input.js.map +0 -6
- package/dist/jsx/InputNativeProps.js +0 -1
- package/dist/jsx/InputNativeProps.js.map +0 -6
- package/dist/jsx/TextArea.js +0 -29
- package/dist/jsx/TextArea.js.map +0 -6
- package/dist/jsx/shared.js +0 -96
- package/dist/jsx/shared.js.map +0 -6
- package/dist/jsx/types.js +0 -1
- package/dist/jsx/types.js.map +0 -6
- package/dist/jsx/v1/Input.js +0 -152
- package/dist/jsx/v1/Input.js.map +0 -6
- package/dist/jsx/v1/TextArea.js +0 -29
- package/dist/jsx/v1/TextArea.js.map +0 -6
- package/dist/jsx/v1/index.js +0 -3
- package/dist/jsx/v1/index.js.map +0 -6
- package/dist/jsx/v1/types.js +0 -1
- package/dist/jsx/v1/types.js.map +0 -6
package/dist/esm/v1/Input.js
DELETED
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import { View, styled, useEvent, useTheme } from "@tamagui/core";
|
|
2
|
-
import { registerFocusable } from "@tamagui/focusable";
|
|
3
|
-
import { useWebRef } from "@tamagui/element";
|
|
4
|
-
import React from "react";
|
|
5
|
-
import { styledBody } from "../shared";
|
|
6
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
-
const StyledInput = styled(View, styledBody[0], styledBody[1]), Input = StyledInput.styleable((inProps, forwardedRef) => {
|
|
8
|
-
const {
|
|
9
|
-
// some of destructed props are just to avoid passing them to ...rest because they are not in web.
|
|
10
|
-
allowFontScaling,
|
|
11
|
-
selectTextOnFocus,
|
|
12
|
-
showSoftInputOnFocus,
|
|
13
|
-
textContentType,
|
|
14
|
-
passwordRules,
|
|
15
|
-
textBreakStrategy,
|
|
16
|
-
underlineColorAndroid,
|
|
17
|
-
selection,
|
|
18
|
-
lineBreakStrategyIOS,
|
|
19
|
-
returnKeyLabel,
|
|
20
|
-
disabled,
|
|
21
|
-
onSubmitEditing,
|
|
22
|
-
caretHidden,
|
|
23
|
-
clearButtonMode,
|
|
24
|
-
clearTextOnFocus,
|
|
25
|
-
contextMenuHidden,
|
|
26
|
-
dataDetectorTypes,
|
|
27
|
-
id,
|
|
28
|
-
enablesReturnKeyAutomatically,
|
|
29
|
-
importantForAutofill,
|
|
30
|
-
inlineImageLeft,
|
|
31
|
-
inlineImagePadding,
|
|
32
|
-
inputAccessoryViewID,
|
|
33
|
-
keyboardAppearance,
|
|
34
|
-
keyboardType,
|
|
35
|
-
cursorColor,
|
|
36
|
-
disableFullscreenUI,
|
|
37
|
-
editable,
|
|
38
|
-
maxFontSizeMultiplier,
|
|
39
|
-
multiline,
|
|
40
|
-
numberOfLines,
|
|
41
|
-
onChangeText,
|
|
42
|
-
onContentSizeChange,
|
|
43
|
-
onEndEditing,
|
|
44
|
-
onScroll,
|
|
45
|
-
onSelectionChange,
|
|
46
|
-
// @ts-ignore
|
|
47
|
-
caretColor,
|
|
48
|
-
placeholderTextColor,
|
|
49
|
-
blurOnSubmit,
|
|
50
|
-
enterKeyHint,
|
|
51
|
-
returnKeyType,
|
|
52
|
-
rejectResponderTermination,
|
|
53
|
-
scrollEnabled,
|
|
54
|
-
secureTextEntry,
|
|
55
|
-
selectionColor,
|
|
56
|
-
inputMode,
|
|
57
|
-
...rest
|
|
58
|
-
} = inProps, { ref, composedRef } = useWebRef(forwardedRef), theme = useTheme(), _onSelectionChange = useEvent(() => {
|
|
59
|
-
const start = ref.current?.selectionStart ?? 0, end = ref.current?.selectionEnd ?? 0;
|
|
60
|
-
onSelectionChange?.({
|
|
61
|
-
nativeEvent: {
|
|
62
|
-
selection: {
|
|
63
|
-
end,
|
|
64
|
-
start
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
React.useEffect(() => {
|
|
70
|
-
if (onSelectionChange)
|
|
71
|
-
return ref.current?.addEventListener("selectionchange", _onSelectionChange), () => {
|
|
72
|
-
ref.current?.removeEventListener("selectionchange", _onSelectionChange);
|
|
73
|
-
};
|
|
74
|
-
}, []), React.useEffect(() => {
|
|
75
|
-
selection && ref.current?.setSelectionRange(selection.start || null, selection.end || null);
|
|
76
|
-
}, [selection?.start, selection?.end]);
|
|
77
|
-
const finalProps = {
|
|
78
|
-
...rest,
|
|
79
|
-
disabled,
|
|
80
|
-
caretColor,
|
|
81
|
-
id,
|
|
82
|
-
enterKeyHint,
|
|
83
|
-
type: (() => {
|
|
84
|
-
if (rest?.type) return rest.type;
|
|
85
|
-
if (secureTextEntry) return "password";
|
|
86
|
-
switch (keyboardType) {
|
|
87
|
-
case "number-pad":
|
|
88
|
-
case "numeric":
|
|
89
|
-
return "number";
|
|
90
|
-
case "email-address":
|
|
91
|
-
return "email";
|
|
92
|
-
case "phone-pad":
|
|
93
|
-
return "tel";
|
|
94
|
-
case "url":
|
|
95
|
-
return "url";
|
|
96
|
-
default:
|
|
97
|
-
return "text";
|
|
98
|
-
}
|
|
99
|
-
})(),
|
|
100
|
-
inputMode: (() => {
|
|
101
|
-
switch (keyboardType) {
|
|
102
|
-
case "number-pad":
|
|
103
|
-
case "numeric":
|
|
104
|
-
return "numeric";
|
|
105
|
-
case "decimal-pad":
|
|
106
|
-
return "decimal";
|
|
107
|
-
case "email-address":
|
|
108
|
-
return "email";
|
|
109
|
-
case "phone-pad":
|
|
110
|
-
return "tel";
|
|
111
|
-
case "url":
|
|
112
|
-
return "url";
|
|
113
|
-
default:
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
})(),
|
|
117
|
-
style: {
|
|
118
|
-
...rest.style,
|
|
119
|
-
...placeholderTextColor && {
|
|
120
|
-
"--placeholderColor": theme[placeholderTextColor]?.variable || placeholderTextColor
|
|
121
|
-
},
|
|
122
|
-
...selectionColor && {
|
|
123
|
-
"--selectionBackground": theme[selectionColor]?.variable || selectionColor
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
|
-
return React.useEffect(() => {
|
|
128
|
-
if (id && !disabled)
|
|
129
|
-
return registerFocusable(id, {
|
|
130
|
-
focusAndSelect: () => {
|
|
131
|
-
ref.current?.focus();
|
|
132
|
-
},
|
|
133
|
-
focus: () => {
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
}, [id, disabled]), /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
137
|
-
/* @__PURE__ */ jsx("style", { children: `
|
|
138
|
-
input::selection, textarea::selection {
|
|
139
|
-
background-color: var(--selectionBackground) !important;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
input::placeholder, textarea::placeholder {
|
|
143
|
-
color: var(--placeholderColor) !important;
|
|
144
|
-
}
|
|
145
|
-
` }),
|
|
146
|
-
/* @__PURE__ */ jsx(StyledInput, { ref: composedRef, ...finalProps })
|
|
147
|
-
] });
|
|
148
|
-
});
|
|
149
|
-
export {
|
|
150
|
-
Input
|
|
151
|
-
};
|
|
152
|
-
//# sourceMappingURL=Input.js.map
|
package/dist/esm/v1/Input.js.map
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/v1/Input.tsx"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
package/dist/esm/v1/TextArea.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { styled } from "@tamagui/web";
|
|
2
|
-
import { Input } from "./Input";
|
|
3
|
-
import { defaultStyles, textAreaSizeVariant } from "../shared";
|
|
4
|
-
const TextArea = styled(Input, {
|
|
5
|
-
name: "TextArea",
|
|
6
|
-
render: "textarea",
|
|
7
|
-
// this attribute fixes firefox newline issue
|
|
8
|
-
// @ts-ignore
|
|
9
|
-
whiteSpace: "pre-wrap",
|
|
10
|
-
variants: {
|
|
11
|
-
unstyled: {
|
|
12
|
-
false: {
|
|
13
|
-
height: "auto",
|
|
14
|
-
...defaultStyles,
|
|
15
|
-
numberOfLines: 3
|
|
16
|
-
}
|
|
17
|
-
},
|
|
18
|
-
size: {
|
|
19
|
-
"...size": textAreaSizeVariant
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
defaultVariants: {
|
|
23
|
-
unstyled: process.env.TAMAGUI_HEADLESS === "1"
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
export {
|
|
27
|
-
TextArea
|
|
28
|
-
};
|
|
29
|
-
//# sourceMappingURL=TextArea.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/v1/TextArea.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,cAAc;AACvB,SAAS,aAAa;AACtB,SAAS,eAAe,2BAA2B;AAO5C,MAAM,WAAW,OAAO,OAAO;AAAA,EACpC,MAAM;AAAA,EACN,QAAQ;AAAA;AAAA;AAAA,EAIR,YAAY;AAAA,EAEZ,UAAU;AAAA,IACR,UAAU;AAAA,MACR,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,GAAG;AAAA,QACH,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IAEA,MAAM;AAAA,MACJ,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,UAAU,QAAQ,IAAI,qBAAqB;AAAA,EAC7C;AACF,CAAC;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
package/dist/esm/v1/index.js
DELETED
package/dist/esm/v1/index.js.map
DELETED
package/dist/esm/v1/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=types.js.map
|
package/dist/esm/v1/types.js.map
DELETED
package/dist/jsx/Input.js
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { View, styled, useTheme } from "@tamagui/core";
|
|
2
|
-
import { registerFocusable } from "@tamagui/focusable";
|
|
3
|
-
import { useWebRef } from "@tamagui/element";
|
|
4
|
-
import React from "react";
|
|
5
|
-
import { styledBody } from "./shared";
|
|
6
|
-
import { jsx } from "react/jsx-runtime";
|
|
7
|
-
const StyledInput = styled(View, styledBody[0], styledBody[1]), Input = StyledInput.styleable((props, _forwardedRef) => {
|
|
8
|
-
const {
|
|
9
|
-
disabled,
|
|
10
|
-
id,
|
|
11
|
-
onChangeText,
|
|
12
|
-
onSubmitEditing,
|
|
13
|
-
onSelectionChange,
|
|
14
|
-
selection,
|
|
15
|
-
placeholderTextColor,
|
|
16
|
-
selectionColor,
|
|
17
|
-
rows,
|
|
18
|
-
// Native-only props (ignored on web)
|
|
19
|
-
keyboardAppearance,
|
|
20
|
-
returnKeyType,
|
|
21
|
-
submitBehavior,
|
|
22
|
-
blurOnSubmit,
|
|
23
|
-
caretHidden,
|
|
24
|
-
contextMenuHidden,
|
|
25
|
-
selectTextOnFocus,
|
|
26
|
-
secureTextEntry,
|
|
27
|
-
maxFontSizeMultiplier,
|
|
28
|
-
allowFontScaling,
|
|
29
|
-
multiline,
|
|
30
|
-
keyboardType,
|
|
31
|
-
autoCapitalize: autoCapitalizeProp,
|
|
32
|
-
autoCorrect: autoCorrectProp,
|
|
33
|
-
autoFocusNative,
|
|
34
|
-
textContentType,
|
|
35
|
-
onEndEditing,
|
|
36
|
-
onContentSizeChange,
|
|
37
|
-
onScroll,
|
|
38
|
-
onKeyPress,
|
|
39
|
-
// iOS-only props (ignored on web)
|
|
40
|
-
clearButtonMode,
|
|
41
|
-
clearTextOnFocus,
|
|
42
|
-
enablesReturnKeyAutomatically,
|
|
43
|
-
dataDetectorTypes,
|
|
44
|
-
scrollEnabled,
|
|
45
|
-
passwordRules,
|
|
46
|
-
rejectResponderTermination,
|
|
47
|
-
spellCheck,
|
|
48
|
-
lineBreakStrategyIOS,
|
|
49
|
-
lineBreakModeIOS,
|
|
50
|
-
smartInsertDelete,
|
|
51
|
-
inputAccessoryViewID,
|
|
52
|
-
inputAccessoryViewButtonLabel,
|
|
53
|
-
disableKeyboardShortcuts,
|
|
54
|
-
// Android-only props (ignored on web)
|
|
55
|
-
cursorColor,
|
|
56
|
-
selectionHandleColor,
|
|
57
|
-
underlineColorAndroid,
|
|
58
|
-
importantForAutofill,
|
|
59
|
-
disableFullscreenUI,
|
|
60
|
-
inlineImageLeft,
|
|
61
|
-
inlineImagePadding,
|
|
62
|
-
returnKeyLabel,
|
|
63
|
-
textBreakStrategy,
|
|
64
|
-
textAlignVertical,
|
|
65
|
-
verticalAlign,
|
|
66
|
-
showSoftInputOnFocus,
|
|
67
|
-
numberOfLines,
|
|
68
|
-
...rest
|
|
69
|
-
} = props, { ref, composedRef } = useWebRef(_forwardedRef), theme = useTheme(), autoCorrect = autoCorrectProp === !0 ? "on" : autoCorrectProp === !1 ? "off" : autoCorrectProp, autoCapitalize = autoCapitalizeProp === "sentences" || autoCapitalizeProp === "words" ? "on" : autoCapitalizeProp === "none" || autoCapitalizeProp === "characters" ? "off" : autoCapitalizeProp;
|
|
70
|
-
React.useEffect(() => {
|
|
71
|
-
if (!onSelectionChange) return;
|
|
72
|
-
const node = ref.current;
|
|
73
|
-
if (!node) return;
|
|
74
|
-
const handleSelectionChange = () => {
|
|
75
|
-
onSelectionChange({
|
|
76
|
-
nativeEvent: {
|
|
77
|
-
selection: {
|
|
78
|
-
start: node.selectionStart ?? 0,
|
|
79
|
-
end: node.selectionEnd ?? 0
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
};
|
|
84
|
-
return node.addEventListener("select", handleSelectionChange), () => node.removeEventListener("select", handleSelectionChange);
|
|
85
|
-
}, [onSelectionChange]), React.useEffect(() => {
|
|
86
|
-
selection && ref.current && ref.current.setSelectionRange(selection.start, selection.end ?? selection.start);
|
|
87
|
-
}, [selection?.start, selection?.end]), React.useEffect(() => {
|
|
88
|
-
if (!(!id || disabled))
|
|
89
|
-
return registerFocusable(id, {
|
|
90
|
-
focusAndSelect: () => ref.current?.focus(),
|
|
91
|
-
focus: () => ref.current?.focus()
|
|
92
|
-
});
|
|
93
|
-
}, [id, disabled]);
|
|
94
|
-
const handleKeyDown = (e) => {
|
|
95
|
-
e.key === "Enter" && onSubmitEditing && onSubmitEditing({
|
|
96
|
-
nativeEvent: { text: e.target.value }
|
|
97
|
-
}), rest.onKeyDown?.(e);
|
|
98
|
-
}, handleChange = (e) => {
|
|
99
|
-
onChangeText?.(e.target.value), rest.onChange?.(e);
|
|
100
|
-
}, finalProps = {
|
|
101
|
-
...rest,
|
|
102
|
-
disabled,
|
|
103
|
-
id,
|
|
104
|
-
rows,
|
|
105
|
-
autoCorrect,
|
|
106
|
-
autoCapitalize,
|
|
107
|
-
onKeyDown: onSubmitEditing ? handleKeyDown : rest.onKeyDown,
|
|
108
|
-
onChange: onChangeText ? handleChange : rest.onChange,
|
|
109
|
-
style: {
|
|
110
|
-
...rest.style,
|
|
111
|
-
...placeholderTextColor && {
|
|
112
|
-
"--placeholderColor": theme[placeholderTextColor]?.variable || placeholderTextColor
|
|
113
|
-
},
|
|
114
|
-
...selectionColor && {
|
|
115
|
-
"--selectionColor": theme[selectionColor]?.variable || selectionColor
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
return /* @__PURE__ */ jsx(StyledInput, { ref: composedRef, ...finalProps });
|
|
120
|
-
});
|
|
121
|
-
export {
|
|
122
|
-
Input
|
|
123
|
-
};
|
|
124
|
-
//# sourceMappingURL=Input.js.map
|
package/dist/jsx/Input.js.map
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/Input.tsx"],
|
|
4
|
-
"mappings": "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",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=InputNativeProps.js.map
|
package/dist/jsx/TextArea.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { styled } from "@tamagui/web";
|
|
2
|
-
import { Input } from "./Input";
|
|
3
|
-
import { defaultStyles, textAreaSizeVariant } from "./shared";
|
|
4
|
-
const TextArea = styled(Input, {
|
|
5
|
-
name: "TextArea",
|
|
6
|
-
render: "textarea",
|
|
7
|
-
// this attribute fixes firefox newline issue
|
|
8
|
-
// @ts-ignore
|
|
9
|
-
whiteSpace: "pre-wrap",
|
|
10
|
-
variants: {
|
|
11
|
-
unstyled: {
|
|
12
|
-
false: {
|
|
13
|
-
height: "auto",
|
|
14
|
-
...defaultStyles,
|
|
15
|
-
rows: 3
|
|
16
|
-
}
|
|
17
|
-
},
|
|
18
|
-
size: {
|
|
19
|
-
"...size": textAreaSizeVariant
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
defaultVariants: {
|
|
23
|
-
unstyled: process.env.TAMAGUI_HEADLESS === "1"
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
export {
|
|
27
|
-
TextArea
|
|
28
|
-
};
|
|
29
|
-
//# sourceMappingURL=TextArea.js.map
|
package/dist/jsx/TextArea.js.map
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/TextArea.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,cAAc;AACvB,SAAS,aAAa;AACtB,SAAS,eAAe,2BAA2B;AAQ5C,MAAM,WAAW,OAAO,OAAO;AAAA,EACpC,MAAM;AAAA,EACN,QAAQ;AAAA;AAAA;AAAA,EAIR,YAAY;AAAA,EAEZ,UAAU;AAAA,IACR,UAAU;AAAA,MACR,OAAO;AAAA,QACL,QAAQ;AAAA,QACR,GAAG;AAAA,QACH,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IAEA,MAAM;AAAA,MACJ,WAAW;AAAA,IACb;AAAA,EACF;AAAA,EAEA,iBAAiB;AAAA,IACf,UAAU,QAAQ,IAAI,qBAAqB;AAAA,EAC7C;AACF,CAAC;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
package/dist/jsx/shared.js
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { Text } from "@tamagui/core";
|
|
2
|
-
import { getVariableValue, isWeb } from "@tamagui/core";
|
|
3
|
-
import { getButtonSized } from "@tamagui/get-button-sized";
|
|
4
|
-
import { getFontSized } from "@tamagui/get-font-sized";
|
|
5
|
-
import { getSpace } from "@tamagui/get-token";
|
|
6
|
-
const defaultStyles = {
|
|
7
|
-
size: "$true",
|
|
8
|
-
fontFamily: "$body",
|
|
9
|
-
borderWidth: 1,
|
|
10
|
-
outlineWidth: 0,
|
|
11
|
-
color: "$color",
|
|
12
|
-
...isWeb ? {
|
|
13
|
-
tabIndex: 0
|
|
14
|
-
} : {
|
|
15
|
-
focusable: !0
|
|
16
|
-
},
|
|
17
|
-
borderColor: "$borderColor",
|
|
18
|
-
backgroundColor: "$background",
|
|
19
|
-
// this fixes a flex bug where it overflows container
|
|
20
|
-
minWidth: 0,
|
|
21
|
-
hoverStyle: {
|
|
22
|
-
borderColor: "$borderColorHover"
|
|
23
|
-
},
|
|
24
|
-
focusStyle: {
|
|
25
|
-
borderColor: "$borderColorFocus"
|
|
26
|
-
},
|
|
27
|
-
focusVisibleStyle: {
|
|
28
|
-
outlineColor: "$outlineColor",
|
|
29
|
-
outlineWidth: 2,
|
|
30
|
-
outlineStyle: "solid"
|
|
31
|
-
}
|
|
32
|
-
}, inputSizeVariant = (val = "$true", extras) => {
|
|
33
|
-
if (extras.props.tag === "textarea" || extras.props.rows > 1 || extras.props.multiline || extras.props.numberOfLines > 1)
|
|
34
|
-
return textAreaSizeVariant(val, extras);
|
|
35
|
-
const buttonStyles = getButtonSized(val, extras), paddingHorizontal = getSpace(val, {
|
|
36
|
-
shift: -1,
|
|
37
|
-
bounds: [2]
|
|
38
|
-
}), fontStyle = getFontSized(val, extras);
|
|
39
|
-
return !isWeb && fontStyle && delete fontStyle.lineHeight, {
|
|
40
|
-
...fontStyle,
|
|
41
|
-
...buttonStyles,
|
|
42
|
-
paddingHorizontal
|
|
43
|
-
};
|
|
44
|
-
}, textAreaSizeVariant = (val = "$true", extras) => {
|
|
45
|
-
const { props } = extras, buttonStyles = getButtonSized(val, extras), fontStyle = getFontSized(val, extras), lines = props.rows ?? props.numberOfLines, height = typeof lines == "number" ? lines * getVariableValue(fontStyle.lineHeight) : "auto";
|
|
46
|
-
!isWeb && fontStyle && delete fontStyle.lineHeight;
|
|
47
|
-
const paddingVertical = getSpace(val, {
|
|
48
|
-
shift: -2,
|
|
49
|
-
bounds: [2]
|
|
50
|
-
}), paddingHorizontal = getSpace(val, {
|
|
51
|
-
shift: -1,
|
|
52
|
-
bounds: [2]
|
|
53
|
-
});
|
|
54
|
-
return {
|
|
55
|
-
...buttonStyles,
|
|
56
|
-
...fontStyle,
|
|
57
|
-
paddingVertical,
|
|
58
|
-
paddingHorizontal,
|
|
59
|
-
height
|
|
60
|
-
};
|
|
61
|
-
}, INPUT_NAME = "Input", styledBody = [
|
|
62
|
-
{
|
|
63
|
-
name: INPUT_NAME,
|
|
64
|
-
render: "input",
|
|
65
|
-
variants: {
|
|
66
|
-
unstyled: {
|
|
67
|
-
false: defaultStyles
|
|
68
|
-
},
|
|
69
|
-
size: {
|
|
70
|
-
"...size": inputSizeVariant
|
|
71
|
-
},
|
|
72
|
-
disabled: {
|
|
73
|
-
true: {}
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
|
-
defaultVariants: {
|
|
77
|
-
unstyled: process.env.TAMAGUI_HEADLESS === "1"
|
|
78
|
-
}
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
isInput: !0,
|
|
82
|
-
accept: {
|
|
83
|
-
placeholderTextColor: "color",
|
|
84
|
-
selectionColor: "color"
|
|
85
|
-
},
|
|
86
|
-
validStyles: Text.staticConfig.validStyles
|
|
87
|
-
}
|
|
88
|
-
];
|
|
89
|
-
export {
|
|
90
|
-
INPUT_NAME,
|
|
91
|
-
defaultStyles,
|
|
92
|
-
inputSizeVariant,
|
|
93
|
-
styledBody,
|
|
94
|
-
textAreaSizeVariant
|
|
95
|
-
};
|
|
96
|
-
//# sourceMappingURL=shared.js.map
|
package/dist/jsx/shared.js.map
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/shared.tsx"],
|
|
4
|
-
"mappings": "AACA,SAAS,YAAY;AACrB,SAAS,kBAAkB,aAAa;AACxC,SAAS,sBAAsB;AAC/B,SAAS,oBAAoB;AAC7B,SAAS,gBAAgB;AAElB,MAAM,gBAAgB;AAAA,EAC3B,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,cAAc;AAAA,EACd,OAAO;AAAA,EAEP,GAAI,QACA;AAAA,IACE,UAAU;AAAA,EACZ,IACA;AAAA,IACE,WAAW;AAAA,EACb;AAAA,EAEJ,aAAa;AAAA,EACb,iBAAiB;AAAA;AAAA,EAGjB,UAAU;AAAA,EAEV,YAAY;AAAA,IACV,aAAa;AAAA,EACf;AAAA,EAEA,YAAY;AAAA,IACV,aAAa;AAAA,EACf;AAAA,EAEA,mBAAmB;AAAA,IACjB,cAAc;AAAA,IACd,cAAc;AAAA,IACd,cAAc;AAAA,EAChB;AACF,GAEa,mBAAmD,CAC9D,MAAM,SACN,WACG;AAEH,MACE,OAAO,MAAM,QAAQ,cACrB,OAAO,MAAM,OAAO,KACpB,OAAO,MAAM,aACb,OAAO,MAAM,gBAAgB;AAE7B,WAAO,oBAAoB,KAAK,MAAM;AAExC,QAAM,eAAe,eAAe,KAAK,MAAM,GACzC,oBAAoB,SAAS,KAAK;AAAA,IACtC,OAAO;AAAA,IACP,QAAQ,CAAC,CAAC;AAAA,EACZ,CAAC,GACK,YAAY,aAAa,KAAY,MAAM;AAEjD,SAAI,CAAC,SAAS,aACZ,OAAO,UAAU,YAEZ;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH;AAAA,EACF;AACF,GAEa,sBAAsD,CACjE,MAAM,SACN,WACG;AACH,QAAM,EAAE,MAAM,IAAI,QACZ,eAAe,eAAe,KAAK,MAAM,GACzC,YAAY,aAAa,KAAY,MAAM,GAC3C,QAAQ,MAAM,QAAQ,MAAM,eAC5B,SACJ,OAAO,SAAU,WAAW,QAAQ,iBAAiB,UAAU,UAAU,IAAI;AAE/E,EAAI,CAAC,SAAS,aACZ,OAAO,UAAU;AAEnB,QAAM,kBAAkB,SAAS,KAAK;AAAA,IACpC,OAAO;AAAA,IACP,QAAQ,CAAC,CAAC;AAAA,EACZ,CAAC,GACK,oBAAoB,SAAS,KAAK;AAAA,IACtC,OAAO;AAAA,IACP,QAAQ,CAAC,CAAC;AAAA,EACZ,CAAC;AACD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF,GACa,aAAa,SAEb,aAAa;AAAA,EACxB;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,MACR,UAAU;AAAA,QACR,OAAO;AAAA,MACT;AAAA,MAEA,MAAM;AAAA,QACJ,WAAW;AAAA,MACb;AAAA,MAEA,UAAU;AAAA,QACR,MAAM,CAAC;AAAA,MACT;AAAA,IACF;AAAA,IAEA,iBAAiB;AAAA,MACf,UAAU,QAAQ,IAAI,qBAAqB;AAAA,IAC7C;AAAA,EACF;AAAA,EAEA;AAAA,IACE,SAAS;AAAA,IACT,QAAQ;AAAA,MACN,sBAAsB;AAAA,MACtB,gBAAgB;AAAA,IAClB;AAAA,IAEA,aAAa,KAAK,aAAa;AAAA,EACjC;AACF;",
|
|
5
|
-
"names": []
|
|
6
|
-
}
|
package/dist/jsx/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
//# sourceMappingURL=types.js.map
|
package/dist/jsx/types.js.map
DELETED
package/dist/jsx/v1/Input.js
DELETED
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
import { View, styled, useEvent, useTheme } from "@tamagui/core";
|
|
2
|
-
import { registerFocusable } from "@tamagui/focusable";
|
|
3
|
-
import { useWebRef } from "@tamagui/element";
|
|
4
|
-
import React from "react";
|
|
5
|
-
import { styledBody } from "../shared";
|
|
6
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
-
const StyledInput = styled(View, styledBody[0], styledBody[1]), Input = StyledInput.styleable((inProps, forwardedRef) => {
|
|
8
|
-
const {
|
|
9
|
-
// some of destructed props are just to avoid passing them to ...rest because they are not in web.
|
|
10
|
-
allowFontScaling,
|
|
11
|
-
selectTextOnFocus,
|
|
12
|
-
showSoftInputOnFocus,
|
|
13
|
-
textContentType,
|
|
14
|
-
passwordRules,
|
|
15
|
-
textBreakStrategy,
|
|
16
|
-
underlineColorAndroid,
|
|
17
|
-
selection,
|
|
18
|
-
lineBreakStrategyIOS,
|
|
19
|
-
returnKeyLabel,
|
|
20
|
-
disabled,
|
|
21
|
-
onSubmitEditing,
|
|
22
|
-
caretHidden,
|
|
23
|
-
clearButtonMode,
|
|
24
|
-
clearTextOnFocus,
|
|
25
|
-
contextMenuHidden,
|
|
26
|
-
dataDetectorTypes,
|
|
27
|
-
id,
|
|
28
|
-
enablesReturnKeyAutomatically,
|
|
29
|
-
importantForAutofill,
|
|
30
|
-
inlineImageLeft,
|
|
31
|
-
inlineImagePadding,
|
|
32
|
-
inputAccessoryViewID,
|
|
33
|
-
keyboardAppearance,
|
|
34
|
-
keyboardType,
|
|
35
|
-
cursorColor,
|
|
36
|
-
disableFullscreenUI,
|
|
37
|
-
editable,
|
|
38
|
-
maxFontSizeMultiplier,
|
|
39
|
-
multiline,
|
|
40
|
-
numberOfLines,
|
|
41
|
-
onChangeText,
|
|
42
|
-
onContentSizeChange,
|
|
43
|
-
onEndEditing,
|
|
44
|
-
onScroll,
|
|
45
|
-
onSelectionChange,
|
|
46
|
-
// @ts-ignore
|
|
47
|
-
caretColor,
|
|
48
|
-
placeholderTextColor,
|
|
49
|
-
blurOnSubmit,
|
|
50
|
-
enterKeyHint,
|
|
51
|
-
returnKeyType,
|
|
52
|
-
rejectResponderTermination,
|
|
53
|
-
scrollEnabled,
|
|
54
|
-
secureTextEntry,
|
|
55
|
-
selectionColor,
|
|
56
|
-
inputMode,
|
|
57
|
-
...rest
|
|
58
|
-
} = inProps, { ref, composedRef } = useWebRef(forwardedRef), theme = useTheme(), _onSelectionChange = useEvent(() => {
|
|
59
|
-
const start = ref.current?.selectionStart ?? 0, end = ref.current?.selectionEnd ?? 0;
|
|
60
|
-
onSelectionChange?.({
|
|
61
|
-
nativeEvent: {
|
|
62
|
-
selection: {
|
|
63
|
-
end,
|
|
64
|
-
start
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
});
|
|
68
|
-
});
|
|
69
|
-
React.useEffect(() => {
|
|
70
|
-
if (onSelectionChange)
|
|
71
|
-
return ref.current?.addEventListener("selectionchange", _onSelectionChange), () => {
|
|
72
|
-
ref.current?.removeEventListener("selectionchange", _onSelectionChange);
|
|
73
|
-
};
|
|
74
|
-
}, []), React.useEffect(() => {
|
|
75
|
-
selection && ref.current?.setSelectionRange(selection.start || null, selection.end || null);
|
|
76
|
-
}, [selection?.start, selection?.end]);
|
|
77
|
-
const finalProps = {
|
|
78
|
-
...rest,
|
|
79
|
-
disabled,
|
|
80
|
-
caretColor,
|
|
81
|
-
id,
|
|
82
|
-
enterKeyHint,
|
|
83
|
-
type: (() => {
|
|
84
|
-
if (rest?.type) return rest.type;
|
|
85
|
-
if (secureTextEntry) return "password";
|
|
86
|
-
switch (keyboardType) {
|
|
87
|
-
case "number-pad":
|
|
88
|
-
case "numeric":
|
|
89
|
-
return "number";
|
|
90
|
-
case "email-address":
|
|
91
|
-
return "email";
|
|
92
|
-
case "phone-pad":
|
|
93
|
-
return "tel";
|
|
94
|
-
case "url":
|
|
95
|
-
return "url";
|
|
96
|
-
default:
|
|
97
|
-
return "text";
|
|
98
|
-
}
|
|
99
|
-
})(),
|
|
100
|
-
inputMode: (() => {
|
|
101
|
-
switch (keyboardType) {
|
|
102
|
-
case "number-pad":
|
|
103
|
-
case "numeric":
|
|
104
|
-
return "numeric";
|
|
105
|
-
case "decimal-pad":
|
|
106
|
-
return "decimal";
|
|
107
|
-
case "email-address":
|
|
108
|
-
return "email";
|
|
109
|
-
case "phone-pad":
|
|
110
|
-
return "tel";
|
|
111
|
-
case "url":
|
|
112
|
-
return "url";
|
|
113
|
-
default:
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
})(),
|
|
117
|
-
style: {
|
|
118
|
-
...rest.style,
|
|
119
|
-
...placeholderTextColor && {
|
|
120
|
-
"--placeholderColor": theme[placeholderTextColor]?.variable || placeholderTextColor
|
|
121
|
-
},
|
|
122
|
-
...selectionColor && {
|
|
123
|
-
"--selectionBackground": theme[selectionColor]?.variable || selectionColor
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
|
-
return React.useEffect(() => {
|
|
128
|
-
if (id && !disabled)
|
|
129
|
-
return registerFocusable(id, {
|
|
130
|
-
focusAndSelect: () => {
|
|
131
|
-
ref.current?.focus();
|
|
132
|
-
},
|
|
133
|
-
focus: () => {
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
}, [id, disabled]), /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
137
|
-
/* @__PURE__ */ jsx("style", { children: `
|
|
138
|
-
input::selection, textarea::selection {
|
|
139
|
-
background-color: var(--selectionBackground) !important;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
input::placeholder, textarea::placeholder {
|
|
143
|
-
color: var(--placeholderColor) !important;
|
|
144
|
-
}
|
|
145
|
-
` }),
|
|
146
|
-
/* @__PURE__ */ jsx(StyledInput, { ref: composedRef, ...finalProps })
|
|
147
|
-
] });
|
|
148
|
-
});
|
|
149
|
-
export {
|
|
150
|
-
Input
|
|
151
|
-
};
|
|
152
|
-
//# sourceMappingURL=Input.js.map
|