bluebird-react-native-keyboard-aware-scroll-view 0.9.5
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/.eslintrc +261 -0
- package/.flowconfig +96 -0
- package/.travis.yml +3 -0
- package/CODE_OF_CONDUCT.md +46 -0
- package/LICENSE +22 -0
- package/README.md +217 -0
- package/index.d.ts +184 -0
- package/index.js +13 -0
- package/jsconfig.json +9 -0
- package/lib/KeyboardAwareFlatList.js +6 -0
- package/lib/KeyboardAwareHOC.js +586 -0
- package/lib/KeyboardAwareInterface.js +13 -0
- package/lib/KeyboardAwareScrollView.js +6 -0
- package/lib/KeyboardAwareSectionList.js +6 -0
- package/package.json +53 -0
package/.eslintrc
ADDED
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
{
|
|
2
|
+
"parser": "babel-eslint",
|
|
3
|
+
"parserOptions": {
|
|
4
|
+
"ecmaFeatures": {
|
|
5
|
+
"jsx": true
|
|
6
|
+
}
|
|
7
|
+
},
|
|
8
|
+
"env": {
|
|
9
|
+
"es6": true,
|
|
10
|
+
"jasmine": true
|
|
11
|
+
},
|
|
12
|
+
"plugins": ["react", "react-native", "flowtype"],
|
|
13
|
+
// Map from global var to bool specifying if it can be redefined
|
|
14
|
+
"globals": {
|
|
15
|
+
"__DEV__": true,
|
|
16
|
+
"__dirname": false,
|
|
17
|
+
"__fbBatchedBridgeConfig": false,
|
|
18
|
+
"alert": false,
|
|
19
|
+
"cancelAnimationFrame": false,
|
|
20
|
+
"cancelIdleCallback": false,
|
|
21
|
+
"clearImmediate": true,
|
|
22
|
+
"clearInterval": false,
|
|
23
|
+
"clearTimeout": false,
|
|
24
|
+
"console": false,
|
|
25
|
+
"document": false,
|
|
26
|
+
"escape": false,
|
|
27
|
+
"Event": false,
|
|
28
|
+
"EventTarget": false,
|
|
29
|
+
"exports": false,
|
|
30
|
+
"fetch": false,
|
|
31
|
+
"FormData": false,
|
|
32
|
+
"global": false,
|
|
33
|
+
"Generator": true,
|
|
34
|
+
"jest": false,
|
|
35
|
+
"Map": true,
|
|
36
|
+
"module": false,
|
|
37
|
+
"navigator": false,
|
|
38
|
+
"process": false,
|
|
39
|
+
"Promise": true,
|
|
40
|
+
"requestAnimationFrame": true,
|
|
41
|
+
"requestIdleCallback": true,
|
|
42
|
+
"require": false,
|
|
43
|
+
"Set": true,
|
|
44
|
+
"setImmediate": true,
|
|
45
|
+
"setInterval": false,
|
|
46
|
+
"setTimeout": false,
|
|
47
|
+
"window": false,
|
|
48
|
+
"XMLHttpRequest": false,
|
|
49
|
+
"pit": false,
|
|
50
|
+
"test": true,
|
|
51
|
+
// Flow global types.
|
|
52
|
+
"ReactComponent": false,
|
|
53
|
+
"ReactClass": false,
|
|
54
|
+
"ReactElement": false,
|
|
55
|
+
"ReactPropsCheckType": false,
|
|
56
|
+
"ReactPropsChainableTypeChecker": false,
|
|
57
|
+
"ReactPropTypes": false,
|
|
58
|
+
"SyntheticEvent": false,
|
|
59
|
+
"$Either": false,
|
|
60
|
+
"$All": false,
|
|
61
|
+
"$ArrayBufferView": false,
|
|
62
|
+
"$Tuple": false,
|
|
63
|
+
"$Supertype": false,
|
|
64
|
+
"$Subtype": false,
|
|
65
|
+
"$Shape": false,
|
|
66
|
+
"$Diff": false,
|
|
67
|
+
"$Keys": false,
|
|
68
|
+
"$Enum": false,
|
|
69
|
+
"$Exports": false,
|
|
70
|
+
"$FlowIssue": false,
|
|
71
|
+
"$FlowFixMe": false,
|
|
72
|
+
"$FixMe": false
|
|
73
|
+
},
|
|
74
|
+
"rules": {
|
|
75
|
+
"comma-dangle": 0, // disallow trailing commas in object literals
|
|
76
|
+
"no-cond-assign": 1, // disallow assignment in conditional expressions
|
|
77
|
+
"no-console": 0, // disallow use of console (off by default in the node environment)
|
|
78
|
+
"no-const-assign": 2, // disallow assignment to const-declared variables
|
|
79
|
+
"no-constant-condition": 0, // disallow use of constant expressions in conditions
|
|
80
|
+
"no-control-regex": 1, // disallow control characters in regular expressions
|
|
81
|
+
"no-debugger": 0, // disallow use of debugger
|
|
82
|
+
"no-dupe-keys": 1, // disallow duplicate keys when creating object literals
|
|
83
|
+
"no-empty": 0, // disallow empty statements
|
|
84
|
+
"no-ex-assign": 1, // disallow assigning to the exception in a catch block
|
|
85
|
+
"no-extra-boolean-cast": 1, // disallow double-negation boolean casts in a boolean context
|
|
86
|
+
"no-extra-parens": 0, // disallow unnecessary parentheses (off by default)
|
|
87
|
+
"no-extra-semi": 1, // disallow unnecessary semicolons
|
|
88
|
+
"no-func-assign": 1, // disallow overwriting functions written as function declarations
|
|
89
|
+
"no-inner-declarations": 0, // disallow function or variable declarations in nested blocks
|
|
90
|
+
"no-invalid-regexp": 1, // disallow invalid regular expression strings in the RegExp constructor
|
|
91
|
+
"no-negated-in-lhs": 1, // disallow negation of the left operand of an in expression
|
|
92
|
+
"no-obj-calls": 1, // disallow the use of object properties of the global object (Math and JSON) as functions
|
|
93
|
+
"no-regex-spaces": 1, // disallow multiple spaces in a regular expression literal
|
|
94
|
+
"no-reserved-keys": 0, // disallow reserved words being used as object literal keys (off by default)
|
|
95
|
+
"no-sparse-arrays": 1, // disallow sparse arrays
|
|
96
|
+
"no-unreachable": 1, // disallow unreachable statements after a return, throw, continue, or break statement
|
|
97
|
+
"use-isnan": 1, // disallow comparisons with the value NaN
|
|
98
|
+
"valid-jsdoc": 0, // Ensure JSDoc comments are valid (off by default)
|
|
99
|
+
"valid-typeof": 1, // Ensure that the results of typeof are compared against a valid string
|
|
100
|
+
// Best Practices
|
|
101
|
+
// These are rules designed to prevent you from making mistakes. They either prescribe a better way of doing something or help you avoid footguns.
|
|
102
|
+
"block-scoped-var": 0, // treat var statements as if they were block scoped (off by default)
|
|
103
|
+
"complexity": 0, // specify the maximum cyclomatic complexity allowed in a program (off by default)
|
|
104
|
+
"consistent-return": 0, // require return statements to either always or never specify values
|
|
105
|
+
"curly": 1, // specify curly brace conventions for all control statements
|
|
106
|
+
"default-case": 0, // require default case in switch statements (off by default)
|
|
107
|
+
"dot-notation": 1, // encourages use of dot notation whenever possible
|
|
108
|
+
"eqeqeq": [1, "allow-null"], // require the use of === and !==
|
|
109
|
+
"guard-for-in": 0, // make sure for-in loops have an if statement (off by default)
|
|
110
|
+
"no-alert": 1, // disallow the use of alert, confirm, and prompt
|
|
111
|
+
"no-caller": 1, // disallow use of arguments.caller or arguments.callee
|
|
112
|
+
"no-div-regex": 1, // disallow division operators explicitly at beginning of regular expression (off by default)
|
|
113
|
+
"no-else-return": 0, // disallow else after a return in an if (off by default)
|
|
114
|
+
"no-eq-null": 0, // disallow comparisons to null without a type-checking operator (off by default)
|
|
115
|
+
"no-eval": 1, // disallow use of eval()
|
|
116
|
+
"no-extend-native": 1, // disallow adding to native types
|
|
117
|
+
"no-extra-bind": 1, // disallow unnecessary function binding
|
|
118
|
+
"no-fallthrough": 1, // disallow fallthrough of case statements
|
|
119
|
+
"no-floating-decimal": 1, // disallow the use of leading or trailing decimal points in numeric literals (off by default)
|
|
120
|
+
"no-implied-eval": 1, // disallow use of eval()-like methods
|
|
121
|
+
"no-labels": 1, // disallow use of labeled statements
|
|
122
|
+
"no-iterator": 1, // disallow usage of __iterator__ property
|
|
123
|
+
"no-lone-blocks": 1, // disallow unnecessary nested blocks
|
|
124
|
+
"no-loop-func": 0, // disallow creation of functions within loops
|
|
125
|
+
"no-multi-str": 0, // disallow use of multiline strings
|
|
126
|
+
"no-native-reassign": 0, // disallow reassignments of native objects
|
|
127
|
+
"no-new": 1, // disallow use of new operator when not part of the assignment or comparison
|
|
128
|
+
"no-new-func": 1, // disallow use of new operator for Function object
|
|
129
|
+
"no-new-wrappers": 1, // disallows creating new instances of String,Number, and Boolean
|
|
130
|
+
"no-octal": 1, // disallow use of octal literals
|
|
131
|
+
"no-octal-escape": 1, // disallow use of octal escape sequences in string literals, such as var foo = "Copyright \251";
|
|
132
|
+
"no-proto": 1, // disallow usage of __proto__ property
|
|
133
|
+
"no-redeclare": 0, // disallow declaring the same variable more then once
|
|
134
|
+
"no-return-assign": 1, // disallow use of assignment in return statement
|
|
135
|
+
"no-script-url": 1, // disallow use of javascript: urls.
|
|
136
|
+
"no-self-compare": 1, // disallow comparisons where both sides are exactly the same (off by default)
|
|
137
|
+
"no-sequences": 1, // disallow use of comma operator
|
|
138
|
+
"no-unused-expressions": 0, // disallow usage of expressions in statement position
|
|
139
|
+
"no-void": 1, // disallow use of void operator (off by default)
|
|
140
|
+
"no-warning-comments": 0, // disallow usage of configurable warning terms in comments": 1, // e.g. TODO or FIXME (off by default)
|
|
141
|
+
"no-with": 1, // disallow use of the with statement
|
|
142
|
+
"radix": 1, // require use of the second argument for parseInt() (off by default)
|
|
143
|
+
"semi-spacing": 1, // require a space after a semi-colon
|
|
144
|
+
"vars-on-top": 0, // requires to declare all vars on top of their containing scope (off by default)
|
|
145
|
+
"wrap-iife": 0, // require immediate function invocation to be wrapped in parentheses (off by default)
|
|
146
|
+
"yoda": 1, // require or disallow Yoda conditions
|
|
147
|
+
// Variables
|
|
148
|
+
// These rules have to do with variable declarations.
|
|
149
|
+
"no-catch-shadow": 1, // disallow the catch clause parameter name being the same as a variable in the outer scope (off by default in the node environment)
|
|
150
|
+
"no-delete-var": 1, // disallow deletion of variables
|
|
151
|
+
"no-label-var": 1, // disallow labels that share a name with a variable
|
|
152
|
+
"no-shadow": 1, // disallow declaration of variables already declared in the outer scope
|
|
153
|
+
"no-shadow-restricted-names": 1, // disallow shadowing of names such as arguments
|
|
154
|
+
"no-undef": 2, // disallow use of undeclared variables unless mentioned in a /*global */ block
|
|
155
|
+
"no-undefined": 0, // disallow use of undefined variable (off by default)
|
|
156
|
+
"no-undef-init": 1, // disallow use of undefined when initializing variables
|
|
157
|
+
"no-unused-vars": [
|
|
158
|
+
1,
|
|
159
|
+
{
|
|
160
|
+
"vars": "all",
|
|
161
|
+
"args": "none"
|
|
162
|
+
}
|
|
163
|
+
], // disallow declaration of variables that are not used in the code
|
|
164
|
+
"no-use-before-define": 0, // disallow use of variables before they are defined
|
|
165
|
+
// Node.js
|
|
166
|
+
// These rules are specific to JavaScript running on Node.js.
|
|
167
|
+
"handle-callback-err": 1, // enforces error handling in callbacks (off by default) (on by default in the node environment)
|
|
168
|
+
"no-mixed-requires": 1, // disallow mixing regular variable and require declarations (off by default) (on by default in the node environment)
|
|
169
|
+
"no-new-require": 1, // disallow use of new operator with the require function (off by default) (on by default in the node environment)
|
|
170
|
+
"no-path-concat": 1, // disallow string concatenation with __dirname and __filename (off by default) (on by default in the node environment)
|
|
171
|
+
"no-process-exit": 0, // disallow process.exit() (on by default in the node environment)
|
|
172
|
+
"no-restricted-modules": 1, // restrict usage of specified node modules (off by default)
|
|
173
|
+
"no-sync": 0, // disallow use of synchronous methods (off by default)
|
|
174
|
+
// Stylistic Issues
|
|
175
|
+
// These rules are purely matters of style and are quite subjective.
|
|
176
|
+
"key-spacing": 0,
|
|
177
|
+
"keyword-spacing": 1, // enforce spacing before and after keywords
|
|
178
|
+
"jsx-quotes": [1, "prefer-single"],
|
|
179
|
+
"comma-spacing": 0,
|
|
180
|
+
"no-multi-spaces": 0,
|
|
181
|
+
"brace-style": 0, // enforce one true brace style (off by default)
|
|
182
|
+
"camelcase": 0, // require camel case names
|
|
183
|
+
"consistent-this": [1, "self"], // enforces consistent naming when capturing the current execution context (off by default)
|
|
184
|
+
"eol-last": 1, // enforce newline at the end of file, with no multiple empty lines
|
|
185
|
+
"func-names": 0, // require function expressions to have a name (off by default)
|
|
186
|
+
"func-style": 0, // enforces use of function declarations or expressions (off by default)
|
|
187
|
+
"new-cap": 0, // require a capital letter for constructors
|
|
188
|
+
"new-parens": 1, // disallow the omission of parentheses when invoking a constructor with no arguments
|
|
189
|
+
"no-nested-ternary": 0, // disallow nested ternary expressions (off by default)
|
|
190
|
+
"no-array-constructor": 1, // disallow use of the Array constructor
|
|
191
|
+
"no-lonely-if": 0, // disallow if as the only statement in an else block (off by default)
|
|
192
|
+
"no-new-object": 1, // disallow use of the Object constructor
|
|
193
|
+
"no-spaced-func": 1, // disallow space between function identifier and application
|
|
194
|
+
"no-ternary": 0, // disallow the use of ternary operators (off by default)
|
|
195
|
+
"no-trailing-spaces": 1, // disallow trailing whitespace at the end of lines
|
|
196
|
+
"no-underscore-dangle": 0, // disallow dangling underscores in identifiers
|
|
197
|
+
"no-mixed-spaces-and-tabs": 1, // disallow mixed spaces and tabs for indentation
|
|
198
|
+
"quotes": [1, "single", "avoid-escape"], // specify whether double or single quotes should be used
|
|
199
|
+
"quote-props": 0, // require quotes around object literal property names (off by default)
|
|
200
|
+
"semi": ["error", "never"], // require or disallow use of semicolons instead of ASI
|
|
201
|
+
"sort-vars": 0, // sort variables within the same declaration block (off by default)
|
|
202
|
+
"space-in-brackets": 0, // require or disallow spaces inside brackets (off by default)
|
|
203
|
+
"space-in-parens": 0, // require or disallow spaces inside parentheses (off by default)
|
|
204
|
+
"space-infix-ops": 1, // require spaces around operators
|
|
205
|
+
"space-unary-ops": [
|
|
206
|
+
1,
|
|
207
|
+
{
|
|
208
|
+
"words": true,
|
|
209
|
+
"nonwords": false
|
|
210
|
+
}
|
|
211
|
+
], // require or disallow spaces before/after unary operators (words on by default, nonwords off by default)
|
|
212
|
+
"max-nested-callbacks": 0, // specify the maximum depth callbacks can be nested (off by default)
|
|
213
|
+
"one-var": 0, // allow just one var statement per function (off by default)
|
|
214
|
+
"wrap-regex": 0, // require regex literals to be wrapped in parentheses (off by default)
|
|
215
|
+
// Legacy
|
|
216
|
+
// The following rules are included for compatibility with JSHint and JSLint. While the names of the rules may not match up with the JSHint/JSLint counterpart, the functionality is the same.
|
|
217
|
+
"max-depth": 0, // specify the maximum depth that blocks can be nested (off by default)
|
|
218
|
+
"max-len": 0, // specify the maximum length of a line in your program (off by default)
|
|
219
|
+
"max-params": 0, // limits the number of parameters that can be used in the function declaration. (off by default)
|
|
220
|
+
"max-statements": 0, // specify the maximum number of statement allowed in a function (off by default)
|
|
221
|
+
"no-bitwise": 1, // disallow use of bitwise operators (off by default)
|
|
222
|
+
"no-plusplus": 0, // disallow use of unary operators, ++ and -- (off by default)
|
|
223
|
+
// React Plugin
|
|
224
|
+
// The following rules are made available via `eslint-plugin-react`.
|
|
225
|
+
"react/display-name": 0,
|
|
226
|
+
"react/jsx-boolean-value": 0,
|
|
227
|
+
"react/jsx-no-duplicate-props": 2,
|
|
228
|
+
"react/jsx-no-undef": 1,
|
|
229
|
+
"react/jsx-sort-props": 0,
|
|
230
|
+
"react/jsx-uses-react": 1,
|
|
231
|
+
"react/jsx-uses-vars": 1,
|
|
232
|
+
"react/no-did-mount-set-state": 1,
|
|
233
|
+
"react/no-did-update-set-state": 1,
|
|
234
|
+
"react/no-multi-comp": 0,
|
|
235
|
+
"react/no-string-refs": 1,
|
|
236
|
+
"react/no-unknown-property": 0,
|
|
237
|
+
"react/prop-types": 0,
|
|
238
|
+
"react/react-in-jsx-scope": 1,
|
|
239
|
+
"react/self-closing-comp": 1,
|
|
240
|
+
"react/wrap-multilines": 0,
|
|
241
|
+
// Flowtype Plugin
|
|
242
|
+
"flowtype/boolean-style": [2, "boolean"],
|
|
243
|
+
"flowtype/define-flow-type": 1,
|
|
244
|
+
"flowtype/delimiter-dangle": [2, "never"],
|
|
245
|
+
"flowtype/generic-spacing": [2, "never"],
|
|
246
|
+
"flowtype/no-primitive-constructor-types": 2,
|
|
247
|
+
"flowtype/no-weak-types": 0,
|
|
248
|
+
"flowtype/object-type-delimiter": [2, "comma"],
|
|
249
|
+
"flowtype/require-parameter-type": 2,
|
|
250
|
+
"flowtype/require-return-type": 0,
|
|
251
|
+
"flowtype/require-valid-file-annotation": 2,
|
|
252
|
+
"flowtype/semi": [2, "never"],
|
|
253
|
+
"flowtype/space-after-type-colon": [2, "always"],
|
|
254
|
+
"flowtype/space-before-generic-bracket": [2, "never"],
|
|
255
|
+
"flowtype/space-before-type-colon": [2, "never"],
|
|
256
|
+
"flowtype/type-id-match": 0,
|
|
257
|
+
"flowtype/union-intersection-spacing": [2, "always"],
|
|
258
|
+
"flowtype/use-flow-type": 1,
|
|
259
|
+
"flowtype/valid-syntax": 1
|
|
260
|
+
}
|
|
261
|
+
}
|
package/.flowconfig
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
[ignore]
|
|
2
|
+
|
|
3
|
+
# We fork some components by platform.
|
|
4
|
+
.*/*.web.js
|
|
5
|
+
.*/*.android.js
|
|
6
|
+
|
|
7
|
+
# Some modules have their own node_modules with overlap
|
|
8
|
+
.*/node_modules/node-haste/.*
|
|
9
|
+
|
|
10
|
+
# Ugh
|
|
11
|
+
.*/node_modules/babel.*
|
|
12
|
+
.*/node_modules/babylon.*
|
|
13
|
+
.*/node_modules/invariant.*
|
|
14
|
+
|
|
15
|
+
# Ignore react and fbjs where there are overlaps, but don't ignore
|
|
16
|
+
# anything that react-native relies on
|
|
17
|
+
.*/node_modules/fbjs/lib/Map.js
|
|
18
|
+
.*/node_modules/fbjs/lib/fetch.js
|
|
19
|
+
.*/node_modules/fbjs/lib/ExecutionEnvironment.js
|
|
20
|
+
.*/node_modules/fbjs/lib/ErrorUtils.js
|
|
21
|
+
|
|
22
|
+
# Flow has a built-in definition for the 'react' module which we prefer to use
|
|
23
|
+
# over the currently-untyped source
|
|
24
|
+
.*/node_modules/react/react.js
|
|
25
|
+
.*/node_modules/react/lib/React.js
|
|
26
|
+
.*/node_modules/react/lib/ReactDOM.js
|
|
27
|
+
|
|
28
|
+
.*/__mocks__/.*
|
|
29
|
+
.*/__tests__/.*
|
|
30
|
+
|
|
31
|
+
.*/commoner/test/source/widget/share.js
|
|
32
|
+
|
|
33
|
+
# Ignore commoner tests
|
|
34
|
+
.*/node_modules/commoner/test/.*
|
|
35
|
+
|
|
36
|
+
# See https://github.com/facebook/flow/issues/442
|
|
37
|
+
.*/react-tools/node_modules/commoner/lib/reader.js
|
|
38
|
+
|
|
39
|
+
# Ignore jest
|
|
40
|
+
.*/node_modules/jest-cli/.*
|
|
41
|
+
|
|
42
|
+
# Ignore Website
|
|
43
|
+
.*/website/.*
|
|
44
|
+
|
|
45
|
+
# Ignore generators
|
|
46
|
+
.*/local-cli/generator.*
|
|
47
|
+
|
|
48
|
+
# Ignore BUCK generated folders
|
|
49
|
+
.*\.buckd/
|
|
50
|
+
|
|
51
|
+
.*/node_modules/is-my-json-valid/test/.*\.json
|
|
52
|
+
.*/node_modules/iconv-lite/encodings/tables/.*\.json
|
|
53
|
+
.*/node_modules/y18n/test/.*\.json
|
|
54
|
+
.*/node_modules/spdx-license-ids/spdx-license-ids.json
|
|
55
|
+
.*/node_modules/spdx-exceptions/index.json
|
|
56
|
+
.*/node_modules/resolve/test/subdirs/node_modules/a/b/c/x.json
|
|
57
|
+
.*/node_modules/resolve/lib/core.json
|
|
58
|
+
.*/node_modules/jsonparse/samplejson/.*\.json
|
|
59
|
+
.*/node_modules/json5/test/.*\.json
|
|
60
|
+
.*/node_modules/ua-parser-js/test/.*\.json
|
|
61
|
+
.*/node_modules/builtin-modules/builtin-modules.json
|
|
62
|
+
.*/node_modules/binary-extensions/binary-extensions.json
|
|
63
|
+
.*/node_modules/url-regex/tlds.json
|
|
64
|
+
.*/node_modules/joi/.*\.json
|
|
65
|
+
.*/node_modules/isemail/.*\.json
|
|
66
|
+
.*/node_modules/tr46/.*\.json
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
[include]
|
|
70
|
+
|
|
71
|
+
[libs]
|
|
72
|
+
node_modules/react-native/Libraries/react-native/react-native-interface.js
|
|
73
|
+
node_modules/react-native/flow
|
|
74
|
+
flow/
|
|
75
|
+
|
|
76
|
+
[options]
|
|
77
|
+
module.system=haste
|
|
78
|
+
|
|
79
|
+
esproposal.class_static_fields=enable
|
|
80
|
+
esproposal.class_instance_fields=enable
|
|
81
|
+
|
|
82
|
+
munge_underscores=true
|
|
83
|
+
|
|
84
|
+
module.name_mapper='^image![a-zA-Z0-9$_-]+$' -> 'GlobalImageStub'
|
|
85
|
+
module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\)$' -> 'RelativeImageStub'
|
|
86
|
+
|
|
87
|
+
suppress_type=$FlowIssue
|
|
88
|
+
suppress_type=$FlowFixMe
|
|
89
|
+
suppress_type=$FixMe
|
|
90
|
+
|
|
91
|
+
suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(>=0\\.\\(2[0-3]\\|1[0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)
|
|
92
|
+
suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(>=0\\.\\(2[0-3]\\|1[0-9]\\|[0-9]\\).[0-9]\\)? *\\(site=[a-z,_]*react_native[a-z,_]*\\)?)\\)?:? #[0-9]+
|
|
93
|
+
suppress_comment=\\(.\\|\n\\)*\\$FlowFixedInNextDeploy
|
|
94
|
+
|
|
95
|
+
[version]
|
|
96
|
+
>=0.47.0
|
package/.travis.yml
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Pledge
|
|
4
|
+
|
|
5
|
+
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
|
|
6
|
+
|
|
7
|
+
## Our Standards
|
|
8
|
+
|
|
9
|
+
Examples of behavior that contributes to creating a positive environment include:
|
|
10
|
+
|
|
11
|
+
* Using welcoming and inclusive language
|
|
12
|
+
* Being respectful of differing viewpoints and experiences
|
|
13
|
+
* Gracefully accepting constructive criticism
|
|
14
|
+
* Focusing on what is best for the community
|
|
15
|
+
* Showing empathy towards other community members
|
|
16
|
+
|
|
17
|
+
Examples of unacceptable behavior by participants include:
|
|
18
|
+
|
|
19
|
+
* The use of sexualized language or imagery and unwelcome sexual attention or advances
|
|
20
|
+
* Trolling, insulting/derogatory comments, and personal or political attacks
|
|
21
|
+
* Public or private harassment
|
|
22
|
+
* Publishing others' private information, such as a physical or electronic address, without explicit permission
|
|
23
|
+
* Other conduct which could reasonably be considered inappropriate in a professional setting
|
|
24
|
+
|
|
25
|
+
## Our Responsibilities
|
|
26
|
+
|
|
27
|
+
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
|
|
28
|
+
|
|
29
|
+
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
|
|
30
|
+
|
|
31
|
+
## Scope
|
|
32
|
+
|
|
33
|
+
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
|
|
34
|
+
|
|
35
|
+
## Enforcement
|
|
36
|
+
|
|
37
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at amedina@apsl.net. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
|
|
38
|
+
|
|
39
|
+
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
|
|
40
|
+
|
|
41
|
+
## Attribution
|
|
42
|
+
|
|
43
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
|
|
44
|
+
|
|
45
|
+
[homepage]: http://contributor-covenant.org
|
|
46
|
+
[version]: http://contributor-covenant.org/version/1/4/
|
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2015 APSL
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
package/README.md
ADDED
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
# react-native-keyboard-aware-scroll-view
|
|
2
|
+
|
|
3
|
+
<p>
|
|
4
|
+
<img src="https://travis-ci.org/APSL/react-native-keyboard-aware-scroll-view.svg?branch=master" />
|
|
5
|
+
<img src="https://img.shields.io/npm/dm/react-native-keyboard-aware-scroll-view.svg" />
|
|
6
|
+
<img src="https://img.shields.io/npm/dt/react-native-keyboard-aware-scroll-view.svg" />
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
This is a maintained fork of react-native-keyboard-aware-scroll-view
|
|
10
|
+
with Android 15 touch event fixes. `TextInput`.
|
|
11
|
+
|
|
12
|
+
<p align="center">
|
|
13
|
+
<img src="https://raw.githubusercontent.com/wiki/APSL/react-native-keyboard-aware-scroll-view/kasv.gif" alt="Scroll demo" width="400">
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
## Supported versions
|
|
17
|
+
|
|
18
|
+
- `v0.4.0` requires `RN>=0.48`
|
|
19
|
+
- `v0.2.0` requires `RN>=0.32.0`.
|
|
20
|
+
- `v0.1.2` requires `RN>=0.27.2` but you should use `0.2.0` in order to make it work with multiple scroll views.
|
|
21
|
+
- `v0.0.7` requires `react-native>=0.25.0`.
|
|
22
|
+
- Use `v0.0.6` for older RN versions.
|
|
23
|
+
|
|
24
|
+
## Installation
|
|
25
|
+
|
|
26
|
+
Installation can be done through `npm` or `yarn`:
|
|
27
|
+
|
|
28
|
+
```shell
|
|
29
|
+
npm i react-native-keyboard-aware-scroll-view --save
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
```shell
|
|
33
|
+
yarn add react-native-keyboard-aware-scroll-view
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Usage
|
|
37
|
+
|
|
38
|
+
You can use the `KeyboardAwareScrollView`, `KeyboardAwareSectionList` or the `KeyboardAwareFlatList`
|
|
39
|
+
components. They accept `ScrollView`, `SectionList` and `FlatList` default props respectively and
|
|
40
|
+
implement a custom high order component called `KeyboardAwareHOC` to handle keyboard appearance.
|
|
41
|
+
The high order component is also available if you want to use it in any other component.
|
|
42
|
+
|
|
43
|
+
Import `react-native-keyboard-aware-scroll-view` and wrap your content inside
|
|
44
|
+
it:
|
|
45
|
+
|
|
46
|
+
```js
|
|
47
|
+
import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view'
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
```jsx
|
|
51
|
+
<KeyboardAwareScrollView>
|
|
52
|
+
<View>
|
|
53
|
+
<TextInput />
|
|
54
|
+
</View>
|
|
55
|
+
</KeyboardAwareScrollView>
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Auto-scroll in `TextInput` fields
|
|
59
|
+
|
|
60
|
+
As of `v0.1.0`, the component auto scrolls to the focused `TextInput` 😎. For versions `v0.0.7` and older you can do the following.
|
|
61
|
+
|
|
62
|
+
### Programatically scroll to any `TextInput`
|
|
63
|
+
|
|
64
|
+
In order to scroll to any `TextInput` field, you can use the built-in method `scrollToFocusedInput`. Example:
|
|
65
|
+
|
|
66
|
+
```js
|
|
67
|
+
_scrollToInput (reactNode: any) {
|
|
68
|
+
// Add a 'scroll' ref to your ScrollView
|
|
69
|
+
this.scroll.props.scrollToFocusedInput(reactNode)
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
```jsx
|
|
74
|
+
<KeyboardAwareScrollView
|
|
75
|
+
innerRef={ref => {
|
|
76
|
+
this.scroll = ref
|
|
77
|
+
}}>
|
|
78
|
+
<View>
|
|
79
|
+
<TextInput
|
|
80
|
+
onFocus={(event: Event) => {
|
|
81
|
+
// `bind` the function if you're using ES6 classes
|
|
82
|
+
this._scrollToInput(ReactNative.findNodeHandle(event.target))
|
|
83
|
+
}}
|
|
84
|
+
/>
|
|
85
|
+
</View>
|
|
86
|
+
</KeyboardAwareScrollView>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Programatically scroll to any position
|
|
90
|
+
|
|
91
|
+
There's another built-in function that lets you programatically scroll to any position of the scroll view:
|
|
92
|
+
|
|
93
|
+
```js
|
|
94
|
+
this.scroll.props.scrollToPosition(0, 0)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Register to keyboard events
|
|
98
|
+
|
|
99
|
+
You can register to `ScrollViewResponder` events `onKeyboardWillShow` and `onKeyboardWillHide`:
|
|
100
|
+
|
|
101
|
+
```jsx
|
|
102
|
+
<KeyboardAwareScrollView
|
|
103
|
+
onKeyboardWillShow={(frames: Object) => {
|
|
104
|
+
console.log('Keyboard event', frames)
|
|
105
|
+
}}>
|
|
106
|
+
<View>
|
|
107
|
+
<TextInput />
|
|
108
|
+
</View>
|
|
109
|
+
</KeyboardAwareScrollView>
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Android Support
|
|
113
|
+
|
|
114
|
+
First, Android natively has this feature, you can easily enable it by setting `windowSoftInputMode` in `AndroidManifest.xml`. Check [here](https://developer.android.com/guide/topics/manifest/activity-element.html#wsoft).
|
|
115
|
+
|
|
116
|
+
But if you want to use feature like `extraHeight`, you need to enable Android Support with the following steps:
|
|
117
|
+
|
|
118
|
+
- Make sure you are using react-native `0.46` or above.
|
|
119
|
+
- Set `windowSoftInputMode` to `adjustPan` in `AndroidManifest.xml`.
|
|
120
|
+
- Set `enableOnAndroid` property to `true`.
|
|
121
|
+
|
|
122
|
+
Android Support is not perfect, here is the supported list:
|
|
123
|
+
|
|
124
|
+
| **Prop** | **Android Support** |
|
|
125
|
+
| --------------------------- | ------------------- |
|
|
126
|
+
| `viewIsInsideTabBar` | Yes |
|
|
127
|
+
| `resetScrollToCoords` | Yes |
|
|
128
|
+
| `enableAutomaticScroll` | Yes |
|
|
129
|
+
| `extraHeight` | Yes |
|
|
130
|
+
| `extraScrollHeight` | Yes |
|
|
131
|
+
| `enableResetScrollToCoords` | Yes |
|
|
132
|
+
| `keyboardOpeningTime` | No |
|
|
133
|
+
|
|
134
|
+
## API
|
|
135
|
+
|
|
136
|
+
### Props
|
|
137
|
+
|
|
138
|
+
All the `ScrollView`/`FlatList` props will be passed.
|
|
139
|
+
|
|
140
|
+
| **Prop** | **Type** | **Description** |
|
|
141
|
+
| --------------------------- | -------------------------------- | ---------------------------------------------------------------------------------------------- |
|
|
142
|
+
| `innerRef` | `Function` | Catch the reference of the component. |
|
|
143
|
+
| `viewIsInsideTabBar` | `boolean` | Adds an extra offset that represents the `TabBarIOS` height. |
|
|
144
|
+
| `resetScrollToCoords` | `Object: {x: number, y: number}` | Coordinates that will be used to reset the scroll when the keyboard hides. |
|
|
145
|
+
| `enableAutomaticScroll` | `boolean` | When focus in `TextInput` will scroll the position, default is enabled. |
|
|
146
|
+
| `extraHeight` | `number` | Adds an extra offset when focusing the `TextInput`s. |
|
|
147
|
+
| `extraScrollHeight` | `number` | Adds an extra offset to the keyboard. Useful if you want to stick elements above the keyboard. |
|
|
148
|
+
| `enableResetScrollToCoords` | `boolean` | Lets the user enable or disable automatic resetScrollToCoords. |
|
|
149
|
+
| `keyboardOpeningTime` | `number` | Sets the delay time before scrolling to new position, default is 250 |
|
|
150
|
+
| `enableOnAndroid` | `boolean` | Enable Android Support |
|
|
151
|
+
|
|
152
|
+
### Methods
|
|
153
|
+
|
|
154
|
+
Use `innerRef` to get the component reference and use `this.scrollRef.props` to access these methods.
|
|
155
|
+
|
|
156
|
+
| **Method** | **Parameter** | **Description** |
|
|
157
|
+
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
|
|
158
|
+
| `getScrollResponder` | `void` | Get `ScrollResponder` |
|
|
159
|
+
| `scrollToPosition` | `x: number, y: number, animated: bool = true` | Scroll to specific position with or without animation. |
|
|
160
|
+
| `scrollToEnd` | `animated?: bool = true` | Scroll to end with or without animation. |
|
|
161
|
+
| `scrollIntoView` | `element: React.Element<*>, options: { getScrollPosition: ?(parentLayout, childLayout, contentOffset) => { x: number, y: number, animated: boolean } }` | Scrolls an element inside a KeyboardAwareScrollView into view. |
|
|
162
|
+
|
|
163
|
+
### Using high order component
|
|
164
|
+
|
|
165
|
+
Enabling any component to be keyboard-aware is very easy. Take a look at the code of `KeyboardAwareFlatList`:
|
|
166
|
+
|
|
167
|
+
```js
|
|
168
|
+
/* @flow */
|
|
169
|
+
|
|
170
|
+
import { FlatList } from 'react-native'
|
|
171
|
+
import listenToKeyboardEvents from './KeyboardAwareHOC'
|
|
172
|
+
|
|
173
|
+
export default listenToKeyboardEvents(FlatList)
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
The HOC can also be configured. Sometimes it's more convenient to provide a static config than configuring the behavior with props. This HOC config can be overriden with props.
|
|
177
|
+
|
|
178
|
+
```js
|
|
179
|
+
/* @flow */
|
|
180
|
+
|
|
181
|
+
import { FlatList } from 'react-native'
|
|
182
|
+
import listenToKeyboardEvents from './KeyboardAwareHOC'
|
|
183
|
+
|
|
184
|
+
const config = {
|
|
185
|
+
enableOnAndroid: true,
|
|
186
|
+
enableAutomaticScroll: true
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
export default listenToKeyboardEvents(config)(FlatList)
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
The available config options are:
|
|
193
|
+
|
|
194
|
+
```js
|
|
195
|
+
{
|
|
196
|
+
enableOnAndroid: boolean,
|
|
197
|
+
contentContainerStyle: ?Object,
|
|
198
|
+
enableAutomaticScroll: boolean,
|
|
199
|
+
extraHeight: number,
|
|
200
|
+
extraScrollHeight: number,
|
|
201
|
+
enableResetScrollToCoords: boolean,
|
|
202
|
+
keyboardOpeningTime: number,
|
|
203
|
+
viewIsInsideTabBar: boolean,
|
|
204
|
+
refPropName: string,
|
|
205
|
+
extractNativeRef: Function
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## License
|
|
210
|
+
|
|
211
|
+
MIT.
|
|
212
|
+
|
|
213
|
+
## Author
|
|
214
|
+
|
|
215
|
+
Álvaro Medina Ballester `<amedina at apsl.net>`
|
|
216
|
+
|
|
217
|
+
Built with 💛 by [APSL](https://github.com/apsl).
|