@tamagui/focus-scope 1.127.2 → 1.128.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 (86) hide show
  1. package/dist/cjs/FocusScope.cjs +30 -9
  2. package/dist/cjs/FocusScope.js +49 -21
  3. package/dist/cjs/FocusScope.js.map +1 -1
  4. package/dist/cjs/FocusScopeController.cjs +76 -0
  5. package/dist/cjs/FocusScopeController.js +69 -0
  6. package/dist/cjs/FocusScopeController.js.map +6 -0
  7. package/dist/cjs/FocusScopeController.native.js +67 -0
  8. package/dist/cjs/FocusScopeController.native.js.map +6 -0
  9. package/dist/cjs/index.cjs +2 -1
  10. package/dist/cjs/index.js +1 -0
  11. package/dist/cjs/index.js.map +1 -1
  12. package/dist/cjs/index.native.js +3 -1
  13. package/dist/cjs/index.native.js.map +1 -1
  14. package/dist/cjs/{FocusScopeProps.cjs → types.cjs} +2 -2
  15. package/dist/cjs/{FocusScopeProps.js → types.js} +3 -3
  16. package/dist/cjs/{FocusScopeProps.js.map → types.js.map} +1 -1
  17. package/dist/cjs/{FocusScopeProps.native.js → types.native.js} +3 -3
  18. package/dist/cjs/types.native.js.map +6 -0
  19. package/dist/esm/FocusScope.js +51 -21
  20. package/dist/esm/FocusScope.js.map +1 -1
  21. package/dist/esm/FocusScope.mjs +30 -9
  22. package/dist/esm/FocusScope.mjs.map +1 -1
  23. package/dist/esm/FocusScopeController.js +48 -0
  24. package/dist/esm/FocusScopeController.js.map +6 -0
  25. package/dist/esm/FocusScopeController.mjs +39 -0
  26. package/dist/esm/FocusScopeController.mjs.map +1 -0
  27. package/dist/esm/FocusScopeController.native.js +41 -0
  28. package/dist/esm/FocusScopeController.native.js.map +1 -0
  29. package/dist/esm/index.js +1 -0
  30. package/dist/esm/index.js.map +1 -1
  31. package/dist/esm/index.mjs +1 -0
  32. package/dist/esm/index.mjs.map +1 -1
  33. package/dist/esm/index.native.js +1 -0
  34. package/dist/esm/index.native.js.map +1 -1
  35. package/dist/esm/types.js +1 -0
  36. package/dist/esm/types.mjs +2 -0
  37. package/dist/esm/types.native.js +2 -0
  38. package/dist/jsx/FocusScope.js +51 -21
  39. package/dist/jsx/FocusScope.js.map +1 -1
  40. package/dist/jsx/FocusScope.mjs +30 -9
  41. package/dist/jsx/FocusScope.mjs.map +1 -1
  42. package/dist/jsx/FocusScopeController.js +48 -0
  43. package/dist/jsx/FocusScopeController.js.map +6 -0
  44. package/dist/jsx/FocusScopeController.mjs +39 -0
  45. package/dist/jsx/FocusScopeController.mjs.map +1 -0
  46. package/dist/jsx/FocusScopeController.native.js +39 -0
  47. package/dist/jsx/FocusScopeController.native.js.map +6 -0
  48. package/dist/jsx/index.js +1 -0
  49. package/dist/jsx/index.js.map +1 -1
  50. package/dist/jsx/index.mjs +1 -0
  51. package/dist/jsx/index.mjs.map +1 -1
  52. package/dist/jsx/index.native.js +1 -0
  53. package/dist/jsx/index.native.js.map +1 -1
  54. package/dist/jsx/types.js +1 -0
  55. package/dist/jsx/types.mjs +2 -0
  56. package/dist/jsx/types.native.js +1 -0
  57. package/package.json +7 -5
  58. package/src/FocusScope.native.tsx +1 -1
  59. package/src/FocusScope.tsx +84 -38
  60. package/src/FocusScopeController.tsx +78 -0
  61. package/src/index.ts +1 -0
  62. package/src/{FocusScopeProps.tsx → types.tsx} +10 -0
  63. package/types/FocusScope.d.ts +1 -1
  64. package/types/FocusScope.d.ts.map +1 -1
  65. package/types/FocusScope.native.d.ts +1 -1
  66. package/types/FocusScope.native.d.ts.map +1 -1
  67. package/types/FocusScopeController.d.ts +19 -0
  68. package/types/FocusScopeController.d.ts.map +1 -0
  69. package/types/index.d.ts +1 -0
  70. package/types/index.d.ts.map +1 -1
  71. package/types/{FocusScopeProps.d.ts → types.d.ts} +11 -1
  72. package/types/types.d.ts.map +1 -0
  73. package/dist/cjs/FocusScopeProps.native.js.map +0 -6
  74. package/dist/esm/FocusScopeProps.js +0 -1
  75. package/dist/esm/FocusScopeProps.mjs +0 -2
  76. package/dist/esm/FocusScopeProps.native.js +0 -2
  77. package/dist/jsx/FocusScopeProps.js +0 -1
  78. package/dist/jsx/FocusScopeProps.mjs +0 -2
  79. package/dist/jsx/FocusScopeProps.native.js +0 -1
  80. package/types/FocusScopeProps.d.ts.map +0 -1
  81. /package/dist/esm/{FocusScopeProps.js.map → types.js.map} +0 -0
  82. /package/dist/esm/{FocusScopeProps.mjs.map → types.mjs.map} +0 -0
  83. /package/dist/esm/{FocusScopeProps.native.js.map → types.native.js.map} +0 -0
  84. /package/dist/jsx/{FocusScopeProps.js.map → types.js.map} +0 -0
  85. /package/dist/jsx/{FocusScopeProps.mjs.map → types.mjs.map} +0 -0
  86. /package/dist/jsx/{FocusScopeProps.native.js.map → types.native.js.map} +0 -0
@@ -1,5 +1,8 @@
1
+ import type { Scope } from '@tamagui/create-context'
1
2
  import type React from 'react'
2
3
 
4
+ export type ScopedProps<P> = P & { __scopeFocusScope?: Scope }
5
+
3
6
  export interface FocusScopeProps {
4
7
  /**
5
8
  * @default true
@@ -37,6 +40,13 @@ export interface FocusScopeProps {
37
40
  */
38
41
  forceUnmount?: boolean
39
42
 
43
+ /**
44
+ * When true, waits for idle before focusing. When a number, waits that many ms.
45
+ * This prevents reflows during animations.
46
+ * @default false
47
+ */
48
+ focusOnIdle?: boolean | number
49
+
40
50
  children?:
41
51
  | React.ReactNode
42
52
  | ((props: {
@@ -1,5 +1,5 @@
1
1
  import * as React from 'react';
2
- import type { FocusScopeProps } from './FocusScopeProps';
2
+ import type { FocusScopeProps } from './types';
3
3
  type FocusScopeElement = HTMLDivElement;
4
4
  declare const FocusScope: React.ForwardRefExoticComponent<FocusScopeProps & React.RefAttributes<HTMLDivElement>>;
5
5
  export declare function useFocusScope(props: FocusScopeProps, forwardedRef: React.ForwardedRef<FocusScopeElement>): {
@@ -1 +1 @@
1
- {"version":3,"file":"FocusScope.d.ts","sourceRoot":"","sources":["../src/FocusScope.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAYxD,KAAK,iBAAiB,GAAG,cAAc,CAAA;AAEvC,QAAA,MAAM,UAAU,wFAUf,CAAA;AAMD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC;;uBAsHzC,KAAK,CAAC,aAAa;;EAqC9B;AA2ID,OAAO,EAAE,UAAU,EAAE,CAAA;AAErB,YAAY,EAAE,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"FocusScope.d.ts","sourceRoot":"","sources":["../src/FocusScope.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,eAAe,EAAe,MAAM,SAAS,CAAA;AAe3D,KAAK,iBAAiB,GAAG,cAAc,CAAA;AAEvC,QAAA,MAAM,UAAU,wFAiCf,CAAA;AAMD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,eAAe,EACtB,YAAY,EAAE,KAAK,CAAC,YAAY,CAAC,iBAAiB,CAAC;;uBAwIzC,KAAK,CAAC,aAAa;;EAqC9B;AA4ID,OAAO,EAAE,UAAU,EAAE,CAAA;AAErB,YAAY,EAAE,eAAe,EAAE,CAAA"}
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
- import type { FocusScopeProps } from './FocusScopeProps';
2
+ import type { FocusScopeProps } from './types';
3
3
  export declare const FocusScope: React.ForwardRefExoticComponent<FocusScopeProps & React.RefAttributes<unknown>>;
4
4
  //# sourceMappingURL=FocusScope.native.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FocusScope.native.d.ts","sourceRoot":"","sources":["../src/FocusScope.native.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAExD,eAAO,MAAM,UAAU,iFAErB,CAAA"}
1
+ {"version":3,"file":"FocusScope.native.d.ts","sourceRoot":"","sources":["../src/FocusScope.native.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,eAAO,MAAM,UAAU,iFAErB,CAAA"}
@@ -0,0 +1,19 @@
1
+ import * as React from 'react';
2
+ import type { FocusScopeProps } from './types';
3
+ import type { ScopedProps } from './types';
4
+ declare const createFocusScopeControllerScope: import("@tamagui/create-context").CreateScope;
5
+ type FocusScopeControllerContextValue = Omit<FocusScopeProps, 'children'>;
6
+ declare const FocusScopeControllerProvider: (props: FocusScopeControllerContextValue & {
7
+ scope: import("@tamagui/create-context").Scope<FocusScopeControllerContextValue>;
8
+ children: React.ReactNode;
9
+ }) => import("react/jsx-runtime").JSX.Element, useFocusScopeControllerContext: (consumerName: string, scope: import("@tamagui/create-context").Scope<FocusScopeControllerContextValue | undefined>, options?: {
10
+ warn?: boolean;
11
+ fallback?: Partial<FocusScopeControllerContextValue> | undefined;
12
+ } | undefined) => FocusScopeControllerContextValue;
13
+ export interface FocusScopeControllerProps extends FocusScopeControllerContextValue {
14
+ children?: React.ReactNode;
15
+ }
16
+ declare function FocusScopeController(props: ScopedProps<FocusScopeControllerProps>): import("react/jsx-runtime").JSX.Element;
17
+ declare const FocusScopeControllerComponent: typeof FocusScopeController;
18
+ export { createFocusScopeControllerScope, FocusScopeControllerComponent as FocusScopeController, FocusScopeControllerProvider, useFocusScopeControllerContext, };
19
+ //# sourceMappingURL=FocusScopeController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FocusScopeController.d.ts","sourceRoot":"","sources":["../src/FocusScopeController.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAI1C,QAAA,MAA0C,+BAA+B,+CACxB,CAAA;AAEjD,KAAK,gCAAgC,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;AAEzE,QAAA,MAAO,4BAA4B;;;+CAAE,8BAA8B;;;kDAGhE,CAAA;AAMH,MAAM,WAAW,yBAA0B,SAAQ,gCAAgC;IACjF,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAED,iBAAS,oBAAoB,CAAC,KAAK,EAAE,WAAW,CAAC,yBAAyB,CAAC,2CA0C1E;AAED,QAAA,MAAM,6BAA6B,6BAAuB,CAAA;AAE1D,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,IAAI,oBAAoB,EACrD,4BAA4B,EAC5B,8BAA8B,GAC/B,CAAA"}
package/types/index.d.ts CHANGED
@@ -1,2 +1,3 @@
1
1
  export * from './FocusScope';
2
+ export * from './FocusScopeController';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,wBAAwB,CAAA"}
@@ -1,4 +1,8 @@
1
+ import type { Scope } from '@tamagui/create-context';
1
2
  import type React from 'react';
3
+ export type ScopedProps<P> = P & {
4
+ __scopeFocusScope?: Scope;
5
+ };
2
6
  export interface FocusScopeProps {
3
7
  /**
4
8
  * @default true
@@ -30,10 +34,16 @@ export interface FocusScopeProps {
30
34
  * If unmount is animated, you want to force re-focus at start of animation not after
31
35
  */
32
36
  forceUnmount?: boolean;
37
+ /**
38
+ * When true, waits for idle before focusing. When a number, waits that many ms.
39
+ * This prevents reflows during animations.
40
+ * @default false
41
+ */
42
+ focusOnIdle?: boolean | number;
33
43
  children?: React.ReactNode | ((props: {
34
44
  onKeyDown: (event: React.KeyboardEvent) => void;
35
45
  tabIndex: number;
36
46
  ref: React.ForwardedRef<any>;
37
47
  }) => React.ReactNode);
38
48
  }
39
- //# sourceMappingURL=FocusScopeProps.d.ts.map
49
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACpD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG;IAAE,iBAAiB,CAAC,EAAE,KAAK,CAAA;CAAE,CAAA;AAE9D,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAEzC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAE3C;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAE9B,QAAQ,CAAC,EACL,KAAK,CAAC,SAAS,GACf,CAAC,CAAC,KAAK,EAAE;QACP,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAA;QAC/C,QAAQ,EAAE,MAAM,CAAA;QAChB,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;KAC7B,KAAK,KAAK,CAAC,SAAS,CAAC,CAAA;CAC3B"}
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/FocusScopeProps.tsx"],
4
- "mappings": ";;;;;;;;;;;;AAEA;;",
5
- "names": []
6
- }
@@ -1 +0,0 @@
1
- //# sourceMappingURL=FocusScopeProps.js.map
@@ -1,2 +0,0 @@
1
-
2
- //# sourceMappingURL=FocusScopeProps.mjs.map
@@ -1,2 +0,0 @@
1
-
2
- //# sourceMappingURL=FocusScopeProps.native.js.map
@@ -1 +0,0 @@
1
- //# sourceMappingURL=FocusScopeProps.js.map
@@ -1,2 +0,0 @@
1
-
2
- //# sourceMappingURL=FocusScopeProps.mjs.map
@@ -1 +0,0 @@
1
- //# sourceMappingURL=FocusScopeProps.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FocusScopeProps.d.ts","sourceRoot":"","sources":["../src/FocusScopeProps.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd;;;;OAIG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAEzC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAE3C;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB,QAAQ,CAAC,EACL,KAAK,CAAC,SAAS,GACf,CAAC,CAAC,KAAK,EAAE;QACP,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAA;QAC/C,QAAQ,EAAE,MAAM,CAAA;QAChB,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;KAC7B,KAAK,KAAK,CAAC,SAAS,CAAC,CAAA;CAC3B"}