@fluentui/react-tabster 0.0.0-nightly-20220428-0420.1 → 0.0.0-nightly-20220503-0421.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.json +23 -9
  2. package/CHANGELOG.md +90 -90
  3. package/dist/{react-tabster.d.ts → index.d.ts} +7 -5
  4. package/lib/{symbols.d.ts → focus/constants.d.ts} +4 -0
  5. package/lib/{symbols.js → focus/constants.js} +5 -1
  6. package/lib/focus/constants.js.map +1 -0
  7. package/lib/focus/createCustomFocusIndicatorStyle.d.ts +12 -0
  8. package/lib/focus/createCustomFocusIndicatorStyle.js +18 -0
  9. package/lib/focus/createCustomFocusIndicatorStyle.js.map +1 -0
  10. package/{lib-commonjs/hooks/useFocusIndicatorStyle.d.ts → lib/focus/createFocusOutlineStyle.d.ts} +4 -13
  11. package/lib/{hooks/useFocusIndicatorStyle.js → focus/createFocusOutlineStyle.js} +14 -33
  12. package/lib/focus/createFocusOutlineStyle.js.map +1 -0
  13. package/lib/focus/index.d.ts +2 -0
  14. package/lib/focus/index.js +3 -0
  15. package/lib/focus/index.js.map +1 -0
  16. package/lib/hooks/index.d.ts +0 -1
  17. package/lib/hooks/index.js +0 -1
  18. package/lib/hooks/index.js.map +1 -1
  19. package/lib/hooks/useKeyboardNavAttribute.js +1 -1
  20. package/lib/hooks/useKeyboardNavAttribute.js.map +1 -1
  21. package/lib/index.d.ts +4 -2
  22. package/lib/index.js +2 -1
  23. package/lib/index.js.map +1 -1
  24. package/lib-commonjs/{symbols.d.ts → focus/constants.d.ts} +4 -0
  25. package/lib-commonjs/{symbols.js → focus/constants.js} +6 -2
  26. package/lib-commonjs/focus/constants.js.map +1 -0
  27. package/lib-commonjs/focus/createCustomFocusIndicatorStyle.d.ts +12 -0
  28. package/lib-commonjs/focus/createCustomFocusIndicatorStyle.js +28 -0
  29. package/lib-commonjs/focus/createCustomFocusIndicatorStyle.js.map +1 -0
  30. package/{lib/hooks/useFocusIndicatorStyle.d.ts → lib-commonjs/focus/createFocusOutlineStyle.d.ts} +4 -13
  31. package/lib-commonjs/{hooks/useFocusIndicatorStyle.js → focus/createFocusOutlineStyle.js} +18 -38
  32. package/lib-commonjs/focus/createFocusOutlineStyle.js.map +1 -0
  33. package/lib-commonjs/focus/index.d.ts +2 -0
  34. package/lib-commonjs/focus/index.js +12 -0
  35. package/lib-commonjs/focus/index.js.map +1 -0
  36. package/lib-commonjs/hooks/index.d.ts +0 -1
  37. package/lib-commonjs/hooks/index.js +0 -2
  38. package/lib-commonjs/hooks/index.js.map +1 -1
  39. package/lib-commonjs/hooks/useKeyboardNavAttribute.js +3 -3
  40. package/lib-commonjs/hooks/useKeyboardNavAttribute.js.map +1 -1
  41. package/lib-commonjs/index.d.ts +4 -2
  42. package/lib-commonjs/index.js +16 -13
  43. package/lib-commonjs/index.js.map +1 -1
  44. package/package.json +6 -6
  45. package/lib/hooks/useFocusIndicatorStyle.js.map +0 -1
  46. package/lib/symbols.js.map +0 -1
  47. package/lib-commonjs/hooks/useFocusIndicatorStyle.js.map +0 -1
  48. package/lib-commonjs/symbols.js.map +0 -1
@@ -9,9 +9,9 @@ import { Types } from 'tabster';
9
9
  * @param style - styling applied on focus, defaults to @see getDefaultFocusOutlineStyes
10
10
  * @param options - Configure the style of the focus outline
11
11
  */
12
- export declare const createCustomFocusIndicatorStyle: (style: GriffelStyle, options?: CreateFocusIndicatorStyleRuleOptions) => GriffelStyle;
12
+ export declare const createCustomFocusIndicatorStyle: (style: GriffelStyle, { selector }?: CreateCustomFocusIndicatorStyleOptions) => GriffelStyle;
13
13
 
14
- export declare interface CreateFocusIndicatorStyleRuleOptions {
14
+ export declare interface CreateCustomFocusIndicatorStyleOptions {
15
15
  selector?: 'focus' | 'focus-within';
16
16
  }
17
17
 
@@ -22,9 +22,11 @@ export declare interface CreateFocusIndicatorStyleRuleOptions {
22
22
  * @param options - Configure the style of the focus outline
23
23
  * @returns focus outline styles object for @see makeStyles
24
24
  */
25
- export declare const createFocusOutlineStyle: (options?: {
26
- style: Partial<FocusOutlineStyleOptions>;
27
- } & CreateFocusIndicatorStyleRuleOptions) => GriffelStyle;
25
+ export declare const createFocusOutlineStyle: ({ selector, style, }?: CreateFocusOutlineStyleOptions) => GriffelStyle;
26
+
27
+ export declare interface CreateFocusOutlineStyleOptions extends CreateCustomFocusIndicatorStyleOptions {
28
+ style?: Partial<FocusOutlineStyleOptions>;
29
+ }
28
30
 
29
31
  export declare type FocusOutlineOffset = Record<'top' | 'bottom' | 'left' | 'right', string>;
30
32
 
@@ -1,2 +1,6 @@
1
1
  export declare const KEYBOARD_NAV_ATTRIBUTE: "data-keyboard-nav";
2
2
  export declare const KEYBOARD_NAV_SELECTOR: ":global([data-keyboard-nav])";
3
+ export declare const defaultOptions: {
4
+ readonly style: {};
5
+ readonly selector: "focus";
6
+ };
@@ -1,3 +1,7 @@
1
1
  export const KEYBOARD_NAV_ATTRIBUTE = 'data-keyboard-nav';
2
2
  export const KEYBOARD_NAV_SELECTOR = `:global([${KEYBOARD_NAV_ATTRIBUTE}])`;
3
- //# sourceMappingURL=symbols.js.map
3
+ export const defaultOptions = {
4
+ style: {},
5
+ selector: 'focus'
6
+ };
7
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["focus/constants.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,sBAAsB,GAAG,mBAA/B;AACP,OAAO,MAAM,qBAAqB,GAAG,YAAY,sBAAsB,IAAhE;AACP,OAAO,MAAM,cAAc,GAAG;AAC5B,EAAA,KAAK,EAAE,EADqB;AAE5B,EAAA,QAAQ,EAAE;AAFkB,CAAvB","sourcesContent":["export const KEYBOARD_NAV_ATTRIBUTE = 'data-keyboard-nav' as const;\nexport const KEYBOARD_NAV_SELECTOR = `:global([${KEYBOARD_NAV_ATTRIBUTE}])` as const;\nexport const defaultOptions = {\n style: {},\n selector: 'focus',\n} as const;\n"],"sourceRoot":"../src/"}
@@ -0,0 +1,12 @@
1
+ import type { GriffelStyle } from '@griffel/react';
2
+ export interface CreateCustomFocusIndicatorStyleOptions {
3
+ selector?: 'focus' | 'focus-within';
4
+ }
5
+ /**
6
+ * Creates a style for @see makeStyles that includes the necessary selectors for focus.
7
+ * Should be used only when @see createFocusOutlineStyle does not fit requirements
8
+ *
9
+ * @param style - styling applied on focus, defaults to @see getDefaultFocusOutlineStyes
10
+ * @param options - Configure the style of the focus outline
11
+ */
12
+ export declare const createCustomFocusIndicatorStyle: (style: GriffelStyle, { selector }?: CreateCustomFocusIndicatorStyleOptions) => GriffelStyle;
@@ -0,0 +1,18 @@
1
+ import { KEYBOARD_NAV_SELECTOR, defaultOptions } from './constants';
2
+ /**
3
+ * Creates a style for @see makeStyles that includes the necessary selectors for focus.
4
+ * Should be used only when @see createFocusOutlineStyle does not fit requirements
5
+ *
6
+ * @param style - styling applied on focus, defaults to @see getDefaultFocusOutlineStyes
7
+ * @param options - Configure the style of the focus outline
8
+ */
9
+
10
+ export const createCustomFocusIndicatorStyle = (style, {
11
+ selector = defaultOptions.selector
12
+ } = defaultOptions) => ({
13
+ ':focus-visible': {
14
+ outlineStyle: 'none'
15
+ },
16
+ [`${KEYBOARD_NAV_SELECTOR} :${selector}`]: style
17
+ });
18
+ //# sourceMappingURL=createCustomFocusIndicatorStyle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["focus/createCustomFocusIndicatorStyle.ts"],"names":[],"mappings":"AAAA,SAAS,qBAAT,EAAgC,cAAhC,QAAsD,aAAtD;AAOA;;;;;;AAMG;;AACH,OAAO,MAAM,+BAA+B,GAAG,CAC7C,KAD6C,EAE7C;AAAE,EAAA,QAAQ,GAAG,cAAc,CAAC;AAA5B,IAAiF,cAFpC,MAG3B;AAClB,oBAAkB;AAChB,IAAA,YAAY,EAAE;AADE,GADA;AAIlB,GAAC,GAAG,qBAAqB,KAAK,QAAQ,EAAtC,GAA2C;AAJzB,CAH2B,CAAxC","sourcesContent":["import { KEYBOARD_NAV_SELECTOR, defaultOptions } from './constants';\nimport type { GriffelStyle } from '@griffel/react';\n\nexport interface CreateCustomFocusIndicatorStyleOptions {\n selector?: 'focus' | 'focus-within';\n}\n\n/**\n * Creates a style for @see makeStyles that includes the necessary selectors for focus.\n * Should be used only when @see createFocusOutlineStyle does not fit requirements\n *\n * @param style - styling applied on focus, defaults to @see getDefaultFocusOutlineStyes\n * @param options - Configure the style of the focus outline\n */\nexport const createCustomFocusIndicatorStyle = (\n style: GriffelStyle,\n { selector = defaultOptions.selector }: CreateCustomFocusIndicatorStyleOptions = defaultOptions,\n): GriffelStyle => ({\n ':focus-visible': {\n outlineStyle: 'none',\n },\n [`${KEYBOARD_NAV_SELECTOR} :${selector}`]: style,\n});\n"],"sourceRoot":"../src/"}
@@ -1,4 +1,5 @@
1
1
  import type { GriffelStyle } from '@griffel/react';
2
+ import { CreateCustomFocusIndicatorStyleOptions } from './createCustomFocusIndicatorStyle';
2
3
  export declare type FocusOutlineOffset = Record<'top' | 'bottom' | 'left' | 'right', string>;
3
4
  export declare type FocusOutlineStyleOptions = {
4
5
  /**
@@ -10,8 +11,8 @@ export declare type FocusOutlineStyleOptions = {
10
11
  outlineWidth: string;
11
12
  outlineOffset?: string | FocusOutlineOffset;
12
13
  };
13
- export interface CreateFocusIndicatorStyleRuleOptions {
14
- selector?: 'focus' | 'focus-within';
14
+ export interface CreateFocusOutlineStyleOptions extends CreateCustomFocusIndicatorStyleOptions {
15
+ style?: Partial<FocusOutlineStyleOptions>;
15
16
  }
16
17
  /**
17
18
  * NOTE: The element with the focus outline needs to have `position: relative` so that the
@@ -20,14 +21,4 @@ export interface CreateFocusIndicatorStyleRuleOptions {
20
21
  * @param options - Configure the style of the focus outline
21
22
  * @returns focus outline styles object for @see makeStyles
22
23
  */
23
- export declare const createFocusOutlineStyle: (options?: {
24
- style: Partial<FocusOutlineStyleOptions>;
25
- } & CreateFocusIndicatorStyleRuleOptions) => GriffelStyle;
26
- /**
27
- * Creates a style for @see makeStyles that includes the necessary selectors for focus.
28
- * Should be used only when @see createFocusOutlineStyle does not fit requirements
29
- *
30
- * @param style - styling applied on focus, defaults to @see getDefaultFocusOutlineStyes
31
- * @param options - Configure the style of the focus outline
32
- */
33
- export declare const createCustomFocusIndicatorStyle: (style: GriffelStyle, options?: CreateFocusIndicatorStyleRuleOptions) => GriffelStyle;
24
+ export declare const createFocusOutlineStyle: ({ selector, style, }?: CreateFocusOutlineStyleOptions) => GriffelStyle;
@@ -1,6 +1,7 @@
1
1
  import { tokens } from '@fluentui/react-theme';
2
- import { KEYBOARD_NAV_SELECTOR } from '../symbols';
3
2
  import { shorthands } from '@griffel/react';
3
+ import { createCustomFocusIndicatorStyle } from './createCustomFocusIndicatorStyle';
4
+ import { defaultOptions } from './constants';
4
5
  /**
5
6
  * NOTE: the element with the focus outline needs to have `position: relative` so that the
6
7
  * pseudo element can be properly positioned.
@@ -39,10 +40,6 @@ const getFocusOutlineStyles = options => {
39
40
  }
40
41
  };
41
42
  };
42
-
43
- const defaultOptions = {
44
- selector: 'focus'
45
- };
46
43
  /**
47
44
  * NOTE: The element with the focus outline needs to have `position: relative` so that the
48
45
  * pseudo element can be properly positioned.
@@ -51,33 +48,17 @@ const defaultOptions = {
51
48
  * @returns focus outline styles object for @see makeStyles
52
49
  */
53
50
 
54
- export const createFocusOutlineStyle = (options = {
55
- style: {},
56
- ...defaultOptions
57
- }) => ({
58
- ':focus-visible': {
59
- outlineStyle: 'none'
60
- },
61
- [`${KEYBOARD_NAV_SELECTOR} :${options.selector || defaultOptions.selector}`]: getFocusOutlineStyles({
62
- outlineColor: tokens.colorStrokeFocus2,
63
- outlineRadius: tokens.borderRadiusMedium,
64
- // FIXME: tokens.strokeWidthThick causes some weird bugs
65
- outlineWidth: '2px',
66
- ...options.style
67
- })
68
- });
69
- /**
70
- * Creates a style for @see makeStyles that includes the necessary selectors for focus.
71
- * Should be used only when @see createFocusOutlineStyle does not fit requirements
72
- *
73
- * @param style - styling applied on focus, defaults to @see getDefaultFocusOutlineStyes
74
- * @param options - Configure the style of the focus outline
75
- */
76
51
 
77
- export const createCustomFocusIndicatorStyle = (style, options = defaultOptions) => ({
78
- ':focus-visible': {
79
- outlineStyle: 'none'
80
- },
81
- [`${KEYBOARD_NAV_SELECTOR} :${options.selector || defaultOptions.selector}`]: style
52
+ export const createFocusOutlineStyle = ({
53
+ selector = defaultOptions.selector,
54
+ style = defaultOptions.style
55
+ } = defaultOptions) => createCustomFocusIndicatorStyle(getFocusOutlineStyles({
56
+ outlineColor: tokens.colorStrokeFocus2,
57
+ outlineRadius: tokens.borderRadiusMedium,
58
+ // FIXME: tokens.strokeWidthThick causes some weird bugs
59
+ outlineWidth: '2px',
60
+ ...style
61
+ }), {
62
+ selector
82
63
  });
83
- //# sourceMappingURL=useFocusIndicatorStyle.js.map
64
+ //# sourceMappingURL=createFocusOutlineStyle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["focus/createFocusOutlineStyle.ts"],"names":[],"mappings":"AAAA,SAAS,MAAT,QAAuB,uBAAvB;AACA,SAAS,UAAT,QAA2B,gBAA3B;AAEA,SACE,+BADF,QAGO,mCAHP;AAIA,SAAS,cAAT,QAA+B,aAA/B;AAiBA;;;;;;AAMG;;AACH,MAAM,qBAAqB,GAAI,OAAD,IAAoD;;;AAChF,QAAM;AAAE,IAAA,aAAF;AAAiB,IAAA,YAAjB;AAA+B,IAAA,aAA/B;AAA8C,IAAA;AAA9C,MAA+D,OAArE;AAEA,QAAM,gBAAgB,GAAG,CAAA,CAAA,EAAA,GAAC,aAAD,MAAqC,IAArC,IAAqC,EAAA,KAAA,KAAA,CAArC,GAAqC,KAAA,CAArC,GAAqC,EAAA,CAAE,GAAvC,KAA8C,aAAvE;AACA,QAAM,mBAAmB,GAAG,CAAA,CAAA,EAAA,GAAC,aAAD,MAAqC,IAArC,IAAqC,EAAA,KAAA,KAAA,CAArC,GAAqC,KAAA,CAArC,GAAqC,EAAA,CAAE,MAAvC,KAAiD,aAA7E;AACA,QAAM,iBAAiB,GAAG,CAAA,CAAA,EAAA,GAAC,aAAD,MAAqC,IAArC,IAAqC,EAAA,KAAA,KAAA,CAArC,GAAqC,KAAA,CAArC,GAAqC,EAAA,CAAE,IAAvC,KAA+C,aAAzE;AACA,QAAM,kBAAkB,GAAG,CAAA,CAAA,EAAA,GAAC,aAAD,MAAqC,IAArC,IAAqC,EAAA,KAAA,KAAA,CAArC,GAAqC,KAAA,CAArC,GAAqC,EAAA,CAAE,KAAvC,KAAgD,aAA3E;AAEA,SAAO,EACL,GAAG,UAAU,CAAC,WAAX,CAAuB,aAAvB,CADE;AAEL,cAAU;AACR,MAAA,OAAO,EAAE,IADD;AAER,MAAA,QAAQ,EAAE,UAFF;AAGR,MAAA,aAAa,EAAE,MAHP;AAIR,MAAA,MAAM,EAAE,CAJA;AAMR,SAAG,UAAU,CAAC,WAAX,CAAuB,OAAvB,CANK;AAOR,SAAG,UAAU,CAAC,WAAX,CAAuB,YAAvB,CAPK;AAQR,SAAG,UAAU,CAAC,YAAX,CAAwB,aAAxB,CARK;AASR,SAAG,UAAU,CAAC,WAAX,CAAuB,YAAvB,CATK;AAWR,MAAA,GAAG,EAAE,CAAC,aAAD,GAAiB,IAAI,YAAY,EAAjC,GAAsC,cAAc,YAAY,MAAM,gBAAgB,GAXnF;AAYR,MAAA,MAAM,EAAE,CAAC,aAAD,GAAiB,IAAI,YAAY,EAAjC,GAAsC,cAAc,YAAY,MAAM,mBAAmB,GAZzF;AAaR,MAAA,IAAI,EAAE,CAAC,aAAD,GAAiB,IAAI,YAAY,EAAjC,GAAsC,cAAc,YAAY,MAAM,iBAAiB,GAbrF;AAcR,MAAA,KAAK,EAAE,CAAC,aAAD,GAAiB,IAAI,YAAY,EAAjC,GAAsC,cAAc,YAAY,MAAM,kBAAkB;AAdvF;AAFL,GAAP;AAmBD,CA3BD;AA6BA;;;;;;AAMG;;;AACH,OAAO,MAAM,uBAAuB,GAAG,CAAC;AACtC,EAAA,QAAQ,GAAG,cAAc,CAAC,QADY;AAEtC,EAAA,KAAK,GAAG,cAAc,CAAC;AAFe,IAGJ,cAHG,KAIrC,+BAA+B,CAC7B,qBAAqB,CAAC;AACpB,EAAA,YAAY,EAAE,MAAM,CAAC,iBADD;AAEpB,EAAA,aAAa,EAAE,MAAM,CAAC,kBAFF;AAGpB;AACA,EAAA,YAAY,EAAE,KAJM;AAKpB,KAAG;AALiB,CAAD,CADQ,EAQ7B;AAAE,EAAA;AAAF,CAR6B,CAJ1B","sourcesContent":["import { tokens } from '@fluentui/react-theme';\nimport { shorthands } from '@griffel/react';\nimport type { GriffelStyle } from '@griffel/react';\nimport {\n createCustomFocusIndicatorStyle,\n CreateCustomFocusIndicatorStyleOptions,\n} from './createCustomFocusIndicatorStyle';\nimport { defaultOptions } from './constants';\n\nexport type FocusOutlineOffset = Record<'top' | 'bottom' | 'left' | 'right', string>;\nexport type FocusOutlineStyleOptions = {\n /**\n * Only property not supported by the native CSS `outline`, if this is no longer needed\n * we can just go native instead\n */\n outlineRadius: string;\n outlineColor: string;\n outlineWidth: string;\n outlineOffset?: string | FocusOutlineOffset;\n};\nexport interface CreateFocusOutlineStyleOptions extends CreateCustomFocusIndicatorStyleOptions {\n style?: Partial<FocusOutlineStyleOptions>;\n}\n\n/**\n * NOTE: the element with the focus outline needs to have `position: relative` so that the\n * pseudo element can be properly positioned.\n *\n * @param options - Configures the style of the focus outline\n * @returns focus outline styles object\n */\nconst getFocusOutlineStyles = (options: FocusOutlineStyleOptions): GriffelStyle => {\n const { outlineRadius, outlineColor, outlineOffset, outlineWidth } = options;\n\n const outlineOffsetTop = (outlineOffset as FocusOutlineOffset)?.top || outlineOffset;\n const outlineOffsetBottom = (outlineOffset as FocusOutlineOffset)?.bottom || outlineOffset;\n const outlineOffsetLeft = (outlineOffset as FocusOutlineOffset)?.left || outlineOffset;\n const outlineOffsetRight = (outlineOffset as FocusOutlineOffset)?.right || outlineOffset;\n\n return {\n ...shorthands.borderColor('transparent'),\n ':after': {\n content: '\"\"',\n position: 'absolute',\n pointerEvents: 'none',\n zIndex: 1,\n\n ...shorthands.borderStyle('solid'),\n ...shorthands.borderWidth(outlineWidth),\n ...shorthands.borderRadius(outlineRadius),\n ...shorthands.borderColor(outlineColor),\n\n top: !outlineOffset ? `-${outlineWidth}` : `calc(0px - ${outlineWidth} - ${outlineOffsetTop})`,\n bottom: !outlineOffset ? `-${outlineWidth}` : `calc(0px - ${outlineWidth} - ${outlineOffsetBottom})`,\n left: !outlineOffset ? `-${outlineWidth}` : `calc(0px - ${outlineWidth} - ${outlineOffsetLeft})`,\n right: !outlineOffset ? `-${outlineWidth}` : `calc(0px - ${outlineWidth} - ${outlineOffsetRight})`,\n },\n };\n};\n\n/**\n * NOTE: The element with the focus outline needs to have `position: relative` so that the\n * pseudo element can be properly positioned.\n *\n * @param options - Configure the style of the focus outline\n * @returns focus outline styles object for @see makeStyles\n */\nexport const createFocusOutlineStyle = ({\n selector = defaultOptions.selector,\n style = defaultOptions.style,\n}: CreateFocusOutlineStyleOptions = defaultOptions): GriffelStyle =>\n createCustomFocusIndicatorStyle(\n getFocusOutlineStyles({\n outlineColor: tokens.colorStrokeFocus2,\n outlineRadius: tokens.borderRadiusMedium,\n // FIXME: tokens.strokeWidthThick causes some weird bugs\n outlineWidth: '2px',\n ...style,\n }),\n { selector },\n );\n"],"sourceRoot":"../src/"}
@@ -0,0 +1,2 @@
1
+ export * from './createCustomFocusIndicatorStyle';
2
+ export * from './createFocusOutlineStyle';
@@ -0,0 +1,3 @@
1
+ export * from './createCustomFocusIndicatorStyle';
2
+ export * from './createFocusOutlineStyle';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"../src/","sources":["focus/index.ts"],"names":[],"mappings":"AAAA,cAAc,mCAAmC,CAAC;AAClD,cAAc,2BAA2B,CAAC","sourcesContent":["export * from './createCustomFocusIndicatorStyle';\nexport * from './createFocusOutlineStyle';\n"]}
@@ -1,7 +1,6 @@
1
1
  export * from './useArrowNavigationGroup';
2
2
  export * from './useFocusableGroup';
3
3
  export * from './useFocusFinders';
4
- export * from './useFocusIndicatorStyle';
5
4
  export * from './useKeyboardNavAttribute';
6
5
  export * from './useModalAttributes';
7
6
  export * from './useTabsterAttributes';
@@ -1,7 +1,6 @@
1
1
  export * from './useArrowNavigationGroup';
2
2
  export * from './useFocusableGroup';
3
3
  export * from './useFocusFinders';
4
- export * from './useFocusIndicatorStyle';
5
4
  export * from './useKeyboardNavAttribute';
6
5
  export * from './useModalAttributes';
7
6
  export * from './useTabsterAttributes';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"../src/","sources":["hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,0BAA0B,CAAC;AACzC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC","sourcesContent":["export * from './useArrowNavigationGroup';\nexport * from './useFocusableGroup';\nexport * from './useFocusFinders';\nexport * from './useFocusIndicatorStyle';\nexport * from './useKeyboardNavAttribute';\nexport * from './useModalAttributes';\nexport * from './useTabsterAttributes';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"../src/","sources":["hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC","sourcesContent":["export * from './useArrowNavigationGroup';\nexport * from './useFocusableGroup';\nexport * from './useFocusFinders';\nexport * from './useKeyboardNavAttribute';\nexport * from './useModalAttributes';\nexport * from './useTabsterAttributes';\n"]}
@@ -1,6 +1,6 @@
1
1
  import { createKeyborg } from 'keyborg';
2
2
  import { useEffect, useMemo, useRef } from 'react';
3
- import { KEYBOARD_NAV_ATTRIBUTE } from '../symbols';
3
+ import { KEYBOARD_NAV_ATTRIBUTE } from '../focus/constants';
4
4
  import { useFluent } from '@fluentui/react-shared-contexts';
5
5
  /**
6
6
  * instantiates keyborg and add attribute to ensure focus indicator synced to keyborg logic
@@ -1 +1 @@
1
- {"version":3,"sources":["hooks/useKeyboardNavAttribute.ts"],"names":[],"mappings":"AAAA,SAAS,aAAT,QAA8B,SAA9B;AACA,SAAS,SAAT,EAAoB,OAApB,EAA6B,MAA7B,QAA2C,OAA3C;AACA,SAAS,sBAAT,QAAuC,YAAvC;AACA,SAAS,SAAT,QAA0B,iCAA1B;AAIA;;AAEG;;AACH,OAAM,SAAU,uBAAV,GAAiC;AACrC,QAAM;AAAE,IAAA;AAAF,MAAqB,SAAS,EAApC;AACA,QAAM,OAAO,GAAG,OAAO,CAAC,MAAM,cAAc,IAAI,aAAa,CAAC,cAAc,CAAC,WAAhB,CAAtC,EAAqE,CAAC,cAAD,CAArE,CAAvB;AACA,QAAM,GAAG,GAAG,MAAM,CAAI,IAAJ,CAAlB;AACA,EAAA,SAAS,CAAC,MAAK;AACb,QAAI,OAAJ,EAAa;AACX,MAAA,mBAAmB,CAAC,GAAD,EAAM,sBAAN,EAA8B,OAAO,CAAC,wBAAR,EAA9B,CAAnB;;AACA,YAAM,EAAE,GAAoB,IAAI,IAAG;AACjC,QAAA,mBAAmB,CAAC,GAAD,EAAM,sBAAN,EAA8B,IAA9B,CAAnB;AACD,OAFD;;AAGA,MAAA,OAAO,CAAC,SAAR,CAAkB,EAAlB;AACA,aAAO,MAAM,OAAO,CAAC,WAAR,CAAoB,EAApB,CAAb;AACD;AACF,GATQ,EASN,CAAC,OAAD,CATM,CAAT;AAUA,SAAO,GAAP;AACD;;AAED,SAAS,mBAAT,CAA6B,UAA7B,EAAiE,SAAjE,EAAoF,KAApF,EAAkG;AAChG,MAAI,CAAC,UAAU,CAAC,OAAhB,EAAyB;AACvB;AACD;;AACD,MAAI,KAAJ,EAAW;AACT,IAAA,UAAU,CAAC,OAAX,CAAmB,YAAnB,CAAgC,SAAhC,EAA2C,EAA3C;AACD,GAFD,MAEO;AACL,IAAA,UAAU,CAAC,OAAX,CAAmB,eAAnB,CAAmC,SAAnC;AACD;AACF","sourcesContent":["import { createKeyborg } from 'keyborg';\nimport { useEffect, useMemo, useRef } from 'react';\nimport { KEYBOARD_NAV_ATTRIBUTE } from '../symbols';\nimport { useFluent } from '@fluentui/react-shared-contexts';\nimport type { KeyborgCallback } from 'keyborg/dist/Keyborg';\nimport type { RefObject } from 'react';\n\n/**\n * instantiates keyborg and add attribute to ensure focus indicator synced to keyborg logic\n */\nexport function useKeyboardNavAttribute<E extends HTMLElement>() {\n const { targetDocument } = useFluent();\n const keyborg = useMemo(() => targetDocument && createKeyborg(targetDocument.defaultView!), [targetDocument]);\n const ref = useRef<E>(null);\n useEffect(() => {\n if (keyborg) {\n setBooleanAttribute(ref, KEYBOARD_NAV_ATTRIBUTE, keyborg.isNavigatingWithKeyboard());\n const cb: KeyborgCallback = next => {\n setBooleanAttribute(ref, KEYBOARD_NAV_ATTRIBUTE, next);\n };\n keyborg.subscribe(cb);\n return () => keyborg.unsubscribe(cb);\n }\n }, [keyborg]);\n return ref;\n}\n\nfunction setBooleanAttribute(elementRef: RefObject<HTMLElement>, attribute: string, value: boolean) {\n if (!elementRef.current) {\n return;\n }\n if (value) {\n elementRef.current.setAttribute(attribute, '');\n } else {\n elementRef.current.removeAttribute(attribute);\n }\n}\n"],"sourceRoot":"../src/"}
1
+ {"version":3,"sources":["hooks/useKeyboardNavAttribute.ts"],"names":[],"mappings":"AAAA,SAAS,aAAT,QAA8B,SAA9B;AACA,SAAS,SAAT,EAAoB,OAApB,EAA6B,MAA7B,QAA2C,OAA3C;AACA,SAAS,sBAAT,QAAuC,oBAAvC;AACA,SAAS,SAAT,QAA0B,iCAA1B;AAIA;;AAEG;;AACH,OAAM,SAAU,uBAAV,GAAiC;AACrC,QAAM;AAAE,IAAA;AAAF,MAAqB,SAAS,EAApC;AACA,QAAM,OAAO,GAAG,OAAO,CAAC,MAAM,cAAc,IAAI,aAAa,CAAC,cAAc,CAAC,WAAhB,CAAtC,EAAqE,CAAC,cAAD,CAArE,CAAvB;AACA,QAAM,GAAG,GAAG,MAAM,CAAI,IAAJ,CAAlB;AACA,EAAA,SAAS,CAAC,MAAK;AACb,QAAI,OAAJ,EAAa;AACX,MAAA,mBAAmB,CAAC,GAAD,EAAM,sBAAN,EAA8B,OAAO,CAAC,wBAAR,EAA9B,CAAnB;;AACA,YAAM,EAAE,GAAoB,IAAI,IAAG;AACjC,QAAA,mBAAmB,CAAC,GAAD,EAAM,sBAAN,EAA8B,IAA9B,CAAnB;AACD,OAFD;;AAGA,MAAA,OAAO,CAAC,SAAR,CAAkB,EAAlB;AACA,aAAO,MAAM,OAAO,CAAC,WAAR,CAAoB,EAApB,CAAb;AACD;AACF,GATQ,EASN,CAAC,OAAD,CATM,CAAT;AAUA,SAAO,GAAP;AACD;;AAED,SAAS,mBAAT,CAA6B,UAA7B,EAAiE,SAAjE,EAAoF,KAApF,EAAkG;AAChG,MAAI,CAAC,UAAU,CAAC,OAAhB,EAAyB;AACvB;AACD;;AACD,MAAI,KAAJ,EAAW;AACT,IAAA,UAAU,CAAC,OAAX,CAAmB,YAAnB,CAAgC,SAAhC,EAA2C,EAA3C;AACD,GAFD,MAEO;AACL,IAAA,UAAU,CAAC,OAAX,CAAmB,eAAnB,CAAmC,SAAnC;AACD;AACF","sourcesContent":["import { createKeyborg } from 'keyborg';\nimport { useEffect, useMemo, useRef } from 'react';\nimport { KEYBOARD_NAV_ATTRIBUTE } from '../focus/constants';\nimport { useFluent } from '@fluentui/react-shared-contexts';\nimport type { KeyborgCallback } from 'keyborg/dist/Keyborg';\nimport type { RefObject } from 'react';\n\n/**\n * instantiates keyborg and add attribute to ensure focus indicator synced to keyborg logic\n */\nexport function useKeyboardNavAttribute<E extends HTMLElement>() {\n const { targetDocument } = useFluent();\n const keyborg = useMemo(() => targetDocument && createKeyborg(targetDocument.defaultView!), [targetDocument]);\n const ref = useRef<E>(null);\n useEffect(() => {\n if (keyborg) {\n setBooleanAttribute(ref, KEYBOARD_NAV_ATTRIBUTE, keyborg.isNavigatingWithKeyboard());\n const cb: KeyborgCallback = next => {\n setBooleanAttribute(ref, KEYBOARD_NAV_ATTRIBUTE, next);\n };\n keyborg.subscribe(cb);\n return () => keyborg.unsubscribe(cb);\n }\n }, [keyborg]);\n return ref;\n}\n\nfunction setBooleanAttribute(elementRef: RefObject<HTMLElement>, attribute: string, value: boolean) {\n if (!elementRef.current) {\n return;\n }\n if (value) {\n elementRef.current.setAttribute(attribute, '');\n } else {\n elementRef.current.removeAttribute(attribute);\n }\n}\n"],"sourceRoot":"../src/"}
package/lib/index.d.ts CHANGED
@@ -1,2 +1,4 @@
1
- export { createCustomFocusIndicatorStyle, createFocusOutlineStyle, useArrowNavigationGroup, useFocusableGroup, useFocusFinders, useKeyboardNavAttribute, useModalAttributes, useTabsterAttributes, } from './hooks/index';
2
- export type { CreateFocusIndicatorStyleRuleOptions, FocusOutlineOffset, FocusOutlineStyleOptions, UseArrowNavigationGroupOptions, UseFocusableGroupOptions, UseModalAttributesOptions, } from './hooks/index';
1
+ export { useArrowNavigationGroup, useFocusableGroup, useFocusFinders, useKeyboardNavAttribute, useModalAttributes, useTabsterAttributes, } from './hooks/index';
2
+ export type { UseArrowNavigationGroupOptions, UseFocusableGroupOptions, UseModalAttributesOptions, } from './hooks/index';
3
+ export { createCustomFocusIndicatorStyle, createFocusOutlineStyle } from './focus/index';
4
+ export type { CreateCustomFocusIndicatorStyleOptions, CreateFocusOutlineStyleOptions, FocusOutlineOffset, FocusOutlineStyleOptions, } from './focus/index';
package/lib/index.js CHANGED
@@ -1,2 +1,3 @@
1
- export { createCustomFocusIndicatorStyle, createFocusOutlineStyle, useArrowNavigationGroup, useFocusableGroup, useFocusFinders, useKeyboardNavAttribute, useModalAttributes, useTabsterAttributes } from './hooks/index';
1
+ export { useArrowNavigationGroup, useFocusableGroup, useFocusFinders, useKeyboardNavAttribute, useModalAttributes, useTabsterAttributes } from './hooks/index';
2
+ export { createCustomFocusIndicatorStyle, createFocusOutlineStyle } from './focus/index';
2
3
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,SACE,+BADF,EAEE,uBAFF,EAGE,uBAHF,EAIE,iBAJF,EAKE,eALF,EAME,uBANF,EAOE,kBAPF,EAQE,oBARF,QASO,eATP","sourcesContent":["export {\n createCustomFocusIndicatorStyle,\n createFocusOutlineStyle,\n useArrowNavigationGroup,\n useFocusableGroup,\n useFocusFinders,\n useKeyboardNavAttribute,\n useModalAttributes,\n useTabsterAttributes,\n} from './hooks/index';\nexport type {\n CreateFocusIndicatorStyleRuleOptions,\n FocusOutlineOffset,\n FocusOutlineStyleOptions,\n UseArrowNavigationGroupOptions,\n UseFocusableGroupOptions,\n UseModalAttributesOptions,\n} from './hooks/index';\n"],"sourceRoot":"../src/"}
1
+ {"version":3,"sources":["index.ts"],"names":[],"mappings":"AAAA,SACE,uBADF,EAEE,iBAFF,EAGE,eAHF,EAIE,uBAJF,EAKE,kBALF,EAME,oBANF,QAOO,eAPP;AAcA,SAAS,+BAAT,EAA0C,uBAA1C,QAAyE,eAAzE","sourcesContent":["export {\n useArrowNavigationGroup,\n useFocusableGroup,\n useFocusFinders,\n useKeyboardNavAttribute,\n useModalAttributes,\n useTabsterAttributes,\n} from './hooks/index';\nexport type {\n UseArrowNavigationGroupOptions,\n UseFocusableGroupOptions,\n UseModalAttributesOptions,\n} from './hooks/index';\n\nexport { createCustomFocusIndicatorStyle, createFocusOutlineStyle } from './focus/index';\n\nexport type {\n CreateCustomFocusIndicatorStyleOptions,\n CreateFocusOutlineStyleOptions,\n FocusOutlineOffset,\n FocusOutlineStyleOptions,\n} from './focus/index';\n"],"sourceRoot":"../src/"}
@@ -1,2 +1,6 @@
1
1
  export declare const KEYBOARD_NAV_ATTRIBUTE: "data-keyboard-nav";
2
2
  export declare const KEYBOARD_NAV_SELECTOR: ":global([data-keyboard-nav])";
3
+ export declare const defaultOptions: {
4
+ readonly style: {};
5
+ readonly selector: "focus";
6
+ };
@@ -3,7 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.KEYBOARD_NAV_SELECTOR = exports.KEYBOARD_NAV_ATTRIBUTE = void 0;
6
+ exports.defaultOptions = exports.KEYBOARD_NAV_SELECTOR = exports.KEYBOARD_NAV_ATTRIBUTE = void 0;
7
7
  exports.KEYBOARD_NAV_ATTRIBUTE = 'data-keyboard-nav';
8
8
  exports.KEYBOARD_NAV_SELECTOR = `:global([${exports.KEYBOARD_NAV_ATTRIBUTE}])`;
9
- //# sourceMappingURL=symbols.js.map
9
+ exports.defaultOptions = {
10
+ style: {},
11
+ selector: 'focus'
12
+ };
13
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["focus/constants.ts"],"names":[],"mappings":";;;;;;AAAa,OAAA,CAAA,sBAAA,GAAyB,mBAAzB;AACA,OAAA,CAAA,qBAAA,GAAwB,YAAY,OAAA,CAAA,sBAAsB,IAA1D;AACA,OAAA,CAAA,cAAA,GAAiB;AAC5B,EAAA,KAAK,EAAE,EADqB;AAE5B,EAAA,QAAQ,EAAE;AAFkB,CAAjB","sourcesContent":["export const KEYBOARD_NAV_ATTRIBUTE = 'data-keyboard-nav' as const;\nexport const KEYBOARD_NAV_SELECTOR = `:global([${KEYBOARD_NAV_ATTRIBUTE}])` as const;\nexport const defaultOptions = {\n style: {},\n selector: 'focus',\n} as const;\n"],"sourceRoot":"../src/"}
@@ -0,0 +1,12 @@
1
+ import type { GriffelStyle } from '@griffel/react';
2
+ export interface CreateCustomFocusIndicatorStyleOptions {
3
+ selector?: 'focus' | 'focus-within';
4
+ }
5
+ /**
6
+ * Creates a style for @see makeStyles that includes the necessary selectors for focus.
7
+ * Should be used only when @see createFocusOutlineStyle does not fit requirements
8
+ *
9
+ * @param style - styling applied on focus, defaults to @see getDefaultFocusOutlineStyes
10
+ * @param options - Configure the style of the focus outline
11
+ */
12
+ export declare const createCustomFocusIndicatorStyle: (style: GriffelStyle, { selector }?: CreateCustomFocusIndicatorStyleOptions) => GriffelStyle;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.createCustomFocusIndicatorStyle = void 0;
7
+
8
+ const constants_1 = /*#__PURE__*/require("./constants");
9
+ /**
10
+ * Creates a style for @see makeStyles that includes the necessary selectors for focus.
11
+ * Should be used only when @see createFocusOutlineStyle does not fit requirements
12
+ *
13
+ * @param style - styling applied on focus, defaults to @see getDefaultFocusOutlineStyes
14
+ * @param options - Configure the style of the focus outline
15
+ */
16
+
17
+
18
+ const createCustomFocusIndicatorStyle = (style, {
19
+ selector = constants_1.defaultOptions.selector
20
+ } = constants_1.defaultOptions) => ({
21
+ ':focus-visible': {
22
+ outlineStyle: 'none'
23
+ },
24
+ [`${constants_1.KEYBOARD_NAV_SELECTOR} :${selector}`]: style
25
+ });
26
+
27
+ exports.createCustomFocusIndicatorStyle = createCustomFocusIndicatorStyle;
28
+ //# sourceMappingURL=createCustomFocusIndicatorStyle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["focus/createCustomFocusIndicatorStyle.ts"],"names":[],"mappings":";;;;;;;AAAA,MAAA,WAAA,gBAAA,OAAA,CAAA,aAAA,CAAA;AAOA;;;;;;AAMG;;;AACI,MAAM,+BAA+B,GAAG,CAC7C,KAD6C,EAE7C;AAAE,EAAA,QAAQ,GAAG,WAAA,CAAA,cAAA,CAAe;AAA5B,IAAiF,WAAA,CAAA,cAFpC,MAG3B;AAClB,oBAAkB;AAChB,IAAA,YAAY,EAAE;AADE,GADA;AAIlB,GAAC,GAAG,WAAA,CAAA,qBAAqB,KAAK,QAAQ,EAAtC,GAA2C;AAJzB,CAH2B,CAAxC;;AAAM,OAAA,CAAA,+BAAA,GAA+B,+BAA/B","sourcesContent":["import { KEYBOARD_NAV_SELECTOR, defaultOptions } from './constants';\nimport type { GriffelStyle } from '@griffel/react';\n\nexport interface CreateCustomFocusIndicatorStyleOptions {\n selector?: 'focus' | 'focus-within';\n}\n\n/**\n * Creates a style for @see makeStyles that includes the necessary selectors for focus.\n * Should be used only when @see createFocusOutlineStyle does not fit requirements\n *\n * @param style - styling applied on focus, defaults to @see getDefaultFocusOutlineStyes\n * @param options - Configure the style of the focus outline\n */\nexport const createCustomFocusIndicatorStyle = (\n style: GriffelStyle,\n { selector = defaultOptions.selector }: CreateCustomFocusIndicatorStyleOptions = defaultOptions,\n): GriffelStyle => ({\n ':focus-visible': {\n outlineStyle: 'none',\n },\n [`${KEYBOARD_NAV_SELECTOR} :${selector}`]: style,\n});\n"],"sourceRoot":"../src/"}
@@ -1,4 +1,5 @@
1
1
  import type { GriffelStyle } from '@griffel/react';
2
+ import { CreateCustomFocusIndicatorStyleOptions } from './createCustomFocusIndicatorStyle';
2
3
  export declare type FocusOutlineOffset = Record<'top' | 'bottom' | 'left' | 'right', string>;
3
4
  export declare type FocusOutlineStyleOptions = {
4
5
  /**
@@ -10,8 +11,8 @@ export declare type FocusOutlineStyleOptions = {
10
11
  outlineWidth: string;
11
12
  outlineOffset?: string | FocusOutlineOffset;
12
13
  };
13
- export interface CreateFocusIndicatorStyleRuleOptions {
14
- selector?: 'focus' | 'focus-within';
14
+ export interface CreateFocusOutlineStyleOptions extends CreateCustomFocusIndicatorStyleOptions {
15
+ style?: Partial<FocusOutlineStyleOptions>;
15
16
  }
16
17
  /**
17
18
  * NOTE: The element with the focus outline needs to have `position: relative` so that the
@@ -20,14 +21,4 @@ export interface CreateFocusIndicatorStyleRuleOptions {
20
21
  * @param options - Configure the style of the focus outline
21
22
  * @returns focus outline styles object for @see makeStyles
22
23
  */
23
- export declare const createFocusOutlineStyle: (options?: {
24
- style: Partial<FocusOutlineStyleOptions>;
25
- } & CreateFocusIndicatorStyleRuleOptions) => GriffelStyle;
26
- /**
27
- * Creates a style for @see makeStyles that includes the necessary selectors for focus.
28
- * Should be used only when @see createFocusOutlineStyle does not fit requirements
29
- *
30
- * @param style - styling applied on focus, defaults to @see getDefaultFocusOutlineStyes
31
- * @param options - Configure the style of the focus outline
32
- */
33
- export declare const createCustomFocusIndicatorStyle: (style: GriffelStyle, options?: CreateFocusIndicatorStyleRuleOptions) => GriffelStyle;
24
+ export declare const createFocusOutlineStyle: ({ selector, style, }?: CreateFocusOutlineStyleOptions) => GriffelStyle;
@@ -3,13 +3,15 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createCustomFocusIndicatorStyle = exports.createFocusOutlineStyle = void 0;
6
+ exports.createFocusOutlineStyle = void 0;
7
7
 
8
8
  const react_theme_1 = /*#__PURE__*/require("@fluentui/react-theme");
9
9
 
10
- const symbols_1 = /*#__PURE__*/require("../symbols");
11
-
12
10
  const react_1 = /*#__PURE__*/require("@griffel/react");
11
+
12
+ const createCustomFocusIndicatorStyle_1 = /*#__PURE__*/require("./createCustomFocusIndicatorStyle");
13
+
14
+ const constants_1 = /*#__PURE__*/require("./constants");
13
15
  /**
14
16
  * NOTE: the element with the focus outline needs to have `position: relative` so that the
15
17
  * pseudo element can be properly positioned.
@@ -49,10 +51,6 @@ const getFocusOutlineStyles = options => {
49
51
  }
50
52
  };
51
53
  };
52
-
53
- const defaultOptions = {
54
- selector: 'focus'
55
- };
56
54
  /**
57
55
  * NOTE: The element with the focus outline needs to have `position: relative` so that the
58
56
  * pseudo element can be properly positioned.
@@ -61,37 +59,19 @@ const defaultOptions = {
61
59
  * @returns focus outline styles object for @see makeStyles
62
60
  */
63
61
 
64
- const createFocusOutlineStyle = (options = {
65
- style: {},
66
- ...defaultOptions
67
- }) => ({
68
- ':focus-visible': {
69
- outlineStyle: 'none'
70
- },
71
- [`${symbols_1.KEYBOARD_NAV_SELECTOR} :${options.selector || defaultOptions.selector}`]: getFocusOutlineStyles({
72
- outlineColor: react_theme_1.tokens.colorStrokeFocus2,
73
- outlineRadius: react_theme_1.tokens.borderRadiusMedium,
74
- // FIXME: tokens.strokeWidthThick causes some weird bugs
75
- outlineWidth: '2px',
76
- ...options.style
77
- })
78
- });
79
62
 
80
- exports.createFocusOutlineStyle = createFocusOutlineStyle;
81
- /**
82
- * Creates a style for @see makeStyles that includes the necessary selectors for focus.
83
- * Should be used only when @see createFocusOutlineStyle does not fit requirements
84
- *
85
- * @param style - styling applied on focus, defaults to @see getDefaultFocusOutlineStyes
86
- * @param options - Configure the style of the focus outline
87
- */
88
-
89
- const createCustomFocusIndicatorStyle = (style, options = defaultOptions) => ({
90
- ':focus-visible': {
91
- outlineStyle: 'none'
92
- },
93
- [`${symbols_1.KEYBOARD_NAV_SELECTOR} :${options.selector || defaultOptions.selector}`]: style
63
+ const createFocusOutlineStyle = ({
64
+ selector = constants_1.defaultOptions.selector,
65
+ style = constants_1.defaultOptions.style
66
+ } = constants_1.defaultOptions) => createCustomFocusIndicatorStyle_1.createCustomFocusIndicatorStyle(getFocusOutlineStyles({
67
+ outlineColor: react_theme_1.tokens.colorStrokeFocus2,
68
+ outlineRadius: react_theme_1.tokens.borderRadiusMedium,
69
+ // FIXME: tokens.strokeWidthThick causes some weird bugs
70
+ outlineWidth: '2px',
71
+ ...style
72
+ }), {
73
+ selector
94
74
  });
95
75
 
96
- exports.createCustomFocusIndicatorStyle = createCustomFocusIndicatorStyle;
97
- //# sourceMappingURL=useFocusIndicatorStyle.js.map
76
+ exports.createFocusOutlineStyle = createFocusOutlineStyle;
77
+ //# sourceMappingURL=createFocusOutlineStyle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["focus/createFocusOutlineStyle.ts"],"names":[],"mappings":";;;;;;;AAAA,MAAA,aAAA,gBAAA,OAAA,CAAA,uBAAA,CAAA;;AACA,MAAA,OAAA,gBAAA,OAAA,CAAA,gBAAA,CAAA;;AAEA,MAAA,iCAAA,gBAAA,OAAA,CAAA,mCAAA,CAAA;;AAIA,MAAA,WAAA,gBAAA,OAAA,CAAA,aAAA,CAAA;AAiBA;;;;;;AAMG;;;AACH,MAAM,qBAAqB,GAAI,OAAD,IAAoD;;;AAChF,QAAM;AAAE,IAAA,aAAF;AAAiB,IAAA,YAAjB;AAA+B,IAAA,aAA/B;AAA8C,IAAA;AAA9C,MAA+D,OAArE;AAEA,QAAM,gBAAgB,GAAG,CAAA,CAAA,EAAA,GAAC,aAAD,MAAqC,IAArC,IAAqC,EAAA,KAAA,KAAA,CAArC,GAAqC,KAAA,CAArC,GAAqC,EAAA,CAAE,GAAvC,KAA8C,aAAvE;AACA,QAAM,mBAAmB,GAAG,CAAA,CAAA,EAAA,GAAC,aAAD,MAAqC,IAArC,IAAqC,EAAA,KAAA,KAAA,CAArC,GAAqC,KAAA,CAArC,GAAqC,EAAA,CAAE,MAAvC,KAAiD,aAA7E;AACA,QAAM,iBAAiB,GAAG,CAAA,CAAA,EAAA,GAAC,aAAD,MAAqC,IAArC,IAAqC,EAAA,KAAA,KAAA,CAArC,GAAqC,KAAA,CAArC,GAAqC,EAAA,CAAE,IAAvC,KAA+C,aAAzE;AACA,QAAM,kBAAkB,GAAG,CAAA,CAAA,EAAA,GAAC,aAAD,MAAqC,IAArC,IAAqC,EAAA,KAAA,KAAA,CAArC,GAAqC,KAAA,CAArC,GAAqC,EAAA,CAAE,KAAvC,KAAgD,aAA3E;AAEA,SAAO,EACL,GAAG,OAAA,CAAA,UAAA,CAAW,WAAX,CAAuB,aAAvB,CADE;AAEL,cAAU;AACR,MAAA,OAAO,EAAE,IADD;AAER,MAAA,QAAQ,EAAE,UAFF;AAGR,MAAA,aAAa,EAAE,MAHP;AAIR,MAAA,MAAM,EAAE,CAJA;AAMR,SAAG,OAAA,CAAA,UAAA,CAAW,WAAX,CAAuB,OAAvB,CANK;AAOR,SAAG,OAAA,CAAA,UAAA,CAAW,WAAX,CAAuB,YAAvB,CAPK;AAQR,SAAG,OAAA,CAAA,UAAA,CAAW,YAAX,CAAwB,aAAxB,CARK;AASR,SAAG,OAAA,CAAA,UAAA,CAAW,WAAX,CAAuB,YAAvB,CATK;AAWR,MAAA,GAAG,EAAE,CAAC,aAAD,GAAiB,IAAI,YAAY,EAAjC,GAAsC,cAAc,YAAY,MAAM,gBAAgB,GAXnF;AAYR,MAAA,MAAM,EAAE,CAAC,aAAD,GAAiB,IAAI,YAAY,EAAjC,GAAsC,cAAc,YAAY,MAAM,mBAAmB,GAZzF;AAaR,MAAA,IAAI,EAAE,CAAC,aAAD,GAAiB,IAAI,YAAY,EAAjC,GAAsC,cAAc,YAAY,MAAM,iBAAiB,GAbrF;AAcR,MAAA,KAAK,EAAE,CAAC,aAAD,GAAiB,IAAI,YAAY,EAAjC,GAAsC,cAAc,YAAY,MAAM,kBAAkB;AAdvF;AAFL,GAAP;AAmBD,CA3BD;AA6BA;;;;;;AAMG;;;AACI,MAAM,uBAAuB,GAAG,CAAC;AACtC,EAAA,QAAQ,GAAG,WAAA,CAAA,cAAA,CAAe,QADY;AAEtC,EAAA,KAAK,GAAG,WAAA,CAAA,cAAA,CAAe;AAFe,IAGJ,WAAA,CAAA,cAHG,KAIrC,iCAAA,CAAA,+BAAA,CACE,qBAAqB,CAAC;AACpB,EAAA,YAAY,EAAE,aAAA,CAAA,MAAA,CAAO,iBADD;AAEpB,EAAA,aAAa,EAAE,aAAA,CAAA,MAAA,CAAO,kBAFF;AAGpB;AACA,EAAA,YAAY,EAAE,KAJM;AAKpB,KAAG;AALiB,CAAD,CADvB,EAQE;AAAE,EAAA;AAAF,CARF,CAJK;;AAAM,OAAA,CAAA,uBAAA,GAAuB,uBAAvB","sourcesContent":["import { tokens } from '@fluentui/react-theme';\nimport { shorthands } from '@griffel/react';\nimport type { GriffelStyle } from '@griffel/react';\nimport {\n createCustomFocusIndicatorStyle,\n CreateCustomFocusIndicatorStyleOptions,\n} from './createCustomFocusIndicatorStyle';\nimport { defaultOptions } from './constants';\n\nexport type FocusOutlineOffset = Record<'top' | 'bottom' | 'left' | 'right', string>;\nexport type FocusOutlineStyleOptions = {\n /**\n * Only property not supported by the native CSS `outline`, if this is no longer needed\n * we can just go native instead\n */\n outlineRadius: string;\n outlineColor: string;\n outlineWidth: string;\n outlineOffset?: string | FocusOutlineOffset;\n};\nexport interface CreateFocusOutlineStyleOptions extends CreateCustomFocusIndicatorStyleOptions {\n style?: Partial<FocusOutlineStyleOptions>;\n}\n\n/**\n * NOTE: the element with the focus outline needs to have `position: relative` so that the\n * pseudo element can be properly positioned.\n *\n * @param options - Configures the style of the focus outline\n * @returns focus outline styles object\n */\nconst getFocusOutlineStyles = (options: FocusOutlineStyleOptions): GriffelStyle => {\n const { outlineRadius, outlineColor, outlineOffset, outlineWidth } = options;\n\n const outlineOffsetTop = (outlineOffset as FocusOutlineOffset)?.top || outlineOffset;\n const outlineOffsetBottom = (outlineOffset as FocusOutlineOffset)?.bottom || outlineOffset;\n const outlineOffsetLeft = (outlineOffset as FocusOutlineOffset)?.left || outlineOffset;\n const outlineOffsetRight = (outlineOffset as FocusOutlineOffset)?.right || outlineOffset;\n\n return {\n ...shorthands.borderColor('transparent'),\n ':after': {\n content: '\"\"',\n position: 'absolute',\n pointerEvents: 'none',\n zIndex: 1,\n\n ...shorthands.borderStyle('solid'),\n ...shorthands.borderWidth(outlineWidth),\n ...shorthands.borderRadius(outlineRadius),\n ...shorthands.borderColor(outlineColor),\n\n top: !outlineOffset ? `-${outlineWidth}` : `calc(0px - ${outlineWidth} - ${outlineOffsetTop})`,\n bottom: !outlineOffset ? `-${outlineWidth}` : `calc(0px - ${outlineWidth} - ${outlineOffsetBottom})`,\n left: !outlineOffset ? `-${outlineWidth}` : `calc(0px - ${outlineWidth} - ${outlineOffsetLeft})`,\n right: !outlineOffset ? `-${outlineWidth}` : `calc(0px - ${outlineWidth} - ${outlineOffsetRight})`,\n },\n };\n};\n\n/**\n * NOTE: The element with the focus outline needs to have `position: relative` so that the\n * pseudo element can be properly positioned.\n *\n * @param options - Configure the style of the focus outline\n * @returns focus outline styles object for @see makeStyles\n */\nexport const createFocusOutlineStyle = ({\n selector = defaultOptions.selector,\n style = defaultOptions.style,\n}: CreateFocusOutlineStyleOptions = defaultOptions): GriffelStyle =>\n createCustomFocusIndicatorStyle(\n getFocusOutlineStyles({\n outlineColor: tokens.colorStrokeFocus2,\n outlineRadius: tokens.borderRadiusMedium,\n // FIXME: tokens.strokeWidthThick causes some weird bugs\n outlineWidth: '2px',\n ...style,\n }),\n { selector },\n );\n"],"sourceRoot":"../src/"}
@@ -0,0 +1,2 @@
1
+ export * from './createCustomFocusIndicatorStyle';
2
+ export * from './createFocusOutlineStyle';
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+
7
+ const tslib_1 = /*#__PURE__*/require("tslib");
8
+
9
+ tslib_1.__exportStar(require("./createCustomFocusIndicatorStyle"), exports);
10
+
11
+ tslib_1.__exportStar(require("./createFocusOutlineStyle"), exports);
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["focus/index.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,mCAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,2BAAA,CAAA,EAAA,OAAA","sourcesContent":["export * from './createCustomFocusIndicatorStyle';\nexport * from './createFocusOutlineStyle';\n"],"sourceRoot":"../src/"}
@@ -1,7 +1,6 @@
1
1
  export * from './useArrowNavigationGroup';
2
2
  export * from './useFocusableGroup';
3
3
  export * from './useFocusFinders';
4
- export * from './useFocusIndicatorStyle';
5
4
  export * from './useKeyboardNavAttribute';
6
5
  export * from './useModalAttributes';
7
6
  export * from './useTabsterAttributes';
@@ -12,8 +12,6 @@ tslib_1.__exportStar(require("./useFocusableGroup"), exports);
12
12
 
13
13
  tslib_1.__exportStar(require("./useFocusFinders"), exports);
14
14
 
15
- tslib_1.__exportStar(require("./useFocusIndicatorStyle"), exports);
16
-
17
15
  tslib_1.__exportStar(require("./useKeyboardNavAttribute"), exports);
18
16
 
19
17
  tslib_1.__exportStar(require("./useModalAttributes"), exports);
@@ -1 +1 @@
1
- {"version":3,"sources":["hooks/index.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,2BAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,qBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,mBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,0BAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,2BAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,sBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,wBAAA,CAAA,EAAA,OAAA","sourcesContent":["export * from './useArrowNavigationGroup';\nexport * from './useFocusableGroup';\nexport * from './useFocusFinders';\nexport * from './useFocusIndicatorStyle';\nexport * from './useKeyboardNavAttribute';\nexport * from './useModalAttributes';\nexport * from './useTabsterAttributes';\n"],"sourceRoot":"../src/"}
1
+ {"version":3,"sources":["hooks/index.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,2BAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,qBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,mBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,2BAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,sBAAA,CAAA,EAAA,OAAA;;AACA,OAAA,CAAA,YAAA,CAAA,OAAA,CAAA,wBAAA,CAAA,EAAA,OAAA","sourcesContent":["export * from './useArrowNavigationGroup';\nexport * from './useFocusableGroup';\nexport * from './useFocusFinders';\nexport * from './useKeyboardNavAttribute';\nexport * from './useModalAttributes';\nexport * from './useTabsterAttributes';\n"],"sourceRoot":"../src/"}
@@ -9,7 +9,7 @@ const keyborg_1 = /*#__PURE__*/require("keyborg");
9
9
 
10
10
  const react_1 = /*#__PURE__*/require("react");
11
11
 
12
- const symbols_1 = /*#__PURE__*/require("../symbols");
12
+ const constants_1 = /*#__PURE__*/require("../focus/constants");
13
13
 
14
14
  const react_shared_contexts_1 = /*#__PURE__*/require("@fluentui/react-shared-contexts");
15
15
  /**
@@ -25,10 +25,10 @@ function useKeyboardNavAttribute() {
25
25
  const ref = react_1.useRef(null);
26
26
  react_1.useEffect(() => {
27
27
  if (keyborg) {
28
- setBooleanAttribute(ref, symbols_1.KEYBOARD_NAV_ATTRIBUTE, keyborg.isNavigatingWithKeyboard());
28
+ setBooleanAttribute(ref, constants_1.KEYBOARD_NAV_ATTRIBUTE, keyborg.isNavigatingWithKeyboard());
29
29
 
30
30
  const cb = next => {
31
- setBooleanAttribute(ref, symbols_1.KEYBOARD_NAV_ATTRIBUTE, next);
31
+ setBooleanAttribute(ref, constants_1.KEYBOARD_NAV_ATTRIBUTE, next);
32
32
  };
33
33
 
34
34
  keyborg.subscribe(cb);
@@ -1 +1 @@
1
- {"version":3,"sources":["hooks/useKeyboardNavAttribute.ts"],"names":[],"mappings":";;;;;;;AAAA,MAAA,SAAA,gBAAA,OAAA,CAAA,SAAA,CAAA;;AACA,MAAA,OAAA,gBAAA,OAAA,CAAA,OAAA,CAAA;;AACA,MAAA,SAAA,gBAAA,OAAA,CAAA,YAAA,CAAA;;AACA,MAAA,uBAAA,gBAAA,OAAA,CAAA,iCAAA,CAAA;AAIA;;AAEG;;;AACH,SAAgB,uBAAhB,GAAuC;AACrC,QAAM;AAAE,IAAA;AAAF,MAAqB,uBAAA,CAAA,SAAA,EAA3B;AACA,QAAM,OAAO,GAAG,OAAA,CAAA,OAAA,CAAQ,MAAM,cAAc,IAAI,SAAA,CAAA,aAAA,CAAc,cAAc,CAAC,WAA7B,CAAhC,EAA4E,CAAC,cAAD,CAA5E,CAAhB;AACA,QAAM,GAAG,GAAG,OAAA,CAAA,MAAA,CAAU,IAAV,CAAZ;AACA,EAAA,OAAA,CAAA,SAAA,CAAU,MAAK;AACb,QAAI,OAAJ,EAAa;AACX,MAAA,mBAAmB,CAAC,GAAD,EAAM,SAAA,CAAA,sBAAN,EAA8B,OAAO,CAAC,wBAAR,EAA9B,CAAnB;;AACA,YAAM,EAAE,GAAoB,IAAI,IAAG;AACjC,QAAA,mBAAmB,CAAC,GAAD,EAAM,SAAA,CAAA,sBAAN,EAA8B,IAA9B,CAAnB;AACD,OAFD;;AAGA,MAAA,OAAO,CAAC,SAAR,CAAkB,EAAlB;AACA,aAAO,MAAM,OAAO,CAAC,WAAR,CAAoB,EAApB,CAAb;AACD;AACF,GATD,EASG,CAAC,OAAD,CATH;AAUA,SAAO,GAAP;AACD;;AAfD,OAAA,CAAA,uBAAA,GAAA,uBAAA;;AAiBA,SAAS,mBAAT,CAA6B,UAA7B,EAAiE,SAAjE,EAAoF,KAApF,EAAkG;AAChG,MAAI,CAAC,UAAU,CAAC,OAAhB,EAAyB;AACvB;AACD;;AACD,MAAI,KAAJ,EAAW;AACT,IAAA,UAAU,CAAC,OAAX,CAAmB,YAAnB,CAAgC,SAAhC,EAA2C,EAA3C;AACD,GAFD,MAEO;AACL,IAAA,UAAU,CAAC,OAAX,CAAmB,eAAnB,CAAmC,SAAnC;AACD;AACF","sourcesContent":["import { createKeyborg } from 'keyborg';\nimport { useEffect, useMemo, useRef } from 'react';\nimport { KEYBOARD_NAV_ATTRIBUTE } from '../symbols';\nimport { useFluent } from '@fluentui/react-shared-contexts';\nimport type { KeyborgCallback } from 'keyborg/dist/Keyborg';\nimport type { RefObject } from 'react';\n\n/**\n * instantiates keyborg and add attribute to ensure focus indicator synced to keyborg logic\n */\nexport function useKeyboardNavAttribute<E extends HTMLElement>() {\n const { targetDocument } = useFluent();\n const keyborg = useMemo(() => targetDocument && createKeyborg(targetDocument.defaultView!), [targetDocument]);\n const ref = useRef<E>(null);\n useEffect(() => {\n if (keyborg) {\n setBooleanAttribute(ref, KEYBOARD_NAV_ATTRIBUTE, keyborg.isNavigatingWithKeyboard());\n const cb: KeyborgCallback = next => {\n setBooleanAttribute(ref, KEYBOARD_NAV_ATTRIBUTE, next);\n };\n keyborg.subscribe(cb);\n return () => keyborg.unsubscribe(cb);\n }\n }, [keyborg]);\n return ref;\n}\n\nfunction setBooleanAttribute(elementRef: RefObject<HTMLElement>, attribute: string, value: boolean) {\n if (!elementRef.current) {\n return;\n }\n if (value) {\n elementRef.current.setAttribute(attribute, '');\n } else {\n elementRef.current.removeAttribute(attribute);\n }\n}\n"],"sourceRoot":"../src/"}
1
+ {"version":3,"sources":["hooks/useKeyboardNavAttribute.ts"],"names":[],"mappings":";;;;;;;AAAA,MAAA,SAAA,gBAAA,OAAA,CAAA,SAAA,CAAA;;AACA,MAAA,OAAA,gBAAA,OAAA,CAAA,OAAA,CAAA;;AACA,MAAA,WAAA,gBAAA,OAAA,CAAA,oBAAA,CAAA;;AACA,MAAA,uBAAA,gBAAA,OAAA,CAAA,iCAAA,CAAA;AAIA;;AAEG;;;AACH,SAAgB,uBAAhB,GAAuC;AACrC,QAAM;AAAE,IAAA;AAAF,MAAqB,uBAAA,CAAA,SAAA,EAA3B;AACA,QAAM,OAAO,GAAG,OAAA,CAAA,OAAA,CAAQ,MAAM,cAAc,IAAI,SAAA,CAAA,aAAA,CAAc,cAAc,CAAC,WAA7B,CAAhC,EAA4E,CAAC,cAAD,CAA5E,CAAhB;AACA,QAAM,GAAG,GAAG,OAAA,CAAA,MAAA,CAAU,IAAV,CAAZ;AACA,EAAA,OAAA,CAAA,SAAA,CAAU,MAAK;AACb,QAAI,OAAJ,EAAa;AACX,MAAA,mBAAmB,CAAC,GAAD,EAAM,WAAA,CAAA,sBAAN,EAA8B,OAAO,CAAC,wBAAR,EAA9B,CAAnB;;AACA,YAAM,EAAE,GAAoB,IAAI,IAAG;AACjC,QAAA,mBAAmB,CAAC,GAAD,EAAM,WAAA,CAAA,sBAAN,EAA8B,IAA9B,CAAnB;AACD,OAFD;;AAGA,MAAA,OAAO,CAAC,SAAR,CAAkB,EAAlB;AACA,aAAO,MAAM,OAAO,CAAC,WAAR,CAAoB,EAApB,CAAb;AACD;AACF,GATD,EASG,CAAC,OAAD,CATH;AAUA,SAAO,GAAP;AACD;;AAfD,OAAA,CAAA,uBAAA,GAAA,uBAAA;;AAiBA,SAAS,mBAAT,CAA6B,UAA7B,EAAiE,SAAjE,EAAoF,KAApF,EAAkG;AAChG,MAAI,CAAC,UAAU,CAAC,OAAhB,EAAyB;AACvB;AACD;;AACD,MAAI,KAAJ,EAAW;AACT,IAAA,UAAU,CAAC,OAAX,CAAmB,YAAnB,CAAgC,SAAhC,EAA2C,EAA3C;AACD,GAFD,MAEO;AACL,IAAA,UAAU,CAAC,OAAX,CAAmB,eAAnB,CAAmC,SAAnC;AACD;AACF","sourcesContent":["import { createKeyborg } from 'keyborg';\nimport { useEffect, useMemo, useRef } from 'react';\nimport { KEYBOARD_NAV_ATTRIBUTE } from '../focus/constants';\nimport { useFluent } from '@fluentui/react-shared-contexts';\nimport type { KeyborgCallback } from 'keyborg/dist/Keyborg';\nimport type { RefObject } from 'react';\n\n/**\n * instantiates keyborg and add attribute to ensure focus indicator synced to keyborg logic\n */\nexport function useKeyboardNavAttribute<E extends HTMLElement>() {\n const { targetDocument } = useFluent();\n const keyborg = useMemo(() => targetDocument && createKeyborg(targetDocument.defaultView!), [targetDocument]);\n const ref = useRef<E>(null);\n useEffect(() => {\n if (keyborg) {\n setBooleanAttribute(ref, KEYBOARD_NAV_ATTRIBUTE, keyborg.isNavigatingWithKeyboard());\n const cb: KeyborgCallback = next => {\n setBooleanAttribute(ref, KEYBOARD_NAV_ATTRIBUTE, next);\n };\n keyborg.subscribe(cb);\n return () => keyborg.unsubscribe(cb);\n }\n }, [keyborg]);\n return ref;\n}\n\nfunction setBooleanAttribute(elementRef: RefObject<HTMLElement>, attribute: string, value: boolean) {\n if (!elementRef.current) {\n return;\n }\n if (value) {\n elementRef.current.setAttribute(attribute, '');\n } else {\n elementRef.current.removeAttribute(attribute);\n }\n}\n"],"sourceRoot":"../src/"}
@@ -1,2 +1,4 @@
1
- export { createCustomFocusIndicatorStyle, createFocusOutlineStyle, useArrowNavigationGroup, useFocusableGroup, useFocusFinders, useKeyboardNavAttribute, useModalAttributes, useTabsterAttributes, } from './hooks/index';
2
- export type { CreateFocusIndicatorStyleRuleOptions, FocusOutlineOffset, FocusOutlineStyleOptions, UseArrowNavigationGroupOptions, UseFocusableGroupOptions, UseModalAttributesOptions, } from './hooks/index';
1
+ export { useArrowNavigationGroup, useFocusableGroup, useFocusFinders, useKeyboardNavAttribute, useModalAttributes, useTabsterAttributes, } from './hooks/index';
2
+ export type { UseArrowNavigationGroupOptions, UseFocusableGroupOptions, UseModalAttributesOptions, } from './hooks/index';
3
+ export { createCustomFocusIndicatorStyle, createFocusOutlineStyle } from './focus/index';
4
+ export type { CreateCustomFocusIndicatorStyleOptions, CreateFocusOutlineStyleOptions, FocusOutlineOffset, FocusOutlineStyleOptions, } from './focus/index';