Refine client rule delete strike animation
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
export const HARBOR_VERSIONS = Object.freeze({
|
export const HARBOR_VERSIONS = Object.freeze({
|
||||||
macClient: '0.6.4',
|
macClient: '0.6.5',
|
||||||
gatewayClient: '0.6.3',
|
gatewayClient: '0.6.4',
|
||||||
gatewayBackend: '0.6.0',
|
gatewayBackend: '0.6.0',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -391,12 +391,12 @@ function LocalRulesPanel({
|
|||||||
key={rule._key}
|
key={rule._key}
|
||||||
style={{ viewTransitionName: rule.removing ? 'none' : rule._key }}
|
style={{ viewTransitionName: rule.removing ? 'none' : rule._key }}
|
||||||
inert={rule.removing ? true : undefined}
|
inert={rule.removing ? true : undefined}
|
||||||
onAnimationEnd={(event) => {
|
|
||||||
if (event.animationName === 'client-local-rule-leave') {
|
|
||||||
onRemoveComplete(rule._key);
|
|
||||||
}
|
|
||||||
}}
|
|
||||||
>
|
>
|
||||||
|
<span
|
||||||
|
className="client-delete-strike"
|
||||||
|
aria-hidden="true"
|
||||||
|
onAnimationEnd={() => onRemoveComplete(rule._key)}
|
||||||
|
/>
|
||||||
<button
|
<button
|
||||||
className="client-local-rule-enabled"
|
className="client-local-rule-enabled"
|
||||||
type="button"
|
type="button"
|
||||||
|
|||||||
@@ -958,23 +958,22 @@ p {
|
|||||||
animation: client-local-rule-leave 760ms cubic-bezier(0.7, 0, 0.84, 0) both;
|
animation: client-local-rule-leave 760ms cubic-bezier(0.7, 0, 0.84, 0) both;
|
||||||
}
|
}
|
||||||
|
|
||||||
.client-deletable-row::after {
|
.client-delete-strike {
|
||||||
content: '';
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
top: 50%;
|
top: 50%;
|
||||||
z-index: 6;
|
z-index: 6;
|
||||||
height: 2px;
|
height: 2px;
|
||||||
background: oklch(0.67 0.24 27);
|
background: oklch(0.68 0.15 28);
|
||||||
box-shadow: 0 0 4px oklch(0.67 0.24 27), 0 0 12px oklch(0.67 0.24 27 / 0.8);
|
box-shadow: 0 0 6px oklch(0.68 0.15 28 / 0.45);
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
transform: scaleX(0);
|
transform: scaleX(0);
|
||||||
transform-origin: left center;
|
transform-origin: left center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.client-deletable-row.is-removing::after {
|
.client-deletable-row.is-removing > .client-delete-strike {
|
||||||
animation: client-delete-strike 760ms cubic-bezier(0.16, 1, 0.3, 1) both;
|
animation: client-delete-strike 760ms cubic-bezier(0.16, 1, 0.3, 1) both;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2987,7 +2986,7 @@ p {
|
|||||||
|
|
||||||
@media (prefers-reduced-motion: reduce) {
|
@media (prefers-reduced-motion: reduce) {
|
||||||
.client-operation-progress::before,
|
.client-operation-progress::before,
|
||||||
.client-deletable-row::after,
|
.client-delete-strike,
|
||||||
.client-power,
|
.client-power,
|
||||||
.client-power::before,
|
.client-power::before,
|
||||||
.client-power::after,
|
.client-power::after,
|
||||||
|
|||||||
@@ -20,7 +20,8 @@ test('rule editor add latency stays constant and dirty exits are guarded', () =>
|
|||||||
assert.match(component, /Ждёт перезапуска/);
|
assert.match(component, /Ждёт перезапуска/);
|
||||||
assert.match(component, /Перезапустить VPN/);
|
assert.match(component, /Перезапустить VPN/);
|
||||||
assert.match(component, /client-deletable-row/);
|
assert.match(component, /client-deletable-row/);
|
||||||
assert.match(styles, /\.client-deletable-row\.is-removing::after[\s\S]*client-delete-strike/);
|
assert.match(component, /className="client-delete-strike"[\s\S]*onAnimationEnd/);
|
||||||
|
assert.match(styles, /\.client-deletable-row\.is-removing > \.client-delete-strike[\s\S]*client-delete-strike/);
|
||||||
assert.match(styles, /@keyframes client-delete-strike[\s\S]*scaleX\(0\)[\s\S]*scaleX\(1\)/);
|
assert.match(styles, /@keyframes client-delete-strike[\s\S]*scaleX\(0\)[\s\S]*scaleX\(1\)/);
|
||||||
assert.match(styles, /\.client-local-rule:has\(\.client-rule-type\.is-open\)[\s\S]*z-index: 5/);
|
assert.match(styles, /\.client-local-rule:has\(\.client-rule-type\.is-open\)[\s\S]*z-index: 5/);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user