@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.
@@ -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
- <b style="font-size: 16px">{{(plan.name)}}</b>
46
- <div v-if="plan.discount && plan.discount > 0" >
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
- <b style="margin-top: 5px;font-size: 17px">/{{selectedPlan === 'monthly' ? ("mo") : ("year")}}</b>
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" :key="key" :class="activePlanClass(plan)" :style="activePlanStyle(plan)">
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
- perPage: 4,
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').style.left = -document.querySelector('.Polaris-ResourceList__ResourceListWrapper.features').offsetWidth + 'px';
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
- setTimeout(function() {
322
- let element = document.querySelector('.slide-0');
323
- element.classList.add('first-slide')
324
- element = document.querySelector('.slide-3');
325
- element.classList.add('last-slide')
326
- document.querySelector('.VueCarousel-navigation-button.VueCarousel-navigation-prev').style.left = -document.querySelector('.Polaris-ResourceList__ResourceListWrapper.features').offsetWidth + 'px';
327
- },400)
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
- const featuresData = await axios.get(`${this.app_manager_config.baseUrl}/api/app-manager/plan-features`).catch(error => {
341
- console.error(error)
342
- });
343
- this.features = featuresData.data.features;
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
- const plansData = await axios.get(`${this.app_manager_config.baseUrl}/api/app-manager/plans`, { params: { 'shop_domain': this.shop_domain } }).catch(error => {
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
- created() {
364
- let initializeSliderComponent = setInterval(() => {
365
- let element = document.querySelector('.slide-0');
366
- if (element) {
367
- element.classList.add('first-slide')
368
- element = document.querySelector('.slide-3');
369
- element.classList.add('last-slide')
370
- document.querySelector('.VueCarousel-navigation-button.VueCarousel-navigation-prev').style.left = -document.querySelector('.Polaris-ResourceList__ResourceListWrapper.features').offsetWidth + 'px';
371
- clearInterval(initializeSliderComponent);
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
- .app-manager .app-manager-plan-page .plan__price{
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>
@@ -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>