@fluentui/react-positioning 0.0.0-nightly58c310891320211216.1 → 0.0.0-nightly5ab766c40f20220114.1

Sign up to get free protection for your applications and to get access to all the features.
package/CHANGELOG.json CHANGED
@@ -2,15 +2,15 @@
2
2
  "name": "@fluentui/react-positioning",
3
3
  "entries": [
4
4
  {
5
- "date": "Thu, 16 Dec 2021 04:14:56 GMT",
6
- "tag": "@fluentui/react-positioning_v0.0.0-nightly58c310891320211216.1",
7
- "version": "0.0.0-nightly58c310891320211216.1",
5
+ "date": "Fri, 14 Jan 2022 04:15:09 GMT",
6
+ "tag": "@fluentui/react-positioning_v0.0.0-nightly5ab766c40f20220114.1",
7
+ "version": "0.0.0-nightly5ab766c40f20220114.1",
8
8
  "comments": {
9
9
  "prerelease": [
10
10
  {
11
11
  "author": "email not defined",
12
12
  "package": "@fluentui/react-positioning",
13
- "commit": "919f08a1b25cd5045dc729d44a65f64f7838f4dc",
13
+ "commit": "afbf0defba27d6180bd53e24443fff8da633f9dd",
14
14
  "comment": "Release nightly v9"
15
15
  },
16
16
  {
@@ -19,6 +19,12 @@
19
19
  "commit": "a76afe26daad901ff5458ffdda7e66e600d5bcac",
20
20
  "comment": "use new types from makeStyles core"
21
21
  },
22
+ {
23
+ "author": "Humberto.Morimoto@microsoft.com",
24
+ "package": "@fluentui/react-positioning",
25
+ "commit": "db6526ee2d04991e4473174969e3795299b52f9e",
26
+ "comment": "Replacing use of functions in makeStyles with direct use of tokens."
27
+ },
22
28
  {
23
29
  "author": "bsunderhus@microsoft.com",
24
30
  "package": "@fluentui/react-positioning",
@@ -31,29 +37,35 @@
31
37
  "commit": "967d6b74cf0507685a24e0cfaa8c7b9d52a351e1",
32
38
  "comment": "update styles to not use CSS shorthands"
33
39
  },
40
+ {
41
+ "author": "behowell@microsoft.com",
42
+ "package": "@fluentui/react-positioning",
43
+ "commit": "09804275c7f346db54c33d4ff347bffc33676014",
44
+ "comment": "Fix popover arrow styling"
45
+ },
34
46
  {
35
47
  "author": "beachball",
36
48
  "package": "@fluentui/react-positioning",
37
- "comment": "Bump @fluentui/react-make-styles to v0.0.0-nightly58c310891320211216.1",
38
- "commit": "919f08a1b25cd5045dc729d44a65f64f7838f4dc"
49
+ "comment": "Bump @fluentui/react-make-styles to v0.0.0-nightly5ab766c40f20220114.1",
50
+ "commit": "afbf0defba27d6180bd53e24443fff8da633f9dd"
39
51
  },
40
52
  {
41
53
  "author": "beachball",
42
54
  "package": "@fluentui/react-positioning",
43
- "comment": "Bump @fluentui/react-shared-contexts to v0.0.0-nightly58c310891320211216.1",
44
- "commit": "919f08a1b25cd5045dc729d44a65f64f7838f4dc"
55
+ "comment": "Bump @fluentui/react-shared-contexts to v0.0.0-nightly5ab766c40f20220114.1",
56
+ "commit": "afbf0defba27d6180bd53e24443fff8da633f9dd"
45
57
  },
46
58
  {
47
59
  "author": "beachball",
48
60
  "package": "@fluentui/react-positioning",
49
- "comment": "Bump @fluentui/react-utilities to v0.0.0-nightly58c310891320211216.1",
50
- "commit": "919f08a1b25cd5045dc729d44a65f64f7838f4dc"
61
+ "comment": "Bump @fluentui/react-utilities to v0.0.0-nightly5ab766c40f20220114.1",
62
+ "commit": "afbf0defba27d6180bd53e24443fff8da633f9dd"
51
63
  },
52
64
  {
53
65
  "author": "beachball",
54
66
  "package": "@fluentui/react-positioning",
55
- "comment": "Bump @fluentui/babel-make-styles to v0.0.0-nightly58c310891320211216.1",
56
- "commit": "919f08a1b25cd5045dc729d44a65f64f7838f4dc"
67
+ "comment": "Bump @fluentui/babel-make-styles to v0.0.0-nightly5ab766c40f20220114.1",
68
+ "commit": "afbf0defba27d6180bd53e24443fff8da633f9dd"
57
69
  }
58
70
  ]
59
71
  }
package/CHANGELOG.md CHANGED
@@ -1,24 +1,26 @@
1
1
  # Change Log - @fluentui/react-positioning
2
2
 
3
- This log was last generated on Thu, 16 Dec 2021 04:14:56 GMT and should not be manually modified.
3
+ This log was last generated on Fri, 14 Jan 2022 04:15:09 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
- ## [0.0.0-nightly58c310891320211216.1](https://github.com/microsoft/fluentui/tree/@fluentui/react-positioning_v0.0.0-nightly58c310891320211216.1)
7
+ ## [0.0.0-nightly5ab766c40f20220114.1](https://github.com/microsoft/fluentui/tree/@fluentui/react-positioning_v0.0.0-nightly5ab766c40f20220114.1)
8
8
 
9
- Thu, 16 Dec 2021 04:14:56 GMT
10
- [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-positioning_v9.0.0-beta.4..@fluentui/react-positioning_v0.0.0-nightly58c310891320211216.1)
9
+ Fri, 14 Jan 2022 04:15:09 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-positioning_v9.0.0-beta.4..@fluentui/react-positioning_v0.0.0-nightly5ab766c40f20220114.1)
11
11
 
12
12
  ### Changes
13
13
 
14
- - Release nightly v9 ([commit](https://github.com/microsoft/fluentui/commit/919f08a1b25cd5045dc729d44a65f64f7838f4dc) by email not defined)
14
+ - Release nightly v9 ([commit](https://github.com/microsoft/fluentui/commit/afbf0defba27d6180bd53e24443fff8da633f9dd) by email not defined)
15
15
  - use new types from makeStyles core ([PR #20786](https://github.com/microsoft/fluentui/pull/20786) by olfedias@microsoft.com)
16
+ - Replacing use of functions in makeStyles with direct use of tokens. ([PR #21051](https://github.com/microsoft/fluentui/pull/21051) by Humberto.Morimoto@microsoft.com)
16
17
  - Adds @noflip annotation to data-popper-placement styles ([PR #20845](https://github.com/microsoft/fluentui/pull/20845) by bsunderhus@microsoft.com)
17
18
  - update styles to not use CSS shorthands ([PR #20842](https://github.com/microsoft/fluentui/pull/20842) by olfedias@microsoft.com)
18
- - Bump @fluentui/react-make-styles to v0.0.0-nightly58c310891320211216.1 ([commit](https://github.com/microsoft/fluentui/commit/919f08a1b25cd5045dc729d44a65f64f7838f4dc) by beachball)
19
- - Bump @fluentui/react-shared-contexts to v0.0.0-nightly58c310891320211216.1 ([commit](https://github.com/microsoft/fluentui/commit/919f08a1b25cd5045dc729d44a65f64f7838f4dc) by beachball)
20
- - Bump @fluentui/react-utilities to v0.0.0-nightly58c310891320211216.1 ([commit](https://github.com/microsoft/fluentui/commit/919f08a1b25cd5045dc729d44a65f64f7838f4dc) by beachball)
21
- - Bump @fluentui/babel-make-styles to v0.0.0-nightly58c310891320211216.1 ([commit](https://github.com/microsoft/fluentui/commit/919f08a1b25cd5045dc729d44a65f64f7838f4dc) by beachball)
19
+ - Fix popover arrow styling ([PR #21086](https://github.com/microsoft/fluentui/pull/21086) by behowell@microsoft.com)
20
+ - Bump @fluentui/react-make-styles to v0.0.0-nightly5ab766c40f20220114.1 ([commit](https://github.com/microsoft/fluentui/commit/afbf0defba27d6180bd53e24443fff8da633f9dd) by beachball)
21
+ - Bump @fluentui/react-shared-contexts to v0.0.0-nightly5ab766c40f20220114.1 ([commit](https://github.com/microsoft/fluentui/commit/afbf0defba27d6180bd53e24443fff8da633f9dd) by beachball)
22
+ - Bump @fluentui/react-utilities to v0.0.0-nightly5ab766c40f20220114.1 ([commit](https://github.com/microsoft/fluentui/commit/afbf0defba27d6180bd53e24443fff8da633f9dd) by beachball)
23
+ - Bump @fluentui/babel-make-styles to v0.0.0-nightly5ab766c40f20220114.1 ([commit](https://github.com/microsoft/fluentui/commit/afbf0defba27d6180bd53e24443fff8da633f9dd) by beachball)
22
24
 
23
25
  ## [9.0.0-beta.4](https://github.com/microsoft/fluentui/tree/@fluentui/react-positioning_v9.0.0-beta.4)
24
26
 
@@ -1,7 +1,6 @@
1
- import type { MakeStylesStyleRule } from '@fluentui/react-make-styles';
1
+ import type { MakeStylesStyle } from '@fluentui/react-make-styles';
2
2
  import * as PopperJs from '@popperjs/core';
3
3
  import * as React_2 from 'react';
4
- import type { Theme } from '@fluentui/react-theme';
5
4
 
6
5
  export declare type Alignment = 'top' | 'bottom' | 'start' | 'end' | 'center';
7
6
 
@@ -9,31 +8,71 @@ export declare type AutoSize = 'height' | 'height-always' | 'width' | 'width-alw
9
8
 
10
9
  export declare type Boundary = PopperJs.Boundary | 'scrollParent' | 'window';
11
10
 
11
+ /**
12
+ * Creates CSS styles to size the arrow created by createArrowStyles to the given height.
13
+ *
14
+ * Use this when you need to create classes for several different arrow sizes. If you only need a
15
+ * constant arrow size, you can pass the `arrowHeight` param to createArrowStyles instead.
16
+ */
17
+ export declare function createArrowHeightStyles(arrowHeight: number): {
18
+ width: string;
19
+ height: string;
20
+ };
21
+
12
22
  /**
13
23
  * Helper that creates a makeStyles rule for an arrow element.
14
24
  * For runtime arrow size toggling simply create extra classnames to apply to the arrow element
15
25
  *
16
26
  * ```ts
17
27
  * makeStyles({
18
- * arrowWithSize: createArrowStyles(5),
28
+ * arrowWithSize: createArrowStyles({ arrowHeight: 6 }),
19
29
  *
20
- * arrowWithoutSize: createArrowStyles(),
21
- * mediumArrow: { aspectRatio: 1, width: '4px' }
22
- * smallArrow: { aspectRatio: 1, width: '2px' }
30
+ * arrowWithoutSize: createArrowStyles({ arrowHeight: undefined }),
31
+ * mediumArrow: createArrowHeightStyles(4),
32
+ * smallArrow: createArrowHeightStyles(2),
23
33
  * })
24
34
  * ...
25
35
  *
26
- * state.arrowWithSize.className = styles.arrowWithSize
36
+ * state.arrowWithSize.className = styles.arrowWithSize;
27
37
  * state.arrowWithoutSize.className = mergeClasses(
28
38
  * styles.arrowWithoutSize,
29
39
  * state.smallArrow && styles.smallArrow,
30
40
  * state.mediumArrow && styles.mediumArrow,
31
41
  * )
32
42
  * ```
33
- *
34
- * @param size - dimensions of the square arrow element in pixels.
35
43
  */
36
- export declare function createArrowStyles(size?: number): MakeStylesStyleRule<Theme>;
44
+ export declare function createArrowStyles(options: CreateArrowStylesOptions): MakeStylesStyle;
45
+
46
+ /**
47
+ * Options parameter for the createArrowStyles function
48
+ */
49
+ export declare type CreateArrowStylesOptions = {
50
+ /**
51
+ * The height of the arrow from the base to the tip, in px. The base width of the arrow is always twice its height.
52
+ *
53
+ * This can be undefined to leave out the arrow size styles. You must then add styles created by
54
+ * createArrowHeightStyles to set the arrow's size correctly. This can be useful if the arrow can be different sizes.
55
+ */
56
+ arrowHeight: number | undefined;
57
+ /**
58
+ * The borderWidth of the arrow. Should be the same borderWidth as the parent element.
59
+ *
60
+ * @defaultvalue 1px
61
+ */
62
+ borderWidth?: MakeStylesStyle['borderBottomWidth'];
63
+ /**
64
+ * The borderStyle for the arrow. Should be the same borderStyle as the parent element.
65
+ *
66
+ * @defaultvalue solid
67
+ */
68
+ borderStyle?: MakeStylesStyle['borderBottomStyle'];
69
+ /**
70
+ * The borderColor of the arrow. Should be the same borderColor as the parent element.
71
+ *
72
+ * @defaultvalue tokens.colorTransparentStroke
73
+ */
74
+ borderColor?: MakeStylesStyle['borderBottomColor'];
75
+ };
37
76
 
38
77
  /**
39
78
  * Creates a virtual element based on the position of a click event
@@ -1,27 +1,64 @@
1
- import type { MakeStylesStyleRule } from '@fluentui/react-make-styles';
2
- import type { Theme } from '@fluentui/react-theme';
1
+ import type { MakeStylesStyle } from '@fluentui/react-make-styles';
2
+ /**
3
+ * Options parameter for the createArrowStyles function
4
+ */
5
+ export declare type CreateArrowStylesOptions = {
6
+ /**
7
+ * The height of the arrow from the base to the tip, in px. The base width of the arrow is always twice its height.
8
+ *
9
+ * This can be undefined to leave out the arrow size styles. You must then add styles created by
10
+ * createArrowHeightStyles to set the arrow's size correctly. This can be useful if the arrow can be different sizes.
11
+ */
12
+ arrowHeight: number | undefined;
13
+ /**
14
+ * The borderWidth of the arrow. Should be the same borderWidth as the parent element.
15
+ *
16
+ * @defaultvalue 1px
17
+ */
18
+ borderWidth?: MakeStylesStyle['borderBottomWidth'];
19
+ /**
20
+ * The borderStyle for the arrow. Should be the same borderStyle as the parent element.
21
+ *
22
+ * @defaultvalue solid
23
+ */
24
+ borderStyle?: MakeStylesStyle['borderBottomStyle'];
25
+ /**
26
+ * The borderColor of the arrow. Should be the same borderColor as the parent element.
27
+ *
28
+ * @defaultvalue tokens.colorTransparentStroke
29
+ */
30
+ borderColor?: MakeStylesStyle['borderBottomColor'];
31
+ };
3
32
  /**
4
33
  * Helper that creates a makeStyles rule for an arrow element.
5
34
  * For runtime arrow size toggling simply create extra classnames to apply to the arrow element
6
35
  *
7
36
  * ```ts
8
37
  * makeStyles({
9
- * arrowWithSize: createArrowStyles(5),
38
+ * arrowWithSize: createArrowStyles({ arrowHeight: 6 }),
10
39
  *
11
- * arrowWithoutSize: createArrowStyles(),
12
- * mediumArrow: { aspectRatio: 1, width: '4px' }
13
- * smallArrow: { aspectRatio: 1, width: '2px' }
40
+ * arrowWithoutSize: createArrowStyles({ arrowHeight: undefined }),
41
+ * mediumArrow: createArrowHeightStyles(4),
42
+ * smallArrow: createArrowHeightStyles(2),
14
43
  * })
15
44
  * ...
16
45
  *
17
- * state.arrowWithSize.className = styles.arrowWithSize
46
+ * state.arrowWithSize.className = styles.arrowWithSize;
18
47
  * state.arrowWithoutSize.className = mergeClasses(
19
48
  * styles.arrowWithoutSize,
20
49
  * state.smallArrow && styles.smallArrow,
21
50
  * state.mediumArrow && styles.mediumArrow,
22
51
  * )
23
52
  * ```
53
+ */
54
+ export declare function createArrowStyles(options: CreateArrowStylesOptions): MakeStylesStyle;
55
+ /**
56
+ * Creates CSS styles to size the arrow created by createArrowStyles to the given height.
24
57
  *
25
- * @param size - dimensions of the square arrow element in pixels.
58
+ * Use this when you need to create classes for several different arrow sizes. If you only need a
59
+ * constant arrow size, you can pass the `arrowHeight` param to createArrowStyles instead.
26
60
  */
27
- export declare function createArrowStyles(size?: number): MakeStylesStyleRule<Theme>;
61
+ export declare function createArrowHeightStyles(arrowHeight: number): {
62
+ width: string;
63
+ height: string;
64
+ };
@@ -1,73 +1,87 @@
1
1
  import { shorthands } from '@fluentui/react-make-styles';
2
+ import { tokens } from '@fluentui/react-theme';
2
3
  /**
3
4
  * Helper that creates a makeStyles rule for an arrow element.
4
5
  * For runtime arrow size toggling simply create extra classnames to apply to the arrow element
5
6
  *
6
7
  * ```ts
7
8
  * makeStyles({
8
- * arrowWithSize: createArrowStyles(5),
9
+ * arrowWithSize: createArrowStyles({ arrowHeight: 6 }),
9
10
  *
10
- * arrowWithoutSize: createArrowStyles(),
11
- * mediumArrow: { aspectRatio: 1, width: '4px' }
12
- * smallArrow: { aspectRatio: 1, width: '2px' }
11
+ * arrowWithoutSize: createArrowStyles({ arrowHeight: undefined }),
12
+ * mediumArrow: createArrowHeightStyles(4),
13
+ * smallArrow: createArrowHeightStyles(2),
13
14
  * })
14
15
  * ...
15
16
  *
16
- * state.arrowWithSize.className = styles.arrowWithSize
17
+ * state.arrowWithSize.className = styles.arrowWithSize;
17
18
  * state.arrowWithoutSize.className = mergeClasses(
18
19
  * styles.arrowWithoutSize,
19
20
  * state.smallArrow && styles.smallArrow,
20
21
  * state.mediumArrow && styles.mediumArrow,
21
22
  * )
22
23
  * ```
23
- *
24
- * @param size - dimensions of the square arrow element in pixels.
25
24
  */
26
25
 
27
- export function createArrowStyles(size) {
28
- return theme => ({
26
+ export function createArrowStyles(options) {
27
+ const {
28
+ arrowHeight,
29
+ borderWidth = '1px',
30
+ borderStyle = 'solid',
31
+ borderColor = tokens.colorTransparentStroke
32
+ } = options;
33
+ return {
29
34
  position: 'absolute',
30
35
  backgroundColor: 'inherit',
31
36
  visibility: 'hidden',
32
37
  zIndex: -1,
33
- ...(size && {
34
- aspectRatio: '1',
35
- width: `${size}px`
36
- }),
38
+ ...(arrowHeight && createArrowHeightStyles(arrowHeight)),
37
39
  ':before': {
38
40
  content: '""',
39
- ...shorthands.borderRadius('4px'),
41
+ visibility: 'visible',
40
42
  position: 'absolute',
43
+ boxSizing: 'border-box',
41
44
  width: 'inherit',
42
45
  height: 'inherit',
43
46
  backgroundColor: 'inherit',
44
- visibility: 'visible',
45
- borderBottomRightRadius: theme.borderRadiusSmall,
47
+ ...shorthands.borderRight(borderWidth, borderStyle, borderColor),
48
+ ...shorthands.borderBottom(borderWidth, borderStyle, borderColor),
49
+ borderBottomRightRadius: tokens.borderRadiusSmall,
46
50
  transform: 'rotate(var(--angle)) translate(0, 50%) rotate(45deg)'
47
51
  },
48
- ':global([data-popper-placement])': {
49
- ':before': { // Special border for High Contrast mode
50
- ...shorthands.borderRight('1px', 'solid', 'transparent'),
51
- ...shorthands.borderBottom('1px', 'solid', 'transparent')
52
- }
53
- },
54
52
  // Popper sets data-popper-placement on the root element, which is used to align the arrow
55
53
  ':global([data-popper-placement^="top"])': {
56
- bottom: 0,
54
+ bottom: `-${borderWidth}`,
57
55
  '--angle': '0'
58
56
  },
59
57
  ':global([data-popper-placement^="right"])': {
60
- left: '0 /* @noflip */',
58
+ left: `-${borderWidth} /* @noflip */`,
61
59
  '--angle': '90deg'
62
60
  },
63
61
  ':global([data-popper-placement^="bottom"])': {
64
- top: 0,
62
+ top: `-${borderWidth}`,
65
63
  '--angle': '180deg'
66
64
  },
67
65
  ':global([data-popper-placement^="left"])': {
68
- right: '0 /* @noflip */',
66
+ right: `-${borderWidth} /* @noflip */`,
69
67
  '--angle': '270deg'
70
68
  }
71
- });
69
+ };
70
+ }
71
+ /**
72
+ * Creates CSS styles to size the arrow created by createArrowStyles to the given height.
73
+ *
74
+ * Use this when you need to create classes for several different arrow sizes. If you only need a
75
+ * constant arrow size, you can pass the `arrowHeight` param to createArrowStyles instead.
76
+ */
77
+
78
+ export function createArrowHeightStyles(arrowHeight) {
79
+ // The arrow is a square rotated 45 degrees to have its bottom and right edges form a right triangle.
80
+ // Multiply the triangle's height by sqrt(2) to get length of its edges.
81
+ const edgeLength = `${1.414 * arrowHeight}px`;
82
+ return {
83
+ width: edgeLength,
84
+ height: edgeLength
85
+ };
72
86
  }
73
87
  //# sourceMappingURL=createArrowStyles.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/createArrowStyles.ts"],"names":[],"mappings":"AAAA,SAAS,UAAT,QAA2B,6BAA3B;AAIA;;;;;;;;;;;;;;;;;;;;;;;AAuBG;;AACH,OAAM,SAAU,iBAAV,CAA4B,IAA5B,EAAyC;AAC7C,SAAO,KAAK,KAAK;AACf,IAAA,QAAQ,EAAE,UADK;AAEf,IAAA,eAAe,EAAE,SAFF;AAGf,IAAA,UAAU,EAAE,QAHG;AAIf,IAAA,MAAM,EAAE,CAAC,CAJM;AAMf,QAAI,IAAI,IAAI;AACV,MAAA,WAAW,EAAE,GADH;AAEV,MAAA,KAAK,EAAE,GAAG,IAAI;AAFJ,KAAZ,CANe;AAWf,eAAW;AACT,MAAA,OAAO,EAAE,IADA;AAET,SAAG,UAAU,CAAC,YAAX,CAAwB,KAAxB,CAFM;AAGT,MAAA,QAAQ,EAAE,UAHD;AAIT,MAAA,KAAK,EAAE,SAJE;AAKT,MAAA,MAAM,EAAE,SALC;AAMT,MAAA,eAAe,EAAE,SANR;AAOT,MAAA,UAAU,EAAE,SAPH;AAQT,MAAA,uBAAuB,EAAE,KAAK,CAAC,iBARtB;AAST,MAAA,SAAS,EAAE;AATF,KAXI;AAuBf,wCAAoC;AAClC,iBAAW,EACT;AACA,WAAG,UAAU,CAAC,WAAX,CAAuB,KAAvB,EAA8B,OAA9B,EAAuC,aAAvC,CAFM;AAGT,WAAG,UAAU,CAAC,YAAX,CAAwB,KAAxB,EAA+B,OAA/B,EAAwC,aAAxC;AAHM;AADuB,KAvBrB;AA+Bf;AACA,+CAA2C;AACzC,MAAA,MAAM,EAAE,CADiC;AAEzC,iBAAW;AAF8B,KAhC5B;AAqCf,iDAA6C;AAC3C,MAAA,IAAI,EAAE,iBADqC;AAE3C,iBAAW;AAFgC,KArC9B;AAyCf,kDAA8C;AAC5C,MAAA,GAAG,EAAE,CADuC;AAE5C,iBAAW;AAFiC,KAzC/B;AA6Cf,gDAA4C;AAC1C,MAAA,KAAK,EAAE,iBADmC;AAE1C,iBAAW;AAF+B;AA7C7B,GAAL,CAAZ;AAkDD","sourceRoot":""}
1
+ {"version":3,"sources":["../src/createArrowStyles.ts"],"names":[],"mappings":"AAAA,SAAS,UAAT,QAA2B,6BAA3B;AACA,SAAS,MAAT,QAAuB,uBAAvB;AAqCA;;;;;;;;;;;;;;;;;;;;;AAqBG;;AACH,OAAM,SAAU,iBAAV,CAA4B,OAA5B,EAA6D;AACjE,QAAM;AACJ,IAAA,WADI;AAEJ,IAAA,WAAW,GAAG,KAFV;AAGJ,IAAA,WAAW,GAAG,OAHV;AAIJ,IAAA,WAAW,GAAG,MAAM,CAAC;AAJjB,MAKF,OALJ;AAOA,SAAO;AACL,IAAA,QAAQ,EAAE,UADL;AAEL,IAAA,eAAe,EAAE,SAFZ;AAGL,IAAA,UAAU,EAAE,QAHP;AAIL,IAAA,MAAM,EAAE,CAAC,CAJJ;AAML,QAAI,WAAW,IAAI,uBAAuB,CAAC,WAAD,CAA1C,CANK;AAQL,eAAW;AACT,MAAA,OAAO,EAAE,IADA;AAET,MAAA,UAAU,EAAE,SAFH;AAGT,MAAA,QAAQ,EAAE,UAHD;AAIT,MAAA,SAAS,EAAE,YAJF;AAKT,MAAA,KAAK,EAAE,SALE;AAMT,MAAA,MAAM,EAAE,SANC;AAOT,MAAA,eAAe,EAAE,SAPR;AAQT,SAAG,UAAU,CAAC,WAAX,CAAuB,WAAvB,EAAoC,WAApC,EAAiD,WAAjD,CARM;AAST,SAAG,UAAU,CAAC,YAAX,CAAwB,WAAxB,EAAqC,WAArC,EAAkD,WAAlD,CATM;AAUT,MAAA,uBAAuB,EAAE,MAAM,CAAC,iBAVvB;AAWT,MAAA,SAAS,EAAE;AAXF,KARN;AAsBL;AACA,+CAA2C;AACzC,MAAA,MAAM,EAAE,IAAI,WAAW,EADkB;AAEzC,iBAAW;AAF8B,KAvBtC;AA2BL,iDAA6C;AAC3C,MAAA,IAAI,EAAE,IAAI,WAAW,gBADsB;AAE3C,iBAAW;AAFgC,KA3BxC;AA+BL,kDAA8C;AAC5C,MAAA,GAAG,EAAE,IAAI,WAAW,EADwB;AAE5C,iBAAW;AAFiC,KA/BzC;AAmCL,gDAA4C;AAC1C,MAAA,KAAK,EAAE,IAAI,WAAW,gBADoB;AAE1C,iBAAW;AAF+B;AAnCvC,GAAP;AAwCD;AAED;;;;;AAKG;;AACH,OAAM,SAAU,uBAAV,CAAkC,WAAlC,EAAqD;AACzD;AACA;AACA,QAAM,UAAU,GAAG,GAAG,QAAQ,WAAW,IAAzC;AACA,SAAO;AAAE,IAAA,KAAK,EAAE,UAAT;AAAqB,IAAA,MAAM,EAAE;AAA7B,GAAP;AACD","sourceRoot":""}
@@ -1,27 +1,64 @@
1
- import type { MakeStylesStyleRule } from '@fluentui/react-make-styles';
2
- import type { Theme } from '@fluentui/react-theme';
1
+ import type { MakeStylesStyle } from '@fluentui/react-make-styles';
2
+ /**
3
+ * Options parameter for the createArrowStyles function
4
+ */
5
+ export declare type CreateArrowStylesOptions = {
6
+ /**
7
+ * The height of the arrow from the base to the tip, in px. The base width of the arrow is always twice its height.
8
+ *
9
+ * This can be undefined to leave out the arrow size styles. You must then add styles created by
10
+ * createArrowHeightStyles to set the arrow's size correctly. This can be useful if the arrow can be different sizes.
11
+ */
12
+ arrowHeight: number | undefined;
13
+ /**
14
+ * The borderWidth of the arrow. Should be the same borderWidth as the parent element.
15
+ *
16
+ * @defaultvalue 1px
17
+ */
18
+ borderWidth?: MakeStylesStyle['borderBottomWidth'];
19
+ /**
20
+ * The borderStyle for the arrow. Should be the same borderStyle as the parent element.
21
+ *
22
+ * @defaultvalue solid
23
+ */
24
+ borderStyle?: MakeStylesStyle['borderBottomStyle'];
25
+ /**
26
+ * The borderColor of the arrow. Should be the same borderColor as the parent element.
27
+ *
28
+ * @defaultvalue tokens.colorTransparentStroke
29
+ */
30
+ borderColor?: MakeStylesStyle['borderBottomColor'];
31
+ };
3
32
  /**
4
33
  * Helper that creates a makeStyles rule for an arrow element.
5
34
  * For runtime arrow size toggling simply create extra classnames to apply to the arrow element
6
35
  *
7
36
  * ```ts
8
37
  * makeStyles({
9
- * arrowWithSize: createArrowStyles(5),
38
+ * arrowWithSize: createArrowStyles({ arrowHeight: 6 }),
10
39
  *
11
- * arrowWithoutSize: createArrowStyles(),
12
- * mediumArrow: { aspectRatio: 1, width: '4px' }
13
- * smallArrow: { aspectRatio: 1, width: '2px' }
40
+ * arrowWithoutSize: createArrowStyles({ arrowHeight: undefined }),
41
+ * mediumArrow: createArrowHeightStyles(4),
42
+ * smallArrow: createArrowHeightStyles(2),
14
43
  * })
15
44
  * ...
16
45
  *
17
- * state.arrowWithSize.className = styles.arrowWithSize
46
+ * state.arrowWithSize.className = styles.arrowWithSize;
18
47
  * state.arrowWithoutSize.className = mergeClasses(
19
48
  * styles.arrowWithoutSize,
20
49
  * state.smallArrow && styles.smallArrow,
21
50
  * state.mediumArrow && styles.mediumArrow,
22
51
  * )
23
52
  * ```
53
+ */
54
+ export declare function createArrowStyles(options: CreateArrowStylesOptions): MakeStylesStyle;
55
+ /**
56
+ * Creates CSS styles to size the arrow created by createArrowStyles to the given height.
24
57
  *
25
- * @param size - dimensions of the square arrow element in pixels.
58
+ * Use this when you need to create classes for several different arrow sizes. If you only need a
59
+ * constant arrow size, you can pass the `arrowHeight` param to createArrowStyles instead.
26
60
  */
27
- export declare function createArrowStyles(size?: number): MakeStylesStyleRule<Theme>;
61
+ export declare function createArrowHeightStyles(arrowHeight: number): {
62
+ width: string;
63
+ height: string;
64
+ };
@@ -3,81 +3,98 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.createArrowStyles = void 0;
6
+ exports.createArrowHeightStyles = exports.createArrowStyles = void 0;
7
7
 
8
8
  const react_make_styles_1 = /*#__PURE__*/require("@fluentui/react-make-styles");
9
+
10
+ const react_theme_1 = /*#__PURE__*/require("@fluentui/react-theme");
9
11
  /**
10
12
  * Helper that creates a makeStyles rule for an arrow element.
11
13
  * For runtime arrow size toggling simply create extra classnames to apply to the arrow element
12
14
  *
13
15
  * ```ts
14
16
  * makeStyles({
15
- * arrowWithSize: createArrowStyles(5),
17
+ * arrowWithSize: createArrowStyles({ arrowHeight: 6 }),
16
18
  *
17
- * arrowWithoutSize: createArrowStyles(),
18
- * mediumArrow: { aspectRatio: 1, width: '4px' }
19
- * smallArrow: { aspectRatio: 1, width: '2px' }
19
+ * arrowWithoutSize: createArrowStyles({ arrowHeight: undefined }),
20
+ * mediumArrow: createArrowHeightStyles(4),
21
+ * smallArrow: createArrowHeightStyles(2),
20
22
  * })
21
23
  * ...
22
24
  *
23
- * state.arrowWithSize.className = styles.arrowWithSize
25
+ * state.arrowWithSize.className = styles.arrowWithSize;
24
26
  * state.arrowWithoutSize.className = mergeClasses(
25
27
  * styles.arrowWithoutSize,
26
28
  * state.smallArrow && styles.smallArrow,
27
29
  * state.mediumArrow && styles.mediumArrow,
28
30
  * )
29
31
  * ```
30
- *
31
- * @param size - dimensions of the square arrow element in pixels.
32
32
  */
33
33
 
34
34
 
35
- function createArrowStyles(size) {
36
- return theme => ({
35
+ function createArrowStyles(options) {
36
+ const {
37
+ arrowHeight,
38
+ borderWidth = '1px',
39
+ borderStyle = 'solid',
40
+ borderColor = react_theme_1.tokens.colorTransparentStroke
41
+ } = options;
42
+ return {
37
43
  position: 'absolute',
38
44
  backgroundColor: 'inherit',
39
45
  visibility: 'hidden',
40
46
  zIndex: -1,
41
- ...(size && {
42
- aspectRatio: '1',
43
- width: `${size}px`
44
- }),
47
+ ...(arrowHeight && createArrowHeightStyles(arrowHeight)),
45
48
  ':before': {
46
49
  content: '""',
47
- ...react_make_styles_1.shorthands.borderRadius('4px'),
50
+ visibility: 'visible',
48
51
  position: 'absolute',
52
+ boxSizing: 'border-box',
49
53
  width: 'inherit',
50
54
  height: 'inherit',
51
55
  backgroundColor: 'inherit',
52
- visibility: 'visible',
53
- borderBottomRightRadius: theme.borderRadiusSmall,
56
+ ...react_make_styles_1.shorthands.borderRight(borderWidth, borderStyle, borderColor),
57
+ ...react_make_styles_1.shorthands.borderBottom(borderWidth, borderStyle, borderColor),
58
+ borderBottomRightRadius: react_theme_1.tokens.borderRadiusSmall,
54
59
  transform: 'rotate(var(--angle)) translate(0, 50%) rotate(45deg)'
55
60
  },
56
- ':global([data-popper-placement])': {
57
- ':before': { // Special border for High Contrast mode
58
- ...react_make_styles_1.shorthands.borderRight('1px', 'solid', 'transparent'),
59
- ...react_make_styles_1.shorthands.borderBottom('1px', 'solid', 'transparent')
60
- }
61
- },
62
61
  // Popper sets data-popper-placement on the root element, which is used to align the arrow
63
62
  ':global([data-popper-placement^="top"])': {
64
- bottom: 0,
63
+ bottom: `-${borderWidth}`,
65
64
  '--angle': '0'
66
65
  },
67
66
  ':global([data-popper-placement^="right"])': {
68
- left: '0 /* @noflip */',
67
+ left: `-${borderWidth} /* @noflip */`,
69
68
  '--angle': '90deg'
70
69
  },
71
70
  ':global([data-popper-placement^="bottom"])': {
72
- top: 0,
71
+ top: `-${borderWidth}`,
73
72
  '--angle': '180deg'
74
73
  },
75
74
  ':global([data-popper-placement^="left"])': {
76
- right: '0 /* @noflip */',
75
+ right: `-${borderWidth} /* @noflip */`,
77
76
  '--angle': '270deg'
78
77
  }
79
- });
78
+ };
80
79
  }
81
80
 
82
81
  exports.createArrowStyles = createArrowStyles;
82
+ /**
83
+ * Creates CSS styles to size the arrow created by createArrowStyles to the given height.
84
+ *
85
+ * Use this when you need to create classes for several different arrow sizes. If you only need a
86
+ * constant arrow size, you can pass the `arrowHeight` param to createArrowStyles instead.
87
+ */
88
+
89
+ function createArrowHeightStyles(arrowHeight) {
90
+ // The arrow is a square rotated 45 degrees to have its bottom and right edges form a right triangle.
91
+ // Multiply the triangle's height by sqrt(2) to get length of its edges.
92
+ const edgeLength = `${1.414 * arrowHeight}px`;
93
+ return {
94
+ width: edgeLength,
95
+ height: edgeLength
96
+ };
97
+ }
98
+
99
+ exports.createArrowHeightStyles = createArrowHeightStyles;
83
100
  //# sourceMappingURL=createArrowStyles.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/createArrowStyles.ts"],"names":[],"mappings":";;;;;;;AAAA,MAAA,mBAAA,gBAAA,OAAA,CAAA,6BAAA,CAAA;AAIA;;;;;;;;;;;;;;;;;;;;;;;AAuBG;;;AACH,SAAgB,iBAAhB,CAAkC,IAAlC,EAA+C;AAC7C,SAAO,KAAK,KAAK;AACf,IAAA,QAAQ,EAAE,UADK;AAEf,IAAA,eAAe,EAAE,SAFF;AAGf,IAAA,UAAU,EAAE,QAHG;AAIf,IAAA,MAAM,EAAE,CAAC,CAJM;AAMf,QAAI,IAAI,IAAI;AACV,MAAA,WAAW,EAAE,GADH;AAEV,MAAA,KAAK,EAAE,GAAG,IAAI;AAFJ,KAAZ,CANe;AAWf,eAAW;AACT,MAAA,OAAO,EAAE,IADA;AAET,SAAG,mBAAA,CAAA,UAAA,CAAW,YAAX,CAAwB,KAAxB,CAFM;AAGT,MAAA,QAAQ,EAAE,UAHD;AAIT,MAAA,KAAK,EAAE,SAJE;AAKT,MAAA,MAAM,EAAE,SALC;AAMT,MAAA,eAAe,EAAE,SANR;AAOT,MAAA,UAAU,EAAE,SAPH;AAQT,MAAA,uBAAuB,EAAE,KAAK,CAAC,iBARtB;AAST,MAAA,SAAS,EAAE;AATF,KAXI;AAuBf,wCAAoC;AAClC,iBAAW,EACT;AACA,WAAG,mBAAA,CAAA,UAAA,CAAW,WAAX,CAAuB,KAAvB,EAA8B,OAA9B,EAAuC,aAAvC,CAFM;AAGT,WAAG,mBAAA,CAAA,UAAA,CAAW,YAAX,CAAwB,KAAxB,EAA+B,OAA/B,EAAwC,aAAxC;AAHM;AADuB,KAvBrB;AA+Bf;AACA,+CAA2C;AACzC,MAAA,MAAM,EAAE,CADiC;AAEzC,iBAAW;AAF8B,KAhC5B;AAqCf,iDAA6C;AAC3C,MAAA,IAAI,EAAE,iBADqC;AAE3C,iBAAW;AAFgC,KArC9B;AAyCf,kDAA8C;AAC5C,MAAA,GAAG,EAAE,CADuC;AAE5C,iBAAW;AAFiC,KAzC/B;AA6Cf,gDAA4C;AAC1C,MAAA,KAAK,EAAE,iBADmC;AAE1C,iBAAW;AAF+B;AA7C7B,GAAL,CAAZ;AAkDD;;AAnDD,OAAA,CAAA,iBAAA,GAAA,iBAAA","sourceRoot":""}
1
+ {"version":3,"sources":["../src/createArrowStyles.ts"],"names":[],"mappings":";;;;;;;AAAA,MAAA,mBAAA,gBAAA,OAAA,CAAA,6BAAA,CAAA;;AACA,MAAA,aAAA,gBAAA,OAAA,CAAA,uBAAA,CAAA;AAqCA;;;;;;;;;;;;;;;;;;;;;AAqBG;;;AACH,SAAgB,iBAAhB,CAAkC,OAAlC,EAAmE;AACjE,QAAM;AACJ,IAAA,WADI;AAEJ,IAAA,WAAW,GAAG,KAFV;AAGJ,IAAA,WAAW,GAAG,OAHV;AAIJ,IAAA,WAAW,GAAG,aAAA,CAAA,MAAA,CAAO;AAJjB,MAKF,OALJ;AAOA,SAAO;AACL,IAAA,QAAQ,EAAE,UADL;AAEL,IAAA,eAAe,EAAE,SAFZ;AAGL,IAAA,UAAU,EAAE,QAHP;AAIL,IAAA,MAAM,EAAE,CAAC,CAJJ;AAML,QAAI,WAAW,IAAI,uBAAuB,CAAC,WAAD,CAA1C,CANK;AAQL,eAAW;AACT,MAAA,OAAO,EAAE,IADA;AAET,MAAA,UAAU,EAAE,SAFH;AAGT,MAAA,QAAQ,EAAE,UAHD;AAIT,MAAA,SAAS,EAAE,YAJF;AAKT,MAAA,KAAK,EAAE,SALE;AAMT,MAAA,MAAM,EAAE,SANC;AAOT,MAAA,eAAe,EAAE,SAPR;AAQT,SAAG,mBAAA,CAAA,UAAA,CAAW,WAAX,CAAuB,WAAvB,EAAoC,WAApC,EAAiD,WAAjD,CARM;AAST,SAAG,mBAAA,CAAA,UAAA,CAAW,YAAX,CAAwB,WAAxB,EAAqC,WAArC,EAAkD,WAAlD,CATM;AAUT,MAAA,uBAAuB,EAAE,aAAA,CAAA,MAAA,CAAO,iBAVvB;AAWT,MAAA,SAAS,EAAE;AAXF,KARN;AAsBL;AACA,+CAA2C;AACzC,MAAA,MAAM,EAAE,IAAI,WAAW,EADkB;AAEzC,iBAAW;AAF8B,KAvBtC;AA2BL,iDAA6C;AAC3C,MAAA,IAAI,EAAE,IAAI,WAAW,gBADsB;AAE3C,iBAAW;AAFgC,KA3BxC;AA+BL,kDAA8C;AAC5C,MAAA,GAAG,EAAE,IAAI,WAAW,EADwB;AAE5C,iBAAW;AAFiC,KA/BzC;AAmCL,gDAA4C;AAC1C,MAAA,KAAK,EAAE,IAAI,WAAW,gBADoB;AAE1C,iBAAW;AAF+B;AAnCvC,GAAP;AAwCD;;AAhDD,OAAA,CAAA,iBAAA,GAAA,iBAAA;AAkDA;;;;;AAKG;;AACH,SAAgB,uBAAhB,CAAwC,WAAxC,EAA2D;AACzD;AACA;AACA,QAAM,UAAU,GAAG,GAAG,QAAQ,WAAW,IAAzC;AACA,SAAO;AAAE,IAAA,KAAK,EAAE,UAAT;AAAqB,IAAA,MAAM,EAAE;AAA7B,GAAP;AACD;;AALD,OAAA,CAAA,uBAAA,GAAA,uBAAA","sourceRoot":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui/react-positioning",
3
- "version": "0.0.0-nightly58c310891320211216.1",
3
+ "version": "0.0.0-nightly5ab766c40f20220114.1",
4
4
  "description": "A react wrapper around Popper.js for Fluent UI",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -30,12 +30,12 @@
30
30
  "@types/react-dom": "16.9.10",
31
31
  "react": "16.8.6",
32
32
  "react-dom": "16.8.6",
33
- "@fluentui/babel-make-styles": "0.0.0-nightly58c310891320211216.1"
33
+ "@fluentui/babel-make-styles": "0.0.0-nightly5ab766c40f20220114.1"
34
34
  },
35
35
  "dependencies": {
36
- "@fluentui/react-make-styles": "0.0.0-nightly58c310891320211216.1",
37
- "@fluentui/react-shared-contexts": "0.0.0-nightly58c310891320211216.1",
38
- "@fluentui/react-utilities": "0.0.0-nightly58c310891320211216.1",
36
+ "@fluentui/react-make-styles": "0.0.0-nightly5ab766c40f20220114.1",
37
+ "@fluentui/react-shared-contexts": "0.0.0-nightly5ab766c40f20220114.1",
38
+ "@fluentui/react-utilities": "0.0.0-nightly5ab766c40f20220114.1",
39
39
  "@popperjs/core": "~2.4.3",
40
40
  "tslib": "^2.1.0"
41
41
  },