diff --git a/README.md b/README.md
index 07c79c1..ba49063 100644
--- a/README.md
+++ b/README.md
@@ -2,15 +2,15 @@
Journey.js
[![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Journey.js%2C%20a%20free%20JavaScript%journey%builder&url=https://github.com/williamtroup/Journey.js&hashtags=javascript,html,journey,guide)
-[![npm](https://img.shields.io/badge/npmjs-v1.4.0-blue)](https://www.npmjs.com/package/jjourney.js)
-[![nuget](https://img.shields.io/badge/nuget-v1.4.0-purple)](https://www.nuget.org/packages/jJourney.js/)
+[![npm](https://img.shields.io/badge/npmjs-v1.5.0-blue)](https://www.npmjs.com/package/jjourney.js)
+[![nuget](https://img.shields.io/badge/nuget-v1.5.0-purple)](https://www.nuget.org/packages/jJourney.js/)
[![license](https://img.shields.io/badge/license-MIT-green)](https://github.com/williamtroup/Journey.js/blob/main/LICENSE.txt)
[![discussions Welcome](https://img.shields.io/badge/discussions-Welcome-red)](https://github.com/williamtroup/Journey.js/discussions)
[![coded by William Troup](https://img.shields.io/badge/coded_by-William_Troup-yellow)](https://www.william-troup.com/)
>
🚶 A lightweight, easy-to-use JavaScript library to create interactive, customizable, accessible guided tours across your websites or web apps!
-> v1.4.0
+> v1.5.0
![Journey.js](docs/images/main.png)
@@ -30,6 +30,7 @@ Journey.js
- Hints support (not included in the main journey).
- 51 language translations available!
- Customizable tooltips.
+- Show progress dots, or a progress bar, or both!
diff --git a/README_NUGET.md b/README_NUGET.md
index 797d1d5..09ac4c1 100644
--- a/README_NUGET.md
+++ b/README_NUGET.md
@@ -1,8 +1,8 @@
-# Journey.js v1.4.0
+# Journey.js v1.5.0
[![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=Journey.js%2C%20a%20free%20JavaScript%journey%builder&url=https://github.com/williamtroup/Journey.js&hashtags=javascript,html,journey,guide)
-[![npm](https://img.shields.io/badge/npmjs-v1.4.0-blue)](https://www.npmjs.com/package/jjourney.js)
-[![nuget](https://img.shields.io/badge/nuget-v1.4.0-purple)](https://www.nuget.org/packages/jJourney.js/)
+[![npm](https://img.shields.io/badge/npmjs-v1.5.0-blue)](https://www.npmjs.com/package/jjourney.js)
+[![nuget](https://img.shields.io/badge/nuget-v1.5.0-purple)](https://www.nuget.org/packages/jJourney.js/)
[![license](https://img.shields.io/badge/license-MIT-green)](https://github.com/williamtroup/Journey.js/blob/main/LICENSE.txt)
[![discussions Welcome](https://img.shields.io/badge/discussions-Welcome-red)](https://github.com/williamtroup/Journey.js/discussions)
[![coded by William Troup](https://img.shields.io/badge/coded_by-William_Troup-yellow)](https://www.william-troup.com/)
@@ -22,6 +22,7 @@
- Hints support (not included in the main journey).
- 51 language translations available!
- Customizable tooltips.
+- Show progress dots, or a progress bar, or both!
## Where can I find the documentation?
diff --git a/dist/journey.js b/dist/journey.js
index e8b7e27..83b1ea8 100644
--- a/dist/journey.js
+++ b/dist/journey.js
@@ -1,7 +1,8 @@
-/*! Journey.js v1.4.0 | (c) Bunoon 2024 | MIT License */
+/*! Journey.js v1.5.0 | (c) Bunoon 2024 | MIT License */
(function() {
var _parameter_Document = null, _parameter_Window = null, _parameter_Math = null, _parameter_Json = null, _public = {}, _configuration = {}, _configuration_ShortcutKeysEnabled = true, _enum_KeyCodes = {escape:27, left:37, up:38, right:39, down:40}, _string = {empty:"", space:" "}, _elements_Type = {}, _elements_Attributes_Json = {}, _elements_Attributes_Keys = [], _elements_Attributes_Position = 0, _element_Focus_Element_PositionStyle = null, _element_Disabled_Background = null, _element_Dialog =
- null, _element_Dialog_Close_Button = null, _element_Dialog_Title = null, _element_Dialog_Description = null, _element_Dialog_CheckBox_Container = null, _element_Dialog_CheckBox_Input = null, _element_Dialog_ProgressDots = null, _element_Dialog_Buttons = null, _element_Dialog_Back_Button = null, _element_Dialog_Next_Button = null, _element_ToolTip = null, _element_ToolTip_Timer = null, _attribute_Name_Options = "data-journey-js";
+ null, _element_Dialog_Close_Button = null, _element_Dialog_Title = null, _element_Dialog_Description = null, _element_Dialog_CheckBox_Container = null, _element_Dialog_CheckBox_Input = null, _element_Dialog_ProgressDots = null, _element_Dialog_ProgressBar = null, _element_Dialog_ProgressBar_Percentage = null, _element_Dialog_ProgressBar_Percentage_Text = null, _element_Dialog_Buttons = null, _element_Dialog_Back_Button = null, _element_Dialog_Next_Button = null, _element_ToolTip = null, _element_ToolTip_Timer =
+ null, _attribute_Name_Options = "data-journey-js";
function renderDisabledBackground() {
_element_Disabled_Background = createElement("div", "journey-js-disabled-background");
_element_Disabled_Background.onclick = function() {
@@ -35,6 +36,12 @@
_element_Dialog_CheckBox_Input = buildCheckBox(_element_Dialog_CheckBox_Container, _configuration.doNotShowAgainText).input;
_element_Dialog_ProgressDots = createElement("div", "progress-dots");
_element_Dialog.appendChild(_element_Dialog_ProgressDots);
+ _element_Dialog_ProgressBar = createElement("div", "progress-bar");
+ _element_Dialog.appendChild(_element_Dialog_ProgressBar);
+ _element_Dialog_ProgressBar_Percentage = createElement("div", "progress-bar-percentage");
+ _element_Dialog_ProgressBar.appendChild(_element_Dialog_ProgressBar_Percentage);
+ _element_Dialog_ProgressBar_Percentage_Text = createElement("p", "progress-bar-percentage-text");
+ _element_Dialog_ProgressBar_Percentage.appendChild(_element_Dialog_ProgressBar_Percentage_Text);
_element_Dialog_Buttons = createElement("div", "buttons");
_element_Dialog.appendChild(_element_Dialog_Buttons);
_element_Dialog_Back_Button = createElement("button", "back");
@@ -96,6 +103,9 @@
_element_Dialog_Close_Button.style.display = _configuration.showCloseButton ? "block" : "none";
_configuration_ShortcutKeysEnabled = true;
bindingOptions.currentView.element.className += _string.space + "journey-js-element-focus";
+ if (_configuration.scrollToElements) {
+ bindingOptions.currentView.element.scrollIntoView();
+ }
var lastPositionStyle = getStyleValueByName(bindingOptions.currentView.element, "position");
if (lastPositionStyle !== _string.empty && lastPositionStyle.toLowerCase() === "static") {
_element_Focus_Element_PositionStyle = lastPositionStyle;
@@ -103,6 +113,8 @@
}
showElementBasedOnCondition(_element_Dialog_CheckBox_Container, _configuration.showDoNotShowAgain);
showElementBasedOnCondition(_element_Dialog_ProgressDots, _configuration.showProgressDots && _elements_Attributes_Keys.length > 1);
+ showElementBasedOnCondition(_element_Dialog_ProgressBar, _configuration.showProgressBar && _elements_Attributes_Keys.length > 1);
+ showElementBasedOnCondition(_element_Dialog_ProgressBar_Percentage_Text, _configuration.showProgressBarText);
showElementBasedOnCondition(_element_Dialog_Buttons, _configuration.showButtons);
_element_Dialog_Back_Button.innerHTML = _configuration.backButtonText;
_element_Dialog_Back_Button.disabled = _elements_Attributes_Position === 0;
@@ -114,6 +126,7 @@
setDialogText(bindingOptions);
setDialogPosition(null, bindingOptions);
buildProcessDots();
+ setProgressBarPosition();
fireCustomTrigger(bindingOptions.events.onEnter, bindingOptions.currentView.element);
if (bindingOptions.sendClick) {
bindingOptions.currentView.element.click();
@@ -208,6 +221,13 @@
dot.innerHTML = (keyIndex + 1).toString();
}
}
+ function setProgressBarPosition() {
+ if (_configuration.showProgressBar) {
+ var pixelsPerStage = _element_Dialog_ProgressDots.offsetWidth / _elements_Attributes_Keys.length, width = (_elements_Attributes_Position + 1) * pixelsPerStage, percentageComplete = _parameter_Math.ceil((_elements_Attributes_Position + 1) / _elements_Attributes_Keys.length * 100);
+ _element_Dialog_ProgressBar_Percentage.style.width = width + "px";
+ _element_Dialog_ProgressBar_Percentage_Text.innerHTML = percentageComplete + "%";
+ }
+ }
function renderToolTip() {
if (!isDefined(_element_ToolTip)) {
_element_ToolTip = createElement("div", "journey-js-tooltip");
@@ -308,10 +328,14 @@
cancelBubble(e);
_element_Dialog_CheckBox_Container.style.display = "none";
_element_Dialog_ProgressDots.style.display = "none";
+ _element_Dialog_ProgressBar.style.display = "none";
_element_Dialog_Buttons.style.display = "none";
_configuration_ShortcutKeysEnabled = false;
setDialogText(bindingOptions);
setDialogPosition(e, bindingOptions);
+ if (bindingOptions.removeHintWhenViewed) {
+ clearElementsByClassName(bindingOptions.currentView.element, "journey-js-hint");
+ }
};
}
function buildDocumentEvents(addEvents) {
@@ -371,6 +395,7 @@
options.isHint = getDefaultBoolean(options.isHint, false);
options.alignHintToClickPosition = getDefaultBoolean(options.alignHintToClickPosition, false);
options.showDisabledBackground = getDefaultBoolean(options.showDisabledBackground, true);
+ options.removeHintWhenViewed = getDefaultBoolean(options.removeHintWhenViewed, false);
options = buildAttributeOptionStrings(options);
return buildAttributeOptionCustomTriggers(options);
}
@@ -716,6 +741,8 @@
_configuration.tooltipDelay = getDefaultNumber(_configuration.tooltipDelay, 750);
_configuration.showProgressDotToolTips = getDefaultBoolean(_configuration.showProgressDotToolTips, true);
_configuration.closeDialogOnDisabledBackgroundClick = getDefaultBoolean(_configuration.closeDialogOnDisabledBackgroundClick, false);
+ _configuration.showProgressBar = getDefaultBoolean(_configuration.showProgressBar, false);
+ _configuration.scrollToElements = getDefaultBoolean(_configuration.scrollToElements, false);
buildDefaultConfigurationStrings();
buildDefaultConfigurationCustomTriggers();
}
@@ -729,12 +756,13 @@
_configuration.attributeNotValidErrorText = getDefaultString(_configuration.attributeNotValidErrorText, "The attribute '{{attribute_name}}' is not a valid object.");
_configuration.attributeNotSetErrorText = getDefaultString(_configuration.attributeNotSetErrorText, "The attribute '{{attribute_name}}' has not been set correctly.");
_configuration.closeDialogConfirmationText = getDefaultString(_configuration.closeDialogConfirmationText, null);
+ _configuration.showProgressBarText = getDefaultBoolean(_configuration.showProgressBarText, false);
}
function buildDefaultConfigurationCustomTriggers() {
_configuration.onDoNotShowAgainChange = getDefaultFunction(_configuration.onDoNotShowAgainChange, null);
}
_public.getVersion = function() {
- return "1.4.0";
+ return "1.5.0";
};
(function(documentObject, windowObject, mathObject, jsonObject) {
_parameter_Document = documentObject;
diff --git a/dist/journey.js.css b/dist/journey.js.css
index ba6da77..7522ab9 100644
--- a/dist/journey.js.css
+++ b/dist/journey.js.css
@@ -1,5 +1,5 @@
/*
- * Journey.js Library v1.4.0
+ * Journey.js Library v1.5.0
*
* Copyright 2024 Bunoon
* Released under the MIT License
@@ -89,6 +89,30 @@ div.journey-js-dialog *::before, div.journey-js-dialog *::after {
box-sizing: border-box;
line-height: normal;
}
+div.journey-js-dialog div:first-of-type {
+ padding-right: calc(var(--journey-js-dialog-close-button-size) + var(--journey-js-spacing));
+}
+div.journey-js-dialog div.title {
+ font-size: large;
+ font-weight: var(--journey-js-title-bold-weight);
+ margin-bottom: var(--journey-js-spacing);
+}
+div.journey-js-dialog div.description {
+ font-weight: var(--journey-js-text-bold-weight);
+}
+div.journey-js-dialog div.checkbox-container {
+ margin-top: var(--journey-js-spacing);
+ margin-bottom: var(--journey-js-spacing);
+}
+div.journey-js-dialog div.checkbox-container input {
+ margin-right: var(--journey-js-spacing);
+}
+
+/*
+ -------------------------------------------------------------------------
+ Journey.js - Dialog - Close Button
+ -------------------------------------------------------------------------
+*/
div.journey-js-dialog button.close {
position: absolute;
top: var(--journey-js-spacing);
@@ -130,24 +154,12 @@ div.journey-js-dialog button.close:hover {
div.journey-js-dialog button.close:hover::before, div.journey-js-dialog button.close:hover::after {
background: var(--journey-js-dialog-close-button-hover-x-color);
}
-div.journey-js-dialog div:first-of-type {
- padding-right: calc(var(--journey-js-dialog-close-button-size) + var(--journey-js-spacing));
-}
-div.journey-js-dialog div.title {
- font-size: large;
- font-weight: var(--journey-js-title-bold-weight);
- margin-bottom: var(--journey-js-spacing);
-}
-div.journey-js-dialog div.description {
- font-weight: var(--journey-js-text-bold-weight);
-}
-div.journey-js-dialog div.checkbox-container {
- margin-top: var(--journey-js-spacing);
- margin-bottom: var(--journey-js-spacing);
-}
-div.journey-js-dialog div.checkbox-container input {
- margin-right: var(--journey-js-spacing);
-}
+
+/*
+ -------------------------------------------------------------------------
+ Journey.js - Dialog - Progress Dots
+ -------------------------------------------------------------------------
+*/
div.journey-js-dialog div.progress-dots {
margin-top: var(--journey-js-spacing);
margin-bottom: var(--journey-js-spacing);
@@ -193,6 +205,8 @@ div.journey-js-dialog div.progress-dots div.dot-number {
color: var(--journey-js-color-gray) !important;
}
div.journey-js-dialog div.progress-dots div.dot-active {
+ transition: var(--journey-js-transition);
+ transition-property: width;
border-radius: 10px;
height: 10px;
width: 15px;
@@ -200,42 +214,35 @@ div.journey-js-dialog div.progress-dots div.dot-active {
border: var(--journey-js-border-size) solid var(--journey-js-dialog-button-border-color);
color: var(--journey-js-color-white) !important;
}
-div.journey-js-dialog div.buttons {
- margin-top: var(--journey-js-spacing);
- text-align: right;
-}
-div.journey-js-dialog div.buttons button.back,
-div.journey-js-dialog div.buttons button.next {
+
+/*
+ -------------------------------------------------------------------------
+ Journey.js - Dialog - Progress Bar
+ -------------------------------------------------------------------------
+*/
+div.journey-js-dialog div.progress-bar {
border-radius: var(--journey-js-border-radius);
+ margin-top: var(--journey-js-spacing);
+ margin-bottom: var(--journey-js-spacing);
background-color: var(--journey-js-dialog-button-background-color);
- color: var(--journey-js-dialog-button-text-color);
border: var(--journey-js-border-size) solid var(--journey-js-dialog-button-border-color);
- min-width: 100px;
- padding: var(--journey-js-spacing);
- transition: var(--journey-js-transition);
- outline: none;
- margin-left: var(--journey-js-spacing);
-}
-div.journey-js-dialog div.buttons button.back:not([disabled]):active,
-div.journey-js-dialog div.buttons button.next:not([disabled]):active {
- background-color: var(--journey-js-dialog-button-active-background-color) !important;
- color: var(--journey-js-dialog-button-active-text-color) !important;
- border: var(--journey-js-border-size) solid var(--journey-js-dialog-button-active-border-color) !important;
-}
-div.journey-js-dialog div.buttons button.back:not([disabled]):hover,
-div.journey-js-dialog div.buttons button.next:not([disabled]):hover {
- cursor: pointer;
- background-color: var(--journey-js-dialog-button-hover-background-color);
- color: var(--journey-js-dialog-button-hover-text-color);
- border: var(--journey-js-border-size) solid var(--journey-js-dialog-button-hover-border-color);
+ text-wrap: nowrap;
+ overflow: hidden;
}
-div.journey-js-dialog div.buttons button.back:disabled,
-div.journey-js-dialog div.buttons button.next:disabled {
- background-color: var(--journey-js-dialog-button-disabled-background-color) !important;
- color: var(--journey-js-color-gray);
+div.journey-js-dialog div.progress-bar div.progress-bar-percentage {
+ min-height: 10px;
+ background-color: var(--journey-js-dialog-button-border-color);
+ transition: var(--journey-js-transition);
+ transition-property: width;
+ text-align: center;
+ padding: 0 !important;
+ margin: 0 !important;
}
-div.journey-js-dialog div.buttons button.next {
- font-weight: var(--journey-js-title-bold-weight);
+div.journey-js-dialog div.progress-bar div.progress-bar-percentage p.progress-bar-percentage-text {
+ padding: calc(var(--journey-js-spacing) / 2) !important;
+ font-size: smaller;
+ margin: 0 !important;
+ color: var(--journey-js-color-white);
}
/*
@@ -289,6 +296,49 @@ div.journey-js-dialog label.checkbox span.check-mark::before {
border-width: 0 2.5px 2.5px 0;
}
+/*
+ -------------------------------------------------------------------------
+ Journey.js - Dialog - Buttons
+ -------------------------------------------------------------------------
+*/
+div.journey-js-dialog div.buttons {
+ margin-top: var(--journey-js-spacing);
+ text-align: right;
+}
+div.journey-js-dialog div.buttons button.back,
+div.journey-js-dialog div.buttons button.next {
+ border-radius: var(--journey-js-border-radius);
+ background-color: var(--journey-js-dialog-button-background-color);
+ color: var(--journey-js-dialog-button-text-color);
+ border: var(--journey-js-border-size) solid var(--journey-js-dialog-button-border-color);
+ min-width: 100px;
+ padding: var(--journey-js-spacing);
+ transition: var(--journey-js-transition);
+ outline: none;
+ margin-left: var(--journey-js-spacing);
+}
+div.journey-js-dialog div.buttons button.back:not([disabled]):active,
+div.journey-js-dialog div.buttons button.next:not([disabled]):active {
+ background-color: var(--journey-js-dialog-button-active-background-color) !important;
+ color: var(--journey-js-dialog-button-active-text-color) !important;
+ border: var(--journey-js-border-size) solid var(--journey-js-dialog-button-active-border-color) !important;
+}
+div.journey-js-dialog div.buttons button.back:not([disabled]):hover,
+div.journey-js-dialog div.buttons button.next:not([disabled]):hover {
+ cursor: pointer;
+ background-color: var(--journey-js-dialog-button-hover-background-color);
+ color: var(--journey-js-dialog-button-hover-text-color);
+ border: var(--journey-js-border-size) solid var(--journey-js-dialog-button-hover-border-color);
+}
+div.journey-js-dialog div.buttons button.back:disabled,
+div.journey-js-dialog div.buttons button.next:disabled {
+ background-color: var(--journey-js-dialog-button-disabled-background-color) !important;
+ color: var(--journey-js-color-gray);
+}
+div.journey-js-dialog div.buttons button.next {
+ font-weight: var(--journey-js-title-bold-weight);
+}
+
/*
-------------------------------------------------------------------------
Journey.js - Hints
diff --git a/dist/journey.js.css.map b/dist/journey.js.css.map
index 2812732..a64dd70 100644
--- a/dist/journey.js.css.map
+++ b/dist/journey.js.css.map
@@ -1 +1 @@
-{"version":3,"sourceRoot":"","sources":["../src/journey.js.scss","../src/foundation/_styles.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;EAEI;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EAGA;EAGA;EACA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EAGA;EACA;;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAMA;EC7FI;EACA;EACA;EACA;EACA;EACA;EAIA;EACA;EDsFA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;ECtGA;EACA;;ADwGI;ECzGJ;EACA;;AD8GA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAEA;EAEI;;AAIR;EACI;EACA;EACA;;AAEA;EAEI;;AAMR;EACI;;AAIR;EACI;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAEA;EACI;;AAIR;EACI;EACA;EACA;EACA;;AAEA;AAAA;EAEI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAIR;EACI;EACA;;AAEA;AAAA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACI;EACA;EACA;;AAGJ;AAAA;EACI;EACA;EACA;EACA;;AAGJ;AAAA;EACI;EACA;;AAIR;EACI;;;AAMZ;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;EACA;EACA;;AAEA;EACI;;AAEA;EACI;EACA;;AAGJ;EACI;;AAGJ;EAEI;;AAGJ;EACI;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAOhB;AAAA;AAAA;AAAA;AAAA;AAMA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;IACI;;EAGJ;IACI;;EAGJ;IACI;;;AAKR;AAAA;AAAA;AAAA;AAAA;AAMA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAMA;ECraI;EACA;EACA;EACA;EACA;EACA;EAIA;EACA;ED8ZA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAMA;EACI;IACI;;EAEJ;IACI","file":"journey.js.css"}
\ No newline at end of file
+{"version":3,"sourceRoot":"","sources":["../src/journey.js.scss","../src/foundation/_styles.scss"],"names":[],"mappings":"AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAUA;EAEI;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EAGA;EAGA;EACA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EAGA;EACA;;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAMA;EC7FI;EACA;EACA;EACA;EACA;EACA;EAIA;EACA;EDsFA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;ECtGA;EACA;;ADwGI;ECzGJ;EACA;;AD+GI;EACI;;AAIR;EACI;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAEA;EACI;;;AAMZ;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;;AAGJ;EACI;EACA;;AAEA;EAEI;;AAIR;EACI;EACA;EACA;;AAEA;EAEI;;;AAOhB;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;EACA;EACA;;AAEA;AAAA;EAEI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAMZ;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;;AAOhB;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;EACA;EACA;;AAEA;EACI;;AAEA;EACI;EACA;;AAGJ;EACI;;AAGJ;EAEI;;AAGJ;EACI;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAOhB;AAAA;AAAA;AAAA;AAAA;AAOI;EACI;EACA;;AAEA;AAAA;EAEI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;AAAA;EACI;EACA;EACA;;AAGJ;AAAA;EACI;EACA;EACA;EACA;;AAGJ;AAAA;EACI;EACA;;AAIR;EACI;;;AAMZ;AAAA;AAAA;AAAA;AAAA;AAMA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;IACI;;EAGJ;IACI;;EAGJ;IACI;;;AAKR;AAAA;AAAA;AAAA;AAAA;AAMA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAMA;ECteI;EACA;EACA;EACA;EACA;EACA;EAIA;EACA;ED+dA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIJ;AAAA;AAAA;AAAA;AAAA;AAMA;EACI;IACI;;EAEJ;IACI","file":"journey.js.css"}
\ No newline at end of file
diff --git a/dist/journey.js.min.css b/dist/journey.js.min.css
index c63ef78..2ef5e48 100644
--- a/dist/journey.js.min.css
+++ b/dist/journey.js.min.css
@@ -1,2 +1,2 @@
-/*! Journey.js v1.4.0 | (c) Bunoon 2024 | MIT License */
-:root{--journey-js-default-font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--journey-js-text-bold-weight:100;--journey-js-title-bold-weight:700;--journey-js-tooltip-bold-weight:300;--journey-js-color-black:#3b3a3a;--journey-js-color-white:#F5F5F5;--journey-js-color-gray:#AAAAAA;--journey-js-color-hint:rgba( 170, 170, 170, 0.5 );--journey-js-dialog-background-color:#002244;--journey-js-dialog-text-color:var(--journey-js-color-white);--journey-js-dialog-border-color:#72A0C1;--journey-js-dialog-button-background-color:#002D62;--journey-js-dialog-button-border-color:#3457D5;--journey-js-dialog-button-text-color:var(--journey-js-color-white);--journey-js-dialog-button-hover-background-color:#007FFF;--journey-js-dialog-button-hover-border-color:var(--journey-js-dialog-button-border-color);--journey-js-dialog-button-hover-text-color:var(--journey-js-dialog-button-text-color);--journey-js-dialog-button-active-background-color:#00b7ff;--journey-js-dialog-button-active-border-color:var(--journey-js-dialog-button-border-color);--journey-js-dialog-button-active-text-color:var(--journey-js-dialog-button-text-color);--journey-js-dialog-button-disabled-background-color:var(--journey-js-dialog-background-color);--journey-js-dialog-close-button-background-color:var(--journey-js-dialog-button-background-color);--journey-js-dialog-close-button-border-color:var(--journey-js-dialog-button-border-color);--journey-js-dialog-close-button-size:1.1rem;--journey-js-dialog-close-button-x-color:var(--journey-js-color-white);--journey-js-dialog-close-button-hover-background-color:var(--journey-js-dialog-button-hover-background-color);--journey-js-dialog-close-button-hover-x-color:var(--journey-js-dialog-close-button-x-color);--journey-js-dialog-close-button-hover-border-color:var(--journey-js-dialog-close-button-border-color);--journey-js-dialog-close-button-active-background-color:var(--journey-js-dialog-button-active-background-color);--journey-js-dialog-close-button-active-x-color:var(--journey-js-dialog-close-button-x-color);--journey-js-dialog-close-button-active-border-color:var(--journey-js-dialog-close-button-border-color);--journey-js-checkbox-background-color-checked:var(--journey-js-dialog-button-border-color);--journey-js-checkbox-background-color:var(--journey-js-dialog-button-background-color);--journey-js-checkbox-border-color-checked:var(--journey-js-checkbox-background-color-checked);--journey-js-checkbox-border-color:var(--journey-js-dialog-button-border-color);--journey-js-tooltip-background-color:var(--journey-js-dialog-background-color);--journey-js-tooltip-border-color:var(--journey-js-dialog-border-color);--journey-js-tooltip-text-color:var(--journey-js-color-white);--journey-js-border-control-radius:0.25rem;--journey-js-border-radius:0.5rem;--journey-js-border-size:0.5px;--journey-js-spacing:10px;--journey-js-spacing-font-size:0.9rem;--journey-js-transition:all .3s;--journey-js-animation-length:0.5s}div.journey-js-dialog{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;box-sizing:border-box;line-height:normal;font-family:var(--journey-js-default-font);position:absolute;display:none;border-radius:var(--journey-js-border-radius);background-color:var(--journey-js-dialog-background-color);color:var(--journey-js-dialog-text-color);border:var(--journey-js-border-size) solid var(--journey-js-dialog-border-color);padding:var(--journey-js-spacing);font-size:var(--journey-js-spacing-font-size);z-index:1001;width:300px;height:auto;transition:var(--journey-js-transition);transition-property:top,left}div.journey-js-dialog *{box-sizing:border-box;line-height:normal}div.journey-js-dialog *::before,div.journey-js-dialog *::after{box-sizing:border-box;line-height:normal}div.journey-js-dialog button.close{position:absolute;top:var(--journey-js-spacing);right:var(--journey-js-spacing);width:var(--journey-js-dialog-close-button-size);height:var(--journey-js-dialog-close-button-size);border-radius:.25rem;padding:0;background-color:var(--journey-js-dialog-close-button-background-color);border:var(--journey-js-border-size) solid var(--journey-js-dialog-close-button-border-color);transition:var(--journey-js-transition)}div.journey-js-dialog button.close::before,div.journey-js-dialog button.close::after{content:"";width:2px;height:100%;background:var(--journey-js-dialog-close-button-x-color);display:block;transform:rotate(45deg) translateX(0);position:absolute;left:calc(50% - 0.5px);top:0}div.journey-js-dialog button.close::after{transform:rotate(-45deg) translateX(0)}div.journey-js-dialog button.close:active{border:var(--journey-js-border-size) solid var(--journey-js-dialog-close-button-active-border-color)!important;background-color:var(--journey-js-dialog-close-button-active-background-color)!important}div.journey-js-dialog button.close:active::before,div.journey-js-dialog button.close:active::after{background:var(--journey-js-dialog-close-button-active-x-color)!important}div.journey-js-dialog button.close:hover{cursor:pointer;border:var(--journey-js-border-size) solid var(--journey-js-dialog-close-button-hover-border-color);background-color:var(--journey-js-dialog-close-button-hover-background-color)}div.journey-js-dialog button.close:hover::before,div.journey-js-dialog button.close:hover::after{background:var(--journey-js-dialog-close-button-hover-x-color)}div.journey-js-dialog div:first-of-type{padding-right:calc(var(--journey-js-dialog-close-button-size) + var(--journey-js-spacing))}div.journey-js-dialog div.title{font-size:large;font-weight:var(--journey-js-title-bold-weight);margin-bottom:var(--journey-js-spacing)}div.journey-js-dialog div.description{font-weight:var(--journey-js-text-bold-weight)}div.journey-js-dialog div.checkbox-container{margin-top:var(--journey-js-spacing);margin-bottom:var(--journey-js-spacing)}div.journey-js-dialog div.checkbox-container input{margin-right:var(--journey-js-spacing)}div.journey-js-dialog div.progress-dots{margin-top:var(--journey-js-spacing);margin-bottom:var(--journey-js-spacing);text-wrap:nowrap;text-align:center}div.journey-js-dialog div.progress-dots div.dot,div.journey-js-dialog div.progress-dots div.dot-active{margin-right:2.5px;margin-left:2.5px;display:inline-block;padding:0!important}div.journey-js-dialog div.progress-dots div.dot{border-radius:50%;height:10px;width:10px;background-color:var(--journey-js-dialog-button-background-color);border:var(--journey-js-border-size) solid var(--journey-js-dialog-button-border-color);transition:var(--journey-js-transition)}div.journey-js-dialog div.progress-dots div.dot:active{background-color:var(--journey-js-dialog-button-active-background-color)!important;border:var(--journey-js-border-size) solid var(--journey-js-dialog-button-active-border-color)!important;color:var(--journey-js-color-white)!important}div.journey-js-dialog div.progress-dots div.dot:hover{cursor:pointer;background-color:var(--journey-js-dialog-button-hover-background-color);border:var(--journey-js-border-size) solid var(--journey-js-dialog-button-hover-border-color);color:var(--journey-js-color-white)!important}div.journey-js-dialog div.progress-dots div.dot-number{height:25px!important;width:25px!important;padding:3px;display:inline-flex;justify-content:center;align-content:center;flex-direction:column;font-size:.8rem;border-radius:50%!important;color:var(--journey-js-color-gray)!important}div.journey-js-dialog div.progress-dots div.dot-active{border-radius:10px;height:10px;width:15px;background-color:var(--journey-js-dialog-button-border-color);border:var(--journey-js-border-size) solid var(--journey-js-dialog-button-border-color);color:var(--journey-js-color-white)!important}div.journey-js-dialog div.buttons{margin-top:var(--journey-js-spacing);text-align:right}div.journey-js-dialog div.buttons button.back,div.journey-js-dialog div.buttons button.next{border-radius:var(--journey-js-border-radius);background-color:var(--journey-js-dialog-button-background-color);color:var(--journey-js-dialog-button-text-color);border:var(--journey-js-border-size) solid var(--journey-js-dialog-button-border-color);min-width:100px;padding:var(--journey-js-spacing);transition:var(--journey-js-transition);outline:none;margin-left:var(--journey-js-spacing)}div.journey-js-dialog div.buttons button.back:not([disabled]):active,div.journey-js-dialog div.buttons button.next:not([disabled]):active{background-color:var(--journey-js-dialog-button-active-background-color)!important;color:var(--journey-js-dialog-button-active-text-color)!important;border:var(--journey-js-border-size) solid var(--journey-js-dialog-button-active-border-color)!important}div.journey-js-dialog div.buttons button.back:not([disabled]):hover,div.journey-js-dialog div.buttons button.next:not([disabled]):hover{cursor:pointer;background-color:var(--journey-js-dialog-button-hover-background-color);color:var(--journey-js-dialog-button-hover-text-color);border:var(--journey-js-border-size) solid var(--journey-js-dialog-button-hover-border-color)}div.journey-js-dialog div.buttons button.back:disabled,div.journey-js-dialog div.buttons button.next:disabled{background-color:var(--journey-js-dialog-button-disabled-background-color)!important;color:var(--journey-js-color-gray)}div.journey-js-dialog div.buttons button.next{font-weight:var(--journey-js-title-bold-weight)}div.journey-js-dialog label.checkbox{display:inline-block;position:relative;padding-left:25px;color:var(--journey-js-color-white)}div.journey-js-dialog label.checkbox input{display:none!important}div.journey-js-dialog label.checkbox input:checked~span.check-mark{background-color:var(--journey-js-checkbox-background-color-checked);border:var(--journey-js-border-size) solid var(--journey-js-checkbox-border-color-checked)}div.journey-js-dialog label.checkbox input:checked~span.check-mark::before{display:block}div.journey-js-dialog label.checkbox input:disabled~span.check-mark,div.journey-js-dialog label.checkbox input:disabled~span.text{opacity:.5}div.journey-js-dialog label.checkbox input:disabled~span.check-mark{border:var(--journey-js-border-size) solid var(--journey-js-color-black)!important}div.journey-js-dialog label.checkbox span.check-mark{position:absolute;top:1.5px;left:0;height:15px;width:15px;background-color:var(--journey-js-checkbox-background-color);border-radius:var(--journey-js-border-control-radius);border:var(--journey-js-border-size) solid var(--journey-js-checkbox-border-color);transition:var(--journey-js-transition)}div.journey-js-dialog label.checkbox span.check-mark::before{content:"";transform:rotate(45deg);position:absolute;display:none;left:4px;top:.5px;width:6px;height:11px;border:solid var(--journey-js-color-white);border-width:0 2.5px 2.5px 0}div.journey-js-hint{position:absolute;width:15px;height:15px;border-radius:50%;background-color:var(--journey-js-color-gray);right:-7.5px;top:-7.5px;animation:journey-js-hint-effect 2s infinite;cursor:pointer}@keyframes journey-js-hint-effect{0%{box-shadow:0 0 0 0 var(--journey-js-color-hint)}70%{box-shadow:0 0 0 10px var(--journey-js-color-hint)}100%{box-shadow:0 0 0 0 var(--journey-js-color-hint)}}div.journey-js-disabled-background{z-index:1000;position:fixed;background-color:#000;background-color:rgb(0 0 0 / .5);top:0;left:0;height:100%;width:100%}.journey-js-element-focus{z-index:1001!important}div.journey-js-tooltip{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;box-sizing:border-box;line-height:normal;font-family:var(--journey-js-default-font);animation:fade-in-animation var(--journey-js-animation-length);position:absolute;background-color:var(--journey-js-tooltip-background-color);border:var(--journey-js-border-size) solid var(--journey-js-tooltip-border-color);color:var(--journey-js-tooltip-text-color);border-radius:var(--journey-js-border-radius);z-index:2000;max-width:300px;padding:var(--journey-js-spacing);font-size:var(--journey-js-spacing-font-size);font-weight:var(--journey-js-tooltip-bold-weight);display:none}@keyframes fade-in-animation{0%{opacity:0}100%{opacity:1}}
\ No newline at end of file
+/*! Journey.js v1.5.0 | (c) Bunoon 2024 | MIT License */
+:root{--journey-js-default-font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--journey-js-text-bold-weight:100;--journey-js-title-bold-weight:700;--journey-js-tooltip-bold-weight:300;--journey-js-color-black:#3b3a3a;--journey-js-color-white:#F5F5F5;--journey-js-color-gray:#AAAAAA;--journey-js-color-hint:rgba( 170, 170, 170, 0.5 );--journey-js-dialog-background-color:#002244;--journey-js-dialog-text-color:var(--journey-js-color-white);--journey-js-dialog-border-color:#72A0C1;--journey-js-dialog-button-background-color:#002D62;--journey-js-dialog-button-border-color:#3457D5;--journey-js-dialog-button-text-color:var(--journey-js-color-white);--journey-js-dialog-button-hover-background-color:#007FFF;--journey-js-dialog-button-hover-border-color:var(--journey-js-dialog-button-border-color);--journey-js-dialog-button-hover-text-color:var(--journey-js-dialog-button-text-color);--journey-js-dialog-button-active-background-color:#00b7ff;--journey-js-dialog-button-active-border-color:var(--journey-js-dialog-button-border-color);--journey-js-dialog-button-active-text-color:var(--journey-js-dialog-button-text-color);--journey-js-dialog-button-disabled-background-color:var(--journey-js-dialog-background-color);--journey-js-dialog-close-button-background-color:var(--journey-js-dialog-button-background-color);--journey-js-dialog-close-button-border-color:var(--journey-js-dialog-button-border-color);--journey-js-dialog-close-button-size:1.1rem;--journey-js-dialog-close-button-x-color:var(--journey-js-color-white);--journey-js-dialog-close-button-hover-background-color:var(--journey-js-dialog-button-hover-background-color);--journey-js-dialog-close-button-hover-x-color:var(--journey-js-dialog-close-button-x-color);--journey-js-dialog-close-button-hover-border-color:var(--journey-js-dialog-close-button-border-color);--journey-js-dialog-close-button-active-background-color:var(--journey-js-dialog-button-active-background-color);--journey-js-dialog-close-button-active-x-color:var(--journey-js-dialog-close-button-x-color);--journey-js-dialog-close-button-active-border-color:var(--journey-js-dialog-close-button-border-color);--journey-js-checkbox-background-color-checked:var(--journey-js-dialog-button-border-color);--journey-js-checkbox-background-color:var(--journey-js-dialog-button-background-color);--journey-js-checkbox-border-color-checked:var(--journey-js-checkbox-background-color-checked);--journey-js-checkbox-border-color:var(--journey-js-dialog-button-border-color);--journey-js-tooltip-background-color:var(--journey-js-dialog-background-color);--journey-js-tooltip-border-color:var(--journey-js-dialog-border-color);--journey-js-tooltip-text-color:var(--journey-js-color-white);--journey-js-border-control-radius:0.25rem;--journey-js-border-radius:0.5rem;--journey-js-border-size:0.5px;--journey-js-spacing:10px;--journey-js-spacing-font-size:0.9rem;--journey-js-transition:all .3s;--journey-js-animation-length:0.5s}div.journey-js-dialog{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;box-sizing:border-box;line-height:normal;font-family:var(--journey-js-default-font);position:absolute;display:none;border-radius:var(--journey-js-border-radius);background-color:var(--journey-js-dialog-background-color);color:var(--journey-js-dialog-text-color);border:var(--journey-js-border-size) solid var(--journey-js-dialog-border-color);padding:var(--journey-js-spacing);font-size:var(--journey-js-spacing-font-size);z-index:1001;width:300px;height:auto;transition:var(--journey-js-transition);transition-property:top,left}div.journey-js-dialog *{box-sizing:border-box;line-height:normal}div.journey-js-dialog *::before,div.journey-js-dialog *::after{box-sizing:border-box;line-height:normal}div.journey-js-dialog div:first-of-type{padding-right:calc(var(--journey-js-dialog-close-button-size) + var(--journey-js-spacing))}div.journey-js-dialog div.title{font-size:large;font-weight:var(--journey-js-title-bold-weight);margin-bottom:var(--journey-js-spacing)}div.journey-js-dialog div.description{font-weight:var(--journey-js-text-bold-weight)}div.journey-js-dialog div.checkbox-container{margin-top:var(--journey-js-spacing);margin-bottom:var(--journey-js-spacing)}div.journey-js-dialog div.checkbox-container input{margin-right:var(--journey-js-spacing)}div.journey-js-dialog button.close{position:absolute;top:var(--journey-js-spacing);right:var(--journey-js-spacing);width:var(--journey-js-dialog-close-button-size);height:var(--journey-js-dialog-close-button-size);border-radius:.25rem;padding:0;background-color:var(--journey-js-dialog-close-button-background-color);border:var(--journey-js-border-size) solid var(--journey-js-dialog-close-button-border-color);transition:var(--journey-js-transition)}div.journey-js-dialog button.close::before,div.journey-js-dialog button.close::after{content:"";width:2px;height:100%;background:var(--journey-js-dialog-close-button-x-color);display:block;transform:rotate(45deg) translateX(0);position:absolute;left:calc(50% - 0.5px);top:0}div.journey-js-dialog button.close::after{transform:rotate(-45deg) translateX(0)}div.journey-js-dialog button.close:active{border:var(--journey-js-border-size) solid var(--journey-js-dialog-close-button-active-border-color)!important;background-color:var(--journey-js-dialog-close-button-active-background-color)!important}div.journey-js-dialog button.close:active::before,div.journey-js-dialog button.close:active::after{background:var(--journey-js-dialog-close-button-active-x-color)!important}div.journey-js-dialog button.close:hover{cursor:pointer;border:var(--journey-js-border-size) solid var(--journey-js-dialog-close-button-hover-border-color);background-color:var(--journey-js-dialog-close-button-hover-background-color)}div.journey-js-dialog button.close:hover::before,div.journey-js-dialog button.close:hover::after{background:var(--journey-js-dialog-close-button-hover-x-color)}div.journey-js-dialog div.progress-dots{margin-top:var(--journey-js-spacing);margin-bottom:var(--journey-js-spacing);text-wrap:nowrap;text-align:center}div.journey-js-dialog div.progress-dots div.dot,div.journey-js-dialog div.progress-dots div.dot-active{margin-right:2.5px;margin-left:2.5px;display:inline-block;padding:0!important}div.journey-js-dialog div.progress-dots div.dot{border-radius:50%;height:10px;width:10px;background-color:var(--journey-js-dialog-button-background-color);border:var(--journey-js-border-size) solid var(--journey-js-dialog-button-border-color);transition:var(--journey-js-transition)}div.journey-js-dialog div.progress-dots div.dot:active{background-color:var(--journey-js-dialog-button-active-background-color)!important;border:var(--journey-js-border-size) solid var(--journey-js-dialog-button-active-border-color)!important;color:var(--journey-js-color-white)!important}div.journey-js-dialog div.progress-dots div.dot:hover{cursor:pointer;background-color:var(--journey-js-dialog-button-hover-background-color);border:var(--journey-js-border-size) solid var(--journey-js-dialog-button-hover-border-color);color:var(--journey-js-color-white)!important}div.journey-js-dialog div.progress-dots div.dot-number{height:25px!important;width:25px!important;padding:3px;display:inline-flex;justify-content:center;align-content:center;flex-direction:column;font-size:.8rem;border-radius:50%!important;color:var(--journey-js-color-gray)!important}div.journey-js-dialog div.progress-dots div.dot-active{transition:var(--journey-js-transition);transition-property:width;border-radius:10px;height:10px;width:15px;background-color:var(--journey-js-dialog-button-border-color);border:var(--journey-js-border-size) solid var(--journey-js-dialog-button-border-color);color:var(--journey-js-color-white)!important}div.journey-js-dialog div.progress-bar{border-radius:var(--journey-js-border-radius);margin-top:var(--journey-js-spacing);margin-bottom:var(--journey-js-spacing);background-color:var(--journey-js-dialog-button-background-color);border:var(--journey-js-border-size) solid var(--journey-js-dialog-button-border-color);text-wrap:nowrap;overflow:hidden}div.journey-js-dialog div.progress-bar div.progress-bar-percentage{min-height:10px;background-color:var(--journey-js-dialog-button-border-color);transition:var(--journey-js-transition);transition-property:width;text-align:center;padding:0!important;margin:0!important}div.journey-js-dialog div.progress-bar div.progress-bar-percentage p.progress-bar-percentage-text{padding:calc(var(--journey-js-spacing) / 2)!important;font-size:smaller;margin:0!important;color:var(--journey-js-color-white)}div.journey-js-dialog label.checkbox{display:inline-block;position:relative;padding-left:25px;color:var(--journey-js-color-white)}div.journey-js-dialog label.checkbox input{display:none!important}div.journey-js-dialog label.checkbox input:checked~span.check-mark{background-color:var(--journey-js-checkbox-background-color-checked);border:var(--journey-js-border-size) solid var(--journey-js-checkbox-border-color-checked)}div.journey-js-dialog label.checkbox input:checked~span.check-mark::before{display:block}div.journey-js-dialog label.checkbox input:disabled~span.check-mark,div.journey-js-dialog label.checkbox input:disabled~span.text{opacity:.5}div.journey-js-dialog label.checkbox input:disabled~span.check-mark{border:var(--journey-js-border-size) solid var(--journey-js-color-black)!important}div.journey-js-dialog label.checkbox span.check-mark{position:absolute;top:1.5px;left:0;height:15px;width:15px;background-color:var(--journey-js-checkbox-background-color);border-radius:var(--journey-js-border-control-radius);border:var(--journey-js-border-size) solid var(--journey-js-checkbox-border-color);transition:var(--journey-js-transition)}div.journey-js-dialog label.checkbox span.check-mark::before{content:"";transform:rotate(45deg);position:absolute;display:none;left:4px;top:.5px;width:6px;height:11px;border:solid var(--journey-js-color-white);border-width:0 2.5px 2.5px 0}div.journey-js-dialog div.buttons{margin-top:var(--journey-js-spacing);text-align:right}div.journey-js-dialog div.buttons button.back,div.journey-js-dialog div.buttons button.next{border-radius:var(--journey-js-border-radius);background-color:var(--journey-js-dialog-button-background-color);color:var(--journey-js-dialog-button-text-color);border:var(--journey-js-border-size) solid var(--journey-js-dialog-button-border-color);min-width:100px;padding:var(--journey-js-spacing);transition:var(--journey-js-transition);outline:none;margin-left:var(--journey-js-spacing)}div.journey-js-dialog div.buttons button.back:not([disabled]):active,div.journey-js-dialog div.buttons button.next:not([disabled]):active{background-color:var(--journey-js-dialog-button-active-background-color)!important;color:var(--journey-js-dialog-button-active-text-color)!important;border:var(--journey-js-border-size) solid var(--journey-js-dialog-button-active-border-color)!important}div.journey-js-dialog div.buttons button.back:not([disabled]):hover,div.journey-js-dialog div.buttons button.next:not([disabled]):hover{cursor:pointer;background-color:var(--journey-js-dialog-button-hover-background-color);color:var(--journey-js-dialog-button-hover-text-color);border:var(--journey-js-border-size) solid var(--journey-js-dialog-button-hover-border-color)}div.journey-js-dialog div.buttons button.back:disabled,div.journey-js-dialog div.buttons button.next:disabled{background-color:var(--journey-js-dialog-button-disabled-background-color)!important;color:var(--journey-js-color-gray)}div.journey-js-dialog div.buttons button.next{font-weight:var(--journey-js-title-bold-weight)}div.journey-js-hint{position:absolute;width:15px;height:15px;border-radius:50%;background-color:var(--journey-js-color-gray);right:-7.5px;top:-7.5px;animation:journey-js-hint-effect 2s infinite;cursor:pointer}@keyframes journey-js-hint-effect{0%{box-shadow:0 0 0 0 var(--journey-js-color-hint)}70%{box-shadow:0 0 0 10px var(--journey-js-color-hint)}100%{box-shadow:0 0 0 0 var(--journey-js-color-hint)}}div.journey-js-disabled-background{z-index:1000;position:fixed;background-color:#000;background-color:rgb(0 0 0 / .5);top:0;left:0;height:100%;width:100%}.journey-js-element-focus{z-index:1001!important}div.journey-js-tooltip{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;-o-user-select:none;user-select:none;cursor:default;box-sizing:border-box;line-height:normal;font-family:var(--journey-js-default-font);animation:fade-in-animation var(--journey-js-animation-length);position:absolute;background-color:var(--journey-js-tooltip-background-color);border:var(--journey-js-border-size) solid var(--journey-js-tooltip-border-color);color:var(--journey-js-tooltip-text-color);border-radius:var(--journey-js-border-radius);z-index:2000;max-width:300px;padding:var(--journey-js-spacing);font-size:var(--journey-js-spacing-font-size);font-weight:var(--journey-js-tooltip-bold-weight);display:none}@keyframes fade-in-animation{0%{opacity:0}100%{opacity:1}}
\ No newline at end of file
diff --git a/dist/journey.min.js b/dist/journey.min.js
index 0bc62eb..6a15680 100644
--- a/dist/journey.min.js
+++ b/dist/journey.min.js
@@ -1,25 +1,26 @@
-/*! Journey.js v1.4.0 | (c) Bunoon 2024 | MIT License */
-(function(){function va(){K=n("div","journey-js-disabled-background");K.onclick=function(){d.closeDialogOnDisabledBackgroundClick&&F()}}function wa(){g=n("div","journey-js-dialog");g.style.display="none";q.body.appendChild(g);L=n("button","close");g.appendChild(L);L.onclick=function(){F()};W(L,d.closeButtonToolTipText);R=n("div","title");g.appendChild(R);S=n("div","description");g.appendChild(S);M=n("div","checkbox-container");g.appendChild(M);da=xa(M,d.doNotShowAgainText).input;G=n("div",
-"progress-dots");g.appendChild(G);H=n("div","buttons");g.appendChild(H);N=n("button","back");N.onclick=ea;H.appendChild(N);T=n("button","next");T.onclick=fa;H.appendChild(T)}function F(a){a=p(a,!0);if(x(d.closeDialogConfirmationText)&&a?confirm(d.closeDialogConfirmationText):1)a=t[m[h]],k(a)&&k(a.currentView.element)&&y(a.events.onClose,a.currentView.element),d.showDoNotShowAgain&&y(d.onDoNotShowAgainChange,da.checked),I(!1),ha(q.body,K),O(),g.style.display="none"}function ea(){0=m.length-1?d.finishButtonText:d.nextButtonText;ja(a);ka(null,a);G.innerHTML=w.empty;if(d.showProgressDots)for(b=m.length,c=0;cr.innerWidth||
-b.alignRight)a-=g.offsetWidth,a+=b.currentView.element.offsetWidth;if(c+g.offsetHeight>r.innerHeight||b.alignTop)c-=g.offsetHeight+b.currentView.element.offsetHeight;g.style.top=c+"px";g.style.left=a+"px"}else a=ma(),b=Z.max(0,(r.innerWidth-g.offsetWidth)/2+a.left),a=Z.max(0,(r.innerHeight-g.offsetHeight)/2+a.top),g.style.left=b+"px",g.style.top=a+"px"}function I(a){a=k(a)?a:!0;var b=t[m[h]];k(b)&&k(b.currentView.element)&&(b.currentView.element.className=b.currentView.element.className.replace(w.space+
-"journey-js-element-focus",w.empty),k(X)&&(b.currentView.element.style.position=X),a&&y(b.events.onLeave,b.currentView.element))}function ya(a,b){b=t[b];var c=null;a===h?c=n("div","dot-active"):(c=n("div","dot"),c.onclick=function(){I();h=a;D()});G.appendChild(c);d.showProgressDotToolTips&&(x(b.tooltip)?W(c,b.tooltip):W(c,b.title));d.showProgressDotNumbers&&(c.className+=" dot-number",c.innerHTML=(a+1).toString())}function za(){k(z)||(z=n("div","journey-js-tooltip"),z.style.display="none",q.body.appendChild(z),
-q.body.addEventListener("mousemove",function(){O()}),q.addEventListener("scroll",function(){O()}))}function W(a,b){null!==a&&(a.onmousemove=function(c){Aa(c,b)})}function Aa(a,b){na(a);O();U=setTimeout(function(){z.innerHTML=b;z.style.display="block";la(a,z)},d.tooltipDelay)}function O(){k(z)&&(k(U)&&(clearTimeout(U),U=null),"block"===z.style.display&&(z.style.display="none"))}function oa(){for(var a=d.domElementTypes,b=a.length,c=0;cr.innerWidth?c-=b.offsetWidth:c++;e+b.offsetHeight>r.innerHeight?e-=b.offsetHeight:e++;c=m.length-1};f.addDocumentSteps=function(){oa();return f};f.addStep=function(a,b){B(a)&&B(b)&&(pa(a,qa(b)),m.sort(),V());return f};f.removeStep=function(a){if(B(a)){var b=!1,c;for(c in t)if(t.hasOwnProperty(c)){var e=t[c];if(e.currentView.element===a){y(e.events.onRemoveStep,e.currentView.element);m.splice(m.indexOf(e.order),1);delete t[e.order];m.sort();b=!0;break}}b?V():ra(a,"journey-js-hint")}return f};f.clearSteps=function(){V();for(var a in t)if(t.hasOwnProperty(a)){var b=
-t[a];y(b.events.onRemoveStep,b.currentView.element)}t={};m=[];return f};f.clearHints=function(){ra(q.body,"journey-js-hint");return f};f.reverseStepOrder=function(){m.reverse();V();return f};f.setConfiguration=function(a){if(B(a)){var b=!1,c;for(c in a)a.hasOwnProperty(c)&&d.hasOwnProperty(c)&&d[c]!==a[c]&&(d[c]=a[c],b=!0);b&&ta(d)}return f};f.getVersion=function(){return"1.4.0"};(function(a,b,c,e){q=a;r=b;Z=c;sa=e;ta();q.addEventListener("DOMContentLoaded",function(){va();wa();za();oa();var l=void 0,
-E=(l=k(l)?l:!0)?q.addEventListener:q.removeEventListener;l=l?r.addEventListener:r.removeEventListener;d.shortcutKeysEnabled&&E("keydown",Da);l("resize",Ea);E=!1;if(d.browserUrlParametersEnabled){l={};var u=r.location.href.split("?");if(1=h.length-1?d.finishButtonText:
+d.nextButtonText;na(a);oa(null,a);F.innerHTML=w.empty;if(d.showProgressDots)for(b=h.length,c=0;cr.innerWidth||b.alignRight)a-=g.offsetWidth,a+=b.currentView.element.offsetWidth;if(c+g.offsetHeight>r.innerHeight||
+b.alignTop)c-=g.offsetHeight+b.currentView.element.offsetHeight;g.style.top=c+"px";g.style.left=a+"px"}else a=qa(),b=Y.max(0,(r.innerWidth-g.offsetWidth)/2+a.left),a=Y.max(0,(r.innerHeight-g.offsetHeight)/2+a.top),g.style.left=b+"px",g.style.top=a+"px"}function I(a){a=l(a)?a:!0;var b=t[h[k]];l(b)&&l(b.currentView.element)&&(b.currentView.element.className=b.currentView.element.className.replace(w.space+"journey-js-element-focus",w.empty),l(ca)&&(b.currentView.element.style.position=ca),a&&y(b.events.onLeave,
+b.currentView.element))}function Ba(a,b){b=t[b];var c=null;a===k?c=n("div","dot-active"):(c=n("div","dot"),c.onclick=function(){I();k=a;D()});F.appendChild(c);d.showProgressDotToolTips&&(x(b.tooltip)?ba(c,b.tooltip):ba(c,b.title));d.showProgressDotNumbers&&(c.className+=" dot-number",c.innerHTML=(a+1).toString())}function Ca(){l(z)||(z=n("div","journey-js-tooltip"),z.style.display="none",q.body.appendChild(z),q.body.addEventListener("mousemove",function(){P()}),q.addEventListener("scroll",function(){P()}))}
+function ba(a,b){null!==a&&(a.onmousemove=function(c){Da(c,b)})}function Da(a,b){ra(a);P();Z=setTimeout(function(){z.innerHTML=b;z.style.display="block";pa(a,z)},d.tooltipDelay)}function P(){l(z)&&(l(Z)&&(clearTimeout(Z),Z=null),"block"===z.style.display&&(z.style.display="none"))}function sa(){for(var a=d.domElementTypes,b=a.length,c=0;cr.innerWidth?c-=b.offsetWidth:c++;e+b.offsetHeight>r.innerHeight?e-=b.offsetHeight:e++;c=h.length-1};f.addDocumentSteps=function(){sa();return f};f.addStep=function(a,b){B(a)&&B(b)&&(ta(a,ua(b)),h.sort(),aa());return f};f.removeStep=function(a){if(B(a)){var b=!1,c;for(c in t)if(t.hasOwnProperty(c)){var e=t[c];if(e.currentView.element===a){y(e.events.onRemoveStep,e.currentView.element);
+h.splice(h.indexOf(e.order),1);delete t[e.order];h.sort();b=!0;break}}b?aa():ea(a,"journey-js-hint")}return f};f.clearSteps=function(){aa();for(var a in t)if(t.hasOwnProperty(a)){var b=t[a];y(b.events.onRemoveStep,b.currentView.element)}t={};h=[];return f};f.clearHints=function(){ea(q.body,"journey-js-hint");return f};f.reverseStepOrder=function(){h.reverse();aa();return f};f.setConfiguration=function(a){if(B(a)){var b=!1,c;for(c in a)a.hasOwnProperty(c)&&d.hasOwnProperty(c)&&d[c]!==a[c]&&(d[c]=a[c],
+b=!0);b&&wa(d)}return f};f.getVersion=function(){return"1.5.0"};(function(a,b,c,e){q=a;r=b;Y=c;va=e;wa();q.addEventListener("DOMContentLoaded",function(){ya();za();Ca();sa();var m=void 0,E=(m=l(m)?m:!0)?q.addEventListener:q.removeEventListener;m=m?r.addEventListener:r.removeEventListener;d.shortcutKeysEnabled&&E("keydown",Ga);m("resize",Ha);E=!1;if(d.browserUrlParametersEnabled){m={};var u=r.location.href.split("?");if(1
jJourney.js
- 1.4.0
+ 1.5.0
Journey.js
A lightweight, easy-to-use JavaScript library to create interactive, customizable, accessible guided tours across your websites or web apps!
William Troup
diff --git a/package.json b/package.json
index f94cfe5..e5ed61a 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
"name": "jjourney.js",
"title": "Journey.js",
"description": "A lightweight, easy-to-use JavaScript library to create interactive, customizable, accessible guided tours across your websites or web apps!",
- "version": "1.4.0",
+ "version": "1.5.0",
"main": "dist/journey.js",
"homepage": "https://www.william-troup.com/journey-js/",
"author": {
diff --git a/src/journey.js b/src/journey.js
index 3ba87d9..971f5d1 100644
--- a/src/journey.js
+++ b/src/journey.js
@@ -4,7 +4,7 @@
* A lightweight, easy-to-use JavaScript library to create interactive, customizable, accessible guided tours across your websites or web apps!
*
* @file journey.js
- * @version v1.4.0
+ * @version v1.5.0
* @author Bunoon
* @license MIT License
* @copyright Bunoon 2024
@@ -64,6 +64,9 @@
_element_Dialog_CheckBox_Container = null,
_element_Dialog_CheckBox_Input = null,
_element_Dialog_ProgressDots = null,
+ _element_Dialog_ProgressBar = null,
+ _element_Dialog_ProgressBar_Percentage = null,
+ _element_Dialog_ProgressBar_Percentage_Text = null,
_element_Dialog_Buttons = null,
_element_Dialog_Back_Button = null,
_element_Dialog_Next_Button = null,
@@ -135,6 +138,15 @@
_element_Dialog_ProgressDots = createElement( "div", "progress-dots" );
_element_Dialog.appendChild( _element_Dialog_ProgressDots );
+ _element_Dialog_ProgressBar = createElement( "div", "progress-bar" );
+ _element_Dialog.appendChild( _element_Dialog_ProgressBar );
+
+ _element_Dialog_ProgressBar_Percentage = createElement( "div", "progress-bar-percentage" );
+ _element_Dialog_ProgressBar.appendChild( _element_Dialog_ProgressBar_Percentage );
+
+ _element_Dialog_ProgressBar_Percentage_Text = createElement( "p", "progress-bar-percentage-text" );
+ _element_Dialog_ProgressBar_Percentage.appendChild( _element_Dialog_ProgressBar_Percentage_Text );
+
_element_Dialog_Buttons = createElement( "div", "buttons" );
_element_Dialog.appendChild( _element_Dialog_Buttons );
@@ -220,6 +232,10 @@
bindingOptions.currentView.element.className += _string.space + "journey-js-element-focus";
+ if ( _configuration.scrollToElements ) {
+ bindingOptions.currentView.element.scrollIntoView();
+ }
+
var lastPositionStyle = getStyleValueByName( bindingOptions.currentView.element, "position" );
if ( lastPositionStyle !== _string.empty && lastPositionStyle.toLowerCase() === "static" ) {
@@ -229,6 +245,8 @@
showElementBasedOnCondition( _element_Dialog_CheckBox_Container, _configuration.showDoNotShowAgain );
showElementBasedOnCondition( _element_Dialog_ProgressDots, _configuration.showProgressDots && _elements_Attributes_Keys.length > 1 );
+ showElementBasedOnCondition( _element_Dialog_ProgressBar, _configuration.showProgressBar && _elements_Attributes_Keys.length > 1 );
+ showElementBasedOnCondition( _element_Dialog_ProgressBar_Percentage_Text, _configuration.showProgressBarText );
showElementBasedOnCondition( _element_Dialog_Buttons, _configuration.showButtons );
_element_Dialog_Back_Button.innerHTML = _configuration.backButtonText;
@@ -243,6 +261,7 @@
setDialogText( bindingOptions );
setDialogPosition( null, bindingOptions );
buildProcessDots();
+ setProgressBarPosition();
fireCustomTrigger( bindingOptions.events.onEnter, bindingOptions.currentView.element );
if ( bindingOptions.sendClick ) {
@@ -373,6 +392,17 @@
}
}
+ function setProgressBarPosition() {
+ if ( _configuration.showProgressBar ) {
+ var pixelsPerStage = _element_Dialog_ProgressDots.offsetWidth / _elements_Attributes_Keys.length,
+ width = ( _elements_Attributes_Position + 1 ) * pixelsPerStage,
+ percentageComplete = _parameter_Math.ceil( ( ( _elements_Attributes_Position + 1 ) / _elements_Attributes_Keys.length ) * 100 );
+
+ _element_Dialog_ProgressBar_Percentage.style.width = width + "px";
+ _element_Dialog_ProgressBar_Percentage_Text.innerHTML = percentageComplete + "%";
+ }
+ }
+
/*
* ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -520,11 +550,16 @@
_element_Dialog_CheckBox_Container.style.display = "none";
_element_Dialog_ProgressDots.style.display = "none";
+ _element_Dialog_ProgressBar.style.display = "none";
_element_Dialog_Buttons.style.display = "none";
_configuration_ShortcutKeysEnabled = false;
setDialogText( bindingOptions );
setDialogPosition( e, bindingOptions );
+
+ if ( bindingOptions.removeHintWhenViewed ) {
+ clearElementsByClassName( bindingOptions.currentView.element, "journey-js-hint" );
+ }
};
}
@@ -616,6 +651,7 @@
options.isHint = getDefaultBoolean( options.isHint, false );
options.alignHintToClickPosition = getDefaultBoolean( options.alignHintToClickPosition, false );
options.showDisabledBackground = getDefaultBoolean( options.showDisabledBackground, true );
+ options.removeHintWhenViewed = getDefaultBoolean( options.removeHintWhenViewed, false );
options = buildAttributeOptionStrings( options );
@@ -1286,6 +1322,8 @@
_configuration.tooltipDelay = getDefaultNumber( _configuration.tooltipDelay, 750 );
_configuration.showProgressDotToolTips = getDefaultBoolean( _configuration.showProgressDotToolTips, true );
_configuration.closeDialogOnDisabledBackgroundClick = getDefaultBoolean( _configuration.closeDialogOnDisabledBackgroundClick, false );
+ _configuration.showProgressBar = getDefaultBoolean( _configuration.showProgressBar, false );
+ _configuration.scrollToElements = getDefaultBoolean( _configuration.scrollToElements, false );
buildDefaultConfigurationStrings();
buildDefaultConfigurationCustomTriggers();
@@ -1301,6 +1339,7 @@
_configuration.attributeNotValidErrorText = getDefaultString( _configuration.attributeNotValidErrorText, "The attribute '{{attribute_name}}' is not a valid object." );
_configuration.attributeNotSetErrorText = getDefaultString( _configuration.attributeNotSetErrorText, "The attribute '{{attribute_name}}' has not been set correctly." );
_configuration.closeDialogConfirmationText = getDefaultString( _configuration.closeDialogConfirmationText, null );
+ _configuration.showProgressBarText = getDefaultBoolean( _configuration.showProgressBarText, false );
}
function buildDefaultConfigurationCustomTriggers() {
@@ -1324,7 +1363,7 @@
* @returns {string} The version number.
*/
_public.getVersion = function() {
- return "1.4.0";
+ return "1.5.0";
};
diff --git a/src/journey.js.scss b/src/journey.js.scss
index 003aec5..e0c6d1e 100644
--- a/src/journey.js.scss
+++ b/src/journey.js.scss
@@ -1,5 +1,5 @@
/*
- * Journey.js Library v1.4.0
+ * Journey.js Library v1.5.0
*
* Copyright 2024 Bunoon
* Released under the MIT License
@@ -119,6 +119,40 @@ div.journey-js-dialog {
}
}
+ div {
+ &:first-of-type {
+ padding-right: calc( var(--journey-js-dialog-close-button-size) + var(--journey-js-spacing) );
+ }
+ }
+
+ div.title {
+ font-size: large;
+ font-weight: var(--journey-js-title-bold-weight);
+ margin-bottom: var(--journey-js-spacing);
+ }
+
+ div.description {
+ font-weight: var(--journey-js-text-bold-weight);
+ }
+
+ div.checkbox-container {
+ margin-top: var(--journey-js-spacing);
+ margin-bottom: var(--journey-js-spacing);
+
+ input {
+ margin-right: var(--journey-js-spacing);
+ }
+ }
+}
+
+
+/*
+ -------------------------------------------------------------------------
+ Journey.js - Dialog - Close Button
+ -------------------------------------------------------------------------
+*/
+
+div.journey-js-dialog {
button.close {
position: absolute;
top: var(--journey-js-spacing);
@@ -169,32 +203,16 @@ div.journey-js-dialog {
}
}
}
+}
- div {
- &:first-of-type {
- padding-right: calc( var(--journey-js-dialog-close-button-size) + var(--journey-js-spacing) );
- }
- }
-
- div.title {
- font-size: large;
- font-weight: var(--journey-js-title-bold-weight);
- margin-bottom: var(--journey-js-spacing);
- }
-
- div.description {
- font-weight: var(--journey-js-text-bold-weight);
- }
-
- div.checkbox-container {
- margin-top: var(--journey-js-spacing);
- margin-bottom: var(--journey-js-spacing);
- input {
- margin-right: var(--journey-js-spacing);
- }
- }
+/*
+ -------------------------------------------------------------------------
+ Journey.js - Dialog - Progress Dots
+ -------------------------------------------------------------------------
+*/
+div.journey-js-dialog {
div.progress-dots {
margin-top: var(--journey-js-spacing);
margin-bottom: var(--journey-js-spacing);
@@ -245,6 +263,8 @@ div.journey-js-dialog {
}
div.dot-active {
+ transition: var(--journey-js-transition);
+ transition-property: width;
border-radius: 10px;
height: 10px;
width: 15px;
@@ -253,45 +273,41 @@ div.journey-js-dialog {
color: var(--journey-js-color-white) !important;
}
}
+}
- div.buttons {
- margin-top: var(--journey-js-spacing);
- text-align: right;
- button.back,
- button.next {
- border-radius: var(--journey-js-border-radius);
- background-color: var(--journey-js-dialog-button-background-color);
- color: var(--journey-js-dialog-button-text-color);
- border: var(--journey-js-border-size) solid var(--journey-js-dialog-button-border-color);
- min-width: 100px;
- padding: var(--journey-js-spacing);
- transition: var(--journey-js-transition);
- outline: none;
- margin-left: var(--journey-js-spacing);
+/*
+ -------------------------------------------------------------------------
+ Journey.js - Dialog - Progress Bar
+ -------------------------------------------------------------------------
+*/
- &:not([disabled]):active {
- background-color: var(--journey-js-dialog-button-active-background-color) !important;
- color: var(--journey-js-dialog-button-active-text-color) !important;
- border: var(--journey-js-border-size) solid var(--journey-js-dialog-button-active-border-color) !important;
- }
+div.journey-js-dialog {
+ div.progress-bar {
+ border-radius: var(--journey-js-border-radius);
+ margin-top: var(--journey-js-spacing);
+ margin-bottom: var(--journey-js-spacing);
+ background-color: var(--journey-js-dialog-button-background-color);
+ border: var(--journey-js-border-size) solid var(--journey-js-dialog-button-border-color);
+ text-wrap: nowrap;
+ overflow: hidden;
- &:not([disabled]):hover {
- cursor: pointer;
- background-color: var(--journey-js-dialog-button-hover-background-color);
- color: var(--journey-js-dialog-button-hover-text-color);
- border: var(--journey-js-border-size) solid var(--journey-js-dialog-button-hover-border-color);
- }
+ div.progress-bar-percentage {
+ min-height: 10px;
+ background-color: var(--journey-js-dialog-button-border-color);
+ transition: var(--journey-js-transition);
+ transition-property: width;
+ text-align: center;
+ padding: 0 !important;
+ margin: 0 !important;
- &:disabled {
- background-color: var(--journey-js-dialog-button-disabled-background-color) !important;
- color: var(--journey-js-color-gray);
+ p.progress-bar-percentage-text {
+ padding: calc( var(--journey-js-spacing) / 2 ) !important;
+ font-size: smaller;
+ margin: 0 !important;
+ color: var(--journey-js-color-white);
}
}
-
- button.next {
- font-weight: var(--journey-js-title-bold-weight);
- }
}
}
@@ -359,6 +375,55 @@ div.journey-js-dialog {
}
+/*
+ -------------------------------------------------------------------------
+ Journey.js - Dialog - Buttons
+ -------------------------------------------------------------------------
+*/
+
+div.journey-js-dialog {
+ div.buttons {
+ margin-top: var(--journey-js-spacing);
+ text-align: right;
+
+ button.back,
+ button.next {
+ border-radius: var(--journey-js-border-radius);
+ background-color: var(--journey-js-dialog-button-background-color);
+ color: var(--journey-js-dialog-button-text-color);
+ border: var(--journey-js-border-size) solid var(--journey-js-dialog-button-border-color);
+ min-width: 100px;
+ padding: var(--journey-js-spacing);
+ transition: var(--journey-js-transition);
+ outline: none;
+ margin-left: var(--journey-js-spacing);
+
+ &:not([disabled]):active {
+ background-color: var(--journey-js-dialog-button-active-background-color) !important;
+ color: var(--journey-js-dialog-button-active-text-color) !important;
+ border: var(--journey-js-border-size) solid var(--journey-js-dialog-button-active-border-color) !important;
+ }
+
+ &:not([disabled]):hover {
+ cursor: pointer;
+ background-color: var(--journey-js-dialog-button-hover-background-color);
+ color: var(--journey-js-dialog-button-hover-text-color);
+ border: var(--journey-js-border-size) solid var(--journey-js-dialog-button-hover-border-color);
+ }
+
+ &:disabled {
+ background-color: var(--journey-js-dialog-button-disabled-background-color) !important;
+ color: var(--journey-js-color-gray);
+ }
+ }
+
+ button.next {
+ font-weight: var(--journey-js-title-bold-weight);
+ }
+ }
+}
+
+
/*
-------------------------------------------------------------------------
Journey.js - Hints
diff --git a/test/css/styles.css b/test/css/styles.css
index 21b7f66..98014c6 100644
--- a/test/css/styles.css
+++ b/test/css/styles.css
@@ -44,6 +44,6 @@ div.contents {
padding: 10px;
}
-button {
+div.contents button {
margin: 3px !important;
}
\ No newline at end of file
diff --git a/test/dist/journey.js.bootstrap.html b/test/dist/journey.js.bootstrap.html
index 7f0d427..96b4a91 100644
--- a/test/dist/journey.js.bootstrap.html
+++ b/test/dist/journey.js.bootstrap.html
@@ -28,7 +28,7 @@
Show/Hide:
Start
Show
- Hide
+ Hide
Is Open
Is Complete
@@ -86,7 +86,9 @@ Additional Data:
showProgressDotNumbers: false,
shortcutKeysEnabled: true,
showProgressDotToolTips: true,
- closeDialogOnDisabledBackgroundClick: false
+ closeDialogOnDisabledBackgroundClick: false,
+ showProgressBar: false,
+ showProgressBarText: false
} );