govuk_publishing_components 4.1.1 → 5.0.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.
Files changed (25) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/current-location.js +1 -1
  3. data/app/assets/javascripts/govuk_publishing_components/components/{task-list.js → step-by-step-nav.js} +42 -45
  4. data/app/assets/javascripts/history-support.js +1 -1
  5. data/app/assets/stylesheets/govuk_publishing_components/_all_components.scss +3 -3
  6. data/app/assets/stylesheets/govuk_publishing_components/_all_components_print.scss +2 -2
  7. data/app/assets/stylesheets/govuk_publishing_components/component_guide_print.scss +3 -0
  8. data/app/assets/stylesheets/govuk_publishing_components/components/{_task-list-header.scss → _step-by-step-nav-header.scss} +4 -4
  9. data/app/assets/stylesheets/govuk_publishing_components/components/{_task-list-related.scss → _step-by-step-nav-related.scss} +7 -7
  10. data/app/assets/stylesheets/govuk_publishing_components/components/{_task-list.scss → _step-by-step-nav.scss} +118 -131
  11. data/app/assets/stylesheets/govuk_publishing_components/components/print/{_task-list-header.scss → _step-by-step-nav-header.scss} +3 -3
  12. data/app/assets/stylesheets/govuk_publishing_components/components/print/{_task-list.scss → _step-by-step-nav.scss} +20 -20
  13. data/app/views/govuk_publishing_components/components/_step_by_step_nav.html.erb +100 -0
  14. data/app/views/govuk_publishing_components/components/{_task_list_header.html.erb → _step_by_step_nav_header.html.erb} +7 -7
  15. data/app/views/govuk_publishing_components/components/{_task_list_related.html.erb → _step_by_step_nav_related.html.erb} +10 -10
  16. data/app/views/govuk_publishing_components/components/docs/step_by_step_nav.yml +1041 -0
  17. data/app/views/govuk_publishing_components/components/docs/{task_list_header.yml → step_by_step_nav_header.yml} +7 -7
  18. data/app/views/govuk_publishing_components/components/docs/{task_list_related.yml → step_by_step_nav_related.yml} +5 -5
  19. data/config/locales/en.yml +2 -0
  20. data/lib/govuk_publishing_components.rb +1 -1
  21. data/lib/govuk_publishing_components/components/{task_list_helper.rb → step_by_step_nav_helper.rb} +13 -13
  22. data/lib/govuk_publishing_components/version.rb +1 -1
  23. metadata +15 -15
  24. data/app/views/govuk_publishing_components/components/_task_list.html.erb +0 -105
  25. data/app/views/govuk_publishing_components/components/docs/task_list.yml +0 -1085
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9cc0e69ba995b899312ec518fc2193c23b09b942d5cc4a3fefe65a6d2bb3535e
4
- data.tar.gz: e51a19c9a7298816343b611486c92873fba2f05160344e22ff8c39ab33b447a9
3
+ metadata.gz: 2246fa0ef19db8a5d4ce9ab9f9e58c0f7858d1504f4e7c847b45ef511ad38eea
4
+ data.tar.gz: 3468abaaa41ec8bdd66820bcba7615d28d937da6dd229c4a2eaa9a33a604edb2
5
5
  SHA512:
6
- metadata.gz: 7b864217c5e2b22c3ef1ec1c999a857aab5116cf57bea4aa523f2f5927673b1236538ef3d6dd57970fc33906b967dca79456bc28fb65eb57e162deb4c9b6e3ff
7
- data.tar.gz: 745f7d086a3ae2eba8ebbf8ca0ddd3a179c7c09320aaab5518a6edec150aae8f74c7738d0670173ca17395ef23440a033122f68b372e2cffd518232a0afbe2ad
6
+ metadata.gz: c52ef6feed05da9b9dcc06fac40deb988d93d9b4e9cd56cc772bae21186dd993e9158e802fef751087effd37f8e85e61a9a1106061ccc15b0200fa15a6c25f1d
7
+ data.tar.gz: 29bab2b37364334ef3f873394fd2859dce85568b83e7b57012e3da1eaa6adafc9398c67433633a9e8cebcedd0cf9807b6584597370ae70387a5b0a816ab1c7e6
@@ -1,4 +1,4 @@
1
- // used by the tasklist component
1
+ // used by the step by step navigation component
2
2
 
3
3
  (function(root) {
4
4
  "use strict";
@@ -4,7 +4,7 @@
4
4
  "use strict";
5
5
  window.GOVUK = window.GOVUK || {};
6
6
 
7
- Modules.Gemtasklist = function () {
7
+ Modules.Gemstepnav = function () {
8
8
 
9
9
  var actions = {
10
10
  showLinkText: "Show",
@@ -25,9 +25,9 @@
25
25
  };
26
26
 
27
27
  var rememberShownStep = false;
28
- var taskListSize;
29
- var sessionStoreLink = 'govuk-task-list-active-link';
30
- var activeLinkClass = 'gem-c-task-list__link--active';
28
+ var stepNavSize;
29
+ var sessionStoreLink = 'govuk-step-nav-active-link';
30
+ var activeLinkClass = 'gem-c-step-nav__link--active';
31
31
  var activeLinkHref = '#content';
32
32
 
33
33
  this.start = function ($element) {
@@ -35,22 +35,21 @@
35
35
  $(window).unload(storeScrollPosition);
36
36
 
37
37
  // Indicate that js has worked
38
- $element.addClass('gem-c-task-list--active');
38
+ $element.addClass('gem-c-step-nav--active');
39
39
 
40
40
  // Prevent FOUC, remove class hiding content
41
41
  $element.removeClass('js-hidden');
42
42
 
43
43
  rememberShownStep = !!$element.filter('[data-remember]').length;
44
- taskListSize = $element.hasClass('gem-c-task-list--large') ? 'Big' : 'Small';
45
- var $groups = $element.find('.gem-c-task-list__group');
44
+ stepNavSize = $element.hasClass('gem-c-step-nav--large') ? 'Big' : 'Small';
46
45
  var $steps = $element.find('.js-step');
47
46
  var $stepHeaders = $element.find('.js-toggle-panel');
48
47
  var totalSteps = $element.find('.js-panel').length;
49
- var totalLinks = $element.find('.gem-c-task-list__link-item').length;
48
+ var totalLinks = $element.find('.gem-c-step-nav__link-item').length;
50
49
 
51
50
  var $showOrHideAllButton;
52
51
 
53
- var tasklistTracker = new TasklistTracker(totalSteps, totalLinks);
52
+ var stepNavTracker = new StepNavTracker(totalSteps, totalLinks);
54
53
 
55
54
  addButtonstoSteps();
56
55
  addShowHideAllButton();
@@ -61,11 +60,11 @@
61
60
  showLinkedStep();
62
61
  ensureOnlyOneActiveLink();
63
62
 
64
- bindToggleForSteps(tasklistTracker);
65
- bindToggleShowHideAllButton(tasklistTracker);
66
- bindComponentLinkClicks(tasklistTracker);
63
+ bindToggleForSteps(stepNavTracker);
64
+ bindToggleShowHideAllButton(stepNavTracker);
65
+ bindComponentLinkClicks(stepNavTracker);
67
66
 
68
- // When navigating back in browser history to the tasklist, the browser will try to be "clever" and return
67
+ // When navigating back in browser history to the step nav, the browser will try to be "clever" and return
69
68
  // the user to their previous scroll position. However, since we collapse all but the currently-anchored
70
69
  // step, the content length changes and the user is returned to the wrong position (often the footer).
71
70
  // In order to correct this behaviour, as the user leaves the page, we anticipate the correct height we wish the
@@ -84,7 +83,7 @@
84
83
  }
85
84
 
86
85
  function addShowHideAllButton() {
87
- $element.prepend('<div class="gem-c-task-list__controls"><button aria-expanded="false" class="gem-c-task-list__button gem-c-task-list__button--controls js-step-controls-button">' + bulkActions.showAll.buttonText + '</button></div>');
86
+ $element.prepend('<div class="gem-c-step-nav__controls"><button aria-expanded="false" class="gem-c-step-nav__button gem-c-step-nav__button--controls js-step-controls-button">' + bulkActions.showAll.buttonText + '</button></div>');
88
87
  }
89
88
 
90
89
  function addShowHideToggle() {
@@ -95,7 +94,7 @@
95
94
  linkText = actions.hideLinkText;
96
95
  }
97
96
  if (!$(this).find('.js-toggle-link').length) {
98
- $(this).append('<span class="gem-c-task-list__toggle-link js-toggle-link">' + linkText + '</span>');
97
+ $(this).append('<span class="gem-c-step-nav__toggle-link js-toggle-link">' + linkText + '</span>');
99
98
  }
100
99
  });
101
100
  }
@@ -157,20 +156,20 @@
157
156
 
158
157
  $title.wrapInner(
159
158
  '<button ' +
160
- 'class="gem-c-task-list__button gem-c-task-list__button--title js-step-title-button" ' +
159
+ 'class="gem-c-step-nav__button gem-c-step-nav__button--title js-step-title-button" ' +
161
160
  'aria-expanded="false" aria-controls="' + contentId + '">' +
162
161
  '</button>' );
163
162
  });
164
163
  }
165
164
 
166
- function bindToggleForSteps(tasklistTracker) {
165
+ function bindToggleForSteps(stepNavTracker) {
167
166
  $element.find('.js-toggle-panel').click(function (event) {
168
167
  preventLinkFollowingForCurrentTab(event);
169
168
 
170
169
  var stepView = new StepView($(this).closest('.js-step'));
171
170
  stepView.toggle();
172
171
 
173
- var toggleClick = new StepToggleClick(event, stepView, $steps, tasklistTracker, $groups);
172
+ var toggleClick = new StepToggleClick(event, stepView, $steps, stepNavTracker);
174
173
  toggleClick.track();
175
174
 
176
175
  setShowHideAllText();
@@ -178,9 +177,9 @@
178
177
  }
179
178
 
180
179
  // tracking click events on links in step content
181
- function bindComponentLinkClicks(tasklistTracker) {
180
+ function bindComponentLinkClicks(stepNavTracker) {
182
181
  $element.find('.js-link').click(function (event) {
183
- var linkClick = new componentLinkClick(event, tasklistTracker, $(this).attr('data-position'));
182
+ var linkClick = new componentLinkClick(event, stepNavTracker, $(this).attr('data-position'));
184
183
  linkClick.track();
185
184
  var thisLinkHref = $(this).attr('href');
186
185
 
@@ -224,11 +223,11 @@
224
223
  removeActiveStateFromAllButCurrent($activeLinks, lastClicked);
225
224
  removeFromSessionStorage(sessionStoreLink);
226
225
  } else {
227
- var activeLinkInActiveGroup = $element.find('.gem-c-task-list__group--active').find('.' + activeLinkClass).first();
226
+ var activeLinkInActiveStep = $element.find('.gem-c-step-nav__step--active').find('.' + activeLinkClass).first();
228
227
 
229
- if (activeLinkInActiveGroup.length) {
228
+ if (activeLinkInActiveStep.length) {
230
229
  $activeLinks.removeClass(activeLinkClass);
231
- activeLinkInActiveGroup.addClass(activeLinkClass);
230
+ activeLinkInActiveStep.addClass(activeLinkClass);
232
231
  } else {
233
232
  $activeLinks.slice(1).removeClass(activeLinkClass);
234
233
  }
@@ -237,7 +236,7 @@
237
236
 
238
237
  function removeActiveStateFromAllButCurrent($links, current) {
239
238
  $links.each(function() {
240
- if ($(this).find('.js-link').data('position') !== current) {
239
+ if ($(this).find('.js-link').data('position').toString() !== current.toString()) {
241
240
  $(this).removeClass(activeLinkClass);
242
241
  }
243
242
  });
@@ -253,7 +252,7 @@
253
252
  event.preventDefault();
254
253
  }
255
254
 
256
- function bindToggleShowHideAllButton(tasklistTracker) {
255
+ function bindToggleShowHideAllButton(stepNavTracker) {
257
256
  $showOrHideAllButton = $element.find('.js-step-controls-button');
258
257
  $showOrHideAllButton.on('click', function () {
259
258
  var shouldshowAll;
@@ -263,16 +262,16 @@
263
262
  $element.find('.js-toggle-link').text(actions.hideLinkText)
264
263
  shouldshowAll = true;
265
264
 
266
- tasklistTracker.track('pageElementInteraction', 'tasklistAllShown', {
267
- label: bulkActions.showAll.eventLabel + ": " + taskListSize
265
+ stepNavTracker.track('pageElementInteraction', 'stepNavAllShown', {
266
+ label: bulkActions.showAll.eventLabel + ": " + stepNavSize
268
267
  });
269
268
  } else {
270
269
  $showOrHideAllButton.text(bulkActions.showAll.buttonText);
271
270
  $element.find('.js-toggle-link').text(actions.showLinkText);
272
271
  shouldshowAll = false;
273
272
 
274
- tasklistTracker.track('pageElementInteraction', 'tasklistAllHidden', {
275
- label: bulkActions.hideAll.eventLabel + ": " + taskListSize
273
+ stepNavTracker.track('pageElementInteraction', 'stepNavAllHidden', {
274
+ label: bulkActions.hideAll.eventLabel + ": " + stepNavSize
276
275
  });
277
276
  }
278
277
 
@@ -377,19 +376,17 @@
377
376
  history.replaceState({}, '', newLocation);
378
377
  }
379
378
 
380
- function StepToggleClick(event, stepView, $steps, tasklistTracker, $groups) {
379
+ function StepToggleClick(event, stepView, $steps, stepNavTracker) {
381
380
  this.track = trackClick;
382
381
  var $target = $(event.target);
383
- var $thisGroup = stepView.element.closest('.gem-c-task-list__group');
384
- var $thisGroupSteps = $thisGroup.find('.gem-c-task-list__step');
385
382
 
386
383
  function trackClick() {
387
384
  var tracking_options = {label: trackingLabel(), dimension28: stepView.numberOfContentItems().toString()}
388
- tasklistTracker.track('pageElementInteraction', trackingAction(), tracking_options);
385
+ stepNavTracker.track('pageElementInteraction', trackingAction(), tracking_options);
389
386
 
390
387
  if (!stepView.isHidden()) {
391
- tasklistTracker.track(
392
- 'tasklistLinkClicked',
388
+ stepNavTracker.track(
389
+ 'stepNavLinkClicked',
393
390
  String(stepIndex()),
394
391
  {
395
392
  label: stepView.href,
@@ -401,16 +398,16 @@
401
398
  }
402
399
 
403
400
  function trackingLabel() {
404
- return $target.closest('.js-toggle-panel').attr('data-position') + ' - ' + stepView.title + ' - ' + locateClickElement() + ": " + taskListSize;
401
+ return $target.closest('.js-toggle-panel').attr('data-position') + ' - ' + stepView.title + ' - ' + locateClickElement() + ": " + stepNavSize;
405
402
  }
406
403
 
407
- // returns index of the clicked step in the overall number of accordion steps, regardless of how many per group
404
+ // returns index of the clicked step in the overall number of steps
408
405
  function stepIndex() {
409
406
  return $steps.index(stepView.element) + 1;
410
407
  }
411
408
 
412
409
  function trackingAction() {
413
- return (stepView.isHidden() ? 'tasklistHidden' : 'tasklistShown');
410
+ return (stepView.isHidden() ? 'stepNavHidden' : 'stepNavShown');
414
411
  }
415
412
 
416
413
  function locateClickElement() {
@@ -436,27 +433,27 @@
436
433
  }
437
434
  }
438
435
 
439
- function componentLinkClick(event, tasklistTracker, linkPosition) {
436
+ function componentLinkClick(event, stepNavTracker, linkPosition) {
440
437
  this.track = trackClick;
441
438
 
442
439
  function trackClick() {
443
- var tracking_options = {label: $(event.target).attr('href') + " : " + taskListSize};
444
- var dimension28 = $(event.target).closest('.gem-c-task-list__links').attr('data-length');
440
+ var tracking_options = {label: $(event.target).attr('href') + " : " + stepNavSize};
441
+ var dimension28 = $(event.target).closest('.gem-c-step-nav__links').attr('data-length');
445
442
 
446
443
  if (dimension28) {
447
444
  tracking_options['dimension28'] = dimension28;
448
445
  }
449
446
 
450
- tasklistTracker.track('taskAccordionLinkClicked', linkPosition, tracking_options);
447
+ stepNavTracker.track('stepNavLinkClicked', linkPosition, tracking_options);
451
448
  }
452
449
  }
453
450
 
454
451
  // A helper that sends a custom event request to Google Analytics if
455
452
  // the GOVUK module is setup
456
- function TasklistTracker(totalSteps, totalLinks) {
453
+ function StepNavTracker(totalSteps, totalLinks) {
457
454
  this.track = function(category, action, options) {
458
- // dimension26 records the total number of expand/collapse steps in this tasklist
459
- // dimension27 records the total number of links in this tasklist
455
+ // dimension26 records the total number of expand/collapse steps in this step nav
456
+ // dimension27 records the total number of links in this step nav
460
457
  // dimension28 records the number of links in the step that was shown/hidden (handled in click event)
461
458
  if (GOVUK.analytics && GOVUK.analytics.trackEvent) {
462
459
  options = options || {};
@@ -1,4 +1,4 @@
1
- // used by the tasklist component
1
+ // used by the step by step navigation component
2
2
 
3
3
  if(typeof window.GOVUK === 'undefined'){ window.GOVUK = {}; }
4
4
  if(typeof window.GOVUK.support === 'undefined'){ window.GOVUK.support = {}; }
@@ -13,6 +13,6 @@
13
13
  @import "components/input";
14
14
  @import "components/label";
15
15
  @import "components/radio";
16
- @import "components/task-list";
17
- @import "components/task-list-header";
18
- @import "components/task-list-related";
16
+ @import "components/step-by-step-nav";
17
+ @import "components/step-by-step-nav-header";
18
+ @import "components/step-by-step-nav-related";
@@ -7,5 +7,5 @@
7
7
  @import "typography";
8
8
  @import "colours";
9
9
 
10
- @import "components/print/task-list";
11
- @import "components/print/task-list-header";
10
+ @import "components/print/step-by-step-nav";
11
+ @import "components/print/step-by-step-nav-header";
@@ -0,0 +1,3 @@
1
+ @import "typography";
2
+ @import "components/print/step-by-step-nav";
3
+ @import "components/print/step-by-step-nav-header";
@@ -1,4 +1,4 @@
1
- .gem-c-task-list-header {
1
+ .gem-c-step-nav-header {
2
2
  position: relative;
3
3
  padding: 10px;
4
4
  background: $grey-4;
@@ -12,18 +12,18 @@
12
12
 
13
13
  // scss-lint:disable SelectorFormat
14
14
 
15
- .gem-c-task-list-header__part-of {
15
+ .gem-c-step-nav-header__part-of {
16
16
  @include bold-16;
17
17
 
18
18
  display: block;
19
19
  padding-bottom: 0.2em;
20
20
  }
21
21
 
22
- .gem-c-task-list-header__title {
22
+ .gem-c-step-nav-header__title {
23
23
  @include bold-24;
24
24
  }
25
25
 
26
- .gem-c-task-list-header__skip-link {
26
+ .gem-c-step-nav-header__skip-link {
27
27
  position: absolute;
28
28
  top: 0;
29
29
  right: 9999em;
@@ -1,15 +1,15 @@
1
- .gem-c-task-list-related {
1
+ .gem-c-step-nav-related {
2
2
  margin-bottom: $gutter-half;
3
3
  }
4
4
 
5
- .gem-c-task-list-related__heading,
6
- .gem-c-task-list-related__links {
5
+ .gem-c-step-nav-related__heading,
6
+ .gem-c-step-nav-related__links {
7
7
  @include bold-19;
8
8
  margin: 0;
9
9
  padding: 0;
10
10
  }
11
11
 
12
- .gem-c-task-list-related__pretitle {
12
+ .gem-c-step-nav-related__pretitle {
13
13
  display: block;
14
14
  margin-bottom: $gutter-half;
15
15
 
@@ -18,11 +18,11 @@
18
18
  }
19
19
  }
20
20
 
21
- .gem-c-task-list-related__links {
21
+ .gem-c-step-nav-related__links {
22
22
  list-style: none;
23
23
  }
24
24
 
25
- .gem-c-task-list-related__link-item {
25
+ .gem-c-step-nav-related__link-item {
26
26
  margin-top: $gutter-half;
27
27
 
28
28
  @include media(tablet) {
@@ -30,7 +30,7 @@
30
30
  }
31
31
  }
32
32
 
33
- .gem-c-task-list-related__link {
33
+ .gem-c-step-nav-related__link {
34
34
  text-decoration: none;
35
35
 
36
36
  &:hover {
@@ -8,7 +8,7 @@ $number-circle-size-large: 35px;
8
8
  $dot-size: 16px;
9
9
  $top-border: solid 2px $grey-3;
10
10
 
11
- @mixin task-list-vertical-line ($line-style: solid) {
11
+ @mixin step-nav-vertical-line ($line-style: solid) {
12
12
  content: "";
13
13
  position: absolute;
14
14
  z-index: 2;
@@ -18,27 +18,27 @@ $top-border: solid 2px $grey-3;
18
18
  background: $white;
19
19
  }
20
20
 
21
- @mixin task-list-line-position {
22
- left: -($gutter + $gutter-half);
21
+ @mixin step-nav-line-position {
22
+ left: 0;
23
23
  margin-left: ($number-circle-size / 2) - ($stroke-width / 2);
24
24
  }
25
25
 
26
- @mixin task-list-line-position-large {
27
- left: -($gutter * 2);
26
+ @mixin step-nav-line-position-large {
27
+ left: 0;
28
28
  margin-left: ($number-circle-size-large / 2) - ($stroke-width-large / 2);
29
29
  border-width: $stroke-width-large;
30
30
  }
31
31
 
32
- .gem-c-task-list {
32
+ .gem-c-step-nav {
33
33
  margin-bottom: $gutter-half;
34
34
  }
35
35
 
36
- .gem-c-task-list__controls {
36
+ .gem-c-step-nav__controls {
37
37
  padding: 3px 3px 0 0;
38
38
  text-align: right;
39
39
  }
40
40
 
41
- .gem-c-task-list__button {
41
+ .gem-c-step-nav__button {
42
42
  color: $link-colour;
43
43
  cursor: pointer;
44
44
  background: none;
@@ -48,51 +48,78 @@ $top-border: solid 2px $grey-3;
48
48
 
49
49
  // removes extra dotted outline from buttons in Firefox
50
50
  // on focus (standard yellow outline unaffected)
51
- .gem-c-task-list__button::-moz-focus-inner {
51
+ .gem-c-step-nav__button::-moz-focus-inner {
52
52
  border: 0;
53
53
  }
54
54
 
55
- .gem-c-task-list__button--title {
55
+ .gem-c-step-nav__button--title {
56
56
  @include _core-font-generator(19px, 19px, 19px, 1.4, 1.4, false, bold);
57
57
  display: inline-block;
58
58
  padding: 0;
59
59
  text-align: left;
60
60
  color: $black;
61
61
 
62
- .gem-c-task-list--large & {
62
+ .gem-c-step-nav--large & {
63
63
  @include _core-font-generator(24px, 19px, 24px, 1.4, 1.4, false, bold);
64
64
  }
65
65
  }
66
66
 
67
- .gem-c-task-list__button--controls {
67
+ .gem-c-step-nav__button--controls {
68
68
  @include _core-font-generator(14px, 14px, 14px, 1, 1, false);
69
69
  position: relative;
70
70
  z-index: 1; // this and relative position stops focus outline underlap with border of accordion
71
71
  padding: 0.5em 0;
72
72
 
73
- .gem-c-task-list--large & {
73
+ .gem-c-step-nav--large & {
74
74
  @include _core-font-generator(16px, 14px, 16px, 1, 1, false);
75
75
  }
76
76
  }
77
77
 
78
- .gem-c-task-list__groups {
78
+ .gem-c-step-nav__steps {
79
79
  padding: 0;
80
80
  margin: 0;
81
81
  }
82
82
 
83
- .gem-c-task-list__group {
83
+ .gem-c-step-nav__step {
84
84
  position: relative;
85
85
  padding-left: $gutter + $gutter-half;
86
86
  list-style: none;
87
87
 
88
- .gem-c-task-list--large & {
88
+ // line down the side of a step
89
+ &:after {
90
+ @include step-nav-vertical-line;
91
+ @include step-nav-line-position;
92
+ top: $gutter-half;
93
+ }
94
+
95
+ .gem-c-step-nav--large & {
89
96
  @include media(tablet) {
90
97
  padding-left: $gutter * 2;
98
+
99
+ &:after {
100
+ @include step-nav-line-position-large;
101
+ top: $gutter;
102
+ }
103
+ }
104
+ }
105
+ }
106
+
107
+ .gem-c-step-nav__step--optional {
108
+ // broken line down the side of a step
109
+ &:after {
110
+ border-left-style: dotted;
111
+ }
112
+
113
+ .gem-c-step-nav--large & {
114
+ @include media(tablet) {
115
+ &:after {
116
+ border-width: $stroke-width-large;
117
+ }
91
118
  }
92
119
  }
93
120
  }
94
121
 
95
- .gem-c-task-list__group:last-child {
122
+ .gem-c-step-nav__step:last-child {
96
123
  // little dash at the bottom of the line
97
124
  &:before {
98
125
  content: "";
@@ -106,20 +133,18 @@ $top-border: solid 2px $grey-3;
106
133
  border-bottom: solid $stroke-width $grey-2;
107
134
  }
108
135
 
109
- .gem-c-task-list__step:last-child {
110
- &:after {
111
- // scss-lint:disable DuplicateProperty
112
- height: -webkit-calc(100% - #{$gutter-half}); // fallback
113
- height: calc(100% - #{$gutter-half});
114
- // scss-lint:enable DuplicateProperty
115
- }
136
+ &:after {
137
+ // scss-lint:disable DuplicateProperty
138
+ height: -webkit-calc(100% - #{$gutter-half}); // fallback for iphone 4
139
+ height: calc(100% - #{$gutter-half});
140
+ // scss-lint:enable DuplicateProperty
141
+ }
116
142
 
117
- .gem-c-task-list__help:after {
118
- height: 100%;
119
- }
143
+ .gem-c-step-nav__help:after {
144
+ height: 100%;
120
145
  }
121
146
 
122
- .gem-c-task-list--large & {
147
+ .gem-c-step-nav--large & {
123
148
  @include media(tablet) {
124
149
  &:before {
125
150
  margin-left: $number-circle-size-large / 4;
@@ -127,65 +152,29 @@ $top-border: solid 2px $grey-3;
127
152
  border-width: $stroke-width-large;
128
153
  }
129
154
 
130
- .gem-c-task-list__step:last-child {
131
- &:after {
132
- height: calc(100% - #{$gutter});
133
- }
155
+ &:after {
156
+ height: calc(100% - #{$gutter});
134
157
  }
135
158
  }
136
159
  }
137
160
  }
138
161
 
139
- .gem-c-task-list__group--active {
162
+ .gem-c-step-nav__step--active {
140
163
  &:last-child:before,
141
- .gem-c-task-list__circle--number,
142
- .gem-c-task-list__step:after,
143
- .gem-c-task-list__substep:after,
144
- .gem-c-task-list__help:after {
164
+ .gem-c-step-nav__circle--number,
165
+ &:after,
166
+ .gem-c-step-nav__substep:after,
167
+ .gem-c-step-nav__help:after {
145
168
  border-color: $black;
146
169
  }
147
170
  }
148
171
 
149
- .gem-c-task-list__step {
150
- position: relative;
151
-
152
- // line down the side of a step
153
- &:after {
154
- @include task-list-vertical-line;
155
- @include task-list-line-position;
156
- top: $gutter-half;
157
- }
158
-
159
- .gem-c-task-list--large & {
160
- @include media(tablet) {
161
- &:after {
162
- @include task-list-line-position-large;
163
- top: $gutter;
164
- }
165
- }
166
- }
167
- }
168
-
169
- .gem-c-task-list__step--optional {
170
- // broken line down the side of a step
171
- &:after {
172
- border-left-style: dotted;
173
- }
174
-
175
- .gem-c-task-list--large & {
176
- @include media(tablet) {
177
- &:after {
178
- border-width: $stroke-width-large;
179
- }
180
- }
181
- }
182
- }
183
-
184
- .gem-c-task-list__circle {
172
+ .gem-c-step-nav__circle {
185
173
  @include box-sizing(border-box);
186
174
  position: absolute;
187
175
  z-index: 5;
188
176
  top: $gutter-half;
177
+ left: 0;
189
178
  width: $number-circle-size;
190
179
  height: $number-circle-size;
191
180
  color: $black;
@@ -193,7 +182,7 @@ $top-border: solid 2px $grey-3;
193
182
  border-radius: 100px;
194
183
  text-align: center;
195
184
 
196
- .gem-c-task-list--large & {
185
+ .gem-c-step-nav--large & {
197
186
  @include media(tablet) {
198
187
  top: $gutter;
199
188
  width: $number-circle-size-large;
@@ -202,12 +191,11 @@ $top-border: solid 2px $grey-3;
202
191
  }
203
192
  }
204
193
 
205
- .gem-c-task-list__circle--number {
194
+ .gem-c-step-nav__circle--number {
206
195
  @include _core-font-generator(16px, 16px, 16px, 23px, 23px, false, bold);
207
- left: 0;
208
196
  border: solid $stroke-width $grey-2;
209
197
 
210
- .gem-c-task-list--large & {
198
+ .gem-c-step-nav--large & {
211
199
  @include _core-font-generator(19px, 16px, 19px, 30px, 23px, false, bold);
212
200
 
213
201
  @include media(tablet) {
@@ -216,26 +204,21 @@ $top-border: solid 2px $grey-3;
216
204
  }
217
205
  }
218
206
 
219
- .gem-c-task-list__circle--logic {
207
+ .gem-c-step-nav__circle--logic {
220
208
  @include _core-font-generator(16px, 16px, 16px, 28px, 28px, false, bold);
221
- left: -($gutter + $gutter-half);
222
209
 
223
- .gem-c-task-list--large & {
210
+ .gem-c-step-nav--large & {
224
211
  @include _core-font-generator(19px, 16px, 19px, 34px, 28px, false, bold);
225
-
226
- @include media(tablet) {
227
- left: -$gutter * 2;
228
- }
229
212
  }
230
213
  }
231
214
 
232
215
  // makes sure logic text expands to the left if text size is zoomed, preventing overlap
233
- .gem-c-task-list__circle-inner {
216
+ .gem-c-step-nav__circle-inner {
234
217
  float: right;
235
218
  min-width: 100%;
236
219
  }
237
220
 
238
- .gem-c-task-list__circle-background {
221
+ .gem-c-step-nav__circle-background {
239
222
  $shadow-offset: 0.1em;
240
223
  $shadow-colour: $white;
241
224
 
@@ -246,128 +229,128 @@ $top-border: solid 2px $grey-3;
246
229
  -#{$shadow-offset} 0 0 $shadow-colour;
247
230
  }
248
231
 
249
- .gem-c-task-list__header {
232
+ .gem-c-step-nav__header {
250
233
  padding: $gutter-half 0;
251
234
  border-top: $top-border;
252
235
 
253
- .gem-c-task-list--active & {
236
+ .gem-c-step-nav--active & {
254
237
  cursor: pointer;
255
238
  }
256
239
 
257
240
  &:hover {
258
- .gem-c-task-list__button {
241
+ .gem-c-step-nav__button {
259
242
  color: $link-colour;
260
243
  }
261
244
 
262
- .gem-c-task-list__toggle-link {
245
+ .gem-c-step-nav__toggle-link {
263
246
  text-decoration: underline;
264
247
  }
265
248
  }
266
249
 
267
- .gem-c-task-list--large & {
250
+ .gem-c-step-nav--large & {
268
251
  @include media(tablet) {
269
252
  padding: $gutter 0;
270
253
  }
271
254
  }
272
255
  }
273
256
 
274
- .gem-c-task-list__title {
257
+ .gem-c-step-nav__title {
275
258
  @include _core-font-generator(19px, 19px, 19px, 1.4, 1.4, false, bold);
276
259
  margin: 0;
277
260
 
278
- .gem-c-task-list--large & {
261
+ .gem-c-step-nav--large & {
279
262
  @include _core-font-generator(24px, 19px, 24px, 1.4, 1.4, false, bold);
280
263
  }
281
264
  }
282
265
 
283
- .gem-c-task-list__toggle-link {
266
+ .gem-c-step-nav__toggle-link {
284
267
  @include _core-font-generator(14px, 14px, 14px, 1.2, 1.2, false);
285
268
  display: block;
286
269
  color: $link-colour;
287
270
 
288
- .gem-c-task-list--large & {
271
+ .gem-c-step-nav--large & {
289
272
  @include _core-font-generator(16px, 14px, 16px, 1.2, 1.2, false);
290
273
  }
291
274
  }
292
275
 
293
- .gem-c-task-list__panel {
276
+ .gem-c-step-nav__panel {
294
277
  @include _core-font-generator(16px, 16px, 16px);
295
278
 
296
- .gem-c-task-list--large & {
279
+ .gem-c-step-nav--large & {
297
280
  @include _core-font-generator(19px, 16px, 19px);
298
281
  }
299
282
  }
300
283
 
301
- // contents of the task list, such as paragraphs and links
284
+ // contents of the steps, such as paragraphs and links
302
285
 
303
- .gem-c-task-list__paragraph,
304
- .gem-c-task-list__heading {
286
+ .gem-c-step-nav__paragraph,
287
+ .gem-c-step-nav__heading {
305
288
  padding-bottom: $gutter-half;
306
289
  margin: 0;
307
290
  font-size: inherit;
308
291
 
309
- + .gem-c-task-list__links {
292
+ + .gem-c-step-nav__links {
310
293
  margin-top: -5px;
311
294
 
312
- .gem-c-task-list--large & {
295
+ .gem-c-step-nav--large & {
313
296
  @include media(tablet) {
314
297
  margin-top: -$gutter-half;
315
298
  }
316
299
  }
317
300
  }
318
301
 
319
- .gem-c-task-list--large & {
302
+ .gem-c-step-nav--large & {
320
303
  @include media(tablet) {
321
304
  padding-bottom: $gutter;
322
305
  }
323
306
  }
324
307
  }
325
308
 
326
- .gem-c-task-list__heading {
309
+ .gem-c-step-nav__heading {
327
310
  font-weight: bold;
328
311
  }
329
312
 
330
- .gem-c-task-list__links {
313
+ .gem-c-step-nav__links {
331
314
  padding: 0;
332
315
  padding-bottom: 10px;
333
316
 
334
- .gem-c-task-list--large & {
317
+ .gem-c-step-nav--large & {
335
318
  @include media(tablet) {
336
319
  padding-bottom: 20px;
337
320
  }
338
321
  }
339
322
  }
340
323
 
341
- .gem-c-task-list__links--required {
342
- .gem-c-task-list__link-item {
324
+ .gem-c-step-nav__links--required {
325
+ .gem-c-step-nav__link-item {
343
326
  font-weight: bold;
344
327
  }
345
328
  }
346
329
 
347
- .gem-c-task-list__links--choice {
330
+ .gem-c-step-nav__links--choice {
348
331
  $links-margin: 20px;
349
332
 
350
333
  margin-left: $links-margin;
351
334
  list-style: disc;
352
335
 
353
- .gem-c-task-list__link--active:before {
336
+ .gem-c-step-nav__link--active:before {
354
337
  left: -($gutter + $gutter-half) - $links-margin;
355
338
  }
356
339
 
357
- .gem-c-task-list--large & {
340
+ .gem-c-step-nav--large & {
358
341
  @include media(tablet) {
359
- .gem-c-task-list__link--active:before {
342
+ .gem-c-step-nav__link--active:before {
360
343
  left: -($gutter * 2) - $links-margin;
361
344
  }
362
345
  }
363
346
  }
364
347
  }
365
348
 
366
- .gem-c-task-list__link {
349
+ .gem-c-step-nav__link {
367
350
  margin-bottom: 10px;
368
351
  }
369
352
 
370
- .gem-c-task-list__link--active {
353
+ .gem-c-step-nav__link--active {
371
354
  position: relative;
372
355
 
373
356
  &:before {
@@ -386,7 +369,7 @@ $top-border: solid 2px $grey-3;
386
369
  border-radius: 100px;
387
370
  }
388
371
 
389
- .gem-c-task-list--large & {
372
+ .gem-c-step-nav--large & {
390
373
  @include media(tablet) {
391
374
  &:before {
392
375
  left: -($gutter * 2);
@@ -395,7 +378,7 @@ $top-border: solid 2px $grey-3;
395
378
  }
396
379
  }
397
380
 
398
- .gem-c-task-list__link-item {
381
+ .gem-c-step-nav__link-item {
399
382
  color: $black;
400
383
 
401
384
  &:visited,
@@ -406,7 +389,7 @@ $top-border: solid 2px $grey-3;
406
389
  }
407
390
  }
408
391
 
409
- .gem-c-task-list__link-item {
392
+ .gem-c-step-nav__link-item {
410
393
  text-decoration: none;
411
394
 
412
395
  &:hover {
@@ -414,7 +397,7 @@ $top-border: solid 2px $grey-3;
414
397
  }
415
398
  }
416
399
 
417
- .gem-c-task-list__context {
400
+ .gem-c-step-nav__context {
418
401
  display: inline-block;
419
402
  font-weight: normal;
420
403
  color: $grey-1;
@@ -424,36 +407,38 @@ $top-border: solid 2px $grey-3;
424
407
  }
425
408
  }
426
409
 
427
- .gem-c-task-list__help {
410
+ .gem-c-step-nav__help {
428
411
  position: relative;
429
412
  padding: $gutter-half 0;
430
413
  border-top: $top-border;
431
414
 
432
415
  &:after {
433
- @include task-list-vertical-line(dotted);
434
- @include task-list-line-position;
416
+ @include step-nav-vertical-line(dotted);
417
+ @include step-nav-line-position;
435
418
  z-index: 3;
436
419
  top: 0;
420
+ left: -($gutter + $gutter-half);
437
421
  height: calc(100% + #{$gutter});
438
422
  }
439
423
 
440
- .gem-c-task-list__step--optional & {
424
+ .gem-c-step-nav__step--optional & {
441
425
  &:after {
442
426
  display: none;
443
427
  }
444
428
  }
445
429
 
446
- .gem-c-task-list--large & {
430
+ .gem-c-step-nav--large & {
447
431
  @include media(tablet) {
448
432
  &:after {
449
- @include task-list-line-position-large;
433
+ @include step-nav-line-position-large;
434
+ left: -($gutter * 2);
450
435
  height: calc(100% + #{$gutter} + #{$gutter-half});
451
436
  }
452
437
  }
453
438
  }
454
439
  }
455
440
 
456
- .gem-c-task-list__help-link {
441
+ .gem-c-step-nav__help-link {
457
442
  text-decoration: none;
458
443
  font-weight: bold;
459
444
 
@@ -462,29 +447,31 @@ $top-border: solid 2px $grey-3;
462
447
  }
463
448
  }
464
449
 
465
- .gem-c-task-list__substep {
450
+ .gem-c-step-nav__substep {
466
451
  position: relative;
467
452
  padding-top: $gutter-half;
468
453
  border-top: $top-border;
469
454
 
470
455
  &:after {
471
- @include task-list-vertical-line;
472
- @include task-list-line-position;
456
+ @include step-nav-vertical-line;
457
+ @include step-nav-line-position;
473
458
  z-index: 3;
474
459
  top: 0;
460
+ left: -($gutter + $gutter-half);
475
461
  }
476
462
 
477
- .gem-c-task-list--large & {
463
+ .gem-c-step-nav--large & {
478
464
  @include media(tablet) {
479
465
  padding-top: $gutter;
480
466
 
481
467
  &:after {
482
- @include task-list-line-position-large;
468
+ @include step-nav-line-position-large;
469
+ left: -($gutter * 2);
483
470
  }
484
471
  }
485
472
  }
486
473
  }
487
474
 
488
- .gem-c-task-list__substep--optional:after {
475
+ .gem-c-step-nav__substep--optional:after {
489
476
  border-left-style: dotted;
490
477
  }