mp-design-system 1.2.16 → 1.2.17

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mp-design-system",
3
- "version": "1.2.16",
3
+ "version": "1.2.17",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "dev": "npm-run-all --parallel bundle:*",
@@ -1,6 +1,5 @@
1
1
  .c-embed {
2
2
  position: relative;
3
- z-index: -1;
4
3
 
5
4
  &__wrapper {
6
5
  padding-bottom: 56.625%;
@@ -0,0 +1,575 @@
1
+ const ProductFinder = Vue.createApp({
2
+ setup() {
3
+ const { ref, computed } = Vue;
4
+
5
+ let translations = {
6
+ generic: {
7
+ questionText: "Question",
8
+ backText: "Back",
9
+ nextText: "Next",
10
+ restartText: "Restart",
11
+ seeResultsText: "See results",
12
+ viewText: "View",
13
+ getAQuoteText: "Get a quote",
14
+ requestADemoText: "Request a demo",
15
+ },
16
+ questionOne: {
17
+ labelText: "Where will your Zetasizer be used?",
18
+ options: [
19
+ { optionText: "Academic Research" },
20
+ { optionText: "Industrial Research" },
21
+ { optionText: "Pharmaceutical Research" },
22
+ { optionText: "Industrial QA/QC" },
23
+ { optionText: "Pharmaceutical QA/QC" },
24
+ ],
25
+ },
26
+ questionTwo: {
27
+ labelText: "If you are replacing or supplementing an existing system please choose the model from below or select \"not applicable\"",
28
+ options: [
29
+ { optionText: "Zetasizer Nano S90/ZS90" },
30
+ { optionText: "Zetasizer Nano ZS/ZSE" },
31
+ { optionText: "Zetasizer Nano ZSP" },
32
+ { optionText: "Zetasizer uV" },
33
+ { optionText: "Zetasizer Ultra" },
34
+ { optionText: "Zetasizer Pro" },
35
+ { optionText: "Other manufacturer's system" },
36
+ { optionText: "Not applicable" },
37
+ ],
38
+ },
39
+ questionThree: {
40
+ labelText: "What do you want the Zetasizer to tell you about your sample? (Select as many as applicable)",
41
+ options: [
42
+ { optionText: "Size" },
43
+ { optionText: "Zeta potential" },
44
+ { optionText: "Concentration" },
45
+ ],
46
+ },
47
+ questionFour: {
48
+ labelText: "If you are using your existing system in a QA/QC department is it important that the new system provides consistency of results compared to a previously used system?",
49
+ options: [
50
+ { optionText: "Very important" },
51
+ { optionText: "Somewhat important" },
52
+ { optionText: "Not important" },
53
+ ],
54
+ },
55
+ questionFive: {
56
+ labelText: "Which of the following best describes your sample material?",
57
+ options: [
58
+ { optionText: "Slurries/Dispersions >5% solids" },
59
+ { optionText: "Emulsions/Lipid Suspension" },
60
+ { optionText: "Natural Polymers/Proteins >10 mg/mL" },
61
+ { optionText: "Proteins/Biomolecules <10 mg/mL" },
62
+ { optionText: "Environmental Samples (Aqueous)" },
63
+ { optionText: "Dilute nanoparticle/colloidal systems" },
64
+ ],
65
+ },
66
+ questionSix: {
67
+ labelText: "What is the expected size range of your sample?",
68
+ options: [
69
+ { optionText: "<100 nm" },
70
+ { optionText: "<500 nm" },
71
+ { optionText: ">500 nm" },
72
+ { optionText: "Various/Unknown" },
73
+ ],
74
+ },
75
+ questionSeven: {
76
+ labelText: "Are you likely to measure samples that fluoresce in red light?",
77
+ options: [
78
+ { optionText: "Yes" },
79
+ { optionText: "No" },
80
+ ],
81
+ },
82
+ results: {
83
+ headingText: "All done.",
84
+ multipleResultsLedeText:
85
+ "Based on the features and specifications you selected we would recommend these products.",
86
+ singleResultLedeText:
87
+ "Based on the features and specifications you selected we would recommend the",
88
+ },
89
+ };
90
+ if (window.location.pathname.lastIndexOf("/de", 0) == 0) {
91
+ // German translations
92
+ } else if (window.location.pathname.lastIndexOf("/es", 0) == 0) {
93
+ // Spanish translations
94
+ } else if (window.location.pathname.lastIndexOf("/fr", 0) == 0) {
95
+ // French translations
96
+ } else if (window.location.pathname.lastIndexOf("/br", 0) == 0) {
97
+ // Portugese translations
98
+ } else if (window.location.pathname.lastIndexOf("/ru", 0) == 0) {
99
+ // Russian translations
100
+ } else if (window.location.pathname.lastIndexOf("/kr", 0) == 0) {
101
+ // Korean translations
102
+ } else if (window.location.pathname.lastIndexOf("/jp", 0) == 0) {
103
+ // Japanese translations
104
+ } else if (window.location.pathname.lastIndexOf("/tw", 0) == 0) {
105
+ // Taiwanese translations
106
+ } else if (window.location.hostname.indexOf("malvernpanalytical.com.cn") > 0) {
107
+ // Chinese translations
108
+ }
109
+
110
+ let activeStep = ref(1);
111
+
112
+ const questions = {
113
+ questionOne: {
114
+ label: translations.questionOne.labelText,
115
+ options: [
116
+ {
117
+ label: translations.questionOne.options[0].optionText,
118
+ value: "Academic Research",
119
+ id: "One",
120
+ },
121
+ {
122
+ label: translations.questionOne.options[1].optionText,
123
+ value: "Industrial Research",
124
+ id: "Two",
125
+ },
126
+ {
127
+ label: translations.questionOne.options[2].optionText,
128
+ value: "Pharmaceutical Research",
129
+ id: "Three",
130
+ },
131
+ {
132
+ label: translations.questionOne.options[3].optionText,
133
+ value: "Industrial QA/QC",
134
+ id: "Four",
135
+ },
136
+ {
137
+ label: translations.questionOne.options[4].optionText,
138
+ value: "Pharmaceutical QA/QC",
139
+ id: "Five",
140
+ },
141
+ ],
142
+ },
143
+ questionTwo: {
144
+ label: translations.questionTwo.labelText,
145
+ options: [
146
+ {
147
+ label: translations.questionTwo.options[0].optionText,
148
+ value: "Zetasizer Nano S90/ZS90",
149
+ id: "One",
150
+ },
151
+ {
152
+ label: translations.questionTwo.options[1].optionText,
153
+ value: "Zetasizer Nano ZS/ZSE",
154
+ id: "Two",
155
+ },
156
+ {
157
+ label: translations.questionTwo.options[2].optionText,
158
+ value: "Zetasizer Nano ZSP",
159
+ id: "Three",
160
+ },
161
+ {
162
+ label: translations.questionTwo.options[3].optionText,
163
+ value: "Zetasizer uV",
164
+ id: "Four",
165
+ },
166
+ {
167
+ label: translations.questionTwo.options[4].optionText,
168
+ value: "Zetasizer Ultra",
169
+ id: "Five",
170
+ },
171
+ {
172
+ label: translations.questionTwo.options[5].optionText,
173
+ value: "Zetasizer Pro",
174
+ id: "Six",
175
+ },
176
+ {
177
+ label: translations.questionTwo.options[6].optionText,
178
+ value: "Other manufacturer's system",
179
+ id: "Seven",
180
+ },
181
+ {
182
+ label: translations.questionTwo.options[7].optionText,
183
+ value: "Not applicable",
184
+ id: "Eight",
185
+ },
186
+ ],
187
+ },
188
+ questionThree: {
189
+ label: translations.questionThree.labelText,
190
+ options: [
191
+ {
192
+ label: translations.questionThree.options[0].optionText,
193
+ value: "Size",
194
+ id: "One",
195
+ },
196
+ {
197
+ label: translations.questionThree.options[1].optionText,
198
+ value: "Zeta potential",
199
+ id: "Two",
200
+ },
201
+ {
202
+ label: translations.questionThree.options[2].optionText,
203
+ value: "Concentration",
204
+ id: "Three",
205
+ },
206
+ ],
207
+ },
208
+ questionFour: {
209
+ label: translations.questionFour.labelText,
210
+ options: [
211
+ {
212
+ label: translations.questionFour.options[0].optionText,
213
+ value: "Very important",
214
+ id: "One",
215
+ },
216
+ {
217
+ label: translations.questionFour.options[1].optionText,
218
+ value: "Somewhat important",
219
+ id: "Two",
220
+ },
221
+ {
222
+ label: translations.questionFour.options[2].optionText,
223
+ value: "Not important",
224
+ id: "Three",
225
+ },
226
+ ],
227
+ },
228
+ questionFive: {
229
+ label: translations.questionFive.labelText,
230
+ options: [
231
+ {
232
+ label: translations.questionFive.options[0].optionText,
233
+ value: "Slurries/Dispersions >5% solids",
234
+ id: "One",
235
+ },
236
+ {
237
+ label: translations.questionFive.options[1].optionText,
238
+ value: "Emulsions/Lipid Suspension",
239
+ id: "Two",
240
+ },
241
+ {
242
+ label: translations.questionFive.options[2].optionText,
243
+ value: "Natural Polymers/Proteins >10 mg/mL",
244
+ id: "Three",
245
+ },
246
+ {
247
+ label: translations.questionFive.options[3].optionText,
248
+ value: "Proteins/Biomolecules <10 mg/mL",
249
+ id: "Four",
250
+ },
251
+ {
252
+ label: translations.questionFive.options[4].optionText,
253
+ value: "Environmental Samples (Aqueous)",
254
+ id: "Five",
255
+ },
256
+ {
257
+ label: translations.questionFive.options[5].optionText,
258
+ value: "Dilute nanoparticle/colloidal systems",
259
+ id: "Six",
260
+ },
261
+ ],
262
+ },
263
+ questionSix: {
264
+ label: translations.questionSix.labelText,
265
+ options: [
266
+ {
267
+ label: translations.questionSix.options[0].optionText,
268
+ value: "<100 nm",
269
+ id: "One",
270
+ },
271
+ {
272
+ label: translations.questionSix.options[1].optionText,
273
+ value: "<500 nm",
274
+ id: "Two",
275
+ },
276
+ {
277
+ label: translations.questionSix.options[2].optionText,
278
+ value: ">500 nm",
279
+ id: "Three",
280
+ },
281
+ {
282
+ label: translations.questionSix.options[3].optionText,
283
+ value: "Various/Unknown",
284
+ id: "Four",
285
+ },
286
+ ],
287
+ },
288
+ questionSeven: {
289
+ label: translations.questionSeven.labelText,
290
+ options: [
291
+ {
292
+ label: translations.questionSeven.options[0].optionText,
293
+ value: "Yes",
294
+ id: "One",
295
+ },
296
+ {
297
+ label: translations.questionSeven.options[1].optionText,
298
+ value: "No",
299
+ id: "Two",
300
+ },
301
+ ],
302
+ },
303
+ };
304
+
305
+ let answers = {
306
+ questionOne: "",
307
+ questionTwo: "",
308
+ questionThree: "",
309
+ questionFour: "",
310
+ questionFive: "",
311
+ questionSix: "",
312
+ questionSeven: "",
313
+ };
314
+
315
+ let products = ref([]);
316
+ let results = ref([]);
317
+ const loading = ref(false);
318
+
319
+ function checkQuestionOne(question, answer) {
320
+ if (answers.questionOne) {
321
+ console.log(question);
322
+ console.log(answer);
323
+ }
324
+ }
325
+
326
+ function checkQuestionTwo(question, answer) {
327
+ if (answers.questionTwo) {
328
+
329
+ }
330
+ }
331
+
332
+ function checkQuestionThree(question, answer) {
333
+ if (answers.questionThree) {
334
+
335
+ }
336
+ }
337
+
338
+ function checkQuestionFour(question, answer) {
339
+ if (answers.questionFour) {
340
+
341
+ }
342
+ }
343
+
344
+ function checkQuestionFive(question, answer) {
345
+ if (answers.questionFive) {
346
+
347
+ }
348
+ }
349
+
350
+ function checkQuestionSix(question, answer) {
351
+ if (answers.questionSix) {
352
+
353
+ }
354
+ }
355
+
356
+ function checkQuestionSeven(question, answer) {
357
+ if (answers.questionSeven) {
358
+
359
+ }
360
+ }
361
+
362
+ function previousStep() {
363
+ if (activeStep.value == 1) {
364
+ activeStep.value--;
365
+ } else if (activeStep.value == 2) {
366
+ activeStep.value--;
367
+ } else if (activeStep.value == 3) {
368
+ activeStep.value--;
369
+ } else if (activeStep.value == 4) {
370
+ activeStep.value -= 2;
371
+ } else if (activeStep.value == 5) {
372
+ activeStep.value--;
373
+ }
374
+ }
375
+
376
+ function restart(resultsView) {
377
+ dataLayer.push({
378
+ event: "product_finder",
379
+ action: "Restart",
380
+ label: resultsView,
381
+ });
382
+ _paq.push(["trackEvent", "Product finder", "Restart", resultsView]);
383
+ activeStep.value = 0;
384
+ results.value = [];
385
+ answers.questionOne = "";
386
+ answers.questionTwo = "";
387
+ answers.questionThree = "";
388
+ answers.questionFour = "";
389
+ answers.questionFive = "";
390
+ }
391
+
392
+ function resultTracking(product) {
393
+ dataLayer.push({
394
+ event: "product_finder",
395
+ action: "Result",
396
+ label: product,
397
+ });
398
+ _paq.push(["trackEvent", "Product finder", "Result", product]);
399
+ }
400
+
401
+ const hostname = computed(() => window.location.hostname.toString());
402
+ const pathname = computed(() => window.location.pathname.toString());
403
+
404
+ return {
405
+ translations,
406
+ activeStep,
407
+ questions,
408
+ answers,
409
+ loading,
410
+ results,
411
+ checkQuestionOne,
412
+ checkQuestionTwo,
413
+ checkQuestionThree,
414
+ checkQuestionFour,
415
+ checkQuestionFive,
416
+ checkQuestionSix,
417
+ checkQuestionSeven,
418
+ previousStep,
419
+ restart,
420
+ resultTracking,
421
+ hostname,
422
+ pathname,
423
+ };
424
+ },
425
+ template: `
426
+ <div class="u-wrap u-margin-top-s u-margin-bottom-xl">
427
+ <!-- Question 1 -->
428
+ <div class="u-bg-petrol-step-3 u-flex u-flex-column u-align-center u-pad-xl u-flow--l" v-if="activeStep == 1">
429
+ <p class="c-h c-h--upper c-h--step--1 u-grey-step-1 u-uppercase">{{ translations.generic.questionText }} 1</p>
430
+ <h2 class="c-h c-h--step-3 u-petrol">{{ questions.questionOne.label }}</h2>
431
+ <fieldset id="questionOne" class="o-grid o-grid--of-four u-wrap--content">
432
+ <div v-for="option in questions.questionOne.options" :key="option">
433
+ <input type="radio" class="c-radio c-radio--box" name="questionOne" :id="'questionOne_' + option.id" :value="option.value" v-model="answers.questionOne" />
434
+ <label :for="'questionOne_' + option.id" v-html="option.label"></label>
435
+ </div>
436
+ </fieldset>
437
+ <button type="button" class="mp c-button" :class="loading ? 'c-button--red loading-indicator' : ''" :disabled="loading == true" @@click="checkQuestionOne(questions.questionOne.label.toString(), answers.questionOne.toString())">{{ translations.generic.nextText }}</button>
438
+ </div>
439
+ <!-- Question 2 -->
440
+ <div class="u-bg-petrol-step-3 u-flex u-flex-column u-align-center u-pad-xl u-flow--l" v-if="activeStep == 2">
441
+ <a class="mp c-twi u-link c-twi--left" style="align-self: flex-start" @@click="previousStep()">
442
+ <span>{{ translations.generic.backText }}</span>
443
+ <svg role="img" aria-hidden="true" focusable="false" class="mp c-icon c-icon--arrow-right">
444
+ <use xlink:href="/static/svg/sprite.svg#arrow-left"></use>
445
+ </svg>
446
+ </a>
447
+ <p class="c-h c-h--upper c-h--step--1 u-grey-step-1 u-uppercase u-margin-top-0">{{ translations.generic.questionText }} 2</p>
448
+ <h2 class="c-h c-h--step-3 u-petrol">{{ questions.questionTwo.label }}</h2>
449
+ <fieldset id="questionTwo" class="o-grid o-grid--of-two u-wrap--content">
450
+ <div v-for="option in questions.questionTwo.options" :key="option">
451
+ <input type="radio" class="c-radio c-radio--box" name="questionTwo" :id="'questionTwo_' + option.id" :value="option.value" v-model="answers.questionTwo" />
452
+ <label :for="'questionTwo_' + option.id" v-html="option.label"></label>
453
+ </div>
454
+ </fieldset>
455
+ <button type="button" class="mp c-button" :class="loading ? 'c-button--red loading-indicator' : ''" :disabled="loading == true" @@click="checkQuestionTwo(questions.questionTwo.label.toString(), answers.questionTwo.toString())">{{ translations.generic.nextText }}</button>
456
+ </div>
457
+ <!-- Question 3 -->
458
+ <div class="u-bg-petrol-step-3 u-flex u-flex-column u-align-center u-pad-xl u-flow--l" v-if="activeStep == 3">
459
+ <a class="mp c-twi u-link c-twi--left" style="align-self: flex-start" @@click="previousStep()">
460
+ <span>{{ translations.generic.backText }}</span>
461
+ <svg role="img" aria-hidden="true" focusable="false" class="mp c-icon c-icon--arrow-right">
462
+ <use xlink:href="/static/svg/sprite.svg#arrow-left"></use>
463
+ </svg>
464
+ </a>
465
+ <p class="c-h c-h--upper c-h--step--1 u-grey-step-1 u-uppercase u-margin-top-0">{{ translations.generic.questionText }} 3</p>
466
+ <h2 class="c-h c-h--step-3 u-petrol">{{ questions.questionThree.label }}</h2>
467
+ <fieldset id="questionThree" class="o-grid o-grid--of-four u-wrap--content">
468
+ <div v-for="option in questions.questionThree.options" :key="option">
469
+ <input type="radio" class="c-radio c-radio--box" name="questionThree" :id="'questionThree_' + option.id" :value="option.value" v-model="answers.questionThree" :disabled="!results.some(result => result.Measurements.map(measurement => measurement.toLowerCase()).includes(option.value.toLowerCase()))" />
470
+ <label :for="'questionThree_' + option.id" v-html="option.label"></label>
471
+ </div>
472
+ </fieldset>
473
+ <button type="button" class="mp c-button" :class="loading ? 'c-button--red loading-indicator' : ''" :disabled="loading == true" @@click="checkQuestionThree(questions.questionThree.label.toString(), answers.questionThree.toString())">{{ translations.generic.nextText }}</button>
474
+ </div>
475
+ <!-- Question 4 -->
476
+ <div class="u-bg-petrol-step-3 u-flex u-flex-column u-align-center u-pad-xl u-flow--l" v-if="activeStep == 4">
477
+ <a class="mp c-twi u-link c-twi--left" style="align-self: flex-start" @@click="previousStep()">
478
+ <span>{{ translations.generic.backText }}</span>
479
+ <svg role="img" aria-hidden="true" focusable="false" class="mp c-icon c-icon--arrow-right">
480
+ <use xlink:href="/static/svg/sprite.svg#arrow-left"></use>
481
+ </svg>
482
+ </a>
483
+ <p class="c-h c-h--upper c-h--step--1 u-grey-step-1 u-uppercase u-margin-top-0">{{ translations.generic.questionText }} 4</p>
484
+ <h2 class="c-h c-h--step-3 u-petrol">{{ questions.questionFour.label }}</h2>
485
+ <fieldset id="questionFour" class="o-grid o-grid--of-three u-wrap--content">
486
+ <div v-for="option in questions.questionFour.options" :key="option">
487
+ <input type="radio" class="c-radio c-radio--box" name="questionFour" :id="'questionFour_' + option.id" :value="option.value" v-model="answers.questionFour" :disabled="!results.some(result => result.SizeRanges.map(sizeRange => sizeRange.toLowerCase()).includes(option.value.toLowerCase()))" />
488
+ <label :for="'questionFour_' + option.id" v-html="option.label"></label>
489
+ </div>
490
+ </fieldset>
491
+ <button type="button" class="mp c-button" :class="loading ? 'c-button--red loading-indicator' : ''" :disabled="loading == true" @@click="checkQuestionFour(questions.questionFour.label.toString(), answers.questionFour.toString())">{{ translations.generic.nextText }}</button>
492
+ </div>
493
+ <!-- Question 5 -->
494
+ <div class="u-bg-petrol-step-3 u-flex u-flex-column u-align-center u-pad-xl u-flow--l" v-if="activeStep == 5">
495
+ <a class="mp c-twi u-link c-twi--left" style="align-self: flex-start" @@click="previousStep()">
496
+ <span>{{ translations.generic.backText }}</span>
497
+ <svg role="img" aria-hidden="true" focusable="false" class="mp c-icon c-icon--arrow-right">
498
+ <use xlink:href="/static/svg/sprite.svg#arrow-left"></use>
499
+ </svg>
500
+ </a>
501
+ <p class="c-h c-h--upper c-h--step--1 u-grey-step-1 u-uppercase u-margin-top-0">{{ translations.generic.questionText }} 5</p>
502
+ <h2 class="c-h c-h--step-3 u-petrol">{{ questions.questionFive.label }}</h2>
503
+ <fieldset id="questionFive" class="o-grid o-grid--of-three u-wrap--content">
504
+ <div v-for="option in questions.questionFive.options" :key="option">
505
+ <input type="radio" class="c-radio c-radio--box" name="questionFive" :id="'questionFive_' + option.id" :value="option.value" v-model="answers.questionFive" :disabled="!results.some(result => result.Environments.map(environment => environment.toLowerCase()).includes(option.value.toLowerCase()))" />
506
+ <label :for="'questionFive_' + option.id" v-html="option.label"></label>
507
+ </div>
508
+ </fieldset>
509
+ <button type="button" class="mp c-button" :class="loading ? 'c-button--red loading-indicator' : ''" :disabled="loading == true" @@click="checkQuestionFive(questions.questionFive.label.toString(), answers.questionFive.toString())">{{ translations.generic.seeResultsText }}</button>
510
+ </div>
511
+ <!-- Question 6 -->
512
+
513
+ <!-- Question 7 -->
514
+
515
+
516
+ <!-- Finish -->
517
+ <!-- <div class="u-bg-petrol-step-3 o-grid o-grid--layout o-grid--6/5 o-grid--push u-pad-xl u-flow--m" v-if="activeStep == 6 && results.length >= 1">
518
+ <div class="u-flex u-flex-column u-flow--l" :class="results.length == 1 ? 'u-justify-center' : ''">
519
+ <h2 class="c-h c-h--step-3 u-petrol">{{ translations.results.headingText }}</h2>
520
+ <div class="mp o-prose u-flow--prose">
521
+ <p v-if="results.length > 1">{{ translations.results.multipleResultsLedeText }}</p>
522
+ <p v-else>{{ translations.results.singleResultLedeText }} <strong>{{ results[0].Title }}</strong>.</p>
523
+ </div>
524
+ <div class="u-flex">
525
+ <a class="mp c-button" :href="results.length == 1 ? '@WebRequestContext.Localization.Path/products/request-a-quote?product=' + results[0].ProductId : '@WebRequestContext.Localization.Path/products/request-a-quote'">{{ translations.generic.getAQuoteText }}</a>
526
+ </div>
527
+ <div>
528
+ <a class="mp c-twi u-link c-twi--left" @@click="restart('Results')">
529
+ <span>{{ translations.generic.restartText }}</span>
530
+ <svg width="22" height="21" viewBox="0 0 22 21" fill="none" xmlns="http://www.w3.org/2000/svg">
531
+ <path d="M1 2V8H7" stroke="#006DAF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
532
+ <path d="M3.51 12.9999C4.15839 14.8403 5.38734 16.4201 7.01166 17.5013C8.63598 18.5825 10.5677 19.1065 12.5157 18.9944C14.4637 18.8823 16.3226 18.1401 17.8121 16.8797C19.3017 15.6193 20.3413 13.9089 20.7742 12.0063C21.2072 10.1037 21.0101 8.11191 20.2126 6.33105C19.4152 4.55019 18.0605 3.07674 16.3528 2.13271C14.6451 1.18868 12.6769 0.825212 10.7447 1.09707C8.81245 1.36892 7.02091 2.26137 5.64 3.63995L1 7.99995" stroke="#006DAF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
533
+ </svg>
534
+ </a>
535
+ </div>
536
+ </div>
537
+ <div class="u-margin-top-0 u-flow--s">
538
+ <article class="mp c-card c-card--layout-multi c-card--size-large c-card--bordered c-card--has-image" v-for="result in results" :key="result">
539
+ <div class="c-card__wrapper">
540
+ <figure class="c-card__image u-flex u-flex-column u-justify-center" v-if="result.Img">
541
+ <img :src="result.Img + '?width=475'" style="mix-blend-mode: multiply;">
542
+ </figure>
543
+ <div class="c-card__primary">
544
+ <header class="c-card__header u-flow--2xs">
545
+ <h2 class="c-h c-card__title" v-if="result.Title">{{ result.Title }}</h2>
546
+ <h3 class="c-h c-h--tagline" v-if="result.Strapline">{{ result.Strapline }}</h3>
547
+ </header>
548
+ <div class="c-card__content u-flow">
549
+ <div class="mp o-prose u-flow--prose u-step--1">
550
+ <p v-if="result.Description">{{ result.Description }}</p>
551
+ </div>
552
+ <div class="c-card__specs" v-if="result.Range">
553
+ <dl>
554
+ <dt>{{ result.Range }}</dt>
555
+ <dd>Particle size range</dd>
556
+ </dl>
557
+ </div>
558
+ </div>
559
+ <footer class="c-card__footer u-flow--2xs">
560
+ <a class="mp c-twi u-link c-twi--left">
561
+ <span>{{ translations.generic.viewText }} {{ result.Title }}</span>
562
+ <svg role="img" aria-hidden="true" focusable="false" class="mp c-icon c-icon--arrow-right">
563
+ <use xlink:href="/static/svg/sprite.svg#arrow-right"></use>
564
+ </svg>
565
+ </a>
566
+ </footer>
567
+ </div>
568
+ <a class="u-fill u-fill--link" :href="(hostname.includes('malvernpanalytical.com.cn') ? '/' : '/' + pathname.split('/')[1] + '/') + result.Url.split('/').slice(2).join('/')" @@click="resultTracking(result.Title.toString())">{{ result.Title }}</a>
569
+ </div>
570
+ </article>
571
+ </div>
572
+ </div> -->
573
+ </div>
574
+ `,
575
+ }).mount("#product-finder");
@@ -0,0 +1,61 @@
1
+ ---
2
+ title: Mastersizer range
3
+ tags: prototype
4
+ ---
5
+
6
+ {% set siteNav %}{% include "navigation/corporate.njk" %}{% endset %}
7
+
8
+ {% extends "page.njk" %}
9
+
10
+ {% block content %}
11
+
12
+ <div class="mp u-wrap u-pad-y-l-2xl">
13
+ <nav class="c-breadcrumb " aria-label="Breadcrumb">
14
+ <ol class="c-breadcrumb__list" role="list">
15
+ <li class="c-breadcrumb__item" role="listitem">
16
+ <a href="/en/products" class="c-breadcrumb__link">Products</a>
17
+ </li>
18
+ <li class="c-breadcrumb__item" role="listitem">
19
+ <svg role="img" aria-hidden="true" focusable="false" class="mp c-icon c-icon--chevron-down">
20
+ <use xlink:href="/static/svg/sprite.svg#chevron-down"></use>
21
+ </svg>
22
+ <a href="/en/products/product-range" class="c-breadcrumb__link">Product range </a>
23
+ </li>
24
+ <li class="c-breadcrumb__item" role="listitem">
25
+ <svg role="img" aria-hidden="true" focusable="false" class="mp c-icon c-icon--chevron-down">
26
+ <use xlink:href="/static/svg/sprite.svg#chevron-down"></use>
27
+ </svg>
28
+ <a href="/en/products/product-range/zetasizer-range" class="c-breadcrumb__link">Zetasizer range</a>
29
+ </li>
30
+ <li class="c-breadcrumb__item" role="listitem">
31
+ <svg role="img" aria-hidden="true" focusable="false" class="mp c-icon c-icon--chevron-down">
32
+ <use xlink:href="/static/svg/sprite.svg#chevron-down"></use>
33
+ </svg>
34
+ <a href="/en/products/product-range/zetasizer-range/zetasizer-advance-range" class="c-breadcrumb__link">Zetasizer Advance Range</a>
35
+ </li>
36
+ <li class="c-breadcrumb__item" role="listitem">
37
+ <svg role="img" aria-hidden="true" focusable="false" class="mp c-icon c-icon--chevron-down">
38
+ <use xlink:href="/static/svg/sprite.svg#chevron-down"></use>
39
+ </svg>
40
+ <span class="c-breadcrumb__current" aria-current="Zetasizer Advance: Which system ...">Zetasizer Advance: Which system ...</span>
41
+ </li>
42
+ </ol>
43
+ </nav>
44
+ <header class="u-wrap--content u-flow--xs">
45
+ <h1 class="c-h c-h--page-title">Zetasizer Advance: Which system is right for me?</h1>
46
+ </header>
47
+ </div>
48
+ <div class="u-wrap u-flow--xl">
49
+ <div>
50
+ <div class="o-prose u-flow--prose">
51
+ <p>Get your personalized recommendation for your perfect new system, as well as seeing which Zetasizer is the closest equivalent to your existing instrument, in just a few minutes!</p>
52
+ <p>With 6 models to choose from, our new tool will help you find the perfect <a title="Zetasizer Advance Range" href="/en/products/product-range/zetasizer-range/zetasizer-advance-range">Zetasizer Advance system</a> for your measurement needs. To find out which instrument is best suited to your requirements, or is the best match for your current Zetasizer, please answer the questions below&nbsp;and click the ‘Find your Zetasizer’ button.</p>
53
+ </div>
54
+ </div>
55
+ <div id="product-finder"></div>
56
+ </div>
57
+
58
+ <script src="https://unpkg.com/vue@next/dist/vue.global.js"></script>
59
+ <script src="/build/js/product-finder.js" defer></script>
60
+
61
+ {% endblock %}