Skip to content

Commit c087805

Browse files
authored
Include animation properties in tokenize motion migration (#7648)
### WHY are these changes introduced? Incorporates work from #7611 into current motion migration. ### WHAT is this pull request doing? Add the `animation`, `animation-duration`, `animation-delay`, `animation-timing-function` properties to the `styles-tokenize-motion` migration.
1 parent c1c8f73 commit c087805

File tree

5 files changed

+64
-21
lines changed

5 files changed

+64
-21
lines changed

.changeset/itchy-rivers-arrive.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@shopify/polaris-migrator': minor
3+
---
4+
5+
Added `animation` properties to tokenize motion migration

polaris-migrator/README.md

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ npx @shopify/polaris-migrator styles-tokenize-font <path>
306306

307307
### `styles-tokenize-motion`
308308

309-
Replace timings (`ms`, `s`) in transition declarations (`transition`, `transition-duration`, `transition-delay`, and `transition-timing-function`) with the corresponding Polaris [motion](https://polaris.shopify.com/tokens/motion) token.
309+
Replace timings (`ms`, `s`) in transition declarations (`transition`, `transition-duration`, `transition-delay`, and `transition-timing-function`) and animation declarations (`animation`, `animation-duration`, `animation-delay`, and `animation-timing-function`) with the corresponding Polaris [motion](https://polaris.shopify.com/tokens/motion) token.
310310

311311
```diff
312312
- transition-duration: 100ms;
@@ -320,6 +320,18 @@ Replace timings (`ms`, `s`) in transition declarations (`transition`, `transitio
320320

321321
- transition: opacity 100ms linear, left 100ms linear;
322322
+ transition: opacity var(--p-duration-100) linear, left var(--p-duration-100) linear;
323+
324+
- animation-duration: 100ms;
325+
+ animation-duration: var(--p-duration-100);
326+
327+
- animation-timing-function: linear;
328+
+ animation-timing-function: var(--p-linear);
329+
330+
- animation: 100ms linear fadeIn;
331+
+ animation: var(--p-duration-100) linear fadeIn;
332+
333+
- animation: 100ms linear slideIn, 100ms linear slideIn;
334+
+ animation: var(--p-duration-100) linear slideIn, var(--p-duration-100) linear slideIn;
323335
```
324336

325337
```sh

polaris-migrator/src/migrations/styles-tokenize-motion/styles-tokenize-motion.ts

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,7 @@ export default createSassMigrator(
7878
});
7979
}
8080

81-
function mutateTransitionDurationValue(
82-
node: Node,
83-
decl: Declaration,
84-
): void {
81+
function mutateDurationValue(node: Node, decl: Declaration): void {
8582
if (isPolarisVar(node)) {
8683
return;
8784
}
@@ -126,10 +123,7 @@ export default createSassMigrator(
126123
}
127124
}
128125

129-
function mutateTransitionFunctionValue(
130-
node: Node,
131-
decl: Declaration,
132-
): void {
126+
function mutateFunctionValue(node: Node, decl: Declaration): void {
133127
if (isPolarisVar(node)) {
134128
return;
135129
}
@@ -181,12 +175,12 @@ export default createSassMigrator(
181175
}
182176
}
183177

184-
function mutateTransitionDelayValue(node: Node, decl: Declaration): void {
178+
function mutateDelayValue(node: Node, decl: Declaration): void {
185179
// For now, we treat delays like durations
186-
return mutateTransitionDurationValue(node, decl);
180+
return mutateDurationValue(node, decl);
187181
}
188182

189-
function mutateTransitionShorthandValue(
183+
function mutateShorthandValue(
190184
decl: Declaration,
191185
parsedValue: ParsedValue,
192186
): void {
@@ -223,16 +217,16 @@ export default createSassMigrator(
223217
// This node could be either the property to animate, or an easing
224218
// function. We try mutate the easing function, but if not we assume
225219
// it's the property to animate and therefore do not leave a comment.
226-
mutateTransitionFunctionValue(node, decl);
220+
mutateFunctionValue(node, decl);
227221
}
228222
});
229223

230224
if (timings[0]) {
231-
mutateTransitionDurationValue(timings[0], decl);
225+
mutateDurationValue(timings[0], decl);
232226
}
233227

234228
if (timings[1]) {
235-
mutateTransitionDelayValue(timings[1], decl);
229+
mutateDelayValue(timings[1], decl);
236230
}
237231
});
238232
}
@@ -242,21 +236,39 @@ export default createSassMigrator(
242236
const handlers: {[key: string]: () => void} = {
243237
'transition-duration': () => {
244238
parsedValue.nodes.forEach((node) => {
245-
mutateTransitionDurationValue(node, decl);
239+
mutateDurationValue(node, decl);
246240
});
247241
},
248242
'transition-delay': () => {
249243
parsedValue.nodes.forEach((node) => {
250-
mutateTransitionDelayValue(node, decl);
244+
mutateDelayValue(node, decl);
251245
});
252246
},
253247
'transition-timing-function': () => {
254248
parsedValue.nodes.forEach((node) => {
255-
mutateTransitionFunctionValue(node, decl);
249+
mutateFunctionValue(node, decl);
256250
});
257251
},
258252
transition: () => {
259-
mutateTransitionShorthandValue(decl, parsedValue);
253+
mutateShorthandValue(decl, parsedValue);
254+
},
255+
'animation-duration': () => {
256+
parsedValue.nodes.forEach((node) => {
257+
mutateDurationValue(node, decl);
258+
});
259+
},
260+
'animation-delay': () => {
261+
parsedValue.nodes.forEach((node) => {
262+
mutateDelayValue(node, decl);
263+
});
264+
},
265+
'animation-timing-function': () => {
266+
parsedValue.nodes.forEach((node) => {
267+
mutateFunctionValue(node, decl);
268+
});
269+
},
270+
animation: () => {
271+
mutateShorthandValue(decl, parsedValue);
260272
},
261273
};
262274

polaris-migrator/src/migrations/styles-tokenize-motion/tests/styles-tokenize-motion.input.scss

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,14 @@
125125
transition: opacity 5s linear, left 5s linear;
126126
}
127127

128-
.edges {
128+
.animation {
129+
animation: 300ms linear fadeIn;
130+
animation-duration: 200ms;
131+
animation-delay: 0.2s;
132+
animation-timing-function: ease;
133+
}
134+
135+
.edge-cases {
129136
// Without an easing function
130137
transition: fill 300ms;
131138
// Duration comes after easing func

polaris-migrator/src/migrations/styles-tokenize-motion/tests/styles-tokenize-motion.output.scss

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,14 @@
195195
left var(--p-duration-5000) var(--p-linear);
196196
}
197197

198-
.edges {
198+
.animation {
199+
animation: var(--p-duration-300) var(--p-linear) fadeIn;
200+
animation-duration: var(--p-duration-200);
201+
animation-delay: var(--p-duration-200);
202+
animation-timing-function: var(--p-ease);
203+
}
204+
205+
.edge-cases {
199206
// Without an easing function
200207
transition: fill var(--p-duration-300);
201208
// Duration comes after easing func

0 commit comments

Comments
 (0)