toggle-components-library 1.34.0-beta.9 → 1.35.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toggle-components-library",
3
- "version": "1.34.0-beta.9",
3
+ "version": "1.35.0",
4
4
  "private": false,
5
5
  "scripts": {
6
6
  "serve": "vue-cli-service serve",
@@ -1,19 +1,25 @@
1
1
  <template>
2
- <button :class="['toggle-booster-button-container', boosterType]" @click="click">
3
-
4
- <img
5
- :src="logo.src"
6
- :alt="logo.alt"
7
- class="toggle-booster-button-logo"
8
- >
9
-
10
- <div :class="['toggle-booster-button', boosterType]" >
11
- <p class="plus">+</p>
12
- <div v-if="buttonText" class="toggle-booster-button-button-text">
13
- <slot>{{buttonText}}</slot>
2
+ <div :class="[{'toggle-booster-button-tooltip-container': !!tooltipText }]">
3
+ <button :class="['toggle-booster-button-container', boosterType, {'toggle-booster-button-disabled': disabled}]" :disabled="disabled" @click="click">
4
+
5
+ <img
6
+ :src="logo.src"
7
+ :alt="logo.alt"
8
+ class="toggle-booster-button-logo"
9
+ >
10
+
11
+ <div :class="['toggle-booster-button', boosterType]" >
12
+ <p class="plus">+</p>
13
+ <div v-if="buttonText" class="toggle-booster-button-button-text">
14
+ <slot>{{buttonText}}</slot>
15
+ </div>
14
16
  </div>
17
+ </button>
18
+
19
+ <div class="toggle-booster-button-tooltip-text" v-if="tooltipText">
20
+ <div >{{ tooltipText }}</div>
15
21
  </div>
16
- </button>
22
+ </div>
17
23
  </template>
18
24
 
19
25
  <script>
@@ -36,6 +42,14 @@
36
42
  type: Object,
37
43
  required: true,
38
44
  },
45
+ disabled: {
46
+ type: Boolean,
47
+ default: false,
48
+ },
49
+ tooltipText: {
50
+ type: String,
51
+ required: false
52
+ }
39
53
  },
40
54
  methods: {
41
55
  click() {
@@ -1,22 +1,29 @@
1
1
  <template>
2
- <div :class="[ 'toggle-button-container', {'toggle-button-container-mini':isMini}]">
2
+ <div :class="[ 'toggle-button-container', {'toggle-button-container-mini':isMini, 'toggle-button-tooltip-container': !!tooltipText }]">
3
3
  <button
4
4
  v-if="!$slots.default"
5
5
  :type="type"
6
- :class="[ 'toggle-button', buttonStyle, {'toggle-button-loading':loading, 'toggle-button-subscribed': !subscribed}]"
6
+ :class="[ 'toggle-button', buttonStyle, {'toggle-button-loading':loading, 'toggle-button-subscribed': !subscribed, 'toggle-button-booster-badge': boosterImageProperties}]"
7
7
  :disabled="(loading || disabled)"
8
8
  @click="click"
9
9
  >
10
10
  <div class="toggle-button-loader" v-if="loading" ></div>
11
11
  <span v-html="buttonText" v-if="!isMini"/>
12
+
13
+ <div v-if="boosterImageProperties" :class="['toggle-button-booster-image-badge', {'shimmer': boosterShimmer && !disabled, 'toggle-button-loading': loading, 'toggle-button-disabled': disabled}]" :style="'background-color: ' + boosterImageProperties.bgColor">
14
+ <img class="toggle-button-booster-image" :src="boosterImageProperties.src" :alt="boosterImageProperties.alt">
15
+ </div>
12
16
  </button>
13
17
  <div v-else :class="[ 'toggle-button-a', buttonStyle, {'toggle-button-a-loading':loading, 'disabled':disabled, 'toggle-button-subscribed': !subscribed}]">
14
- <div class="toggle-button-loader" v-if="loading" ></div>
15
- <div class="toggle-button-a-border" />
16
- <!--
17
- @slot String of button text
18
- -->
19
- <slot>{{buttonText}}</slot>
18
+ <div class="toggle-button-loader" v-if="loading" ></div>
19
+ <div class="toggle-button-a-border" />
20
+ <!--
21
+ @slot String of button text
22
+ -->
23
+ <slot>{{buttonText}}</slot>
24
+ </div>
25
+ <div class="toggle-button-tooltip-text" v-if="tooltipText">
26
+ <div >{{ tooltipText }}</div>
20
27
  </div>
21
28
  </div>
22
29
  </template>
@@ -67,10 +74,33 @@ export default {
67
74
  type:String,
68
75
  default:'confirm'
69
76
  },
70
- /* Grey out button if booster not enabled*/
77
+ /*
78
+ * Grey out button if booster not enabled
79
+ */
71
80
  subscribed: {
72
81
  type: Boolean,
73
82
  default: true
83
+ },
84
+ /*
85
+ * Booster badge image properties, image, alt text, background colour
86
+ */
87
+ boosterImageProperties: {
88
+ type: Object,
89
+ required: false,
90
+ },
91
+ /*
92
+ * Turns the shimmer animation on and off for the booster badge
93
+ */
94
+ boosterShimmer: {
95
+ type: Boolean,
96
+ default: true
97
+ },
98
+ /*
99
+ * Text displayed in tooltip
100
+ */
101
+ tooltipText: {
102
+ type: String,
103
+ required: false
74
104
  }
75
105
  },
76
106
  computed: {
@@ -1,6 +1,6 @@
1
1
  <template>
2
- <button :class="['toggle-metrics-button', buttonStyle, 'toggle-metrics-button-' + size]" :style="styles" @click="click">
3
- <div :class="icon" :style="'background-color:' + styles.color"></div>
2
+ <button :class="['toggle-metrics-button', buttonStyle]" @click="click">
3
+ <div :class="icon"></div>
4
4
  <slot>{{buttonText}}</slot>
5
5
  </button>
6
6
  </template>
@@ -19,23 +19,7 @@
19
19
  },
20
20
  icon: {
21
21
  type: String,
22
- required: false,
23
- validator: function(value) {
24
- return ["heatmap-icon", "email-icon", "contacts-icon"].indexOf(value) !== -1;
25
- }
26
- },
27
- size: {
28
- type: String,
29
- default: "medium",
30
- required: false,
31
- validator: function(value) {
32
- return ["small", "medium", "large"].indexOf(value) !== -1;
33
- }
34
- },
35
- styles: {
36
- type: Object,
37
- default: () => ({}),
38
- required: false,
22
+ required: true,
39
23
  },
40
24
  },
41
25
  methods: {
@@ -2,7 +2,7 @@
2
2
  <div>
3
3
  <h3 class="toggle-metric metric-label">{{label}}</h3>
4
4
  <div class="single-metric-icon" v-if="metricPending && label.length == 0"></div>
5
- <h1 class="toggle-metric metric-value" :class="{ 'toggle-metric-score': score}" v-else>{{metricValue}} {{ symbol }}</h1>
5
+ <h1 class="toggle-metric metric-value" v-else>{{metricValue}}</h1>
6
6
  </div>
7
7
  </template>
8
8
 
@@ -27,7 +27,7 @@ export default {
27
27
  type : {
28
28
  type: String,
29
29
  validator: function (value) {
30
- return ['text', 'number', 'percentage', 'currency', 'score'].indexOf(value) !== -1
30
+ return ['text', 'number', 'percentage', 'currency'].indexOf(value) !== -1
31
31
  }
32
32
  },
33
33
  /**
@@ -92,10 +92,9 @@ export default {
92
92
  return this.value.toLocaleString();
93
93
 
94
94
  }
95
- },
96
- score() {
97
- return this.type === 'score';
98
- },
95
+ }
96
+
97
+
99
98
  }
100
99
  }
101
100
 
@@ -54,7 +54,7 @@ export default {
54
54
  type : {
55
55
  type: String,
56
56
  validator: function (value) {
57
- return ['text', 'number', 'percentage', 'currency', 'score'].indexOf(value) !== -1
57
+ return ['text', 'number', 'percentage', 'currency'].indexOf(value) !== -1
58
58
  }
59
59
  },
60
60
  /**
@@ -1,5 +1,23 @@
1
1
  <template>
2
- <tr class="toggle-tablee-tr" @click="$emit('click')" >
2
+ <tr :class="['toggle-tablee-tr',{'tr-disabled':disabled }]" @click="handleClick" >
3
3
  <slot></slot>
4
4
  </tr>
5
- </template>
5
+ </template>
6
+
7
+ <script>
8
+ export default {
9
+ props: {
10
+ disabled: {
11
+ type: Boolean,
12
+ default: false
13
+ }
14
+ },
15
+ methods: {
16
+ handleClick() {
17
+ if(!this.disabled) {
18
+ this.$emit('click')
19
+ }
20
+ }
21
+ }
22
+ }
23
+ </script>
package/src/index.js CHANGED
@@ -88,7 +88,6 @@ import ToggleCarouselSlide from "./components/carousel/ToggleCarouselSlide.vue";
88
88
 
89
89
  import ToggleEmailCard from "./components/cards/ToggleEmailCard.vue";
90
90
  import ToggleRewardsCard from "./components/cards/ToggleRewardsCard.vue";
91
- import ToggleCommentCard from "./components/cards/ToggleCommentCard.vue";
92
91
 
93
92
 
94
93
  import './sass/main.scss';
@@ -162,8 +161,7 @@ const Components = {
162
161
  ToggleCarousel,
163
162
  ToggleCarouselSlide,
164
163
  ToggleEmailCard,
165
- ToggleRewardsCard,
166
- ToggleCommentCard
164
+ ToggleRewardsCard
167
165
  }
168
166
 
169
167
  Object.keys(Components).forEach(name => {
@@ -219,3 +219,37 @@ margin:1rem
219
219
 
220
220
  }
221
221
 
222
+ .toggle-booster-button-disabled {
223
+ opacity: 0.3;
224
+ }
225
+
226
+ /* Tooltip container */
227
+ .toggle-booster-button-tooltip-container {
228
+ position: relative;
229
+ display: flex;
230
+ justify-content: center;
231
+ }
232
+
233
+ /* Tooltip text */
234
+ .toggle-booster-button-tooltip-container .toggle-booster-button-tooltip-text {
235
+ visibility: hidden;
236
+ width: 120px;
237
+ height: fit-content;
238
+ background-color: black;
239
+ color: #fff;
240
+ text-align: center;
241
+ padding: 5px;
242
+ border-radius: 6px;
243
+ position: absolute;
244
+ z-index: 999;
245
+ top: 100%;
246
+ }
247
+
248
+ .toggle-booster-button-tooltip-text {
249
+ font-family: $toggle-font-family;
250
+ padding: 10px;
251
+ }
252
+
253
+ .toggle-booster-button-tooltip-container:hover .toggle-booster-button-tooltip-text {
254
+ visibility: visible;
255
+ }
@@ -395,7 +395,7 @@
395
395
  }
396
396
 
397
397
  &:hover .contacts-icon {
398
- background-color: white;
398
+ background-image: url("../assets/icons/contacts-white.svg");
399
399
  }
400
400
  }
401
401
  //icons
@@ -418,11 +418,9 @@
418
418
  }
419
419
 
420
420
  .contacts-icon {
421
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='.9em' viewBox='0 0 448 512'%3E%3C!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --%3E%3Cstyle%3Esvg%7Bfill:%23fff%7D%3C/style%3E%3Cpath d='M304 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM49.3 464H398.7c-8.9-63.3-63.3-112-129-112H178.3c-65.7 0-120.1 48.7-129 112zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3z'/%3E%3C/svg%3E");
422
- background-color: #6d90b4;
423
- -webkit-mask: var(--svg);
424
- mask: var(--svg);
425
- mask-repeat: no-repeat;
421
+ background-image: url("../assets/icons/contacts-greyblue.svg");
422
+ background-repeat:no-repeat;
423
+ background-size:contain;
426
424
  margin-right: 6px;
427
425
  width: 14px;
428
426
  height: 14px;
@@ -430,34 +428,82 @@
430
428
  }
431
429
  }
432
430
 
433
- .toggle-metrics-button-small {
434
- padding: 0px 13px;
435
- font-size: 12px;
436
- &.mini-contacts {
437
- font-size: 0.65rem;
438
- padding: 5px 12px;
439
- }
440
- .heatmap-icon {
441
- width: 21px;
442
- height: 21px;
431
+ .toggle-button-booster-badge {
432
+ display: flex;
433
+ align-items: center;
434
+ padding: 0.2rem 0.2rem 0.2rem 1rem !important;
435
+ }
436
+
437
+ .shimmer {
438
+ color: grey;
439
+ display: inline-block;
440
+ mask: linear-gradient(-60deg, #000 30%, #0005, #000 70%) right/400% 100%;
441
+ background-repeat: no-repeat;
442
+ animation: shimmer 4s infinite;
443
+ }
444
+
445
+ .toggle-button-booster-image-badge {
446
+ width: 6rem;
447
+ height: 2rem;
448
+ display: flex;
449
+ align-items: center;
450
+ justify-content: center;
451
+ border-radius: 4px;
452
+ margin: 0 0 0 20px;
453
+ padding: 0px 8px 0px 8px;
454
+ width: 6rem;
455
+ height: 1.8rem;
456
+ .toggle-button-booster-image {
457
+ width: 100%;
458
+ height: 100%;
443
459
  }
444
- .email-icon {
445
- width: 25px;
446
- height: 25px;
460
+ &.toggle-button-loading {
461
+ opacity: 0
447
462
  }
448
- .contacts-icon {
449
- --svg: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='.8em' viewBox='0 0 448 512'%3E%3C!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --%3E%3Cstyle%3Esvg%7Bfill:%23fff%7D%3C/style%3E%3Cpath d='M304 128a80 80 0 1 0 -160 0 80 80 0 1 0 160 0zM96 128a128 128 0 1 1 256 0A128 128 0 1 1 96 128zM49.3 464H398.7c-8.9-63.3-63.3-112-129-112H178.3c-65.7 0-120.1 48.7-129 112zM0 482.3C0 383.8 79.8 304 178.3 304h91.4C368.2 304 448 383.8 448 482.3c0 16.4-13.3 29.7-29.7 29.7H29.7C13.3 512 0 498.7 0 482.3z'/%3E%3C/svg%3E");
450
- -webkit-mask: var(--svg);
451
- mask: var(--svg);
452
- mask-repeat: no-repeat;
463
+ &.toggle-button-disabled {
464
+ opacity: 0.3;
453
465
  }
454
466
  }
455
467
 
456
- .toggle-metrics-button-large {
457
- padding: 23px 27px;
458
- font-size: 17px;
459
- &.mini-contacts {
460
- font-size: .92rem;
461
- padding: 10px 25px;
468
+ /* Tooltip container */
469
+ .toggle-button-tooltip-container {
470
+ position: relative;
471
+ justify-content: center;
472
+ display: flex;
473
+ }
474
+
475
+ /* Tooltip text */
476
+ .toggle-button-tooltip-container .toggle-button-tooltip-text {
477
+ visibility: hidden;
478
+ width: 120px;
479
+ height: fit-content;
480
+ background-color: black;
481
+ color: #fff;
482
+ text-align: center;
483
+ padding: 5px;
484
+ border-radius: 6px;
485
+ position: absolute;
486
+ z-index: 999;
487
+ top: 100%;
488
+ }
489
+
490
+ .toggle-button-tooltip-text {
491
+ font-family: $toggle-font-family;
492
+ }
493
+
494
+ .toggle-button-tooltip-container:hover .toggle-button-tooltip-text {
495
+ visibility: visible;
496
+ }
497
+
498
+ // Shimmer animation for booster badge
499
+ @keyframes shimmer {
500
+ 0% {
501
+ mask-position: right;
502
+ }
503
+ 30% {
504
+ mask-position: left;
505
+ }
506
+ 100% {
507
+ mask-position: left;
462
508
  }
463
509
  }
@@ -164,32 +164,3 @@
164
164
 
165
165
  }
166
166
 
167
- .toggle-comment-card {
168
- display: flex;
169
- flex-direction: row;
170
- width: 100%;
171
- height: 250px;
172
- border-radius: 18px;
173
- padding-right: 20px;
174
- font-size: $toggle-font-size-regular;
175
- font-family: $toggle-font-family;
176
- }
177
-
178
- .toggle-comment-card-info {
179
- display: flex;
180
- flex-direction: column;
181
- justify-content: space-between;
182
- padding: 30px 70px 20px 30px;
183
- color: white;
184
- border-radius: 30px;
185
- width: 100%;
186
-
187
- .toggle-comment-card-text {
188
- text-align: justify;
189
- line-height: 1.5rem;
190
-
191
- p {
192
- margin: 0
193
- }
194
- }
195
- }
@@ -134,10 +134,4 @@
134
134
 
135
135
  .increase-padding-bottom {
136
136
  padding-bottom: 3rem !important;
137
- }
138
-
139
- .toggle-metric-score::after {
140
- content: '/5';
141
- font-size: 27px;
142
- margin-left: -8px;
143
137
  }
@@ -342,11 +342,6 @@
342
342
  &.airship-hat-icon span::before {
343
343
  background-image: url("../assets/icons/airship-hat-hover.svg");
344
344
  }
345
-
346
- &.airship-feedback-icon a::before,
347
- &.airship-feedback-icon span::before {
348
- background-image: url("../assets/icons/airship-feedback-hover.svg");
349
- }
350
345
  }
351
346
  }
352
347
 
@@ -511,17 +506,6 @@
511
506
  animation: tilt-shake 0.4s;
512
507
  background-image: url("../assets/icons/airship-audiences-hover.svg");
513
508
  }
514
- // add feedbacl
515
- &.airship-feedback-icon a::before,
516
- &.airship-feedback-icon span::before {
517
- background-image: url("../assets/icons/airship-feedback.svg");
518
- }
519
-
520
- &.airship-feedback-icon a:hover::before,
521
- &.airship-feedback-icon span:hover::before {
522
- animation: tilt-shake 0.4s;
523
- background-image: url("../assets/icons/airship-feedback-hover.svg");
524
- }
525
509
 
526
510
  }
527
511
  }
@@ -117,9 +117,7 @@ table.toggle-table {
117
117
  }
118
118
  }
119
119
 
120
-
121
120
  tr.toggle-tablee-tr {
122
-
123
121
  &:hover {
124
122
  background-color: #FFF;
125
123
  .arrow-order {
@@ -146,6 +144,10 @@ table.toggle-table {
146
144
 
147
145
 
148
146
  }
147
+ tr.toggle-tablee-tr.tr-disabled * {
148
+ opacity: 0.5;
149
+ cursor: not-allowed;
150
+ }
149
151
 
150
152
  }
151
153
 
@@ -1,10 +0,0 @@
1
- <svg id="Group_10" data-name="Group 10" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="624.048" height="499" viewBox="0 0 624.048 499">
2
- <defs>
3
- <clipPath id="clip-path">
4
- <rect id="Rectangle_25" data-name="Rectangle 25" width="624.048" height="499" fill="none"/>
5
- </clipPath>
6
- </defs>
7
- <g id="Group_9" data-name="Group 9" clip-path="url(#clip-path)">
8
- <path id="Path_3" data-name="Path 3" d="M617.3,465.069l-.384-.318c-.385-.317-.9-.738-1.674-1.49-1.419-1.279-3.616-3.309-6.36-6.112a225.664,225.664,0,0,1-20.162-23.534c-.136-.182-.271-.367-.406-.55-22.957-31.214-26.261-72.555-9.486-107.484,16.327-34,23.783-71.208,20.13-109.472C586.148,81.9,441.91-14.07,276.747,1.694S-11.9,138.983.914,273.192,157.963,503.371,323.126,487.608a364.7,364.7,0,0,0,89.545-20,77.522,77.522,0,0,1,58.556,2.224,367.136,367.136,0,0,0,38.334,14.95c29.035,9.42,63.567,16.569,96.922,13.5A19.281,19.281,0,0,0,622.561,486.8a18.785,18.785,0,0,0-5.261-21.731m-446.79-153.1A50.455,50.455,0,1,1,216.243,257.2a50.456,50.456,0,0,1-45.733,54.772m138.931-12.493a50.454,50.454,0,1,1,45.734-54.77,50.454,50.454,0,0,1-45.734,54.77m134.991-12.137a50.455,50.455,0,1,1,45.733-54.769,50.455,50.455,0,0,1-45.733,54.769" transform="translate(0 0)" fill="#477ef6"/>
9
- </g>
10
- </svg>
@@ -1,10 +0,0 @@
1
- <svg id="Group_10" data-name="Group 10" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="624.048" height="499" viewBox="0 0 624.048 499">
2
- <defs>
3
- <clipPath id="clip-path">
4
- <rect id="Rectangle_25" data-name="Rectangle 25" width="624.048" height="499" fill="none"/>
5
- </clipPath>
6
- </defs>
7
- <g id="Group_9" data-name="Group 9" clip-path="url(#clip-path)">
8
- <path id="Path_3" data-name="Path 3" d="M617.3,465.069l-.384-.318c-.385-.317-.9-.738-1.674-1.49-1.419-1.279-3.616-3.309-6.36-6.112a225.664,225.664,0,0,1-20.162-23.534c-.136-.182-.271-.367-.406-.55-22.957-31.214-26.261-72.555-9.486-107.484,16.327-34,23.783-71.208,20.13-109.472C586.148,81.9,441.91-14.07,276.747,1.694S-11.9,138.983.914,273.192,157.963,503.371,323.126,487.608a364.7,364.7,0,0,0,89.545-20,77.522,77.522,0,0,1,58.556,2.224,367.136,367.136,0,0,0,38.334,14.95c29.035,9.42,63.567,16.569,96.922,13.5A19.281,19.281,0,0,0,622.561,486.8a18.785,18.785,0,0,0-5.261-21.731m-446.79-153.1A50.455,50.455,0,1,1,216.243,257.2a50.456,50.456,0,0,1-45.733,54.772m138.931-12.493a50.454,50.454,0,1,1,45.734-54.77,50.454,50.454,0,0,1-45.734,54.77m134.991-12.137a50.455,50.455,0,1,1,45.733-54.769,50.455,50.455,0,0,1-45.733,54.769" transform="translate(0 0)" fill="#354b64"/>
9
- </g>
10
- </svg>
@@ -1,63 +0,0 @@
1
- <template>
2
- <div class="toggle-comment-card">
3
- <div class="toggle-comment-card-info" :style="{ backgroundColor: cardColor }">
4
- <div class="toggle-comment-card-text">
5
- <p>"{{ commentLength }}"</p>
6
- </div>
7
- <div class="toggle-comment-card-name">
8
- <slot name="button_contacts"></slot>
9
- </div>
10
- </div>
11
- </div>
12
- </template>
13
- <script>
14
- export default {
15
- data() {
16
- return {};
17
- },
18
- props: {
19
- cardIndex: {
20
- type: Number,
21
- required: true,
22
- },
23
- totalCards: {
24
- type: Number,
25
- required: true,
26
- },
27
- comment: {
28
- type: String,
29
- required: true,
30
- },
31
- name: {
32
- type: String,
33
- required: true,
34
- },
35
- },
36
- computed: {
37
- cardColor() {
38
- // adjust colour palette below to change the Reward Cards colors
39
- const colorPalette = [
40
- "#2c7da0",
41
- "#f3c570",
42
- "#8bbcbe",
43
- "#a0a789",
44
- "#cbae78",
45
- "#a284b6",
46
- "#d39999",
47
- "#9b7361",
48
- "#64aaa8",
49
- "#799194",
50
- ];
51
-
52
- // pick random number to return random index of colourPalette
53
- const paletteIndex = Math.floor(
54
- (this.cardIndex / this.totalCards) * colorPalette.length
55
- );
56
- return colorPalette[paletteIndex];
57
- },
58
- commentLength() {
59
- return this.comment.length > 420 ? this.comment.substring(0, 420) + "..." : this.comment;
60
- },
61
- }
62
- };
63
- </script>