@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.
- package/CHANGELOG.json +23 -9
- package/CHANGELOG.md +90 -90
- package/dist/{react-tabster.d.ts → index.d.ts} +7 -5
- package/lib/{symbols.d.ts → focus/constants.d.ts} +4 -0
- package/lib/{symbols.js → focus/constants.js} +5 -1
- package/lib/focus/constants.js.map +1 -0
- package/lib/focus/createCustomFocusIndicatorStyle.d.ts +12 -0
- package/lib/focus/createCustomFocusIndicatorStyle.js +18 -0
- package/lib/focus/createCustomFocusIndicatorStyle.js.map +1 -0
- package/{lib-commonjs/hooks/useFocusIndicatorStyle.d.ts → lib/focus/createFocusOutlineStyle.d.ts} +4 -13
- package/lib/{hooks/useFocusIndicatorStyle.js → focus/createFocusOutlineStyle.js} +14 -33
- package/lib/focus/createFocusOutlineStyle.js.map +1 -0
- package/lib/focus/index.d.ts +2 -0
- package/lib/focus/index.js +3 -0
- package/lib/focus/index.js.map +1 -0
- package/lib/hooks/index.d.ts +0 -1
- package/lib/hooks/index.js +0 -1
- package/lib/hooks/index.js.map +1 -1
- package/lib/hooks/useKeyboardNavAttribute.js +1 -1
- package/lib/hooks/useKeyboardNavAttribute.js.map +1 -1
- package/lib/index.d.ts +4 -2
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib-commonjs/{symbols.d.ts → focus/constants.d.ts} +4 -0
- package/lib-commonjs/{symbols.js → focus/constants.js} +6 -2
- package/lib-commonjs/focus/constants.js.map +1 -0
- package/lib-commonjs/focus/createCustomFocusIndicatorStyle.d.ts +12 -0
- package/lib-commonjs/focus/createCustomFocusIndicatorStyle.js +28 -0
- package/lib-commonjs/focus/createCustomFocusIndicatorStyle.js.map +1 -0
- package/{lib/hooks/useFocusIndicatorStyle.d.ts → lib-commonjs/focus/createFocusOutlineStyle.d.ts} +4 -13
- package/lib-commonjs/{hooks/useFocusIndicatorStyle.js → focus/createFocusOutlineStyle.js} +18 -38
- package/lib-commonjs/focus/createFocusOutlineStyle.js.map +1 -0
- package/lib-commonjs/focus/index.d.ts +2 -0
- package/lib-commonjs/focus/index.js +12 -0
- package/lib-commonjs/focus/index.js.map +1 -0
- package/lib-commonjs/hooks/index.d.ts +0 -1
- package/lib-commonjs/hooks/index.js +0 -2
- package/lib-commonjs/hooks/index.js.map +1 -1
- package/lib-commonjs/hooks/useKeyboardNavAttribute.js +3 -3
- package/lib-commonjs/hooks/useKeyboardNavAttribute.js.map +1 -1
- package/lib-commonjs/index.d.ts +4 -2
- package/lib-commonjs/index.js +16 -13
- package/lib-commonjs/index.js.map +1 -1
- package/package.json +6 -6
- package/lib/hooks/useFocusIndicatorStyle.js.map +0 -1
- package/lib/symbols.js.map +0 -1
- package/lib-commonjs/hooks/useFocusIndicatorStyle.js.map +0 -1
- 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,
|
12
|
+
export declare const createCustomFocusIndicatorStyle: (style: GriffelStyle, { selector }?: CreateCustomFocusIndicatorStyleOptions) => GriffelStyle;
|
13
13
|
|
14
|
-
export declare interface
|
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: (
|
26
|
-
|
27
|
-
|
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,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
|
-
|
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/"}
|
package/{lib-commonjs/hooks/useFocusIndicatorStyle.d.ts → lib/focus/createFocusOutlineStyle.d.ts}
RENAMED
@@ -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
|
14
|
-
|
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: (
|
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
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
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=
|
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 @@
|
|
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"]}
|
package/lib/hooks/index.d.ts
CHANGED
@@ -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';
|
package/lib/hooks/index.js
CHANGED
@@ -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';
|
package/lib/hooks/index.js.map
CHANGED
@@ -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,
|
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 '../
|
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,
|
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 {
|
2
|
-
export type {
|
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 {
|
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
|
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/"}
|
@@ -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
|
-
|
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/"}
|
package/{lib/hooks/useFocusIndicatorStyle.d.ts → lib-commonjs/focus/createFocusOutlineStyle.d.ts}
RENAMED
@@ -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
|
14
|
-
|
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: (
|
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.
|
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
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
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.
|
97
|
-
//# sourceMappingURL=
|
76
|
+
exports.createFocusOutlineStyle = createFocusOutlineStyle;
|
77
|
+
//# sourceMappingURL=createFocusOutlineStyle.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["focus/createFocusOutlineStyle.ts"],"names":[],"mappings":"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","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,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,
|
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
|
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,
|
28
|
+
setBooleanAttribute(ref, constants_1.KEYBOARD_NAV_ATTRIBUTE, keyborg.isNavigatingWithKeyboard());
|
29
29
|
|
30
30
|
const cb = next => {
|
31
|
-
setBooleanAttribute(ref,
|
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,
|
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/"}
|
package/lib-commonjs/index.d.ts
CHANGED
@@ -1,2 +1,4 @@
|
|
1
|
-
export {
|
2
|
-
export type {
|
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';
|