@fluentui-react-native/experimental-shimmer 0.8.12 → 0.8.14
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 +78 -1
- package/CHANGELOG.md +22 -2
- package/SPEC.md +324 -0
- package/assets/dark_shimmer_android.png +0 -0
- package/assets/dark_shimmer_win32.png +0 -0
- package/assets/light_shimmer_android.png +0 -0
- package/assets/light_shimmer_win32.png +0 -0
- package/jest.config.js +2 -0
- package/lib/Shimmer.d.ts.map +1 -1
- package/lib/Shimmer.js +27 -30
- package/lib/Shimmer.js.map +1 -1
- package/lib/Shimmer.styling.d.ts.map +1 -1
- package/lib/Shimmer.styling.js +5 -16
- package/lib/Shimmer.styling.js.map +1 -1
- package/lib/Shimmer.styling.win32.d.ts +1 -2
- package/lib/Shimmer.styling.win32.d.ts.map +1 -1
- package/lib/Shimmer.styling.win32.js +1 -13
- package/lib/Shimmer.styling.win32.js.map +1 -1
- package/lib/Shimmer.test.d.ts +2 -0
- package/lib/Shimmer.test.d.ts.map +1 -0
- package/lib/Shimmer.test.js +48 -0
- package/lib/Shimmer.test.js.map +1 -0
- package/lib/Shimmer.types.d.ts +22 -10
- package/lib/Shimmer.types.d.ts.map +1 -1
- package/lib/Shimmer.types.win32.d.ts +1 -1
- package/lib/Shimmer.types.win32.d.ts.map +1 -1
- package/lib/Shimmer.win32.js +1 -1
- package/lib/Shimmer.win32.js.map +1 -1
- package/lib/ShimmerTokens.android.d.ts +5 -0
- package/lib/ShimmerTokens.android.d.ts.map +1 -0
- package/lib/ShimmerTokens.android.js +12 -0
- package/lib/ShimmerTokens.android.js.map +1 -0
- package/lib/ShimmerTokens.d.ts +5 -0
- package/lib/ShimmerTokens.d.ts.map +1 -0
- package/lib/ShimmerTokens.js +13 -0
- package/lib/ShimmerTokens.js.map +1 -0
- package/lib/ShimmerTokens.win32.d.ts +5 -0
- package/lib/ShimmerTokens.win32.d.ts.map +1 -0
- package/lib/ShimmerTokens.win32.js +14 -0
- package/lib/ShimmerTokens.win32.js.map +1 -0
- package/lib-commonjs/Shimmer.d.ts.map +1 -1
- package/lib-commonjs/Shimmer.js +27 -30
- package/lib-commonjs/Shimmer.js.map +1 -1
- package/lib-commonjs/Shimmer.styling.d.ts.map +1 -1
- package/lib-commonjs/Shimmer.styling.js +5 -16
- package/lib-commonjs/Shimmer.styling.js.map +1 -1
- package/lib-commonjs/Shimmer.styling.win32.d.ts +1 -2
- package/lib-commonjs/Shimmer.styling.win32.d.ts.map +1 -1
- package/lib-commonjs/Shimmer.styling.win32.js +3 -16
- package/lib-commonjs/Shimmer.styling.win32.js.map +1 -1
- package/lib-commonjs/Shimmer.test.d.ts +2 -0
- package/lib-commonjs/Shimmer.test.d.ts.map +1 -0
- package/lib-commonjs/Shimmer.test.js +69 -0
- package/lib-commonjs/Shimmer.test.js.map +1 -0
- package/lib-commonjs/Shimmer.types.d.ts +22 -10
- package/lib-commonjs/Shimmer.types.d.ts.map +1 -1
- package/lib-commonjs/Shimmer.types.win32.d.ts +1 -1
- package/lib-commonjs/Shimmer.types.win32.d.ts.map +1 -1
- package/lib-commonjs/Shimmer.win32.js +1 -1
- package/lib-commonjs/Shimmer.win32.js.map +1 -1
- package/lib-commonjs/ShimmerTokens.android.d.ts +5 -0
- package/lib-commonjs/ShimmerTokens.android.d.ts.map +1 -0
- package/lib-commonjs/ShimmerTokens.android.js +16 -0
- package/lib-commonjs/ShimmerTokens.android.js.map +1 -0
- package/lib-commonjs/ShimmerTokens.d.ts +5 -0
- package/lib-commonjs/ShimmerTokens.d.ts.map +1 -0
- package/lib-commonjs/ShimmerTokens.js +17 -0
- package/lib-commonjs/ShimmerTokens.js.map +1 -0
- package/lib-commonjs/ShimmerTokens.win32.d.ts +5 -0
- package/lib-commonjs/ShimmerTokens.win32.d.ts.map +1 -0
- package/lib-commonjs/ShimmerTokens.win32.js +18 -0
- package/lib-commonjs/ShimmerTokens.win32.js.map +1 -0
- package/package.json +9 -3
- package/src/Shimmer.styling.ts +6 -17
- package/src/Shimmer.styling.win32.ts +2 -14
- package/src/Shimmer.test.tsx +53 -0
- package/src/Shimmer.tsx +12 -17
- package/src/Shimmer.types.ts +22 -10
- package/src/Shimmer.types.win32.ts +1 -1
- package/src/Shimmer.win32.tsx +2 -2
- package/src/ShimmerTokens.android.ts +14 -0
- package/src/ShimmerTokens.ts +15 -0
- package/src/ShimmerTokens.win32.ts +16 -0
- package/src/__snapshots__/Shimmer.test.tsx.snap +249 -0
- package/tsconfig.json +2 -1
|
@@ -72,19 +72,25 @@ export interface ShimmerRectElement {
|
|
|
72
72
|
export declare type ShimmerElementTypes = ShimmerCircleElement | ShimmerRectElement;
|
|
73
73
|
export interface ShimmerTokens extends IBackgroundColorTokens {
|
|
74
74
|
/**
|
|
75
|
-
* Specifies the Shimmer effect angle in degrees (produced by a gradient)
|
|
76
|
-
*
|
|
75
|
+
* Specifies the Shimmer effect angle in degrees (produced by a gradient).
|
|
76
|
+
*
|
|
77
|
+
* @defaultValue 45 on @platform Android
|
|
78
|
+
* @defaultValue 0 on other platforms.
|
|
77
79
|
*/
|
|
78
80
|
angle?: number;
|
|
79
81
|
/**
|
|
80
|
-
* Specifies the animation delay time in milliseconds
|
|
81
|
-
*
|
|
82
|
+
* Specifies the animation delay time in milliseconds.
|
|
83
|
+
*
|
|
84
|
+
* @defaultValue 500 on @platform win32
|
|
85
|
+
* @defaultValue 0 on other platforms.
|
|
82
86
|
*/
|
|
83
87
|
delay?: number;
|
|
84
88
|
/**
|
|
85
|
-
* Specifies the time required to traverse the control in milliseconds
|
|
89
|
+
* Specifies the time required to traverse the control in milliseconds.
|
|
86
90
|
*
|
|
87
|
-
* @defaultValue
|
|
91
|
+
* @defaultValue 1000 on @platform Android
|
|
92
|
+
* @defaultValue 2000 on @platform win32
|
|
93
|
+
* @defaultValue 7000 on other platforms.
|
|
88
94
|
*/
|
|
89
95
|
duration?: number;
|
|
90
96
|
/**
|
|
@@ -100,30 +106,36 @@ export interface ShimmerTokens extends IBackgroundColorTokens {
|
|
|
100
106
|
/**
|
|
101
107
|
* Color you see when the shimmer wave is not animating.
|
|
102
108
|
*
|
|
103
|
-
* @defaultValue theme.colors.
|
|
109
|
+
* @defaultValue theme.colors.neutralStencil1 on @platform Android
|
|
110
|
+
* @defaultValue theme.colors.bodyFrameDivider on @platform win32
|
|
111
|
+
* @defaultValue #E1E1E1/#404040 for light/dark theme on other platforms.
|
|
104
112
|
*/
|
|
105
113
|
shimmerColor?: ColorValue;
|
|
106
114
|
/**
|
|
107
115
|
* Defines the tip color of the wave which has a linear gradient.
|
|
108
116
|
* from shimmerColor to shimmerWaveColor to shimmerColor.
|
|
109
117
|
*
|
|
110
|
-
* @defaultValue
|
|
118
|
+
* @defaultValue theme.colors.neutralStencil2 on @platform Android
|
|
119
|
+
* @defaultValue #E1E1E1 on @platform win32
|
|
120
|
+
* @defaultValue white/black for light/dark theme on other platforms.
|
|
111
121
|
*/
|
|
112
122
|
shimmerWaveColor?: ColorValue;
|
|
113
123
|
/**
|
|
114
124
|
* Width of the Shimmer wave.
|
|
125
|
+
*
|
|
115
126
|
* @defaultValue '100%' of the 'width' property
|
|
127
|
+
* @platform win32
|
|
116
128
|
*/
|
|
117
129
|
shimmerWaveWidth?: number | string;
|
|
118
130
|
}
|
|
119
|
-
export interface ShimmerSlotProps
|
|
131
|
+
export interface ShimmerSlotProps {
|
|
120
132
|
root: SvgProps;
|
|
121
133
|
}
|
|
122
134
|
export interface ShimmerProps extends ViewProps, ShimmerTokens {
|
|
123
135
|
/**
|
|
124
136
|
* Shimmer shapes that define the masking effect of the Shimmer control.
|
|
125
137
|
*/
|
|
126
|
-
elements
|
|
138
|
+
elements: Array<ShimmerElementTypes>;
|
|
127
139
|
}
|
|
128
140
|
export interface ShimmerType {
|
|
129
141
|
props: ShimmerProps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shimmer.types.d.ts","sourceRoot":"","sources":["../src/Shimmer.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;IAEf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IAEH;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IAEH;;OAEG;IACH,CAAC,EAAE,MAAM,CAAC;IAEV;;OAEG;IACH,CAAC,EAAE,MAAM,CAAC;CACX;AAED,oBAAY,mBAAmB,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;AAE5E,MAAM,WAAW,aAAc,SAAQ,sBAAsB;IAC3D
|
|
1
|
+
{"version":3,"file":"Shimmer.types.d.ts","sourceRoot":"","sources":["../src/Shimmer.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,eAAO,MAAM,WAAW,YAAY,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,IAAI,EAAE,QAAQ,CAAC;IAEf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IAEH;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IAEH;;OAEG;IACH,CAAC,EAAE,MAAM,CAAC;IAEV;;OAEG;IACH,CAAC,EAAE,MAAM,CAAC;CACX;AAED,oBAAY,mBAAmB,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;AAE5E,MAAM,WAAW,aAAc,SAAQ,sBAAsB;IAC3D;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;IAE1B;;;;;;;OAOG;IACH,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAE9B;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,MAAM,WAAW,YAAa,SAAQ,SAAS,EAAE,aAAa;IAC5D;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;CACvB"}
|
|
@@ -22,7 +22,7 @@ export interface ShimmerWaveProps extends ShimmerTokens {
|
|
|
22
22
|
viewBoxHeight: number;
|
|
23
23
|
viewBoxWidth: number;
|
|
24
24
|
}
|
|
25
|
-
export interface ShimmerSlotProps
|
|
25
|
+
export interface ShimmerSlotProps {
|
|
26
26
|
root: ViewProps;
|
|
27
27
|
clippingMask: ClippingMaskProps;
|
|
28
28
|
shimmerWave: ShimmerWaveProps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shimmer.types.win32.d.ts","sourceRoot":"","sources":["../src/Shimmer.types.win32.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE9D,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"Shimmer.types.win32.d.ts","sourceRoot":"","sources":["../src/Shimmer.types.win32.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE9D,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,YAAY,EAAE,iBAAiB,CAAC;IAChC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,oBAAoB,EAAE,gBAAgB,CAAC;CACxC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,YAAY,CAAC;IACpB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;CACvB"}
|
|
@@ -80,9 +80,9 @@ exports.Shimmer = (0, framework_1.compose)(__assign(__assign({ displayName: Shim
|
|
|
80
80
|
shimmerWave: wave,
|
|
81
81
|
shimmerWaveContainer: waveContainer,
|
|
82
82
|
}, useRender: function (props, useSlots) {
|
|
83
|
+
var Slots = useSlots(props);
|
|
83
84
|
return function (rest) {
|
|
84
85
|
var _a = (0, framework_1.mergeProps)(props, rest), elements = _a.elements, mergedProps = __rest(_a, ["elements"]);
|
|
85
|
-
var Slots = useSlots(mergedProps);
|
|
86
86
|
/**
|
|
87
87
|
* Generate a clip path from the provided element shapes, with their path parameter strings generated from their corresponding properties.
|
|
88
88
|
* Ideally this would be better possible with functions from the shape elements themselves and not to rely on our own calculations.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Shimmer.win32.js","sourceRoot":"","sources":["../src/Shimmer.win32.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Shimmer.win32.js","sourceRoot":"","sources":["../src/Shimmer.win32.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Theme } from '@fluentui-react-native/framework';
|
|
2
|
+
import { ShimmerTokens } from './Shimmer.types';
|
|
3
|
+
import { TokenSettings } from '@fluentui-react-native/use-styling';
|
|
4
|
+
export declare const defaultShimmerTokens: TokenSettings<ShimmerTokens, Theme>;
|
|
5
|
+
//# sourceMappingURL=ShimmerTokens.android.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShimmerTokens.android.d.ts","sourceRoot":"","sources":["../src/ShimmerTokens.android.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAEnE,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,aAAa,EAAE,KAAK,CAShD,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultShimmerTokens = void 0;
|
|
4
|
+
var defaultShimmerTokens = function (theme) {
|
|
5
|
+
return ({
|
|
6
|
+
angle: 45,
|
|
7
|
+
delay: 0,
|
|
8
|
+
duration: 1000,
|
|
9
|
+
shimmerColor: theme.colors.neutralStencil1,
|
|
10
|
+
shimmerColorOpacity: 1,
|
|
11
|
+
shimmerWaveColor: theme.colors.neutralStencil2,
|
|
12
|
+
shimmerWaveColorOpacity: 1,
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
exports.defaultShimmerTokens = defaultShimmerTokens;
|
|
16
|
+
//# sourceMappingURL=ShimmerTokens.android.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShimmerTokens.android.js","sourceRoot":"","sources":["../src/ShimmerTokens.android.ts"],"names":[],"mappings":";;;AAIO,IAAM,oBAAoB,GAAwC,UAAC,KAAY;IACpF,OAAA,CAAC;QACC,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,eAAe;QAC1C,mBAAmB,EAAE,CAAC;QACtB,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC,eAAe;QAC9C,uBAAuB,EAAE,CAAC;KACT,CAAA;AARnB,CAQmB,CAAC;AATT,QAAA,oBAAoB,wBASX"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Theme } from '@fluentui-react-native/framework';
|
|
2
|
+
import { ShimmerTokens } from './Shimmer.types';
|
|
3
|
+
import { TokenSettings } from '@fluentui-react-native/use-styling';
|
|
4
|
+
export declare const defaultShimmerTokens: TokenSettings<ShimmerTokens, Theme>;
|
|
5
|
+
//# sourceMappingURL=ShimmerTokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShimmerTokens.d.ts","sourceRoot":"","sources":["../src/ShimmerTokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAGnE,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,aAAa,EAAE,KAAK,CAShD,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultShimmerTokens = void 0;
|
|
4
|
+
var theming_utils_1 = require("@fluentui-react-native/theming-utils");
|
|
5
|
+
var defaultShimmerTokens = function (theme) {
|
|
6
|
+
return ({
|
|
7
|
+
angle: 0,
|
|
8
|
+
delay: 0,
|
|
9
|
+
duration: 7000,
|
|
10
|
+
shimmerColor: (0, theming_utils_1.getCurrentAppearance)(theme.host.appearance, 'light') === 'light' ? '#E1E1E1' : '#404040',
|
|
11
|
+
shimmerColorOpacity: 1,
|
|
12
|
+
shimmerWaveColor: (0, theming_utils_1.getCurrentAppearance)(theme.host.appearance, 'light') === 'light' ? 'white' : 'black',
|
|
13
|
+
shimmerWaveColorOpacity: 1,
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
exports.defaultShimmerTokens = defaultShimmerTokens;
|
|
17
|
+
//# sourceMappingURL=ShimmerTokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShimmerTokens.js","sourceRoot":"","sources":["../src/ShimmerTokens.ts"],"names":[],"mappings":";;;AAGA,sEAA4E;AAErE,IAAM,oBAAoB,GAAwC,UAAC,KAAY;IACpF,OAAA,CAAC;QACC,KAAK,EAAE,CAAC;QACR,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAA,oCAAoB,EAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACtG,mBAAmB,EAAE,CAAC;QACtB,gBAAgB,EAAE,IAAA,oCAAoB,EAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;QACtG,uBAAuB,EAAE,CAAC;KACT,CAAA;AARnB,CAQmB,CAAC;AATT,QAAA,oBAAoB,wBASX"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Theme } from '@fluentui-react-native/framework';
|
|
2
|
+
import { ShimmerTokens } from './Shimmer.types';
|
|
3
|
+
import { TokenSettings } from '@fluentui-react-native/use-styling';
|
|
4
|
+
export declare const defaultShimmerTokens: TokenSettings<ShimmerTokens, Theme>;
|
|
5
|
+
//# sourceMappingURL=ShimmerTokens.win32.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShimmerTokens.win32.d.ts","sourceRoot":"","sources":["../src/ShimmerTokens.win32.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kCAAkC,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAEnE,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,aAAa,EAAE,KAAK,CAWhD,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultShimmerTokens = void 0;
|
|
4
|
+
var defaultShimmerTokens = function (theme) {
|
|
5
|
+
return ({
|
|
6
|
+
angle: 0,
|
|
7
|
+
backgroundColor: theme.colors.background,
|
|
8
|
+
delay: 500,
|
|
9
|
+
duration: 2000,
|
|
10
|
+
shimmerColor: theme.colors.bodyFrameDivider,
|
|
11
|
+
shimmerColorOpacity: 1,
|
|
12
|
+
shimmerWaveColor: '#E1E1E1',
|
|
13
|
+
shimmerWaveColorOpacity: 1,
|
|
14
|
+
shimmerWaveWidth: '100%',
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
exports.defaultShimmerTokens = defaultShimmerTokens;
|
|
18
|
+
//# sourceMappingURL=ShimmerTokens.win32.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShimmerTokens.win32.js","sourceRoot":"","sources":["../src/ShimmerTokens.win32.ts"],"names":[],"mappings":";;;AAIO,IAAM,oBAAoB,GAAwC,UAAC,KAAY;IACpF,OAAA,CAAC;QACC,KAAK,EAAE,CAAC;QACR,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,UAAU;QACxC,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,gBAAgB;QAC3C,mBAAmB,EAAE,CAAC;QACtB,gBAAgB,EAAE,SAAS;QAC3B,uBAAuB,EAAE,CAAC;QAC1B,gBAAgB,EAAE,MAAM;KACP,CAAA;AAVnB,CAUmB,CAAC;AAXT,QAAA,oBAAoB,wBAWX"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluentui-react-native/experimental-shimmer",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.14",
|
|
4
4
|
"description": "A cross-platform Fluent Shimmer component",
|
|
5
5
|
"main": "lib-commonjs/index.js",
|
|
6
6
|
"module": "lib/index.js",
|
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
"build": "fluentui-scripts build",
|
|
10
10
|
"just": "fluentui-scripts",
|
|
11
11
|
"clean": "fluentui-scripts clean",
|
|
12
|
+
"depcheck": "fluentui-scripts depcheck",
|
|
13
|
+
"lint": "fluentui-scripts eslint",
|
|
14
|
+
"test": "fluentui-scripts jest",
|
|
12
15
|
"update-snapshots": "fluentui-scripts jest -u",
|
|
13
16
|
"prettier": "fluentui-scripts prettier",
|
|
14
17
|
"prettier-fix": "fluentui-scripts prettier --fix true"
|
|
@@ -19,8 +22,11 @@
|
|
|
19
22
|
"directory": "packages/experimental/Shimmer"
|
|
20
23
|
},
|
|
21
24
|
"dependencies": {
|
|
22
|
-
"@fluentui-react-native/framework": "0.8.
|
|
23
|
-
"@fluentui-react-native/tokens": ">=0.20.
|
|
25
|
+
"@fluentui-react-native/framework": "0.8.37",
|
|
26
|
+
"@fluentui-react-native/tokens": ">=0.20.6 <1.0.0",
|
|
27
|
+
"@fluentui-react-native/theming-utils": ">=0.23.1 <1.0.0",
|
|
28
|
+
"@fluentui-react-native/component-cache": "^1.4.2",
|
|
29
|
+
"@fluentui-react-native/use-styling": "^0.9.1",
|
|
24
30
|
"react-native-svg": "12.5.0"
|
|
25
31
|
},
|
|
26
32
|
"devDependencies": {
|
package/src/Shimmer.styling.ts
CHANGED
|
@@ -1,31 +1,20 @@
|
|
|
1
|
-
import { UseStylingOptions, buildProps
|
|
2
|
-
import { getCurrentAppearance } from '@fluentui-react-native/theming-utils';
|
|
1
|
+
import { UseStylingOptions, buildProps } from '@fluentui-react-native/framework';
|
|
3
2
|
import { shimmerName, ShimmerProps, ShimmerSlotProps, ShimmerTokens } from './Shimmer.types';
|
|
3
|
+
import { defaultShimmerTokens } from './ShimmerTokens';
|
|
4
4
|
|
|
5
5
|
export const stylingSettings: UseStylingOptions<ShimmerProps, ShimmerSlotProps, ShimmerTokens> = {
|
|
6
|
-
tokens: [
|
|
7
|
-
() => ({
|
|
8
|
-
angle: 0,
|
|
9
|
-
delay: 0,
|
|
10
|
-
duration: 7000,
|
|
11
|
-
shimmerColor: '#E1E1E1', // Baseline component is the light mode color
|
|
12
|
-
shimmerColorOpacity: 1,
|
|
13
|
-
shimmerWaveColor: 'white', // Baseline component is the light mode color
|
|
14
|
-
shimmerWaveColorOpacity: 1,
|
|
15
|
-
}),
|
|
16
|
-
shimmerName,
|
|
17
|
-
],
|
|
6
|
+
tokens: [defaultShimmerTokens, shimmerName],
|
|
18
7
|
slotProps: {
|
|
19
8
|
root: buildProps(
|
|
20
|
-
(tokens: ShimmerTokens
|
|
9
|
+
(tokens: ShimmerTokens) => ({
|
|
21
10
|
accessibilityRole: 'progressbar',
|
|
22
11
|
accessible: true,
|
|
23
12
|
angle: tokens.angle,
|
|
24
13
|
delay: tokens.delay,
|
|
25
14
|
duration: tokens.duration,
|
|
26
|
-
shimmerColor:
|
|
15
|
+
shimmerColor: tokens.shimmerColor,
|
|
27
16
|
shimmerColorOpacity: tokens.shimmerColorOpacity,
|
|
28
|
-
shimmerWaveColor:
|
|
17
|
+
shimmerWaveColor: tokens.shimmerWaveColor,
|
|
29
18
|
shimmerWaveColorOpacity: tokens.shimmerWaveColorOpacity,
|
|
30
19
|
}),
|
|
31
20
|
['angle', 'delay', 'duration', 'shimmerColor', 'shimmerColorOpacity', 'shimmerWaveColor', 'shimmerWaveColorOpacity'],
|
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
import { UseStylingOptions, buildProps
|
|
1
|
+
import { UseStylingOptions, buildProps } from '@fluentui-react-native/framework';
|
|
2
2
|
import { shimmerName, ShimmerProps, ShimmerTokens } from './Shimmer.types';
|
|
3
3
|
import { ShimmerSlotProps } from './Shimmer.types.win32';
|
|
4
|
-
|
|
5
|
-
export const defaultShimmerTokens: TokenSettings<ShimmerTokens> = (theme: Theme) =>
|
|
6
|
-
({
|
|
7
|
-
angle: 0,
|
|
8
|
-
backgroundColor: theme.colors.background,
|
|
9
|
-
delay: 500,
|
|
10
|
-
duration: 2000,
|
|
11
|
-
shimmerColor: theme.colors.bodyFrameDivider,
|
|
12
|
-
shimmerColorOpacity: 1,
|
|
13
|
-
shimmerWaveColor: '#E1E1E1',
|
|
14
|
-
shimmerWaveColorOpacity: 1,
|
|
15
|
-
shimmerWaveWidth: '100%',
|
|
16
|
-
} as ShimmerTokens);
|
|
4
|
+
import { defaultShimmerTokens } from './ShimmerTokens.win32';
|
|
17
5
|
|
|
18
6
|
/**
|
|
19
7
|
* tell the styling hook how to build up the tokens
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import * as renderer from 'react-test-renderer';
|
|
3
|
+
import { Shimmer } from './Shimmer';
|
|
4
|
+
import { ShimmerCircleElement, ShimmerRectElement } from './Shimmer.types';
|
|
5
|
+
|
|
6
|
+
// mocks out setTimeout and other timer functions with mock functions, test will fail without this as we're using Animated API
|
|
7
|
+
jest.useFakeTimers();
|
|
8
|
+
|
|
9
|
+
function shimmerRects(): Array<ShimmerRectElement | ShimmerCircleElement> {
|
|
10
|
+
return [
|
|
11
|
+
{
|
|
12
|
+
type: 'rect',
|
|
13
|
+
borderRadiusX: 3,
|
|
14
|
+
borderRadiusY: 3,
|
|
15
|
+
width: 100,
|
|
16
|
+
height: 20,
|
|
17
|
+
x: 90,
|
|
18
|
+
y: 70,
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
type: 'rect',
|
|
22
|
+
borderRadiusX: 3,
|
|
23
|
+
borderRadiusY: 3,
|
|
24
|
+
width: 150,
|
|
25
|
+
height: 20,
|
|
26
|
+
x: 90,
|
|
27
|
+
y: 42,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
type: 'rect',
|
|
31
|
+
borderRadiusX: 3,
|
|
32
|
+
borderRadiusY: 3,
|
|
33
|
+
width: 200,
|
|
34
|
+
height: 20,
|
|
35
|
+
x: 90,
|
|
36
|
+
y: 15,
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const style = { width: 300, height: 100 };
|
|
42
|
+
|
|
43
|
+
describe('Shimmer component tests', () => {
|
|
44
|
+
it('Shimmer default', () => {
|
|
45
|
+
const tree = renderer.create(<Shimmer elements={shimmerRects()} />).toJSON();
|
|
46
|
+
expect(tree).toMatchSnapshot();
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
it('Shimmer with style prop', () => {
|
|
50
|
+
const tree = renderer.create(<Shimmer elements={shimmerRects()} style={style} />).toJSON();
|
|
51
|
+
expect(tree).toMatchSnapshot();
|
|
52
|
+
});
|
|
53
|
+
});
|
package/src/Shimmer.tsx
CHANGED
|
@@ -21,8 +21,8 @@ export const Shimmer = compose<ShimmerType>({
|
|
|
21
21
|
const memoizedShimmerData = useMemo(
|
|
22
22
|
() => ({
|
|
23
23
|
angle: props.angle ? props.angle : tokens['angle'],
|
|
24
|
-
containerWidth: props?.style['width'] ? props?.style['width'] : '100%',
|
|
25
|
-
containerHeight: props?.style['height'] ? props?.style['height'] : '100%',
|
|
24
|
+
containerWidth: props?.style?.['width'] ? props?.style['width'] : '100%',
|
|
25
|
+
containerHeight: props?.style?.['height'] ? props?.style['height'] : '100%',
|
|
26
26
|
delay: props.delay ? props.delay : tokens['delay'],
|
|
27
27
|
duration: props.duration ? props.duration : tokens['duration'],
|
|
28
28
|
shimmerColor: props.shimmerColor ? props.shimmerColor : tokens['shimmerColor'],
|
|
@@ -42,27 +42,22 @@ export const Shimmer = compose<ShimmerType>({
|
|
|
42
42
|
],
|
|
43
43
|
);
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
*
|
|
49
|
-
* For Animated.loop() to work with the native driver, React Native needs this fix.
|
|
50
|
-
* It's only available in React Native 0.66+, and React Native macOS 0.62+
|
|
51
|
-
* To workaround this, let's just rerun the loop everytime the animation finishes
|
|
45
|
+
/* The shimmer animation is implemented using a LinearGradient which travels from left to right.
|
|
46
|
+
* Different angles are handled by rotating this gradient.
|
|
47
|
+
* The startValue is used to control the start position of the gradient animation, it is set as -1 to make sure it is starts off the screen for any angle.
|
|
48
|
+
* Similarly the endValue is set to 2 to make sure the gradient animation exits the entire screen for any angle.
|
|
52
49
|
*/
|
|
50
|
+
const startValue = useRef(new Animated.Value(-1)).current;
|
|
53
51
|
const shimmerAnimation = useCallback(() => {
|
|
54
|
-
Animated.
|
|
52
|
+
Animated.loop(
|
|
55
53
|
Animated.timing(startValue, {
|
|
56
|
-
toValue:
|
|
54
|
+
toValue: 2,
|
|
57
55
|
duration: memoizedShimmerData.duration,
|
|
58
56
|
delay: memoizedShimmerData.delay,
|
|
59
57
|
useNativeDriver: true,
|
|
60
58
|
}),
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
shimmerAnimation();
|
|
64
|
-
});
|
|
65
|
-
}, [memoizedShimmerData.duration, memoizedShimmerData.delay]);
|
|
59
|
+
).start();
|
|
60
|
+
}, [memoizedShimmerData.delay, memoizedShimmerData.duration]);
|
|
66
61
|
|
|
67
62
|
useEffect(() => {
|
|
68
63
|
shimmerAnimation();
|
|
@@ -101,7 +96,7 @@ export const Shimmer = compose<ShimmerType>({
|
|
|
101
96
|
return (
|
|
102
97
|
<Slots.root {...mergedProps}>
|
|
103
98
|
<Defs>
|
|
104
|
-
<AnimatedLinearGradient id="gradient" x1={startValue}
|
|
99
|
+
<AnimatedLinearGradient id="gradient" x1={startValue} x2="-1" gradientTransform={`rotate(${memoizedShimmerData.angle})`}>
|
|
105
100
|
<Stop offset="10%" stopColor={memoizedShimmerData.shimmerColor} stopOpacity={memoizedShimmerData.shimmerColorOpacity} />
|
|
106
101
|
<Stop
|
|
107
102
|
offset="20%"
|
package/src/Shimmer.types.ts
CHANGED
|
@@ -88,21 +88,27 @@ export type ShimmerElementTypes = ShimmerCircleElement | ShimmerRectElement;
|
|
|
88
88
|
|
|
89
89
|
export interface ShimmerTokens extends IBackgroundColorTokens {
|
|
90
90
|
/**
|
|
91
|
-
* Specifies the Shimmer effect angle in degrees (produced by a gradient)
|
|
92
|
-
*
|
|
91
|
+
* Specifies the Shimmer effect angle in degrees (produced by a gradient).
|
|
92
|
+
*
|
|
93
|
+
* @defaultValue 45 on @platform Android
|
|
94
|
+
* @defaultValue 0 on other platforms.
|
|
93
95
|
*/
|
|
94
96
|
angle?: number;
|
|
95
97
|
|
|
96
98
|
/**
|
|
97
|
-
* Specifies the animation delay time in milliseconds
|
|
98
|
-
*
|
|
99
|
+
* Specifies the animation delay time in milliseconds.
|
|
100
|
+
*
|
|
101
|
+
* @defaultValue 500 on @platform win32
|
|
102
|
+
* @defaultValue 0 on other platforms.
|
|
99
103
|
*/
|
|
100
104
|
delay?: number;
|
|
101
105
|
|
|
102
106
|
/**
|
|
103
|
-
* Specifies the time required to traverse the control in milliseconds
|
|
107
|
+
* Specifies the time required to traverse the control in milliseconds.
|
|
104
108
|
*
|
|
105
|
-
* @defaultValue
|
|
109
|
+
* @defaultValue 1000 on @platform Android
|
|
110
|
+
* @defaultValue 2000 on @platform win32
|
|
111
|
+
* @defaultValue 7000 on other platforms.
|
|
106
112
|
*/
|
|
107
113
|
duration?: number;
|
|
108
114
|
|
|
@@ -121,7 +127,9 @@ export interface ShimmerTokens extends IBackgroundColorTokens {
|
|
|
121
127
|
/**
|
|
122
128
|
* Color you see when the shimmer wave is not animating.
|
|
123
129
|
*
|
|
124
|
-
* @defaultValue theme.colors.
|
|
130
|
+
* @defaultValue theme.colors.neutralStencil1 on @platform Android
|
|
131
|
+
* @defaultValue theme.colors.bodyFrameDivider on @platform win32
|
|
132
|
+
* @defaultValue #E1E1E1/#404040 for light/dark theme on other platforms.
|
|
125
133
|
*/
|
|
126
134
|
shimmerColor?: ColorValue;
|
|
127
135
|
|
|
@@ -129,18 +137,22 @@ export interface ShimmerTokens extends IBackgroundColorTokens {
|
|
|
129
137
|
* Defines the tip color of the wave which has a linear gradient.
|
|
130
138
|
* from shimmerColor to shimmerWaveColor to shimmerColor.
|
|
131
139
|
*
|
|
132
|
-
* @defaultValue
|
|
140
|
+
* @defaultValue theme.colors.neutralStencil2 on @platform Android
|
|
141
|
+
* @defaultValue #E1E1E1 on @platform win32
|
|
142
|
+
* @defaultValue white/black for light/dark theme on other platforms.
|
|
133
143
|
*/
|
|
134
144
|
shimmerWaveColor?: ColorValue;
|
|
135
145
|
|
|
136
146
|
/**
|
|
137
147
|
* Width of the Shimmer wave.
|
|
148
|
+
*
|
|
138
149
|
* @defaultValue '100%' of the 'width' property
|
|
150
|
+
* @platform win32
|
|
139
151
|
*/
|
|
140
152
|
shimmerWaveWidth?: number | string;
|
|
141
153
|
}
|
|
142
154
|
|
|
143
|
-
export interface ShimmerSlotProps
|
|
155
|
+
export interface ShimmerSlotProps {
|
|
144
156
|
root: SvgProps;
|
|
145
157
|
}
|
|
146
158
|
|
|
@@ -148,7 +160,7 @@ export interface ShimmerProps extends ViewProps, ShimmerTokens {
|
|
|
148
160
|
/**
|
|
149
161
|
* Shimmer shapes that define the masking effect of the Shimmer control.
|
|
150
162
|
*/
|
|
151
|
-
elements
|
|
163
|
+
elements: Array<ShimmerElementTypes>;
|
|
152
164
|
}
|
|
153
165
|
|
|
154
166
|
export interface ShimmerType {
|
|
@@ -26,7 +26,7 @@ export interface ShimmerWaveProps extends ShimmerTokens {
|
|
|
26
26
|
viewBoxWidth: number;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
export interface ShimmerSlotProps
|
|
29
|
+
export interface ShimmerSlotProps {
|
|
30
30
|
root: ViewProps;
|
|
31
31
|
clippingMask: ClippingMaskProps;
|
|
32
32
|
shimmerWave: ShimmerWaveProps;
|
package/src/Shimmer.win32.tsx
CHANGED
|
@@ -82,10 +82,10 @@ export const Shimmer = compose<ShimmerType>({
|
|
|
82
82
|
},
|
|
83
83
|
|
|
84
84
|
useRender: (props: ShimmerProps, useSlots: UseSlots<ShimmerType>) => {
|
|
85
|
+
const Slots = useSlots(props);
|
|
86
|
+
|
|
85
87
|
return (rest: ShimmerProps) => {
|
|
86
88
|
const { elements, ...mergedProps } = mergeProps(props, rest);
|
|
87
|
-
const Slots = useSlots(mergedProps);
|
|
88
|
-
|
|
89
89
|
/**
|
|
90
90
|
* Generate a clip path from the provided element shapes, with their path parameter strings generated from their corresponding properties.
|
|
91
91
|
* Ideally this would be better possible with functions from the shape elements themselves and not to rely on our own calculations.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Theme } from '@fluentui-react-native/framework';
|
|
2
|
+
import { ShimmerTokens } from './Shimmer.types';
|
|
3
|
+
import { TokenSettings } from '@fluentui-react-native/use-styling';
|
|
4
|
+
|
|
5
|
+
export const defaultShimmerTokens: TokenSettings<ShimmerTokens, Theme> = (theme: Theme) =>
|
|
6
|
+
({
|
|
7
|
+
angle: 45,
|
|
8
|
+
delay: 0,
|
|
9
|
+
duration: 1000,
|
|
10
|
+
shimmerColor: theme.colors.neutralStencil1,
|
|
11
|
+
shimmerColorOpacity: 1,
|
|
12
|
+
shimmerWaveColor: theme.colors.neutralStencil2,
|
|
13
|
+
shimmerWaveColorOpacity: 1,
|
|
14
|
+
} as ShimmerTokens);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Theme } from '@fluentui-react-native/framework';
|
|
2
|
+
import { ShimmerTokens } from './Shimmer.types';
|
|
3
|
+
import { TokenSettings } from '@fluentui-react-native/use-styling';
|
|
4
|
+
import { getCurrentAppearance } from '@fluentui-react-native/theming-utils';
|
|
5
|
+
|
|
6
|
+
export const defaultShimmerTokens: TokenSettings<ShimmerTokens, Theme> = (theme: Theme) =>
|
|
7
|
+
({
|
|
8
|
+
angle: 0,
|
|
9
|
+
delay: 0,
|
|
10
|
+
duration: 7000,
|
|
11
|
+
shimmerColor: getCurrentAppearance(theme.host.appearance, 'light') === 'light' ? '#E1E1E1' : '#404040',
|
|
12
|
+
shimmerColorOpacity: 1,
|
|
13
|
+
shimmerWaveColor: getCurrentAppearance(theme.host.appearance, 'light') === 'light' ? 'white' : 'black',
|
|
14
|
+
shimmerWaveColorOpacity: 1,
|
|
15
|
+
} as ShimmerTokens);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Theme } from '@fluentui-react-native/framework';
|
|
2
|
+
import { ShimmerTokens } from './Shimmer.types';
|
|
3
|
+
import { TokenSettings } from '@fluentui-react-native/use-styling';
|
|
4
|
+
|
|
5
|
+
export const defaultShimmerTokens: TokenSettings<ShimmerTokens, Theme> = (theme: Theme) =>
|
|
6
|
+
({
|
|
7
|
+
angle: 0,
|
|
8
|
+
backgroundColor: theme.colors.background,
|
|
9
|
+
delay: 500,
|
|
10
|
+
duration: 2000,
|
|
11
|
+
shimmerColor: theme.colors.bodyFrameDivider,
|
|
12
|
+
shimmerColorOpacity: 1,
|
|
13
|
+
shimmerWaveColor: '#E1E1E1',
|
|
14
|
+
shimmerWaveColorOpacity: 1,
|
|
15
|
+
shimmerWaveWidth: '100%',
|
|
16
|
+
} as ShimmerTokens);
|