@codeleap/mobile 2.1.8 → 2.2.0

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 (87) hide show
  1. package/dist/components/AutoComplete/styles.js +1 -2
  2. package/dist/components/AutoComplete/styles.js.map +1 -1
  3. package/dist/components/Drawer/index.js +13 -2
  4. package/dist/components/Drawer/index.js.map +1 -1
  5. package/dist/components/Drawer/styles.js +3 -5
  6. package/dist/components/Drawer/styles.js.map +1 -1
  7. package/dist/components/EmptyPlaceholder/styles.js +1 -1
  8. package/dist/components/EmptyPlaceholder/styles.js.map +1 -1
  9. package/dist/components/Grid/index.d.ts +3 -1
  10. package/dist/components/Grid/index.js +19 -4
  11. package/dist/components/Grid/index.js.map +1 -1
  12. package/dist/components/ImageView/Spotlight.js +1 -2
  13. package/dist/components/ImageView/Spotlight.js.map +1 -1
  14. package/dist/components/List/index.d.ts +2 -1
  15. package/dist/components/List/index.js +19 -5
  16. package/dist/components/List/index.js.map +1 -1
  17. package/dist/components/Modal/index.d.ts +4 -2
  18. package/dist/components/Modal/index.js +11 -3
  19. package/dist/components/Modal/index.js.map +1 -1
  20. package/dist/components/Modal/styles.d.ts +1 -1
  21. package/dist/components/Modal/styles.js +15 -15
  22. package/dist/components/Modal/styles.js.map +1 -1
  23. package/dist/components/MultiSelect/index.js +8 -7
  24. package/dist/components/MultiSelect/index.js.map +1 -1
  25. package/dist/components/MultiSelect/types.d.ts +1 -0
  26. package/dist/components/Pager/styles.js +7 -7
  27. package/dist/components/Pager/styles.js.map +1 -1
  28. package/dist/components/Scroll/index.d.ts +4 -2
  29. package/dist/components/Scroll/index.js +20 -6
  30. package/dist/components/Scroll/index.js.map +1 -1
  31. package/dist/components/SegmentedControl/index.js +1 -1
  32. package/dist/components/SegmentedControl/index.js.map +1 -1
  33. package/dist/components/Select/index.js +20 -6
  34. package/dist/components/Select/index.js.map +1 -1
  35. package/dist/components/Select/styles.js +2 -0
  36. package/dist/components/Select/styles.js.map +1 -1
  37. package/dist/components/Select/types.d.ts +3 -1
  38. package/dist/components/legacy/Modal/index.d.ts +2 -1
  39. package/dist/components/legacy/Modal/index.js +1 -1
  40. package/dist/components/legacy/Modal/index.js.map +1 -1
  41. package/dist/components/legacy/Modal/styles.js +9 -9
  42. package/dist/components/legacy/Modal/styles.js.map +1 -1
  43. package/dist/utils/KeyboardAware/index.d.ts +1 -0
  44. package/dist/utils/KeyboardAware/index.js +1 -0
  45. package/dist/utils/KeyboardAware/index.js.map +1 -1
  46. package/dist/utils/KeyboardAware/keyboardHooks.d.ts +30 -0
  47. package/dist/utils/KeyboardAware/keyboardHooks.js +113 -0
  48. package/dist/utils/KeyboardAware/keyboardHooks.js.map +1 -0
  49. package/dist/utils/KeyboardAware/lib/KeyboardAwareHOC.d.ts +1 -1
  50. package/dist/utils/PermissionManager/context.d.ts +2 -2
  51. package/dist/utils/PermissionManager/context.js +25 -29
  52. package/dist/utils/PermissionManager/context.js.map +1 -1
  53. package/dist/utils/hooks.d.ts +1 -0
  54. package/dist/utils/hooks.js +17 -1
  55. package/dist/utils/hooks.js.map +1 -1
  56. package/dist/utils/index.d.ts +1 -0
  57. package/dist/utils/index.js +1 -0
  58. package/dist/utils/index.js.map +1 -1
  59. package/dist/utils/input.d.ts +35 -0
  60. package/dist/utils/input.js +49 -0
  61. package/dist/utils/input.js.map +1 -0
  62. package/package.json +1 -1
  63. package/src/components/AutoComplete/styles.ts +1 -2
  64. package/src/components/Drawer/index.tsx +11 -1
  65. package/src/components/Drawer/styles.ts +4 -4
  66. package/src/components/EmptyPlaceholder/styles.ts +1 -1
  67. package/src/components/Grid/index.tsx +28 -18
  68. package/src/components/ImageView/Spotlight.tsx +0 -1
  69. package/src/components/List/index.tsx +31 -24
  70. package/src/components/Modal/index.tsx +18 -7
  71. package/src/components/Modal/styles.ts +38 -27
  72. package/src/components/MultiSelect/index.tsx +8 -8
  73. package/src/components/MultiSelect/types.ts +1 -0
  74. package/src/components/Pager/styles.ts +7 -7
  75. package/src/components/Scroll/index.tsx +37 -24
  76. package/src/components/SegmentedControl/index.tsx +1 -0
  77. package/src/components/Select/index.tsx +20 -14
  78. package/src/components/Select/styles.ts +2 -0
  79. package/src/components/Select/types.ts +3 -1
  80. package/src/components/legacy/Modal/index.tsx +3 -2
  81. package/src/components/legacy/Modal/styles.ts +17 -17
  82. package/src/utils/KeyboardAware/index.ts +1 -0
  83. package/src/utils/KeyboardAware/keyboardHooks.ts +155 -0
  84. package/src/utils/PermissionManager/context.tsx +31 -22
  85. package/src/utils/hooks.ts +19 -1
  86. package/src/utils/index.ts +1 -0
  87. package/src/utils/input.ts +51 -0
@@ -19,8 +19,8 @@ declare type AskManyOpts<T extends string | number | symbol> = {
19
19
  breakOnDenied?: T[];
20
20
  };
21
21
  export declare type UsePermissions<_PermissionNames extends string, PermissionNames extends string = `${_PermissionNames}?` | _PermissionNames> = () => TPermissionContext & {
22
- askPermission: (name: PermissionNames, onResolve?: (status: PermissionTypes.PermissionStatus) => any) => any;
23
- askMany<T extends PermissionNames, R = TAskManyResults<T>>(perms: T[], onResolve?: (res: R) => any, options?: AskManyOpts<T>): Promise<void>;
22
+ askPermission: (name: PermissionNames, onResolve?: (status: PermissionTypes.PermissionStatus) => any) => Promise<PermissionTypes.PermissionStatus>;
23
+ askMany<T extends PermissionNames, R = TAskManyResults<T>>(perms: T[], onResolve?: (res: R) => any, options?: AskManyOpts<T>): Promise<R>;
24
24
  };
25
25
  export declare const usePermissions: UsePermissions<any>;
26
26
  export declare function usePermissionModal(permissionName: string): {
@@ -111,38 +111,33 @@ var usePermissions = function () {
111
111
  var modalCtx = mobile_1.ModalManager.useModalContext();
112
112
  var permissionCtx = (0, react_1.useContext)(PermissionContext);
113
113
  function askPermission(name, onResolve) {
114
- return __awaiter(this, void 0, void 0, function () {
115
- var status, permissionModalName;
116
- return __generator(this, function (_a) {
117
- switch (_a.label) {
118
- case 0: return [4 /*yield*/, permissionCtx.manager.get(name, {
119
- ask: false,
120
- askOnDenied: false,
121
- askOnPending: false,
122
- })];
123
- case 1:
124
- status = _a.sent();
125
- permissionModalName = "permissions.".concat(name);
126
- if (!status.isGranted) {
127
- modalCtx.toggleModal(permissionModalName, true, {
128
- onPermissionResolve: function (status) {
129
- modalCtx.toggleModal(permissionModalName, false, {});
130
- setTimeout(function () {
131
- onResolve === null || onResolve === void 0 ? void 0 : onResolve(status, permissionModalName);
132
- }, modalCtx.transitionDuration);
133
- },
134
- });
135
- }
136
- else {
137
- onResolve === null || onResolve === void 0 ? void 0 : onResolve(status.status);
138
- }
139
- return [2 /*return*/];
114
+ return new Promise(function (resolve, reject) {
115
+ permissionCtx.manager.get(name, {
116
+ ask: false,
117
+ askOnDenied: false,
118
+ askOnPending: false,
119
+ }).then(function (status) {
120
+ var permissionModalName = "permissions.".concat(name);
121
+ if (!status.isGranted) {
122
+ modalCtx.toggleModal(permissionModalName, true, {
123
+ onPermissionResolve: function (status) {
124
+ modalCtx.toggleModal(permissionModalName, false, {});
125
+ setTimeout(function () {
126
+ onResolve === null || onResolve === void 0 ? void 0 : onResolve(status, permissionModalName);
127
+ resolve(status);
128
+ }, modalCtx.transitionDuration);
129
+ },
130
+ });
131
+ }
132
+ else {
133
+ onResolve === null || onResolve === void 0 ? void 0 : onResolve(status.status);
134
+ resolve(status);
140
135
  }
141
136
  });
142
137
  });
143
138
  }
144
139
  var askMany = function (perms, onResolve, options) { return __awaiter(void 0, void 0, void 0, function () {
145
- var prevModal, results, _loop_1, _i, perms_1, _permission, state_1;
140
+ var prevModal, results, _loop_1, _i, perms_1, _permission, state_1, res;
146
141
  return __generator(this, function (_a) {
147
142
  switch (_a.label) {
148
143
  case 0:
@@ -223,8 +218,9 @@ var usePermissions = function () {
223
218
  modalCtx.toggleModal(prevModal, false, {});
224
219
  });
225
220
  }
226
- onResolve(__assign(__assign({}, results), { overall: Object.values(results).every(function (x) { return x === 'granted'; }) ? 'granted' : 'denied' }));
227
- return [2 /*return*/];
221
+ res = __assign(__assign({}, results), { overall: Object.values(results).every(function (x) { return x === 'granted'; }) ? 'granted' : 'denied' });
222
+ onResolve(res);
223
+ return [2 /*return*/, res];
228
224
  }
229
225
  });
230
226
  }); };
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/utils/PermissionManager/context.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/utils/PermissionManager/context.tsx"],"names":[],"mappings":"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"}
@@ -36,4 +36,5 @@ export declare function usePressableFeedback(styles: any, config: UsePressableFe
36
36
  };
37
37
  rippleConfig: PressableAndroidRippleConfig;
38
38
  };
39
+ export declare function useBackButton(cb: () => boolean | void, deps?: any[]): void;
39
40
  export {};
@@ -11,7 +11,7 @@ var __assign = (this && this.__assign) || function () {
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.usePressableFeedback = exports.useStaticAnimationStyles = exports.useAppState = exports.useAnimateColor = void 0;
14
+ exports.useBackButton = exports.usePressableFeedback = exports.useStaticAnimationStyles = exports.useAppState = exports.useAnimateColor = void 0;
15
15
  var common_1 = require("@codeleap/common");
16
16
  var react_native_1 = require("react-native");
17
17
  function useAnimateColor(value, opts) {
@@ -112,4 +112,20 @@ function usePressableFeedback(styles, config) {
112
112
  };
113
113
  }
114
114
  exports.usePressableFeedback = usePressableFeedback;
115
+ function useBackButton(cb, deps) {
116
+ if (deps === void 0) { deps = []; }
117
+ (0, common_1.onUpdate)(function () {
118
+ var subscription = react_native_1.BackHandler.addEventListener('hardwareBackPress', function () {
119
+ var stopBubbling = cb();
120
+ if (common_1.TypeGuards.isBoolean(stopBubbling)) {
121
+ return stopBubbling;
122
+ }
123
+ return false;
124
+ });
125
+ return function () {
126
+ subscription.remove();
127
+ };
128
+ }, deps);
129
+ }
130
+ exports.useBackButton = useBackButton;
115
131
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/utils/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/utils/hooks.ts"],"names":[],"mappings":"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"}
@@ -6,3 +6,4 @@ export * from './ModalManager';
6
6
  import * as Permissions from './PermissionManager';
7
7
  export { Permissions };
8
8
  export * from './KeyboardAware';
9
+ export * from './input';
@@ -35,4 +35,5 @@ __exportStar(require("./ModalManager"), exports);
35
35
  var Permissions = __importStar(require("./PermissionManager"));
36
36
  exports.Permissions = Permissions;
37
37
  __exportStar(require("./KeyboardAware"), exports);
38
+ __exportStar(require("./input"), exports);
38
39
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,0CAAuB;AACvB,yCAAsB;AACtB,kDAA+B;AAC/B,iDAA8B;AAC9B,+DAAkD;AAEzC,kCAAW;AACpB,kDAA+B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,0CAAuB;AACvB,yCAAsB;AACtB,kDAA+B;AAC/B,iDAA8B;AAC9B,+DAAkD;AAEzC,kCAAW;AACpB,kDAA+B;AAC/B,0CAAuB"}
@@ -0,0 +1,35 @@
1
+ export declare const mobileInputPresets: {
2
+ email: () => {
3
+ keyboardType: "email-address";
4
+ autoCapitalize: "none";
5
+ autoComplete: "email";
6
+ textContentType: "emailAddress";
7
+ };
8
+ name: () => {
9
+ autoCapitalize: "words";
10
+ autoComplete: "name";
11
+ textContentType: "name";
12
+ };
13
+ chat: () => {
14
+ returnKeyType: "send";
15
+ };
16
+ password: (options?: {
17
+ new?: boolean;
18
+ }) => {
19
+ autoCapitalize: "none";
20
+ autoComplete: "password" | "password-new";
21
+ textContentType: "password" | "newPassword";
22
+ };
23
+ search: () => {
24
+ returnKeyType: "search";
25
+ };
26
+ redeemCode: (action?: 'join' | 'obtain') => {
27
+ returnKeyType: "join";
28
+ textContentType: "oneTimeCode";
29
+ autoComplete: "sms-otp";
30
+ } | {
31
+ returnKeyType: "done";
32
+ textContentType: "oneTimeCode";
33
+ autoComplete: "sms-otp";
34
+ };
35
+ };
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mobileInputPresets = void 0;
4
+ var createInputPresets = function (p) {
5
+ return p;
6
+ };
7
+ exports.mobileInputPresets = createInputPresets({
8
+ email: function () { return ({
9
+ keyboardType: 'email-address',
10
+ autoCapitalize: 'none',
11
+ autoComplete: 'email',
12
+ textContentType: 'emailAddress',
13
+ }); },
14
+ name: function () { return ({
15
+ autoCapitalize: 'words',
16
+ autoComplete: 'name',
17
+ textContentType: 'name',
18
+ }); },
19
+ chat: function () { return ({
20
+ returnKeyType: 'send',
21
+ }); },
22
+ password: function (options) {
23
+ return {
24
+ autoCapitalize: 'none',
25
+ autoComplete: (options === null || options === void 0 ? void 0 : options.new) ? 'password-new' : 'password',
26
+ textContentType: (options === null || options === void 0 ? void 0 : options.new) ? 'newPassword' : 'password',
27
+ };
28
+ },
29
+ search: function () { return ({
30
+ returnKeyType: 'search',
31
+ }); },
32
+ redeemCode: function (action) {
33
+ if (action === void 0) { action = 'obtain'; }
34
+ var isJoin = action === 'join';
35
+ if (isJoin) {
36
+ return {
37
+ returnKeyType: 'join',
38
+ textContentType: 'oneTimeCode',
39
+ autoComplete: 'sms-otp',
40
+ };
41
+ }
42
+ return {
43
+ returnKeyType: 'done',
44
+ textContentType: 'oneTimeCode',
45
+ autoComplete: 'sms-otp',
46
+ };
47
+ },
48
+ });
49
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/utils/input.ts"],"names":[],"mappings":";;;AAEA,IAAM,kBAAkB,GAAG,UAAuE,CAAG;IACnG,OAAO,CAAC,CAAA;AACV,CAAC,CAAA;AAEY,QAAA,kBAAkB,GAAG,kBAAkB,CAAC;IACnD,KAAK,EAAE,cAAM,OAAA,CAAC;QACZ,YAAY,EAAE,eAAe;QAC7B,cAAc,EAAE,MAAM;QACtB,YAAY,EAAE,OAAO;QACrB,eAAe,EAAE,cAAc;KAEhC,CAAC,EANW,CAMX;IACF,IAAI,EAAE,cAAM,OAAA,CAAC;QACX,cAAc,EAAE,OAAO;QACvB,YAAY,EAAE,MAAM;QACpB,eAAe,EAAE,MAAM;KAExB,CAAC,EALU,CAKV;IACF,IAAI,EAAE,cAAM,OAAA,CAAC;QACX,aAAa,EAAE,MAAM;KAEtB,CAAC,EAHU,CAGV;IACF,QAAQ,EAAE,UAAC,OAAyB;QAClC,OAAO;YACL,cAAc,EAAE,MAAM;YACtB,YAAY,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,EAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU;YACxD,eAAe,EAAE,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,GAAG,EAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,UAAU;SAC3D,CAAA;IACH,CAAC;IACD,MAAM,EAAE,cAAM,OAAA,CAAC;QACb,aAAa,EAAE,QAAQ;KACxB,CAAC,EAFY,CAEZ;IACF,UAAU,EAAE,UAAC,MAAiC;QAAjC,uBAAA,EAAA,iBAAiC;QAC5C,IAAM,MAAM,GAAG,MAAM,KAAK,MAAM,CAAA;QAChC,IAAI,MAAM,EAAE;YACV,OAAO;gBACL,aAAa,EAAE,MAAM;gBACrB,eAAe,EAAE,aAAa;gBAC9B,YAAY,EAAE,SAAS;aACxB,CAAA;SACF;QACD,OAAO;YACL,aAAa,EAAE,MAAM;YACrB,eAAe,EAAE,aAAa;YAC9B,YAAY,EAAE,SAAS;SACxB,CAAA;IAEH,CAAC;CACF,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codeleap/mobile",
3
- "version": "2.1.8",
3
+ "version": "2.2.0",
4
4
  "main": "src/index.ts",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
@@ -19,8 +19,7 @@ export const AutoCompleteStyles = {
19
19
  ...theme.presets.alignStart,
20
20
  },
21
21
  box: {
22
- minHeight: theme.values.height * 0.85,
23
- maxHeight: theme.values.height * 0.85,
22
+ maxHeight: theme.values.window.height * 0.85,
24
23
  },
25
24
  listContent: {
26
25
  ...theme.presets.safeAreaBottom(0, true),
@@ -8,7 +8,7 @@ export * from './styles'
8
8
  export type DrawerProps = Omit<ModalProps, 'variants'> & ComponentVariants<typeof DrawerStyles>
9
9
 
10
10
  export const Drawer:React.FC<DrawerProps> = (props) => {
11
- const { variants, styles, ...modalProps } = props
11
+ const { variants, styles, scrollProps, ...modalProps } = props
12
12
 
13
13
  const variantStyles = useDefaultComponentStyle('u:Drawer', {
14
14
  variants,
@@ -18,7 +18,17 @@ export const Drawer:React.FC<DrawerProps> = (props) => {
18
18
 
19
19
  return <Modal
20
20
  styles={variantStyles}
21
+ scroll={false}
21
22
 
22
23
  {...modalProps}
24
+ scrollProps={{
25
+ ...scrollProps,
26
+ keyboardAware: {
27
+ adapt: 'height',
28
+ baseStyleProp: 'style',
29
+
30
+ ...scrollProps?.keyboardAware,
31
+ },
32
+ }}
23
33
  />
24
34
  }
@@ -13,15 +13,15 @@ export const DrawerStyles = {
13
13
  ...defaultStyle,
14
14
  box: {
15
15
  width: '100%',
16
- maxHeight: theme.values.height * 0.7,
17
- paddingBottom: (theme.values.bottomNavHeight ?? 0) + theme.spacing.value(1),
16
+ maxHeight: theme.values.window.height * 0.99,
17
+
18
18
  },
19
- innerWrapperScroll: {
19
+ innerWrapper: {
20
20
  ...theme.presets.justifyEnd,
21
21
  },
22
22
 
23
23
  'box:hidden': {
24
- translateY: theme.values.height,
24
+ translateY: theme.values.window.height,
25
25
  opacity: 1,
26
26
  scale: 1,
27
27
  },
@@ -18,7 +18,7 @@ export const EmptyPlaceholderStyles = {
18
18
  default: createEmptyPlaceholderStyle((theme) => ({
19
19
  wrapper: {
20
20
  ...theme.presets.center,
21
- minHeight: theme.values.height / 2,
21
+ minHeight: theme.values.window.height / 2,
22
22
  height: '100%',
23
23
  flex: 1,
24
24
  },
@@ -11,7 +11,7 @@ import { View, ViewProps } from '../View'
11
11
  import { EmptyPlaceholder, EmptyPlaceholderProps } from '../EmptyPlaceholder'
12
12
  import { GridComposition, GridStyles } from './styles'
13
13
  import { StylesOf } from '../../types'
14
- import { listenToKeyboardEvents } from '../../utils'
14
+ import { GetKeyboardAwarePropsOptions, useKeyboardAwareView } from '../../utils'
15
15
 
16
16
  export type DataboundFlatGridPropsTypes = 'data' | 'renderItem' | 'keyExtractor' | 'getItemLayout'
17
17
 
@@ -28,8 +28,6 @@ export type ReplaceFlatGridProps<P, T> = Omit<P, DataboundFlatGridPropsTypes> &
28
28
 
29
29
  export * from './styles'
30
30
 
31
- const KeyboardAwareFlatGrid = listenToKeyboardEvents(FlatGrid)
32
-
33
31
  export type GridProps<
34
32
  T = any[],
35
33
  Data = T extends Array<infer D> ? D : never
@@ -37,7 +35,8 @@ export type GridProps<
37
35
  Omit<ViewProps, 'variants'> & {
38
36
  separators?: boolean
39
37
  placeholder?: EmptyPlaceholderProps
40
- keyboardAware?: boolean
38
+ keyboardAware?: GetKeyboardAwarePropsOptions
39
+ debugName?: string
41
40
  styles?: StylesOf<GridComposition>
42
41
  refreshControlProps?: Partial<RefreshControlProps>
43
42
  } & ComponentVariants<typeof GridStyles>
@@ -51,7 +50,8 @@ const GridCP = forwardRef<FlatGrid, GridProps>(
51
50
  onRefresh,
52
51
  refreshing,
53
52
  placeholder,
54
- keyboardAware = true,
53
+ keyboardAware,
54
+ debugName,
55
55
  refreshControlProps = {},
56
56
  ...props
57
57
  } = flatGridProps
@@ -73,16 +73,15 @@ const GridCP = forwardRef<FlatGrid, GridProps>(
73
73
  const isEmpty = !props.data || !props.data.length
74
74
  const separator = !isEmpty && separatorProp == true && renderSeparator
75
75
 
76
- const Component = keyboardAware ? KeyboardAwareFlatGrid : FlatGrid
77
76
  const refreshStyles = StyleSheet.flatten([variantStyles.refreshControl, styles.refreshControl])
78
-
79
- return (
80
- <Component
81
- style={[variantStyles.wrapper, style]}
82
- contentContainerStyle={variantStyles.content}
83
- ref={ref as unknown as FlatGrid}
84
- ItemSeparatorComponent={separator}
85
- refreshControl={
77
+ const Component = FlatGrid
78
+
79
+ const _gridProps = {
80
+ style: [variantStyles.wrapper, style],
81
+ contentContainerStyle: variantStyles.content,
82
+ ref: ref as unknown as FlatGrid,
83
+ ItemSeparatorComponent: separator,
84
+ refreshControl:
86
85
  !!onRefresh && (
87
86
  <RefreshControl
88
87
  refreshing={refreshing}
@@ -91,11 +90,22 @@ const GridCP = forwardRef<FlatGrid, GridProps>(
91
90
  colors={[refreshStyles?.color]}
92
91
  {...refreshControlProps}
93
92
  />
94
- )
95
- }
93
+ ),
96
94
 
97
- ListEmptyComponent={<EmptyPlaceholder {...placeholder}/>}
98
- {...props}
95
+ ListEmptyComponent: <EmptyPlaceholder {...placeholder}/>,
96
+ ...props,
97
+ }
98
+ const keyboard = useKeyboardAwareView({
99
+ debugName,
100
+ })
101
+ const gridProps = keyboard.getKeyboardAwareProps(_gridProps, {
102
+ baseStyleProp: 'contentContainerStyle',
103
+ adapt: 'paddingBottom',
104
+ ...keyboardAware,
105
+ })
106
+ return (
107
+ <Component
108
+ {...gridProps}
99
109
  />
100
110
  )
101
111
  },
@@ -45,7 +45,6 @@ export function useSpotlight(name: string) {
45
45
 
46
46
  const imList =
47
47
  Object.values(ctx.spotlights[name] || {})
48
- .sort((a, b) => a.created - b.created)
49
48
 
50
49
  return {
51
50
  images: imList,
@@ -5,6 +5,7 @@ import {
5
5
  useDefaultComponentStyle,
6
6
 
7
7
  ComponentVariants,
8
+ useCallback,
8
9
  } from '@codeleap/common'
9
10
 
10
11
  import { RefreshControl, FlatList, FlatListProps as RNFlatListProps, ListRenderItemInfo, StyleSheet, RefreshControlProps } from 'react-native'
@@ -12,7 +13,7 @@ import { View, ViewProps } from '../View'
12
13
  import { EmptyPlaceholder, EmptyPlaceholderProps } from '../EmptyPlaceholder'
13
14
  import { ListComposition, ListStyles } from './styles'
14
15
  import { StylesOf } from '../../types'
15
- import { KeyboardAwareFlatList } from '../../utils'
16
+ import { GetKeyboardAwarePropsOptions, useKeyboardAwareView } from '../../utils'
16
17
 
17
18
  export type DataboundFlatListPropsTypes = 'data' | 'renderItem' | 'keyExtractor' | 'getItemLayout'
18
19
 
@@ -37,7 +38,7 @@ export type FlatListProps<
37
38
  Omit<ViewProps, 'variants'> & {
38
39
  separators?: boolean
39
40
  placeholder?: EmptyPlaceholderProps
40
- keyboardAware?: boolean
41
+ keyboardAware?: GetKeyboardAwarePropsOptions
41
42
  styles?: StylesOf<ListComposition>
42
43
  refreshControlProps?: Partial<RefreshControlProps>
43
44
  } & ComponentVariants<typeof ListStyles>
@@ -52,7 +53,7 @@ const ListCP = forwardRef<FlatList, FlatListProps>(
52
53
  component,
53
54
  refreshing,
54
55
  placeholder,
55
- keyboardAware = true,
56
+ keyboardAware,
56
57
  refreshControlProps = {},
57
58
  ...props
58
59
  } = flatListProps
@@ -64,39 +65,45 @@ const ListCP = forwardRef<FlatList, FlatListProps>(
64
65
 
65
66
  })
66
67
 
67
- const renderSeparator = () => {
68
+ const renderSeparator = useCallback(() => {
68
69
  return (
69
70
  <View variants={['separator']}></View>
70
71
  )
71
- }
72
+ }, [])
72
73
 
73
74
  const separatorProp = props.separators
74
75
  const isEmpty = !props.data || !props.data.length
75
76
  const separator = !isEmpty && separatorProp == true && renderSeparator
76
77
 
77
- const Component:any = component || (keyboardAware ? KeyboardAwareFlatList : FlatList)
78
+ const Component:any = component || FlatList
78
79
  const refreshStyles = StyleSheet.flatten([variantStyles.refreshControl, styles.refreshControl])
79
80
 
81
+ const _listProps = {
82
+ style: [variantStyles.wrapper, style],
83
+ contentContainerStyle: variantStyles.content,
84
+ ref: ref as unknown as FlatList,
85
+ ItemSeparatorComponent: separator,
86
+ refreshControl: !!onRefresh && (
87
+ <RefreshControl
88
+ refreshing={refreshing}
89
+ onRefresh={onRefresh}
90
+ tintColor={refreshStyles?.color}
91
+ colors={[refreshStyles?.color]}
92
+ {...refreshControlProps}
93
+ />
94
+ ),
95
+ ListEmptyComponent: <EmptyPlaceholder {...placeholder}/>,
96
+ ...props,
97
+ }
98
+ const keyboard = useKeyboardAwareView()
99
+ const listProps = keyboard.getKeyboardAwareProps(_listProps, {
100
+ adapt: 'paddingBottom',
101
+ baseStyleProp: 'contentContainerStyle',
102
+ ...keyboardAware,
103
+ })
80
104
  return (
81
105
  <Component
82
- style={[variantStyles.wrapper, style]}
83
- contentContainerStyle={variantStyles.content}
84
- ref={ref as unknown as FlatList}
85
- ItemSeparatorComponent={separator}
86
- refreshControl={
87
- !!onRefresh && (
88
- <RefreshControl
89
- refreshing={refreshing}
90
- onRefresh={onRefresh}
91
- tintColor={refreshStyles?.color}
92
- colors={[refreshStyles?.color]}
93
- {...refreshControlProps}
94
- />
95
- )
96
- }
97
-
98
- ListEmptyComponent={<EmptyPlaceholder {...placeholder}/>}
99
- {...props}
106
+ {...listProps}
100
107
  />
101
108
  )
102
109
  },
@@ -7,6 +7,7 @@ import {
7
7
  getNestedStylesByKey,
8
8
  IconPlaceholder,
9
9
  onUpdate,
10
+ PropsOf,
10
11
  TypeGuards,
11
12
  useDefaultComponentStyle,
12
13
  } from '@codeleap/common'
@@ -20,7 +21,7 @@ import { StylesOf } from '../../types/utility'
20
21
 
21
22
  import { useDynamicAnimation } from 'moti'
22
23
  import { Backdrop } from '../Backdrop'
23
- import { useStaticAnimationStyles } from '../../utils/hooks'
24
+ import { useBackButton, useStaticAnimationStyles } from '../../utils/hooks'
24
25
  import { Text, TextProps } from '../Text'
25
26
  import { Touchable } from '../Touchable'
26
27
 
@@ -43,8 +44,9 @@ export type ModalProps = Omit<ViewProps, 'variants' | 'styles'> & {
43
44
  zIndex?: number
44
45
  scroll?: boolean
45
46
  header?: React.ReactElement
46
- keyboardAware?: boolean
47
+ closeOnHardwareBackPress?: boolean
47
48
  renderHeader?: (props: ModalHeaderProps) => React.ReactElement
49
+ scrollProps?: PropsOf<typeof Scroll>
48
50
  }
49
51
 
50
52
  export type ModalHeaderProps = Omit<ModalProps, 'styles' | 'renderHeader'> & {
@@ -95,8 +97,9 @@ export const Modal: React.FC<ModalProps> = (modalProps) => {
95
97
  debugName,
96
98
  scroll = true,
97
99
  renderHeader,
98
- keyboardAware = true,
99
100
  zIndex = null,
101
+ scrollProps = {},
102
+ closeOnHardwareBackPress = true,
100
103
  ...props
101
104
  } = modalProps
102
105
 
@@ -127,7 +130,7 @@ export const Modal: React.FC<ModalProps> = (modalProps) => {
127
130
  }, [visible])
128
131
  const wrapperStyle = getStyles('wrapper')
129
132
  const ScrollComponent = scroll ? Scroll : View
130
- const scrollStyle = scroll ? getStyles('innerWrapper') : [getStyles('innerWrapper'), getStyles('innerWrapperScroll')]
133
+ const scrollStyle = scroll ? getStyles('scroll') : getStyles('innerWrapper')
131
134
 
132
135
  const headerProps:ModalHeaderProps = {
133
136
  ...modalProps,
@@ -139,6 +142,13 @@ export const Modal: React.FC<ModalProps> = (modalProps) => {
139
142
  }
140
143
  const Header = renderHeader || DefaultHeader
141
144
 
145
+ useBackButton(() => {
146
+ if (visible && closeOnHardwareBackPress) {
147
+ toggle()
148
+ return true
149
+ }
150
+ }, [visible, toggle, closeOnHardwareBackPress])
151
+
142
152
  return (
143
153
  <View
144
154
  style={[wrapperStyle, { zIndex: TypeGuards.isNumber(zIndex) ? zIndex : wrapperStyle?.zIndex }]}
@@ -156,9 +166,8 @@ export const Modal: React.FC<ModalProps> = (modalProps) => {
156
166
  />
157
167
  <ScrollComponent
158
168
  style={scrollStyle}
159
- contentContainerStyle={getStyles('innerWrapperScroll')}
160
- scrollEnabled={scroll}
161
- keyboardAware={keyboardAware}
169
+ contentContainerStyle={getStyles('scrollContent')}
170
+ {...scrollProps}
162
171
  >
163
172
  {dismissOnBackdrop &&
164
173
  <Touchable
@@ -168,6 +177,7 @@ export const Modal: React.FC<ModalProps> = (modalProps) => {
168
177
  android_ripple={null}
169
178
  noFeedback
170
179
  />}
180
+
171
181
  <View
172
182
  animated
173
183
  state={boxAnimation}
@@ -185,6 +195,7 @@ export const Modal: React.FC<ModalProps> = (modalProps) => {
185
195
  </View>
186
196
  )}
187
197
  </View>
198
+
188
199
  </ScrollComponent>
189
200
  </View>
190
201