|
158 | 158 | </div> |
159 | 159 |
|
160 | 160 | <!-- Banners --> |
161 | | - <solana-staking-banner |
162 | | - v-if="isSolanaStakingBanner && isExpanded" |
163 | | - @close="closeSolanaStakingBanner" |
164 | | - /> |
| 161 | + <Transition name="slide-fade"> |
| 162 | + <solana-staking-banner |
| 163 | + v-if="isSolanaStakingBanner && isExpanded" |
| 164 | + key="solana-banner" |
| 165 | + @close="closeSolanaStakingBanner" |
| 166 | + /> |
| 167 | + |
| 168 | + <survey-popup |
| 169 | + v-else-if="isSurveyPopup && isExpanded" |
| 170 | + key="survey-popup" |
| 171 | + @close="closeSurveyPopup" |
| 172 | + /> |
| 173 | + </Transition> |
165 | 174 | </div> |
166 | 175 | </template> |
167 | 176 |
|
@@ -207,6 +216,7 @@ import SearchIcon from '@action/icons/common/search.vue'; |
207 | 216 | import { useMenuStore } from '@action/store/menu-store'; |
208 | 217 | import SolanaStakingBanner from './components/solana-staking-banner.vue'; |
209 | 218 | import BannersState from '@/libs/banners-state'; |
| 219 | +import SurveyPopup from './components/survey-popup.vue'; |
210 | 220 |
|
211 | 221 | const appMenuRef = ref(null); |
212 | 222 |
|
@@ -268,8 +278,9 @@ onMounted(async () => { |
268 | 278 | newNetworksWithTags.value.swap = newSwaps.filter( |
269 | 279 | net => !usedNetworks.swap.includes(net), |
270 | 280 | ); |
271 | | - if (await bannersState.showSolanaStakingBanner()) { |
272 | | - isSolanaStakingBanner.value = true; |
| 281 | + isSolanaStakingBanner.value = await bannersState.showSolanaStakingBanner(); |
| 282 | + if (!isSolanaStakingBanner.value) { |
| 283 | + openSurveyPopup(); |
273 | 284 | } |
274 | 285 | }); |
275 | 286 |
|
@@ -542,17 +553,47 @@ const updateGradient = (newGradient: string) => { |
542 | 553 | * Banners |
543 | 554 | ------------------*/ |
544 | 555 | const isSolanaStakingBanner = ref(false); |
| 556 | +const isSurveyPopup = ref(false); |
| 557 | +
|
545 | 558 | const bannersState = new BannersState(); |
546 | 559 |
|
| 560 | +const openSurveyPopup = async () => { |
| 561 | + if (await bannersState.showSurveyPopup()) { |
| 562 | + setTimeout(() => { |
| 563 | + isSurveyPopup.value = true; |
| 564 | + }, 4000); |
| 565 | + } |
| 566 | +}; |
| 567 | +
|
| 568 | +const closeSurveyPopup = () => { |
| 569 | + isSurveyPopup.value = false; |
| 570 | + bannersState.hideSurveyPopup(); |
| 571 | +}; |
| 572 | +
|
547 | 573 | const closeSolanaStakingBanner = () => { |
548 | 574 | isSolanaStakingBanner.value = false; |
549 | 575 | bannersState.hideSolanaStakingBanner(); |
| 576 | + openSurveyPopup(); |
550 | 577 | }; |
551 | 578 | </script> |
552 | 579 |
|
553 | 580 | <style lang="less"> |
554 | 581 | @import '@action/styles/theme.less'; |
555 | 582 |
|
| 583 | +.slide-fade-enter-active { |
| 584 | + transition: all 0.3s ease-out; |
| 585 | +} |
| 586 | +
|
| 587 | +.slide-fade-leave-active { |
| 588 | + transition: all 0.1s cubic-bezier(1, 0.5, 0.8, 1); |
| 589 | +} |
| 590 | +
|
| 591 | +.slide-fade-enter-from, |
| 592 | +.slide-fade-leave-to { |
| 593 | + transform: translateX(20px); |
| 594 | + opacity: 0; |
| 595 | +} |
| 596 | +
|
556 | 597 | .expand-menu { |
557 | 598 | width: 340px; |
558 | 599 | } |
|
0 commit comments