FEATURE: Add fireworks + gradient animation to campaign success banner (#77)
This commit is contained in:
@@ -4,6 +4,7 @@ import { equal } from "@ember/object/computed";
|
||||
import { setting } from "discourse/lib/computed";
|
||||
import Component from "@ember/component";
|
||||
import discourseComputed, { observes } from "discourse-common/utils/decorators";
|
||||
import { later } from "@ember/runloop";
|
||||
import { inject as service } from "@ember/service";
|
||||
|
||||
export default Component.extend({
|
||||
@@ -31,6 +32,7 @@ export default Component.extend({
|
||||
showContributors: setting(
|
||||
"discourse_subscriptions_campaign_show_contributors"
|
||||
),
|
||||
classNameBindings: ["isGoalMet:goal-met"],
|
||||
|
||||
init() {
|
||||
this._super(...arguments);
|
||||
@@ -69,6 +71,25 @@ export default Component.extend({
|
||||
} else {
|
||||
document.body.classList.remove("subscription-campaign-sidebar");
|
||||
}
|
||||
|
||||
// makes sure to only play animation once, & not repeat on reload
|
||||
if (this.isGoalMet) {
|
||||
const successAnimationKey = this.keyValueStore.get(
|
||||
"campaign_success_animation"
|
||||
);
|
||||
|
||||
if (!successAnimationKey) {
|
||||
later(() => {
|
||||
this.keyValueStore.set({
|
||||
key: "campaign_success_animation",
|
||||
value: Date.now(),
|
||||
});
|
||||
document.body.classList.add("success-animation-off");
|
||||
}, 7000);
|
||||
} else {
|
||||
document.body.classList.add("success-animation-off");
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@discourseComputed(
|
||||
@@ -130,7 +151,6 @@ export default Component.extend({
|
||||
const currentVolume = this.subscriberGoal
|
||||
? this.subscribers
|
||||
: this.amountRaised;
|
||||
|
||||
return currentVolume >= this.goalTarget;
|
||||
},
|
||||
|
||||
|
||||
@@ -12,21 +12,31 @@
|
||||
var(--campaign-background-image);
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;' ''}}">
|
||||
<h2 class="campaign-banner-info-header">{{i18n 'discourse_subscriptions.campaign.title'}}</h2>
|
||||
{{#if isGoalMet}}
|
||||
<h2 class="campaign-banner-info-header">{{i18n 'discourse_subscriptions.campaign.success_title'}}</h2>
|
||||
<p class="campaign-banner-info-description">{{i18n 'discourse_subscriptions.campaign.success_body'}}</p>
|
||||
{{else}}
|
||||
<h2 class="campaign-banner-info-header">{{i18n 'discourse_subscriptions.campaign.title'}}</h2>
|
||||
<p class="campaign-banner-info-description">{{i18n 'discourse_subscriptions.campaign.body'}}</p>
|
||||
{{#if product}}
|
||||
{{#link-to "s.show" product disabled=product.subscribed class="btn btn-primary campaign-banner-info-button"}}
|
||||
{{d-icon "far-heart"}} {{d-icon "heart" class="hover-heart"}} {{i18n 'discourse_subscriptions.campaign.button'}}
|
||||
{{/link-to}}
|
||||
{{else}}
|
||||
{{#link-to "s" class="btn btn-primary campaign-banner-info-button"}}
|
||||
{{d-icon "far-heart"}} {{d-icon "heart" class="hover-heart"}} {{i18n 'discourse_subscriptions.campaign.button'}}
|
||||
{{/link-to}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{#if product}}
|
||||
{{#link-to "s.show" product disabled=product.subscribed class="btn btn-primary campaign-banner-info-button"}}
|
||||
{{d-icon "far-heart"}} {{d-icon "heart" class="hover-heart"}} {{i18n 'discourse_subscriptions.campaign.button'}}
|
||||
{{/link-to}}
|
||||
{{else}}
|
||||
{{#link-to "s" class="btn btn-primary campaign-banner-info-button"}}
|
||||
{{d-icon "far-heart"}} {{d-icon "heart" class="hover-heart"}} {{i18n 'discourse_subscriptions.campaign.button'}}
|
||||
{{/link-to}}
|
||||
{{/if}}
|
||||
|
||||
</div>
|
||||
<div class="campaign-banner-progress">
|
||||
{{#if isGoalMet}}
|
||||
<p class="campaign-banner-progress-success">{{i18n 'discourse_subscriptions.campaign.goal'}}!</p>
|
||||
<div class="fireworks">
|
||||
<div class="before"></div>
|
||||
<div class="after"></div>
|
||||
</div>
|
||||
<div class="campaign-banner-progress-success"></div>
|
||||
{{#if subscriberGoal}}
|
||||
<p class="campaign-banner-progress-description">
|
||||
{{i18n 'discourse_subscriptions.campaign.goal_comparison' current=subscribers goal=goalTarget}}
|
||||
|
||||
Reference in New Issue
Block a user