@internetstiftelsen/styleguide 5.0.18 → 5.1.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 (92) hide show
  1. package/dist/app.js +71 -0
  2. package/dist/assets/js/Events.js +43 -77
  3. package/dist/assets/js/RequestError.js +16 -31
  4. package/dist/assets/js/anchorScroll.js +22 -15
  5. package/dist/assets/js/charCounter.js +100 -142
  6. package/dist/assets/js/className.js +19 -20
  7. package/dist/assets/js/conditional.js +96 -152
  8. package/dist/assets/js/debounce.js +15 -22
  9. package/dist/assets/js/el.js +108 -159
  10. package/dist/assets/js/getCookieByName.js +13 -11
  11. package/dist/assets/js/hasCookieConsent.js +30 -40
  12. package/dist/assets/js/htmlTextLength.js +12 -10
  13. package/dist/assets/js/iconToggle.js +16 -20
  14. package/dist/assets/js/nodeAdded.js +40 -53
  15. package/dist/assets/js/objToQuery.js +25 -41
  16. package/dist/assets/js/offset.js +29 -25
  17. package/dist/assets/js/ot.js +10 -13
  18. package/dist/assets/js/parallax.js +23 -23
  19. package/dist/assets/js/queryToObj.js +16 -22
  20. package/dist/assets/js/readSpeakerHandling.js +26 -28
  21. package/dist/assets/js/request.js +43 -52
  22. package/dist/assets/js/responsivePosition.js +46 -74
  23. package/dist/assets/js/stringToNode.js +11 -10
  24. package/dist/assets/js/template.js +15 -21
  25. package/dist/assets/js/textToggle.js +19 -24
  26. package/dist/assets/js/track.js +14 -12
  27. package/dist/assets/js/uid.js +10 -6
  28. package/dist/assets/js/utmGenerator.js +27 -33
  29. package/dist/assets/js/validationMessage.js +18 -25
  30. package/dist/assets/js/youtube.js +134 -170
  31. package/dist/atoms/button/Button.js +42 -55
  32. package/dist/atoms/file/file.js +25 -29
  33. package/dist/atoms/file/filePreview.js +27 -31
  34. package/dist/atoms/grid-toggle/grid-toggle.js +6 -9
  35. package/dist/atoms/height-limiter/height-limiter.js +37 -50
  36. package/dist/atoms/password-toggle/password-toggle.js +9 -11
  37. package/dist/atoms/range/range.js +32 -39
  38. package/dist/atoms/textarea/rich-text.js +223 -205
  39. package/dist/atoms/tooltip/tooltip.js +13 -17
  40. package/dist/components.js +42 -77
  41. package/dist/focusTrap.js +66 -77
  42. package/dist/molecules/alert/alert.js +15 -20
  43. package/dist/molecules/context-menu/context-menu.js +11 -16
  44. package/dist/molecules/continue-video-guide/continue-video-guide.js +90 -101
  45. package/dist/molecules/cookie-disclaimer/cookie-disclaimer.js +24 -33
  46. package/dist/molecules/form/Form.js +242 -352
  47. package/dist/molecules/form/index.js +15 -14
  48. package/dist/molecules/glider/glider-course.js +62 -75
  49. package/dist/molecules/glider/glider-hero.js +88 -101
  50. package/dist/molecules/glider/glider.js +49 -45
  51. package/dist/molecules/modal/modal.js +256 -325
  52. package/dist/molecules/multi-select/multi-select.js +198 -304
  53. package/dist/molecules/natural-language-form/natural-language-form.js +32 -46
  54. package/dist/molecules/overview-navigation/overview-navigation.js +90 -141
  55. package/dist/molecules/share/share.js +15 -20
  56. package/dist/molecules/system-error/system-error.js +6 -9
  57. package/dist/organisms/accordion/accordion.js +44 -50
  58. package/dist/organisms/footer/footer.js +1 -1
  59. package/dist/organisms/haveibeenpwned/haveibeenpwned.js +17 -16
  60. package/dist/organisms/mailchimp/mailchimp.js +72 -89
  61. package/dist/organisms/map-box/map-box.js +3 -4
  62. package/dist/organisms/mega-menu/mega-menu.js +177 -212
  63. package/dist/organisms/podcast/podcast.js +192 -215
  64. package/dist/organisms/schedule/schedule-filter.js +9 -15
  65. package/dist/organisms/tabs/tabs.js +194 -253
  66. package/dist/organisms/timeline/openTimelineItem.js +38 -51
  67. package/dist/organisms/timeline/timeline.js +111 -128
  68. package/dist/organisms/video-guide/VideoGuidePlayback.js +210 -286
  69. package/dist/organisms/video-guide/VideoGuideSubtitles.js +57 -80
  70. package/dist/organisms/video-guide/VideoGuideTimeline.js +74 -108
  71. package/dist/organisms/video-guide/getCurrentCueIndex.js +11 -9
  72. package/dist/organisms/video-guide/video-guide.js +66 -103
  73. package/dist/utilities/tab-highlighting/tab-highlighting.js +14 -22
  74. package/dist/vendor/toggle/a11y.toggle-switcher.js +10 -16
  75. package/package.json +78 -99
  76. package/src/app.js +5 -5
  77. package/src/assets/js/anchorScroll.js +1 -1
  78. package/src/assets/js/offset.js +1 -1
  79. package/src/atoms/button/Button.js +1 -1
  80. package/src/atoms/icon/richtext-ordered-list.svg +1 -1
  81. package/src/atoms/icon/sprite.svg +6 -5
  82. package/src/molecules/glider/glider-course.js +0 -2
  83. package/src/molecules/glider/glider.js +2 -2
  84. package/src/organisms/accordion/accordion.js +1 -2
  85. package/src/organisms/timeline/timeline.js +2 -3
  86. package/dist/atoms/timeline/anchorScroll.js +0 -13
  87. package/dist/atoms/toggle-high-contrast/toggle-high-contrast.js +0 -12
  88. package/dist/molecules/glider/glider-single.js +0 -68
  89. package/dist/molecules/modal/modal-graph.js +0 -40
  90. package/dist/molecules/timeline-navigation/timeline-navigation.js +0 -34
  91. /package/src/atoms/icon/{heading-3.svg → richtext-heading-3.svg} +0 -0
  92. /package/src/molecules/alert/{_alert.scss → alert.scss} +0 -0
@@ -1,22 +1,18 @@
1
- 'use strict';
2
-
3
- var toolTip = document.querySelector('[role="tooltip"]');
4
- var toolTipText = document.querySelector('[data-tooltip]');
5
-
1
+ "use strict";
2
+ const toolTip = document.querySelector('[role="tooltip"]');
3
+ const toolTipText = document.querySelector('[data-tooltip]');
6
4
  function isInViewport(elem) {
7
- var distance = elem.getBoundingClientRect();
8
- return distance.top >= 30 && distance.left >= 30 && distance.bottom <= (window.innerHeight || document.documentElement.clientHeight) && distance.right <= (window.innerWidth || document.documentElement.clientWidth);
5
+ const distance = elem.getBoundingClientRect();
6
+ return distance.top >= 30 && distance.left >= 30 && distance.bottom <= (window.innerHeight || document.documentElement.clientHeight) && distance.right <= (window.innerWidth || document.documentElement.clientWidth);
9
7
  }
10
-
11
8
  function positionToolTip() {
12
- if (isInViewport(toolTip)) {
13
- toolTipText.classList.remove('down');
14
- } else {
15
- toolTipText.classList.add('down');
16
- }
9
+ if (isInViewport(toolTip)) {
10
+ toolTipText.classList.remove('down');
11
+ } else {
12
+ toolTipText.classList.add('down');
13
+ }
17
14
  }
18
-
19
15
  if (toolTip) {
20
- positionToolTip();
21
- window.addEventListener('scroll', positionToolTip);
22
- }
16
+ positionToolTip();
17
+ window.addEventListener('scroll', positionToolTip);
18
+ }
@@ -1,77 +1,42 @@
1
- 'use strict';
2
-
3
- require('./assets/js/readSpeakerHandling');
4
-
5
- require('./molecules/form');
6
-
7
- require('./atoms/textarea/rich-text');
8
-
9
- require('./atoms/password-toggle/password-toggle');
10
-
11
- require('./utilities/tab-highlighting/tab-highlighting');
12
-
13
- require('./molecules/system-error/system-error');
14
-
15
- require('./molecules/cookie-disclaimer/cookie-disclaimer');
16
-
17
- require('./organisms/accordion/accordion');
18
-
19
- require('./organisms/tabs/tabs');
20
-
21
- require('./organisms/mailchimp/mailchimp');
22
-
23
- require('./organisms/mega-menu/mega-menu');
24
-
25
- require('./molecules/share/share');
26
-
27
- require('./molecules/natural-language-form/natural-language-form');
28
-
29
- require('./atoms/tooltip/tooltip');
30
-
31
- require('./atoms/height-limiter/height-limiter');
32
-
33
- require('./atoms/file/file');
34
-
35
- require('./atoms/file/filePreview');
36
-
37
- require('./organisms/podcast/podcast');
38
-
39
- require('./assets/js/responsivePosition');
40
-
41
- require('./assets/js/youtube');
42
-
43
- require('./molecules/glider/glider');
44
-
45
- require('./molecules/glider/glider-course');
46
-
47
- require('./molecules/glider/glider-hero');
48
-
49
- require('./molecules/context-menu/context-menu');
50
-
51
- require('./molecules/alert/alert');
52
-
53
- require('./molecules/continue-video-guide/continue-video-guide');
54
-
55
- require('./organisms/video-guide/video-guide');
56
-
57
- require('./organisms/timeline/timeline');
58
-
59
- require('./molecules/overview-navigation/overview-navigation');
60
-
61
- require('./organisms/schedule/schedule-filter');
62
-
63
- require('./assets/js/ot');
64
-
65
- require('./assets/js/charCounter');
66
-
67
- require('./atoms/range/range');
68
-
69
- require('./assets/js/utmGenerator');
70
-
71
- require('./assets/js/textToggle');
72
-
73
- require('./assets/js/iconToggle');
74
-
75
- require('./molecules/multi-select/multi-select');
76
-
77
- require('./organisms/haveibeenpwned/haveibeenpwned');
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ require("./assets/js/readSpeakerHandling");
6
+ require("./molecules/form");
7
+ require("./atoms/textarea/rich-text");
8
+ require("./atoms/password-toggle/password-toggle");
9
+ require("./utilities/tab-highlighting/tab-highlighting");
10
+ require("./molecules/system-error/system-error");
11
+ require("./molecules/cookie-disclaimer/cookie-disclaimer");
12
+ require("./organisms/accordion/accordion");
13
+ require("./organisms/tabs/tabs");
14
+ require("./organisms/mailchimp/mailchimp");
15
+ require("./organisms/mega-menu/mega-menu");
16
+ require("./molecules/share/share");
17
+ require("./molecules/natural-language-form/natural-language-form");
18
+ require("./atoms/tooltip/tooltip");
19
+ require("./atoms/height-limiter/height-limiter");
20
+ require("./atoms/file/file");
21
+ require("./atoms/file/filePreview");
22
+ require("./organisms/podcast/podcast");
23
+ require("./assets/js/responsivePosition");
24
+ require("./assets/js/youtube");
25
+ require("./molecules/glider/glider");
26
+ require("./molecules/glider/glider-course");
27
+ require("./molecules/glider/glider-hero");
28
+ require("./molecules/context-menu/context-menu");
29
+ require("./molecules/alert/alert");
30
+ require("./molecules/continue-video-guide/continue-video-guide");
31
+ require("./organisms/video-guide/video-guide");
32
+ require("./organisms/timeline/timeline");
33
+ require("./molecules/overview-navigation/overview-navigation");
34
+ require("./organisms/schedule/schedule-filter");
35
+ require("./assets/js/ot");
36
+ require("./assets/js/charCounter");
37
+ require("./atoms/range/range");
38
+ require("./assets/js/utmGenerator");
39
+ require("./assets/js/textToggle");
40
+ require("./assets/js/iconToggle");
41
+ require("./molecules/multi-select/multi-select");
42
+ require("./organisms/haveibeenpwned/haveibeenpwned");
package/dist/focusTrap.js CHANGED
@@ -1,91 +1,80 @@
1
- 'use strict';
2
-
1
+ "use strict";
3
2
  Object.defineProperty(exports, "__esModule", {
4
- value: true
3
+ value: true
5
4
  });
6
- exports.default = focusTrap;
7
-
8
- var _focusTrap = require('focus-trap');
9
-
5
+ Object.defineProperty(exports, "default", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return focusTrap;
9
+ }
10
+ });
11
+ const _focustrap = require("focus-trap");
10
12
  function getContainer(element) {
11
- return document.getElementById(element.getAttribute('data-a11y-toggle'));
13
+ return document.getElementById(element.getAttribute('data-a11y-toggle'));
12
14
  }
13
-
14
15
  function focusTrap(container) {
15
- if (container && container.getAttribute('data-focus-trap') !== 'false' && !container.focusTrap) {
16
- container.focusTrap = (0, _focusTrap.createFocusTrap)('#' + container.id, { clickOutsideDeactivates: true });
17
- container.setAttribute('data-focus-trap', 'true');
18
- }
16
+ if (container && container.getAttribute('data-focus-trap') !== 'false' && !container.focusTrap) {
17
+ container.focusTrap = (0, _focustrap.createFocusTrap)(`#${container.id}`, {
18
+ clickOutsideDeactivates: true
19
+ });
20
+ container.setAttribute('data-focus-trap', 'true');
21
+ }
19
22
  }
20
-
21
- var buttons = document.querySelectorAll('[data-a11y-toggle]');
22
-
23
- [].forEach.call(buttons, function (button) {
24
- var container = getContainer(button);
25
-
26
- if (!container) {
27
- return;
28
- }
29
-
30
- container.setAttribute('data-container', 'true');
31
-
32
- if (!container.focusTrap) {
33
- focusTrap(container);
34
- }
23
+ const buttons = document.querySelectorAll('[data-a11y-toggle]');
24
+ [].forEach.call(buttons, (button)=>{
25
+ const container = getContainer(button);
26
+ if (!container) {
27
+ return;
28
+ }
29
+ container.setAttribute('data-container', 'true');
30
+ if (!container.focusTrap) {
31
+ focusTrap(container);
32
+ }
35
33
  });
36
-
37
34
  function delegate(handler, e) {
38
- var target = e.target.closest('[data-a11y-toggle]');
39
-
40
- if (!target) {
41
- return;
42
- }
43
-
44
- handler(e, target);
35
+ const target = e.target.closest('[data-a11y-toggle]');
36
+ if (!target) {
37
+ return;
38
+ }
39
+ handler(e, target);
45
40
  }
46
-
47
41
  function handleKeyDown(e, element) {
48
- if (element.getAttribute('aria-expanded') === 'true') {
49
- return;
50
- }
51
-
52
- if (e.keyCode === 9) {
53
- var container = getContainer(element);
54
-
55
- if (container) {
56
- container.tabIndex = -1;
57
- }
58
- }
42
+ if (element.getAttribute('aria-expanded') === 'true') {
43
+ return;
44
+ }
45
+ if (e.keyCode === 9) {
46
+ const container = getContainer(element);
47
+ if (container) {
48
+ container.tabIndex = -1;
49
+ }
50
+ }
59
51
  }
60
-
61
52
  function handleFocusTrap(e, element) {
62
- var container = getContainer(element);
63
-
64
- if (!container) {
65
- return;
66
- }
67
-
68
- focusTrap(container);
69
-
70
- // Run on next tick
71
- setTimeout(function () {
72
- if (container.getAttribute('aria-hidden') === 'false') {
73
- container.tabIndex = 0;
74
-
75
- if (container.focusTrap) {
76
- container.focusTrap.activate();
77
- }
78
- } else {
79
- if (container.focusTrap) {
80
- container.focusTrap.deactivate();
81
- }
82
-
83
- container.addEventListener('transitionend', function () {
84
- container.tabIndex = -1;
85
- }, { once: true });
86
- }
87
- }, 0);
53
+ const container = getContainer(element);
54
+ if (!container) {
55
+ return;
56
+ }
57
+ focusTrap(container);
58
+ // Run on next tick
59
+ setTimeout(()=>{
60
+ if (container.getAttribute('aria-hidden') === 'false') {
61
+ container.tabIndex = 0;
62
+ if (container.focusTrap) {
63
+ container.focusTrap.activate();
64
+ }
65
+ } else {
66
+ if (container.focusTrap) {
67
+ container.focusTrap.deactivate();
68
+ }
69
+ container.addEventListener('transitionend', ()=>{
70
+ container.tabIndex = -1;
71
+ }, {
72
+ once: true
73
+ });
74
+ }
75
+ }, 0);
88
76
  }
89
-
90
77
  document.addEventListener('click', delegate.bind(null, handleFocusTrap));
91
- document.addEventListener('keydown', delegate.bind(null, handleKeyDown), { once: true });
78
+ document.addEventListener('keydown', delegate.bind(null, handleKeyDown), {
79
+ once: true
80
+ });
@@ -1,23 +1,18 @@
1
- 'use strict';
2
-
3
- var alerts = document.querySelectorAll('.js-dismiss-alert');
4
-
1
+ "use strict";
2
+ const alerts = document.querySelectorAll('.js-dismiss-alert');
5
3
  function dismiss(alert) {
6
- var target = alert.querySelector('[data-a11y-toggle]');
7
- var id = target.closest('[role]').getAttribute('id');
8
- var idElement = document.getElementById(id);
9
-
10
- if (sessionStorage.getItem(id) !== 'is-dismissed') {
11
- window.addEventListener('DOMContentLoaded', function () {
12
- idElement.setAttribute('aria-hidden', 'false');
13
- });
14
-
15
- target.addEventListener('click', function () {
16
- sessionStorage.setItem(id, 'is-dismissed');
17
- });
18
- }
4
+ const target = alert.querySelector('[data-a11y-toggle]');
5
+ const id = target.closest('[role]').getAttribute('id');
6
+ const idElement = document.getElementById(id);
7
+ if (sessionStorage.getItem(id) !== 'is-dismissed') {
8
+ window.addEventListener('DOMContentLoaded', ()=>{
9
+ idElement.setAttribute('aria-hidden', 'false');
10
+ });
11
+ target.addEventListener('click', ()=>{
12
+ sessionStorage.setItem(id, 'is-dismissed');
13
+ });
14
+ }
19
15
  }
20
-
21
16
  if (alerts) {
22
- [].forEach.call(alerts, dismiss);
23
- }
17
+ [].forEach.call(alerts, dismiss);
18
+ }
@@ -1,19 +1,14 @@
1
- 'use strict';
2
-
3
- var elements = document.querySelectorAll('[data-close-on-outside-click]');
4
-
1
+ "use strict";
2
+ const elements = document.querySelectorAll('[data-close-on-outside-click]');
5
3
  function closeElement(element) {
6
- document.addEventListener('mouseup', function (e) {
7
- var childElement = element.nextElementSibling;
8
-
9
- /* Close menu on all clicks except the trigger button,
10
- the menu and it's child elements and if the menu is actually open. */
11
- if (!element.contains(e.target) && !childElement.contains(e.target) && element.getAttribute('aria-expanded') === 'true') {
12
- element.click();
13
- }
14
- });
4
+ document.addEventListener('mouseup', (e)=>{
5
+ const childElement = element.nextElementSibling;
6
+ /* Close menu on all clicks except the trigger button,
7
+ the menu and it's child elements and if the menu is actually open. */ if (!element.contains(e.target) && !childElement.contains(e.target) && element.getAttribute('aria-expanded') === 'true') {
8
+ element.click();
9
+ }
10
+ });
15
11
  }
16
-
17
12
  if (elements) {
18
- [].forEach.call(elements, closeElement);
19
- }
13
+ [].forEach.call(elements, closeElement);
14
+ }
@@ -1,109 +1,98 @@
1
- 'use strict';
2
-
3
- var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
4
-
5
- var _className = require('../../assets/js/className');
6
-
7
- var _className2 = _interopRequireDefault(_className);
8
-
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
10
-
11
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
12
-
13
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
14
-
15
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
16
-
17
- function _CustomElement() {
18
- return Reflect.construct(HTMLElement, [], this.__proto__.constructor);
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ const _className = /*#__PURE__*/ _interop_require_default(require("../../assets/js/className"));
6
+ function _interop_require_default(obj) {
7
+ return obj && obj.__esModule ? obj : {
8
+ default: obj
9
+ };
19
10
  }
20
-
21
- ;
22
- Object.setPrototypeOf(_CustomElement.prototype, HTMLElement.prototype);
23
- Object.setPrototypeOf(_CustomElement, HTMLElement);
24
-
25
- var ProgressRing = function (_CustomElement2) {
26
- _inherits(ProgressRing, _CustomElement2);
27
-
28
- function ProgressRing() {
29
- _classCallCheck(this, ProgressRing);
30
-
31
- var _this = _possibleConstructorReturn(this, (ProgressRing.__proto__ || Object.getPrototypeOf(ProgressRing)).call(this));
32
-
33
- var stroke = _this.getAttribute('stroke');
34
- var radius = _this.getAttribute('radius');
35
- var normalizedRadius = radius - stroke * 2;
36
- _this.circumference = normalizedRadius * 2 * Math.PI;
37
-
38
- _this.root = _this.attachShadow({ mode: 'open' });
39
- _this.root.innerHTML = '\n\t\t<svg\n\t\theight="' + radius * 2 + '"\n\t\twidth="' + radius * 2 + '"\n\t\t>\n\t\t<circle\n\t\tstroke="white"\n\t\tstroke-dasharray="' + _this.circumference + ' ' + _this.circumference + '"\n\t\tstyle="stroke-dashoffset:' + _this.circumference + '"\n\t\tstroke-width="' + stroke + '"\n\t\tfill="transparent"\n\t\tr="' + normalizedRadius + '"\n\t\tcx="' + radius + '"\n\t\tcy="' + radius + '"\n\t\t/>\n\t\t</svg>\n\n\t\t<style>\n\t\tcircle {\n\t\t\ttransition: stroke-dashoffset 0.35s;\n\t\t\ttransform: rotate(-90deg);\n\t\t\ttransform-origin: 50% 50%;\n\t\t}\n\t\t</style>\n\t\t';
40
- return _this;
41
- }
42
-
43
- _createClass(ProgressRing, [{
44
- key: 'setProgress',
45
- value: function setProgress(percent) {
46
- var offset = this.circumference - percent / 100 * this.circumference;
47
- var circle = this.root.querySelector('circle');
48
- circle.style.strokeDashoffset = offset;
49
- }
50
- }, {
51
- key: 'attributeChangedCallback',
52
- value: function attributeChangedCallback(name, oldValue, newValue) {
53
- if (name === 'progress') {
54
- this.setProgress(newValue);
55
- }
11
+ class ProgressRing extends HTMLElement {
12
+ setProgress(percent) {
13
+ const offset = this.circumference - percent / 100 * this.circumference;
14
+ const circle = this.root.querySelector('circle');
15
+ circle.style.strokeDashoffset = offset;
16
+ }
17
+ static get observedAttributes() {
18
+ return [
19
+ 'progress'
20
+ ];
21
+ }
22
+ attributeChangedCallback(name, oldValue, newValue) {
23
+ if (name === 'progress') {
24
+ this.setProgress(newValue);
25
+ }
26
+ }
27
+ constructor(){
28
+ super();
29
+ const stroke = this.getAttribute('stroke');
30
+ const radius = this.getAttribute('radius');
31
+ const normalizedRadius = radius - stroke * 2;
32
+ this.circumference = normalizedRadius * 2 * Math.PI;
33
+ this.root = this.attachShadow({
34
+ mode: 'open'
35
+ });
36
+ this.root.innerHTML = `
37
+ <svg
38
+ height="${radius * 2}"
39
+ width="${radius * 2}"
40
+ >
41
+ <circle
42
+ stroke="white"
43
+ stroke-dasharray="${this.circumference} ${this.circumference}"
44
+ style="stroke-dashoffset:${this.circumference}"
45
+ stroke-width="${stroke}"
46
+ fill="transparent"
47
+ r="${normalizedRadius}"
48
+ cx="${radius}"
49
+ cy="${radius}"
50
+ />
51
+ </svg>
52
+
53
+ <style>
54
+ circle {
55
+ transition: stroke-dashoffset 0.35s;
56
+ transform: rotate(-90deg);
57
+ transform-origin: 50% 50%;
56
58
  }
57
- }], [{
58
- key: 'observedAttributes',
59
- get: function get() {
60
- return ['progress'];
61
- }
62
- }]);
63
-
64
- return ProgressRing;
65
- }(_CustomElement);
66
-
59
+ </style>
60
+ `;
61
+ }
62
+ }
67
63
  window.customElements.define('progress-ring', ProgressRing);
68
- var continueElement = document.querySelector('.js-guide-continue');
69
-
64
+ const continueElement = document.querySelector('.js-guide-continue');
70
65
  // Get value from sessionStorage if present
71
66
  if (sessionStorage.getItem('InmsCurrentTime')) {
72
- var videoCurrentTime = sessionStorage.getItem('InmsCurrentTime');
73
- var videoDuration = sessionStorage.getItem('InmsDuration');
74
- var progressRing = document.querySelector('progress-ring');
75
- var continueLink = document.querySelector('.js-guide-continue-link');
76
- var guideURL = sessionStorage.getItem('InmsCurrentGuideURL');
77
- var guideImage = sessionStorage.getItem('InmsCurrentGuideImage');
78
-
79
- if (videoCurrentTime > 0 && progressRing && continueElement && guideImage && continueLink) {
80
- var alternativeText = continueLink.dataset.altText;
81
- var currentProgress = videoCurrentTime / videoDuration;
82
- var currentGuideImage = document.querySelector('.js-guide-continue-image');
83
-
84
- continueElement.classList.add((0, _className2.default)('m-continue-video-guide--has-progress'));
85
- continueLink.setAttribute('href', guideURL);
86
- currentGuideImage.src = guideImage;
87
- continueLink.querySelector('span').innerText = alternativeText;
88
- // Calculate percentage played
89
- progressRing.setAttribute('progress', Math.floor(currentProgress * 100));
90
- }
67
+ const videoCurrentTime = sessionStorage.getItem('InmsCurrentTime');
68
+ const videoDuration = sessionStorage.getItem('InmsDuration');
69
+ const progressRing = document.querySelector('progress-ring');
70
+ const continueLink = document.querySelector('.js-guide-continue-link');
71
+ const guideURL = sessionStorage.getItem('InmsCurrentGuideURL');
72
+ const guideImage = sessionStorage.getItem('InmsCurrentGuideImage');
73
+ if (videoCurrentTime > 0 && progressRing && continueElement && guideImage && continueLink) {
74
+ const alternativeText = continueLink.dataset.altText;
75
+ const currentProgress = videoCurrentTime / videoDuration;
76
+ const currentGuideImage = document.querySelector('.js-guide-continue-image');
77
+ continueElement.classList.add((0, _className.default)('m-continue-video-guide--has-progress'));
78
+ continueLink.setAttribute('href', guideURL);
79
+ currentGuideImage.src = guideImage;
80
+ continueLink.querySelector('span').innerText = alternativeText;
81
+ // Calculate percentage played
82
+ progressRing.setAttribute('progress', Math.floor(currentProgress * 100));
83
+ }
91
84
  }
92
-
93
85
  // Close Continue Component
94
- var closeButton = document.querySelector('.js-guide-close');
95
-
86
+ const closeButton = document.querySelector('.js-guide-close');
96
87
  if (closeButton) {
97
- closeButton.addEventListener('click', function () {
98
- sessionStorage.setItem('InmsGuideClosed', true);
99
- continueElement.classList.remove('is-visible');
100
- });
101
-
102
- if (!sessionStorage.getItem('InmsGuideClosed')) {
103
- continueElement.classList.add('is-visible');
104
- }
105
-
106
- if (document.querySelector('.js-video-guide')) {
107
- continueElement.classList.remove('is-visible');
108
- }
109
- }
88
+ closeButton.addEventListener('click', ()=>{
89
+ sessionStorage.setItem('InmsGuideClosed', true);
90
+ continueElement.classList.remove('is-visible');
91
+ });
92
+ if (!sessionStorage.getItem('InmsGuideClosed')) {
93
+ continueElement.classList.add('is-visible');
94
+ }
95
+ if (document.querySelector('.js-video-guide')) {
96
+ continueElement.classList.remove('is-visible');
97
+ }
98
+ }