@fluentui-react-native/experimental-shadow 0.2.0 → 0.2.3

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 (45) hide show
  1. package/CHANGELOG.json +46 -1
  2. package/CHANGELOG.md +26 -2
  3. package/lib/Shadow.d.ts +2 -2
  4. package/lib/Shadow.d.ts.map +1 -1
  5. package/lib/Shadow.js +24 -22
  6. package/lib/Shadow.js.map +1 -1
  7. package/lib/Shadow.types.d.ts +2 -1
  8. package/lib/Shadow.types.d.ts.map +1 -1
  9. package/lib/Shadow.types.js +1 -1
  10. package/lib/Shadow.types.js.map +1 -1
  11. package/lib/__tests__/Shadow.test.js +86 -5
  12. package/lib/__tests__/Shadow.test.js.map +1 -1
  13. package/lib/index.d.ts +1 -0
  14. package/lib/index.d.ts.map +1 -1
  15. package/lib/index.js +1 -0
  16. package/lib/index.js.map +1 -1
  17. package/lib/shadowStyle.d.ts +25 -0
  18. package/lib/shadowStyle.d.ts.map +1 -0
  19. package/lib/shadowStyle.js +51 -0
  20. package/lib/shadowStyle.js.map +1 -0
  21. package/lib-commonjs/Shadow.d.ts +2 -2
  22. package/lib-commonjs/Shadow.d.ts.map +1 -1
  23. package/lib-commonjs/Shadow.js +24 -23
  24. package/lib-commonjs/Shadow.js.map +1 -1
  25. package/lib-commonjs/Shadow.types.d.ts +2 -1
  26. package/lib-commonjs/Shadow.types.d.ts.map +1 -1
  27. package/lib-commonjs/Shadow.types.js +2 -0
  28. package/lib-commonjs/Shadow.types.js.map +1 -1
  29. package/lib-commonjs/__tests__/Shadow.test.js +86 -5
  30. package/lib-commonjs/__tests__/Shadow.test.js.map +1 -1
  31. package/lib-commonjs/index.d.ts +1 -0
  32. package/lib-commonjs/index.d.ts.map +1 -1
  33. package/lib-commonjs/index.js +3 -1
  34. package/lib-commonjs/index.js.map +1 -1
  35. package/lib-commonjs/shadowStyle.d.ts +25 -0
  36. package/lib-commonjs/shadowStyle.d.ts.map +1 -0
  37. package/lib-commonjs/shadowStyle.js +54 -0
  38. package/lib-commonjs/shadowStyle.js.map +1 -0
  39. package/package.json +4 -1
  40. package/src/Shadow.tsx +19 -26
  41. package/src/Shadow.types.ts +15 -1
  42. package/src/__tests__/Shadow.test.tsx +137 -5
  43. package/src/__tests__/__snapshots__/Shadow.test.tsx.snap +402 -4
  44. package/src/index.ts +1 -0
  45. package/src/shadowStyle.ts +60 -0
@@ -25,19 +25,100 @@ var Shadow_1 = require("../Shadow");
25
25
  var renderer = __importStar(require("react-test-renderer"));
26
26
  var test_tools_1 = require("@fluentui-react-native/test-tools");
27
27
  describe('Shadow component tests', function () {
28
- it('Shadow default', function () {
28
+ it('Shadow (depth=2)', function () {
29
29
  var tree = renderer
30
- .create(React.createElement(Shadow_1.Shadow, null,
31
- React.createElement(react_native_1.Text, null, "Shadow default test")))
30
+ .create(React.createElement(Shadow_1.Shadow, { depth: "shadow2" },
31
+ React.createElement(react_native_1.Text, null, "Shadow (depth=2) ")))
32
32
  .toJSON();
33
33
  expect(tree).toMatchSnapshot();
34
34
  });
35
+ it('Shadow (depth=4)', function () {
36
+ var tree = renderer
37
+ .create(React.createElement(Shadow_1.Shadow, { depth: "shadow4" },
38
+ React.createElement(react_native_1.Text, null, "Shadow (depth=4)")))
39
+ .toJSON();
40
+ expect(tree).toMatchSnapshot();
41
+ });
42
+ it('Shadow (depth=8)', function () {
43
+ var tree = renderer
44
+ .create(React.createElement(Shadow_1.Shadow, { depth: "shadow8" },
45
+ React.createElement(react_native_1.Text, null, "Shadow (depth=8) ")))
46
+ .toJSON();
47
+ expect(tree).toMatchSnapshot();
48
+ });
49
+ it('Shadow (depth=16)', function () {
50
+ var tree = renderer
51
+ .create(React.createElement(Shadow_1.Shadow, { depth: "shadow16" },
52
+ React.createElement(react_native_1.Text, null, "Shadow (depth=16)")))
53
+ .toJSON();
54
+ expect(tree).toMatchSnapshot();
55
+ });
56
+ it('Shadow (depth=28)', function () {
57
+ var tree = renderer
58
+ .create(React.createElement(Shadow_1.Shadow, { depth: "shadow28" },
59
+ React.createElement(react_native_1.Text, null, "Shadow (depth=28) ")))
60
+ .toJSON();
61
+ expect(tree).toMatchSnapshot();
62
+ });
63
+ it('Shadow (depth=64)', function () {
64
+ var tree = renderer
65
+ .create(React.createElement(Shadow_1.Shadow, { depth: "shadow64" },
66
+ React.createElement(react_native_1.Text, null, "Shadow (depth=64)")))
67
+ .toJSON();
68
+ expect(tree).toMatchSnapshot();
69
+ });
70
+ it('Brand shadow (depth=2)', function () {
71
+ var tree = renderer
72
+ .create(React.createElement(Shadow_1.Shadow, { depth: "shadow2brand" },
73
+ React.createElement(react_native_1.Text, null, "Brand shadow (depth=2)")))
74
+ .toJSON();
75
+ expect(tree).toMatchSnapshot();
76
+ });
77
+ it('Brand shadow (depth=4)', function () {
78
+ var tree = renderer
79
+ .create(React.createElement(Shadow_1.Shadow, { depth: "shadow4brand" },
80
+ React.createElement(react_native_1.Text, null, "Brand shadow (depth=4)")))
81
+ .toJSON();
82
+ expect(tree).toMatchSnapshot();
83
+ });
84
+ it('Brand shadow (depth=8)', function () {
85
+ var tree = renderer
86
+ .create(React.createElement(Shadow_1.Shadow, { depth: "shadow8brand" },
87
+ React.createElement(react_native_1.Text, null, "Brand shadow (depth=8)")))
88
+ .toJSON();
89
+ expect(tree).toMatchSnapshot();
90
+ });
91
+ it('Brand shadow (depth=16)', function () {
92
+ var tree = renderer
93
+ .create(React.createElement(Shadow_1.Shadow, { depth: "shadow16brand" },
94
+ React.createElement(react_native_1.Text, null, "Brand shadow (depth=16)")))
95
+ .toJSON();
96
+ expect(tree).toMatchSnapshot();
97
+ });
98
+ it('Brand shadow (depth=28)', function () {
99
+ var tree = renderer
100
+ .create(React.createElement(Shadow_1.Shadow, { depth: "shadow28brand" },
101
+ React.createElement(react_native_1.Text, null, "Brand shadow (depth=28)")))
102
+ .toJSON();
103
+ expect(tree).toMatchSnapshot();
104
+ });
105
+ it('Brand shadow (depth=64)', function () {
106
+ var tree = renderer
107
+ .create(React.createElement(Shadow_1.Shadow, { depth: "shadow64brand" },
108
+ React.createElement(react_native_1.Text, null, "Brand shadow (depth=64)")))
109
+ .toJSON();
110
+ expect(tree).toMatchSnapshot();
111
+ });
112
+ it('Shadow simple rendering does not invalidate styling', function () {
113
+ (0, test_tools_1.checkRenderConsistency)(function () { return (React.createElement(Shadow_1.Shadow, { depth: "shadow2" },
114
+ React.createElement(react_native_1.Text, null, "Shadow render test"))); }, 2);
115
+ });
35
116
  it('Shadow simple rendering does not invalidate styling', function () {
36
- (0, test_tools_1.checkRenderConsistency)(function () { return (React.createElement(Shadow_1.Shadow, null,
117
+ (0, test_tools_1.checkRenderConsistency)(function () { return (React.createElement(Shadow_1.Shadow, { depth: "shadow2" },
37
118
  React.createElement(react_native_1.Text, null, "Shadow render test"))); }, 2);
38
119
  });
39
120
  it('Shadow re-renders correctly', function () {
40
- (0, test_tools_1.checkReRender)(function () { return (React.createElement(Shadow_1.Shadow, null,
121
+ (0, test_tools_1.checkReRender)(function () { return (React.createElement(Shadow_1.Shadow, { depth: "shadow2" },
41
122
  React.createElement(react_native_1.Text, null, "Shadow render twice test"))); }, 2);
42
123
  });
43
124
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Shadow.test.js","sourceRoot":"","sources":["../../src/__tests__/Shadow.test.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,2CAA+B;AAC/B,6CAAoC;AACpC,oCAAmC;AACnC,4DAAgD;AAChD,gEAA0F;AAE1F,QAAQ,CAAC,wBAAwB,EAAE;IACjC,EAAE,CAAC,gBAAgB,EAAE;QACnB,IAAM,IAAI,GAAG,QAAQ;aAClB,MAAM,CACL,oBAAC,eAAM;YACL,oBAAC,mBAAI,8BAA2B,CACzB,CACV;aACA,MAAM,EAAE,CAAC;QACZ,MAAM,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE;QACxD,IAAA,mCAAsB,EACpB,cAAM,OAAA,CACJ,oBAAC,eAAM;YACL,oBAAC,mBAAI,6BAA0B,CACxB,CACV,EAJK,CAIL,EACD,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE;QAChC,IAAA,0BAAa,EACX,cAAM,OAAA,CACJ,oBAAC,eAAM;YACL,oBAAC,mBAAI,mCAAgC,CAC9B,CACV,EAJK,CAIL,EACD,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"Shadow.test.js","sourceRoot":"","sources":["../../src/__tests__/Shadow.test.tsx"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  export { Shadow } from './Shadow';
2
2
  export { ShadowDepth, ShadowProps } from './Shadow.types';
3
+ export { getShadowTokenStyleSet } from './shadowStyle';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Shadow = void 0;
3
+ exports.getShadowTokenStyleSet = exports.Shadow = void 0;
4
4
  var Shadow_1 = require("./Shadow");
5
5
  Object.defineProperty(exports, "Shadow", { enumerable: true, get: function () { return Shadow_1.Shadow; } });
6
+ var shadowStyle_1 = require("./shadowStyle");
7
+ Object.defineProperty(exports, "getShadowTokenStyleSet", { enumerable: true, get: function () { return shadowStyle_1.getShadowTokenStyleSet; } });
6
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AAEf,6CAAuD;AAA9C,qHAAA,sBAAsB,OAAA"}
@@ -0,0 +1,25 @@
1
+ import { Theme } from '@fluentui-react-native/framework';
2
+ import { ShadowDepth } from './Shadow.types';
3
+ export declare const getShadowTokenStyleSet: typeof getShadowTokenStyleSetWorker;
4
+ declare function getShadowTokenStyleSetWorker(t: Theme, depth: ShadowDepth): {
5
+ key: {
6
+ shadowColor: string;
7
+ shadowOpacity: number;
8
+ shadowRadius: number;
9
+ shadowOffset: {
10
+ width: number;
11
+ height: number;
12
+ };
13
+ };
14
+ ambient: {
15
+ shadowColor: string;
16
+ shadowOpacity: number;
17
+ shadowRadius: number;
18
+ shadowOffset: {
19
+ width: number;
20
+ height: number;
21
+ };
22
+ };
23
+ };
24
+ export {};
25
+ //# sourceMappingURL=shadowStyle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadowStyle.d.ts","sourceRoot":"","sources":["../src/shadowStyle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAW,MAAM,kCAAkC,CAAC;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,eAAO,MAAM,sBAAsB,qCAAwC,CAAC;AAE5E,iBAAS,4BAA4B,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW;;;;;;;;;;;;;;;;;;;EA+BjE"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getShadowTokenStyleSet = void 0;
4
+ var framework_1 = require("@fluentui-react-native/framework");
5
+ exports.getShadowTokenStyleSet = (0, framework_1.memoize)(getShadowTokenStyleSetWorker);
6
+ function getShadowTokenStyleSetWorker(t, depth) {
7
+ if (!depth) {
8
+ return {
9
+ key: emptyShadowStyle,
10
+ ambient: emptyShadowStyle,
11
+ };
12
+ }
13
+ var keyShadow = t.shadows[depth.toString()].key;
14
+ var ambientShadow = t.shadows[depth.toString()].ambient;
15
+ return {
16
+ key: {
17
+ shadowColor: shadowColorFromRGBAColor(keyShadow.color),
18
+ shadowOpacity: shadowOpacityFromRGBAColor(keyShadow.color),
19
+ shadowRadius: keyShadow.blur,
20
+ shadowOffset: {
21
+ width: keyShadow.x,
22
+ height: keyShadow.y,
23
+ },
24
+ },
25
+ ambient: {
26
+ shadowColor: shadowColorFromRGBAColor(ambientShadow.color),
27
+ shadowOpacity: shadowOpacityFromRGBAColor(ambientShadow.color),
28
+ shadowRadius: ambientShadow.blur,
29
+ shadowOffset: {
30
+ width: ambientShadow.x,
31
+ height: ambientShadow.y,
32
+ },
33
+ },
34
+ };
35
+ }
36
+ var shadowColorFromRGBAColor = function (rgbaColor) {
37
+ return rgbaColor.toString().substring(0, 7);
38
+ };
39
+ var shadowOpacityFromRGBAColor = function (rgbaColor) {
40
+ var opacityAsHex = '0x' + rgbaColor.toString().substring(7);
41
+ var opacityAsDecimal = Number(opacityAsHex) / 255.0;
42
+ // Round to two decimal places
43
+ return Math.round(opacityAsDecimal * 100) / 100;
44
+ };
45
+ var emptyShadowStyle = {
46
+ shadowColor: '000000',
47
+ shadowOpacity: 0,
48
+ shadowRadius: 0,
49
+ shadowOffset: {
50
+ width: 0,
51
+ height: 0,
52
+ },
53
+ };
54
+ //# sourceMappingURL=shadowStyle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shadowStyle.js","sourceRoot":"","sources":["../src/shadowStyle.ts"],"names":[],"mappings":";;;AAAA,8DAAkE;AAIrD,QAAA,sBAAsB,GAAG,IAAA,mBAAO,EAAC,4BAA4B,CAAC,CAAC;AAE5E,SAAS,4BAA4B,CAAC,CAAQ,EAAE,KAAkB;IAChE,IAAI,CAAC,KAAK,EAAE;QACV,OAAO;YACL,GAAG,EAAE,gBAAgB;YACrB,OAAO,EAAE,gBAAgB;SAC1B,CAAC;KACH;IAED,IAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAAC;IAClD,IAAM,aAAa,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC;IAE1D,OAAO;QACL,GAAG,EAAE;YACH,WAAW,EAAE,wBAAwB,CAAC,SAAS,CAAC,KAAK,CAAC;YACtD,aAAa,EAAE,0BAA0B,CAAC,SAAS,CAAC,KAAK,CAAC;YAC1D,YAAY,EAAE,SAAS,CAAC,IAAI;YAC5B,YAAY,EAAE;gBACZ,KAAK,EAAE,SAAS,CAAC,CAAC;gBAClB,MAAM,EAAE,SAAS,CAAC,CAAC;aACpB;SACF;QACD,OAAO,EAAE;YACP,WAAW,EAAE,wBAAwB,CAAC,aAAa,CAAC,KAAK,CAAC;YAC1D,aAAa,EAAE,0BAA0B,CAAC,aAAa,CAAC,KAAK,CAAC;YAC9D,YAAY,EAAE,aAAa,CAAC,IAAI;YAChC,YAAY,EAAE;gBACZ,KAAK,EAAE,aAAa,CAAC,CAAC;gBACtB,MAAM,EAAE,aAAa,CAAC,CAAC;aACxB;SACF;KACF,CAAC;AACJ,CAAC;AAED,IAAM,wBAAwB,GAAG,UAAC,SAAqB;IACrD,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,CAAC,CAAC;AAEF,IAAM,0BAA0B,GAAG,UAAC,SAAqB;IACvD,IAAM,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC9D,IAAM,gBAAgB,GAAG,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC;IAEtD,8BAA8B;IAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AAClD,CAAC,CAAC;AAEF,IAAM,gBAAgB,GAAG;IACvB,WAAW,EAAE,QAAQ;IACrB,aAAa,EAAE,CAAC;IAChB,YAAY,EAAE,CAAC;IACf,YAAY,EAAE;QACZ,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;KACV;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluentui-react-native/experimental-shadow",
3
- "version": "0.2.0",
3
+ "version": "0.2.3",
4
4
  "description": "A cross-platform Shadow component using the Fluent Design System",
5
5
  "main": "lib-commonjs/index.js",
6
6
  "module": "lib/index.js",
@@ -21,6 +21,9 @@
21
21
  "url": "https://github.com/microsoft/fluentui-react-native.git",
22
22
  "directory": "packages/experimental/Shadow"
23
23
  },
24
+ "dependencies": {
25
+ "@fluentui-react-native/framework": "0.7.32"
26
+ },
24
27
  "devDependencies": {
25
28
  "@fluentui-react-native/eslint-config-rules": "^0.1.1",
26
29
  "@fluentui-react-native/test-tools": ">=0.1.1 <1.0.0",
package/src/Shadow.tsx CHANGED
@@ -1,31 +1,24 @@
1
1
  import * as React from 'react';
2
2
  import { View } from 'react-native';
3
- import { ShadowProps } from './Shadow.types';
3
+ import { ShadowProps, shadowName } from './Shadow.types';
4
+ import { useFluentTheme, mergeProps, stagedComponent } from '@fluentui-react-native/framework';
5
+ import { getShadowTokenStyleSet } from './shadowStyle';
4
6
 
5
- export const Shadow: React.FunctionComponent<ShadowProps> = (props: ShadowProps) => {
6
- const noOffset = { width: 0, height: 0 };
7
- const neutralShadowAmbient = { shadowOffset: noOffset, shadowOpacity: 0.12, shadowRadius: 2 };
8
- const neutralShadowAmbientDarker = { shadowOffset: noOffset, shadowOpacity: 0.2, shadowRadius: 8 };
9
- const ambientShadow = {
10
- '2': neutralShadowAmbient,
11
- '4': neutralShadowAmbient,
12
- '8': neutralShadowAmbient,
13
- '16': neutralShadowAmbient,
14
- '28': neutralShadowAmbientDarker,
15
- '64': neutralShadowAmbientDarker,
16
- };
17
- const keyShadow = {
18
- '2': { shadowOffset: { width: 0, height: 1 }, shadowOpacity: 0.14, shadowRadius: 2 },
19
- '4': { shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.14, shadowRadius: 4 },
20
- '8': { shadowOffset: { width: 0, height: 4 }, shadowOpacity: 0.14, shadowRadius: 8 },
21
- '16': { shadowOffset: { width: 0, height: 8 }, shadowOpacity: 0.14, shadowRadius: 16 },
22
- '28': { shadowOffset: { width: 0, height: 14 }, shadowOpacity: 0.24, shadowRadius: 28 },
23
- '64': { shadowOffset: { width: 0, height: 32 }, shadowOpacity: 0.24, shadowRadius: 64 },
7
+ export const Shadow = stagedComponent((props: ShadowProps) => {
8
+ const theme = useFluentTheme();
9
+
10
+ return (final: ShadowProps, children: React.ReactNode) => {
11
+ const shadowTokenStyleSet = getShadowTokenStyleSet(theme, props.depth);
12
+ const mergedProps = mergeProps(final, { style: shadowTokenStyleSet.key });
13
+
14
+ return (
15
+ <View style={shadowTokenStyleSet.ambient}>
16
+ <View {...mergedProps}>{children}</View>
17
+ </View>
18
+ );
24
19
  };
20
+ });
21
+
22
+ Shadow.displayName = shadowName;
25
23
 
26
- return (
27
- <View style={ambientShadow[props.depth]}>
28
- <View style={keyShadow[props.depth]}>{props.children}</View>
29
- </View>
30
- );
31
- };
24
+ export default Shadow;
@@ -1,6 +1,20 @@
1
1
  import { ViewProps } from 'react-native';
2
2
 
3
- export type ShadowDepth = '2' | '4' | '8' | '16' | '28' | '64';
3
+ export const shadowName = 'Shadow';
4
+
5
+ export type ShadowDepth =
6
+ | 'shadow2'
7
+ | 'shadow4'
8
+ | 'shadow8'
9
+ | 'shadow16'
10
+ | 'shadow28'
11
+ | 'shadow64'
12
+ | 'shadow2brand'
13
+ | 'shadow4brand'
14
+ | 'shadow8brand'
15
+ | 'shadow16brand'
16
+ | 'shadow28brand'
17
+ | 'shadow64brand';
4
18
 
5
19
  export interface ShadowProps extends ViewProps {
6
20
  depth?: ShadowDepth;
@@ -5,21 +5,153 @@ import * as renderer from 'react-test-renderer';
5
5
  import { checkRenderConsistency, checkReRender } from '@fluentui-react-native/test-tools';
6
6
 
7
7
  describe('Shadow component tests', () => {
8
- it('Shadow default', () => {
8
+ it('Shadow (depth=2)', () => {
9
9
  const tree = renderer
10
10
  .create(
11
- <Shadow>
12
- <Text>Shadow default test</Text>
11
+ <Shadow depth="shadow2">
12
+ <Text>Shadow (depth=2) </Text>
13
13
  </Shadow>,
14
14
  )
15
15
  .toJSON();
16
16
  expect(tree).toMatchSnapshot();
17
17
  });
18
18
 
19
+ it('Shadow (depth=4)', () => {
20
+ const tree = renderer
21
+ .create(
22
+ <Shadow depth="shadow4">
23
+ <Text>Shadow (depth=4)</Text>
24
+ </Shadow>,
25
+ )
26
+ .toJSON();
27
+ expect(tree).toMatchSnapshot();
28
+ });
29
+
30
+ it('Shadow (depth=8)', () => {
31
+ const tree = renderer
32
+ .create(
33
+ <Shadow depth="shadow8">
34
+ <Text>Shadow (depth=8) </Text>
35
+ </Shadow>,
36
+ )
37
+ .toJSON();
38
+ expect(tree).toMatchSnapshot();
39
+ });
40
+
41
+ it('Shadow (depth=16)', () => {
42
+ const tree = renderer
43
+ .create(
44
+ <Shadow depth="shadow16">
45
+ <Text>Shadow (depth=16)</Text>
46
+ </Shadow>,
47
+ )
48
+ .toJSON();
49
+ expect(tree).toMatchSnapshot();
50
+ });
51
+
52
+ it('Shadow (depth=28)', () => {
53
+ const tree = renderer
54
+ .create(
55
+ <Shadow depth="shadow28">
56
+ <Text>Shadow (depth=28) </Text>
57
+ </Shadow>,
58
+ )
59
+ .toJSON();
60
+ expect(tree).toMatchSnapshot();
61
+ });
62
+
63
+ it('Shadow (depth=64)', () => {
64
+ const tree = renderer
65
+ .create(
66
+ <Shadow depth="shadow64">
67
+ <Text>Shadow (depth=64)</Text>
68
+ </Shadow>,
69
+ )
70
+ .toJSON();
71
+ expect(tree).toMatchSnapshot();
72
+ });
73
+
74
+ it('Brand shadow (depth=2)', () => {
75
+ const tree = renderer
76
+ .create(
77
+ <Shadow depth="shadow2brand">
78
+ <Text>Brand shadow (depth=2)</Text>
79
+ </Shadow>,
80
+ )
81
+ .toJSON();
82
+ expect(tree).toMatchSnapshot();
83
+ });
84
+
85
+ it('Brand shadow (depth=4)', () => {
86
+ const tree = renderer
87
+ .create(
88
+ <Shadow depth="shadow4brand">
89
+ <Text>Brand shadow (depth=4)</Text>
90
+ </Shadow>,
91
+ )
92
+ .toJSON();
93
+ expect(tree).toMatchSnapshot();
94
+ });
95
+
96
+ it('Brand shadow (depth=8)', () => {
97
+ const tree = renderer
98
+ .create(
99
+ <Shadow depth="shadow8brand">
100
+ <Text>Brand shadow (depth=8)</Text>
101
+ </Shadow>,
102
+ )
103
+ .toJSON();
104
+ expect(tree).toMatchSnapshot();
105
+ });
106
+
107
+ it('Brand shadow (depth=16)', () => {
108
+ const tree = renderer
109
+ .create(
110
+ <Shadow depth="shadow16brand">
111
+ <Text>Brand shadow (depth=16)</Text>
112
+ </Shadow>,
113
+ )
114
+ .toJSON();
115
+ expect(tree).toMatchSnapshot();
116
+ });
117
+
118
+ it('Brand shadow (depth=28)', () => {
119
+ const tree = renderer
120
+ .create(
121
+ <Shadow depth="shadow28brand">
122
+ <Text>Brand shadow (depth=28)</Text>
123
+ </Shadow>,
124
+ )
125
+ .toJSON();
126
+ expect(tree).toMatchSnapshot();
127
+ });
128
+
129
+ it('Brand shadow (depth=64)', () => {
130
+ const tree = renderer
131
+ .create(
132
+ <Shadow depth="shadow64brand">
133
+ <Text>Brand shadow (depth=64)</Text>
134
+ </Shadow>,
135
+ )
136
+ .toJSON();
137
+ expect(tree).toMatchSnapshot();
138
+ });
139
+
140
+ it('Shadow simple rendering does not invalidate styling', () => {
141
+ checkRenderConsistency(
142
+ () => (
143
+ <Shadow depth="shadow2">
144
+ <Text>Shadow render test</Text>
145
+ </Shadow>
146
+ ),
147
+ 2,
148
+ );
149
+ });
150
+
19
151
  it('Shadow simple rendering does not invalidate styling', () => {
20
152
  checkRenderConsistency(
21
153
  () => (
22
- <Shadow>
154
+ <Shadow depth="shadow2">
23
155
  <Text>Shadow render test</Text>
24
156
  </Shadow>
25
157
  ),
@@ -30,7 +162,7 @@ describe('Shadow component tests', () => {
30
162
  it('Shadow re-renders correctly', () => {
31
163
  checkReRender(
32
164
  () => (
33
- <Shadow>
165
+ <Shadow depth="shadow2">
34
166
  <Text>Shadow render twice test</Text>
35
167
  </Shadow>
36
168
  ),