@hulkapps/app-manager-vue 2.0.9 → 2.1.2
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/dist/app-manager-vue.esm.js +1597 -961
- package/dist/app-manager-vue.min.js +4 -4
- package/dist/app-manager-vue.ssr.js +1655 -993
- package/dist/hulkapps-app-manager.css +1 -1
- package/dist/hulkapps-app-manager.min.css +1 -1
- package/package.json +1 -1
- package/src/components/Plans/AppManagerGroupPlan.vue +177 -91
- package/src/components/Plans/AppManagerSliderPlan.vue +267 -74
- package/src/components/polaris-vue/src/components/PSkeletonBodyText/PSkeletonBodyText.vue +27 -0
- package/src/components/polaris-vue/src/components/PSkeletonDisplayText/PSkeletonDisplayText.vue +38 -0
- package/src/components/polaris-vue/src/components/PSkeletonPage/PSkeletonPage.vue +149 -0
|
@@ -1,8 +1,56 @@
|
|
|
1
1
|
<template>
|
|
2
|
+
<PSkeletonPage title="Plans"
|
|
3
|
+
:fullWidth="false"
|
|
4
|
+
primaryAction
|
|
5
|
+
:secondaryActions="2"
|
|
6
|
+
:breadcrumbs="false"
|
|
7
|
+
v-if="planLoading">
|
|
8
|
+
<PLayout>
|
|
9
|
+
<PLayoutSection oneThird="">
|
|
10
|
+
<PCard sectioned="">
|
|
11
|
+
<PTextContainer>
|
|
12
|
+
<PSkeletonDisplayText size="small" />
|
|
13
|
+
<PSkeletonBodyText />
|
|
14
|
+
</PTextContainer>
|
|
15
|
+
</PCard>
|
|
16
|
+
</PLayoutSection>
|
|
17
|
+
<PLayoutSection oneThird="">
|
|
18
|
+
<PCard sectioned="">
|
|
19
|
+
<PTextContainer>
|
|
20
|
+
<PSkeletonDisplayText size="small" />
|
|
21
|
+
<PSkeletonBodyText />
|
|
22
|
+
</PTextContainer>
|
|
23
|
+
</PCard>
|
|
24
|
+
</PLayoutSection>
|
|
25
|
+
<PLayoutSection oneThird="">
|
|
26
|
+
<PCard sectioned="">
|
|
27
|
+
<PTextContainer>
|
|
28
|
+
<PSkeletonDisplayText size="small" />
|
|
29
|
+
<PSkeletonBodyText />
|
|
30
|
+
</PTextContainer>
|
|
31
|
+
</PCard>
|
|
32
|
+
</PLayoutSection>
|
|
33
|
+
</PLayout>
|
|
34
|
+
<PLayout style="margin-top: 20px">
|
|
35
|
+
<PLayoutSection>
|
|
36
|
+
<PCard sectioned=""><PSkeletonBodyText /></PCard>
|
|
37
|
+
<PCard sectioned=""><PSkeletonBodyText /></PCard>
|
|
38
|
+
<PCard sectioned=""><PSkeletonBodyText /></PCard>
|
|
39
|
+
<PCard sectioned=""><PSkeletonBodyText /></PCard>
|
|
40
|
+
</PLayoutSection>
|
|
41
|
+
</PLayout>
|
|
42
|
+
</PSkeletonPage>
|
|
43
|
+
<PEmptyState
|
|
44
|
+
heading="No Plans"
|
|
45
|
+
image="https://cdn.shopify.com/s/files/1/0262/4071/2726/files/emptystate-files.png"
|
|
46
|
+
v-else-if="!this.planLoading && this.plans.length === 0"
|
|
47
|
+
>
|
|
48
|
+
</PEmptyState>
|
|
2
49
|
<PPage
|
|
3
|
-
class="app-manager-plan-page custom-title"
|
|
50
|
+
class="app-manager-plan-page-slider custom-title"
|
|
4
51
|
title="Choose plan"
|
|
5
52
|
:subtitle = "subtitleContent"
|
|
53
|
+
v-else
|
|
6
54
|
>
|
|
7
55
|
|
|
8
56
|
<PStack slot="primaryAction">
|
|
@@ -28,7 +76,7 @@
|
|
|
28
76
|
<div class="Polaris-ResourceList__ResourceListWrapper features" style="width: 30%">
|
|
29
77
|
<div class="plan__price"></div>
|
|
30
78
|
<ul class="Polaris-ResourceList">
|
|
31
|
-
<li class="Polaris-ResourceList__ItemWrapper pro_title" v-for="(feature, key) in features" :key="key">
|
|
79
|
+
<li class="Polaris-ResourceList__ItemWrapper pro_title" :class="`${feature.value_type}__type__${feature.slug} feature__type__${feature.value_type} feature__class`" v-for="(feature, key) in features" :key="key">
|
|
32
80
|
<div class="Polaris-ResourceList-Item__Container">
|
|
33
81
|
<div class="Polaris-ResourceList-Item__Content">
|
|
34
82
|
<h1 class="for-price-per-month"><span>{{ feature.name }}</span></h1>
|
|
@@ -42,8 +90,14 @@
|
|
|
42
90
|
<template>
|
|
43
91
|
<slide :id="key" :class="`slide-${key}`" v-for="(plan, key) in selectedPlan === 'monthly' ? monthlyPlan : yearlyPlan" :key="`slide-${key}`" >
|
|
44
92
|
<div class="plan__price" :style="activePlanStyle(plan)">
|
|
45
|
-
<
|
|
46
|
-
|
|
93
|
+
<div v-if="plan.price === 0">
|
|
94
|
+
<b v-if="plan.name !== 'Free'" style="font-size: 16px">{{(plan.name)}}</b>
|
|
95
|
+
<p style="display: flex;margin-top: 10px">
|
|
96
|
+
<PHeading style="font-size: 25px;font-weight: 700;">Free</PHeading>
|
|
97
|
+
</p>
|
|
98
|
+
</div>
|
|
99
|
+
<div v-else-if="plan.discount && plan.discount > 0" >
|
|
100
|
+
<b style="font-size: 16px">{{(plan.name)}}</b>
|
|
47
101
|
<p style="display: flex;margin-top: 10px">
|
|
48
102
|
<PHeading style="font-size: 25px;font-weight: 700;">${{parseFloat(calculateDiscountedPrice(plan)).toFixed(2)}}</PHeading>
|
|
49
103
|
<b style="margin-top: 5px;font-size: 17px">/{{selectedPlan === 'monthly' ? ("mo") : ("year")}}</b>
|
|
@@ -54,15 +108,16 @@
|
|
|
54
108
|
</p>
|
|
55
109
|
</div>
|
|
56
110
|
<div v-else>
|
|
111
|
+
<b style="font-size: 16px">{{(plan.name)}}</b>
|
|
57
112
|
<p style="display: flex;margin-top: 10px">
|
|
58
113
|
<PHeading style="font-size: 25px;font-weight: 700;">${{parseFloat(plan.price).toFixed(2)}}</PHeading>
|
|
59
|
-
|
|
114
|
+
<b style="margin-top: 5px;font-size: 17px">/{{selectedPlan === 'monthly' ? ("mo") : ("year")}}</b>
|
|
60
115
|
</p>
|
|
61
116
|
</div>
|
|
62
117
|
</div>
|
|
63
118
|
<div>
|
|
64
119
|
<ul>
|
|
65
|
-
<li v-for="(feature, key) in features" :
|
|
120
|
+
<li v-for="(feature, key) in features" :class="`${feature.value_type}__type__${feature.slug} feature__list feature__type__${feature.value_type}`" :key="key" :style="activePlanStyle(plan)">
|
|
66
121
|
<div>
|
|
67
122
|
<template v-if="plan.features && plan.features[feature.uuid]" style="display: flex">
|
|
68
123
|
<template v-if="plan.features[feature.uuid].value_type === 'boolean'">
|
|
@@ -104,7 +159,6 @@
|
|
|
104
159
|
</carousel>
|
|
105
160
|
</template>
|
|
106
161
|
</PLayoutSection>
|
|
107
|
-
<PlanBanners />
|
|
108
162
|
</PLayout>
|
|
109
163
|
<!--====================================================================-->
|
|
110
164
|
<PStack v-if="onboard && !shop.has_plan" class="choose-plan-btn" alignment="center" distribution="center" vertical>
|
|
@@ -112,6 +166,7 @@
|
|
|
112
166
|
<PButton plain @click="activePlan">{{ ('I will choose the plan later') }}</PButton>
|
|
113
167
|
</PStackItem>
|
|
114
168
|
</PStack>
|
|
169
|
+
<PlanBanners />
|
|
115
170
|
</PPage>
|
|
116
171
|
</template>
|
|
117
172
|
|
|
@@ -134,16 +189,24 @@
|
|
|
134
189
|
import {PDataTableRow} from "../polaris-vue/src/components/PDataTable/components/PDataTableRow";
|
|
135
190
|
import {PIcon} from "../polaris-vue/src/components/PIcon";
|
|
136
191
|
import {PTextStyle} from "../polaris-vue/src/components/PTextStyle";
|
|
192
|
+
import {PCard} from "../polaris-vue/src/components/PCard"
|
|
193
|
+
import {PCardSection} from "../polaris-vue/src/components/PCard/components/PCardSection"
|
|
194
|
+
import {PSkeletonPage} from "../polaris-vue/src/components/PSkeletonPage"
|
|
195
|
+
import {PSkeletonDisplayText} from "../polaris-vue/src/components/PSkeletonDisplayText"
|
|
196
|
+
import {PSkeletonBodyText} from "../polaris-vue/src/components/PSkeletonBodyText"
|
|
197
|
+
import {PEmptyState} from "../polaris-vue/src/components/PEmptyState"
|
|
137
198
|
import {Carousel, Slide} from 'vue-carousel';
|
|
138
199
|
|
|
139
200
|
export default {
|
|
140
201
|
name: "AppManagerSliderPlan",
|
|
141
|
-
components: { Carousel, Slide, YearlyPlanPromotion, PlanBanners, PPage, PStack, PStackItem, PButton, PButtonGroup, PHeading, PLayout, PLayoutSection, PTextContainer, PDataTable, PDataTableCol, PDataTableRow, PIcon, PTextStyle },
|
|
202
|
+
components: { Carousel, Slide, YearlyPlanPromotion, PlanBanners, PPage, PStack, PStackItem, PButton, PButtonGroup, PHeading, PLayout, PLayoutSection, PTextContainer, PDataTable, PDataTableCol, PDataTableRow, PIcon, PTextStyle, PCardSection, PCard, PSkeletonDisplayText, PSkeletonBodyText, PSkeletonPage, PEmptyState },
|
|
142
203
|
props: ['shop_domain'],
|
|
143
204
|
data() {
|
|
144
205
|
return {
|
|
145
|
-
|
|
206
|
+
slideLength : 0,
|
|
207
|
+
perPage: 0,
|
|
146
208
|
currentSlide: 0,
|
|
209
|
+
planLoading: false,
|
|
147
210
|
plan: {},
|
|
148
211
|
plans: [],
|
|
149
212
|
features: [],
|
|
@@ -253,7 +316,9 @@
|
|
|
253
316
|
element = document.querySelector(lastSlideClassName);
|
|
254
317
|
element.classList.add('last-slide')
|
|
255
318
|
|
|
256
|
-
document.querySelector('.VueCarousel-navigation-button.VueCarousel-navigation-prev')
|
|
319
|
+
if (document.querySelector('.VueCarousel-navigation-button.VueCarousel-navigation-prev')) {
|
|
320
|
+
document.querySelector('.VueCarousel-navigation-button.VueCarousel-navigation-prev').style.left = -document.querySelector('.Polaris-ResourceList__ResourceListWrapper.features').offsetWidth + 'px';
|
|
321
|
+
}
|
|
257
322
|
},
|
|
258
323
|
activePlanStyle(plan) {
|
|
259
324
|
return [plan.shopify_plans.includes(this.shop.shopify_plan) || !plan.store_base_plan ? {backgroundColor: '#f0f8f5', color: '#257f60'} : {}];
|
|
@@ -276,10 +341,10 @@
|
|
|
276
341
|
} else return feature.value
|
|
277
342
|
}
|
|
278
343
|
else if(feature?.value_type === 'array') {
|
|
279
|
-
return JSON.parse(feature.value).join('
|
|
344
|
+
return JSON.parse(feature.value).join(' ')
|
|
280
345
|
}
|
|
281
346
|
else if(feature?.value_type === 'string') {
|
|
282
|
-
return feature.value
|
|
347
|
+
return feature.value.replace('"', '').replace('"', '')
|
|
283
348
|
}
|
|
284
349
|
},
|
|
285
350
|
calculateDiscountedPrice(plan) {
|
|
@@ -317,14 +382,90 @@
|
|
|
317
382
|
});
|
|
318
383
|
},
|
|
319
384
|
async selectPlan(value){
|
|
320
|
-
this.selectedPlan= value;
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
385
|
+
this.selectedPlan = value;
|
|
386
|
+
this.$nextTick(() => {
|
|
387
|
+
|
|
388
|
+
this.slideLength = this.selectedPlan === 'monthly' ? this.monthlyPlan.length : this.yearlyPlan.length;
|
|
389
|
+
this.perPage = this.slideLength >= 4 ? 4 : this.slideLength;
|
|
390
|
+
|
|
391
|
+
// calculate and reset height of rows
|
|
392
|
+
this.features.forEach((feature) => {
|
|
393
|
+
let className = feature.value_type + '__type__' + feature.slug;
|
|
394
|
+
let elements = document.querySelectorAll('.' + className);
|
|
395
|
+
let maxHeight = 0;
|
|
396
|
+
elements.forEach((item) => {
|
|
397
|
+
item.style.minHeight = 'unset';
|
|
398
|
+
if (maxHeight < item.offsetHeight) {
|
|
399
|
+
maxHeight = item.offsetHeight
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
elements.forEach((item) => {
|
|
403
|
+
item.style.minHeight = maxHeight + 'px';
|
|
404
|
+
});
|
|
405
|
+
})
|
|
406
|
+
|
|
407
|
+
// remove first-slide and last-slide classes
|
|
408
|
+
let allSlides = document.getElementsByClassName('VueCarousel-slide');
|
|
409
|
+
for (let i=0, max=allSlides.length; i < max; i++) {
|
|
410
|
+
let slide = document.getElementById(allSlides[i].id);
|
|
411
|
+
slide.classList.remove('first-slide')
|
|
412
|
+
slide.classList.remove('last-slide')
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
// add first-slide and last-slide classes
|
|
416
|
+
let pagesCount = this.slideLength;
|
|
417
|
+
setTimeout(() => {
|
|
418
|
+
let element = document.querySelector('.slide-0');
|
|
419
|
+
if (element) {
|
|
420
|
+
element.classList.add('first-slide')
|
|
421
|
+
if (pagesCount < 4) {
|
|
422
|
+
let lastSlideClass = '.slide-' + (pagesCount-1)
|
|
423
|
+
element = document.querySelector(lastSlideClass);
|
|
424
|
+
element.classList.add('last-slide')
|
|
425
|
+
}
|
|
426
|
+
else {
|
|
427
|
+
element = document.querySelector('.slide-3');
|
|
428
|
+
element.classList.add('last-slide')
|
|
429
|
+
}
|
|
430
|
+
if (document.querySelector('.VueCarousel-navigation-button.VueCarousel-navigation-prev')) {
|
|
431
|
+
document.querySelector('.VueCarousel-navigation-button.VueCarousel-navigation-prev').style.left = -document.querySelector('.Polaris-ResourceList__ResourceListWrapper.features').offsetWidth + 'px';
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}, 100)
|
|
435
|
+
|
|
436
|
+
});
|
|
437
|
+
},
|
|
438
|
+
async fetchFeatures() {
|
|
439
|
+
let {data} = await axios.get(`${this.app_manager_config.baseUrl}/api/app-manager/plan-features`).catch(error => {
|
|
440
|
+
console.error(error)
|
|
441
|
+
});
|
|
442
|
+
if (data.features.length) {
|
|
443
|
+
this.features = data.features;
|
|
444
|
+
this.features = this.features?.filter((item) => item.hidden_feature !== true)
|
|
445
|
+
this.features = this.features?.sort((featureA, featureB) => parseInt(featureA.display_order) - parseInt(featureB.display_order))
|
|
446
|
+
}
|
|
447
|
+
},
|
|
448
|
+
async fetchPlans() {
|
|
449
|
+
let {data} = await axios.get(`${this.app_manager_config.baseUrl}/api/app-manager/plans`, { params: { 'shop_domain': this.shop_domain } }).catch(error => {
|
|
450
|
+
console.error(error)
|
|
451
|
+
});
|
|
452
|
+
if (data.plans.length) {
|
|
453
|
+
this.plans = data.plans;
|
|
454
|
+
this.plans = this.plans?.sort((planA, planB) => parseFloat(planA.price) - parseFloat(planB.price));
|
|
455
|
+
|
|
456
|
+
if (this.plans[0].store_base_plan) {
|
|
457
|
+
this.subtitleContent = 'App plans are based on your existing shopify plan';
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
this.plan = data.plan;
|
|
461
|
+
if (this.plan?.interval === 'ANNUAL') {
|
|
462
|
+
this.selectedPlan = 'annually'
|
|
463
|
+
|
|
464
|
+
}
|
|
465
|
+
this.shopify_plan = data.shopify_plan;
|
|
466
|
+
this.default_plan_id = data.default_plan_id;
|
|
467
|
+
this.onboard = !this.plan
|
|
468
|
+
}
|
|
328
469
|
},
|
|
329
470
|
headerClasses(firstColumn) {
|
|
330
471
|
return {
|
|
@@ -337,42 +478,77 @@
|
|
|
337
478
|
},
|
|
338
479
|
async mounted() {
|
|
339
480
|
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
this.
|
|
344
|
-
this.features = this.features.sort((featureA, featureB) => parseInt(featureA.display_order) - parseInt(featureB.display_order))
|
|
481
|
+
this.planLoading = true;
|
|
482
|
+
await this.fetchFeatures();
|
|
483
|
+
await this.fetchPlans();
|
|
484
|
+
this.planLoading = false;
|
|
345
485
|
|
|
346
|
-
|
|
347
|
-
console.error(error)
|
|
348
|
-
});
|
|
349
|
-
this.plans = plansData.data.plans;
|
|
350
|
-
this.plans = this.plans.sort((planA, planB) => parseFloat(planA.price) - parseFloat(planB.price));
|
|
351
|
-
if (this.plans && this.plans[0].store_base_plan) {
|
|
352
|
-
this.subtitleContent = 'App plans are based on your existing shopify plan';
|
|
353
|
-
}
|
|
354
|
-
this.shopify_plan = plansData.data.shopify_plan;
|
|
355
|
-
this.plan = plansData.data.plan;
|
|
356
|
-
if (this.plan?.interval === 'ANNUAL') {
|
|
357
|
-
this.selectedPlan = 'annually'
|
|
358
|
-
}
|
|
359
|
-
this.default_plan_id = plansData.data.default_plan_id;
|
|
360
|
-
this.onboard = !this.plan
|
|
361
|
-
},
|
|
486
|
+
this.$nextTick(() => {
|
|
362
487
|
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
488
|
+
// calculate height of cell
|
|
489
|
+
setTimeout(() => {
|
|
490
|
+
|
|
491
|
+
let elements = document.querySelectorAll('.plan__price');
|
|
492
|
+
let maxHeight = 0;
|
|
493
|
+
elements.forEach((item) => {
|
|
494
|
+
item.style.minHeight = 'unset';
|
|
495
|
+
if (maxHeight < item.offsetHeight) {
|
|
496
|
+
maxHeight = item.offsetHeight
|
|
497
|
+
}
|
|
498
|
+
});
|
|
499
|
+
elements.forEach((item) => {
|
|
500
|
+
item.style.minHeight = maxHeight + 'px';
|
|
501
|
+
});
|
|
502
|
+
|
|
503
|
+
this.features.forEach((feature) => {
|
|
504
|
+
let className = feature.value_type + '__type__' + feature.slug;
|
|
505
|
+
elements = document.querySelectorAll('.' + className);
|
|
506
|
+
maxHeight = 0;
|
|
507
|
+
elements.forEach((item) => {
|
|
508
|
+
if (maxHeight < item.offsetHeight) {
|
|
509
|
+
maxHeight = item.offsetHeight
|
|
510
|
+
}
|
|
511
|
+
});
|
|
512
|
+
elements.forEach((item) => {
|
|
513
|
+
item.style.minHeight = maxHeight + 'px';
|
|
514
|
+
});
|
|
515
|
+
})
|
|
516
|
+
}, 100);
|
|
517
|
+
|
|
518
|
+
// remove fist-slide and last-slide classes from all slides
|
|
519
|
+
let allSlides = document.getElementsByClassName('VueCarousel-slide');
|
|
520
|
+
for (let i=0, max=allSlides.length; i < max; i++) {
|
|
521
|
+
let slide = document.getElementById(allSlides[i].id);
|
|
522
|
+
slide.classList.remove('first-slide')
|
|
523
|
+
slide.classList.remove('last-slide')
|
|
372
524
|
}
|
|
373
|
-
}, 100);
|
|
374
|
-
},
|
|
375
525
|
|
|
526
|
+
// add first-slide and last-slide
|
|
527
|
+
this.slideLength = this.selectedPlan === 'monthly' ? this.monthlyPlan.length : this.yearlyPlan.length;
|
|
528
|
+
this.perPage = this.slideLength >= 4 ? 4 : this.slideLength;
|
|
529
|
+
|
|
530
|
+
let pagesCount = this.slideLength;
|
|
531
|
+
setTimeout(() => {
|
|
532
|
+
let element = document.querySelector('.slide-0');
|
|
533
|
+
if (element) {
|
|
534
|
+
element.classList.add('first-slide')
|
|
535
|
+
if (pagesCount < 4) {
|
|
536
|
+
let lastSlideClass = '.slide-' + (pagesCount-1)
|
|
537
|
+
element = document.querySelector(lastSlideClass);
|
|
538
|
+
element.classList.add('last-slide')
|
|
539
|
+
}
|
|
540
|
+
else {
|
|
541
|
+
element = document.querySelector('.slide-3');
|
|
542
|
+
element.classList.add('last-slide')
|
|
543
|
+
}
|
|
544
|
+
if (document.querySelector('.VueCarousel-navigation-button.VueCarousel-navigation-prev')) {
|
|
545
|
+
document.querySelector('.VueCarousel-navigation-button.VueCarousel-navigation-prev').style.left = -document.querySelector('.Polaris-ResourceList__ResourceListWrapper.features').offsetWidth + 'px';
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
}, 100)
|
|
549
|
+
|
|
550
|
+
});
|
|
551
|
+
},
|
|
376
552
|
}
|
|
377
553
|
</script>
|
|
378
554
|
|
|
@@ -380,83 +556,100 @@
|
|
|
380
556
|
|
|
381
557
|
@import url('https://fonts.googleapis.com/css2?family=Satisfy&display=swap');
|
|
382
558
|
|
|
383
|
-
.app-manager .app-manager-plan-page ul
|
|
559
|
+
.app-manager .app-manager-plan-page-slider ul
|
|
384
560
|
{
|
|
385
561
|
list-style: none;
|
|
386
562
|
margin: 0;
|
|
387
563
|
padding: 0;
|
|
388
564
|
}
|
|
389
|
-
.app-manager .app-manager-plan-page .Polaris-ResourceList__ResourceListWrapper.features li,
|
|
390
|
-
.app-manager .app-manager-plan-page .Polaris-Layout__Section .VueCarousel-slide li,
|
|
391
|
-
.app-manager .app-manager-plan-page .plan__price
|
|
565
|
+
.app-manager .app-manager-plan-page-slider .Polaris-ResourceList__ResourceListWrapper.features li,
|
|
566
|
+
.app-manager .app-manager-plan-page-slider .Polaris-Layout__Section .VueCarousel-slide li,
|
|
567
|
+
.app-manager .app-manager-plan-page-slider .plan__price
|
|
392
568
|
{
|
|
393
569
|
padding: 16px 16px 16px 20px;
|
|
394
570
|
}
|
|
395
|
-
.app-manager .app-manager-plan-page .Polaris-ResourceList__ResourceListWrapper.features li,
|
|
396
|
-
.app-manager .app-manager-plan-page .Polaris-Layout__Section .VueCarousel-slide li:not(:last-child),
|
|
397
|
-
.app-manager .app-manager-plan-page .Polaris-Layout.custom-plan .VueCarousel .plan__price
|
|
571
|
+
.app-manager .app-manager-plan-page-slider .Polaris-ResourceList__ResourceListWrapper.features li,
|
|
572
|
+
.app-manager .app-manager-plan-page-slider .Polaris-Layout__Section .VueCarousel-slide li:not(:last-child),
|
|
573
|
+
.app-manager .app-manager-plan-page-slider .Polaris-Layout.custom-plan .VueCarousel .plan__price
|
|
398
574
|
{
|
|
399
575
|
border-top: 1px solid #dddddd;
|
|
400
576
|
border-right: 1px solid #dddddd;
|
|
401
577
|
background: #fff;
|
|
402
578
|
}
|
|
403
|
-
.app-manager .app-manager-plan-page .Polaris-ResourceList__ResourceListWrapper.features li{
|
|
579
|
+
.app-manager .app-manager-plan-page-slider .Polaris-ResourceList__ResourceListWrapper.features li{
|
|
404
580
|
border-right: none;
|
|
405
581
|
border-left: 1px solid #dddddd;
|
|
406
582
|
}
|
|
407
|
-
|
|
583
|
+
/*.app-manager .app-manager-plan-page-slider .plan__price{
|
|
408
584
|
min-height:121px;
|
|
409
|
-
}
|
|
410
|
-
.app-manager .app-manager-plan-page .Polaris-ResourceList__ResourceListWrapper.features li:last-child,
|
|
411
|
-
.app-manager .app-manager-plan-page .Polaris-Layout__Section .VueCarousel-slide li:nth-last-child(2)
|
|
585
|
+
}*/
|
|
586
|
+
.app-manager .app-manager-plan-page-slider .Polaris-ResourceList__ResourceListWrapper.features li:last-child,
|
|
587
|
+
.app-manager .app-manager-plan-page-slider .Polaris-Layout__Section .VueCarousel-slide li:nth-last-child(2)
|
|
412
588
|
{
|
|
413
589
|
border-bottom: 1px solid #dddddd;
|
|
414
590
|
}
|
|
415
|
-
.app-manager .app-manager-plan-page .Polaris-ResourceList__ResourceListWrapper.features li:first-child
|
|
591
|
+
.app-manager .app-manager-plan-page-slider .Polaris-ResourceList__ResourceListWrapper.features li:first-child
|
|
416
592
|
{
|
|
417
593
|
border-top-left-radius: 12px;
|
|
418
594
|
}
|
|
419
|
-
.app-manager .app-manager-plan-page .Polaris-ResourceList__ResourceListWrapper.features li:last-child
|
|
595
|
+
.app-manager .app-manager-plan-page-slider .Polaris-ResourceList__ResourceListWrapper.features li:last-child
|
|
420
596
|
{
|
|
421
597
|
border-bottom-left-radius: 12px;
|
|
422
598
|
}
|
|
423
|
-
.app-manager .app-manager-plan-page .VueCarousel-inner .VueCarousel-slide.first-slide ul li:not(:last-child)
|
|
599
|
+
.app-manager .app-manager-plan-page-slider .VueCarousel-inner .VueCarousel-slide.first-slide ul li:not(:last-child)
|
|
424
600
|
{
|
|
425
601
|
border-left: 1px solid #dddddd;
|
|
426
602
|
}
|
|
427
|
-
.app-manager .app-manager-plan-page .VueCarousel-inner .VueCarousel-slide.first-slide .plan__price
|
|
603
|
+
.app-manager .app-manager-plan-page-slider .VueCarousel-inner .VueCarousel-slide.first-slide .plan__price
|
|
428
604
|
{
|
|
429
605
|
border-left: 1px solid #dddddd;
|
|
430
606
|
box-shadow: none;
|
|
431
607
|
border-top-left-radius: 12px;
|
|
432
608
|
overflow: hidden;
|
|
433
609
|
}
|
|
434
|
-
.app-manager .app-manager-plan-page .VueCarousel-inner .VueCarousel-slide.last-slide ul li:nth-last-child(2)
|
|
610
|
+
.app-manager .app-manager-plan-page-slider .VueCarousel-inner .VueCarousel-slide.last-slide ul li:nth-last-child(2)
|
|
435
611
|
{
|
|
436
612
|
border-bottom-right-radius: 12px;
|
|
437
613
|
}
|
|
438
|
-
.app-manager .app-manager-plan-page .VueCarousel-inner .VueCarousel-slide.last-slide .plan__price
|
|
614
|
+
.app-manager .app-manager-plan-page-slider .VueCarousel-inner .VueCarousel-slide.last-slide .plan__price
|
|
439
615
|
{
|
|
440
616
|
border-right: 1px solid #dddddd;
|
|
441
617
|
box-shadow: none;
|
|
442
618
|
border-top-right-radius: 12px;
|
|
443
619
|
overflow: hidden;
|
|
444
620
|
}
|
|
445
|
-
.app-manager .app-manager-plan-page .VueCarousel-inner .VueCarousel-slide.last-slide
|
|
621
|
+
.app-manager .app-manager-plan-page-slider .VueCarousel-inner .VueCarousel-slide.last-slide
|
|
446
622
|
{
|
|
447
623
|
border-top-right-radius: 12px;
|
|
448
624
|
}
|
|
449
|
-
.app-manager .app-manager-plan-page .VueCarousel-inner .VueCarousel-slide.first-slide
|
|
625
|
+
.app-manager .app-manager-plan-page-slider .VueCarousel-inner .VueCarousel-slide.first-slide
|
|
450
626
|
{
|
|
451
627
|
border-top-left-radius: 12px;
|
|
452
628
|
}
|
|
453
|
-
.app-manager .app-manager-plan-page .VueCarousel .VueCarousel-inner li
|
|
629
|
+
.app-manager .app-manager-plan-page-slider .VueCarousel .VueCarousel-inner li
|
|
454
630
|
{
|
|
455
631
|
text-align: center;
|
|
456
632
|
}
|
|
457
|
-
.app-manager .app-manager-plan-page .VueCarousel-navigation-button
|
|
633
|
+
.app-manager .app-manager-plan-page-slider .VueCarousel-navigation-button
|
|
458
634
|
{
|
|
459
635
|
color: #257f60;
|
|
460
636
|
}
|
|
637
|
+
.app-manager .app-manager-plan-page-slider .btn-group .Polaris-ButtonGroup__Item
|
|
638
|
+
{
|
|
639
|
+
margin-left: 0px !important;
|
|
640
|
+
z-index: unset !important;
|
|
641
|
+
}
|
|
642
|
+
.app-manager .app-manager-plan-page-slider .feature__list,
|
|
643
|
+
.app-manager .app-manager-plan-page-slider .feature__type__array
|
|
644
|
+
{
|
|
645
|
+
display: flex;
|
|
646
|
+
align-items: center;
|
|
647
|
+
word-spacing: 999px;
|
|
648
|
+
justify-content: center;
|
|
649
|
+
}
|
|
650
|
+
.app-manager .app-manager-plan-page-slider .feature__type__array.feature__class
|
|
651
|
+
{
|
|
652
|
+
justify-content: left;
|
|
653
|
+
}
|
|
461
654
|
|
|
462
655
|
</style>
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="Polaris-SkeletonBodyText__SkeletonBodyTextContainer">
|
|
3
|
+
<div v-for="(line, i) in lines" :key="i" class="Polaris-SkeletonBodyText"/>
|
|
4
|
+
</div>
|
|
5
|
+
</template>
|
|
6
|
+
|
|
7
|
+
<script>
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* <br/>
|
|
11
|
+
* <h4 style="font-family: -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue,
|
|
12
|
+
* sans-serif;">Skeleton body text is used to provide a low fidelity representation of content before it appears on the
|
|
13
|
+
* page, and improves load times perceived by merchants. Can be used for content in or outside of a card.</h4>
|
|
14
|
+
*/
|
|
15
|
+
export default {
|
|
16
|
+
name: 'PSkeletonBodyText',
|
|
17
|
+
props: {
|
|
18
|
+
/**
|
|
19
|
+
* Number of line of skeleton
|
|
20
|
+
*/
|
|
21
|
+
lines: {
|
|
22
|
+
type: Number,
|
|
23
|
+
default: 3
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
</script>
|
package/src/components/polaris-vue/src/components/PSkeletonDisplayText/PSkeletonDisplayText.vue
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div :class="className"></div>
|
|
3
|
+
</template>
|
|
4
|
+
|
|
5
|
+
<script>
|
|
6
|
+
import { classNames, variationName } from '../../utilities/css';
|
|
7
|
+
import StringValidator from '../../utilities/validators/StringValidator';
|
|
8
|
+
|
|
9
|
+
const Size = ['small', 'medium', 'large', 'extraLarge'];
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* <br/>
|
|
13
|
+
* <h4 style="font-family: -apple-system, BlinkMacSystemFont, San Francisco, Segoe UI, Roboto, Helvetica Neue,
|
|
14
|
+
* sans-serif;">Skeleton display text is used to provide a low fidelity representation of content before it appears on
|
|
15
|
+
* the page, and improves load times perceived by merchants. Can be used for content in or outside of a card.</h4>
|
|
16
|
+
*/
|
|
17
|
+
export default {
|
|
18
|
+
name: 'PSkeletonDisplayText',
|
|
19
|
+
props: {
|
|
20
|
+
/**
|
|
21
|
+
* Size of Skeleton.
|
|
22
|
+
*/
|
|
23
|
+
size: {
|
|
24
|
+
type: String,
|
|
25
|
+
default: 'medium',
|
|
26
|
+
...StringValidator('size', Size)
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
computed: {
|
|
30
|
+
className() {
|
|
31
|
+
return classNames(
|
|
32
|
+
'Polaris-SkeletonDisplayText__DisplayText',
|
|
33
|
+
this.size && `Polaris-SkeletonDisplayText--${variationName('size', this.size)}`,
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
}
|
|
38
|
+
</script>
|