diff --git a/COMPONENT_INDEX.md b/COMPONENT_INDEX.md
index b8846fb5..823a4f78 100644
--- a/COMPONENT_INDEX.md
+++ b/COMPONENT_INDEX.md
@@ -3227,11 +3227,12 @@ import { ProgressIndicator } from "carbon-components-svelte";
### Props
-| Prop name | Type | Default value | Description |
-| :----------- | :------------------- | :------------ | :---------------------------------------------------------------------------------------------- |
-| currentIndex | number
| `0` | Specify the current step index. |
-| vertical | boolean
| `false` | Set to `true` to use the vertical variant. |
-| spaceEqually | boolean
| `false` | Set to `true` to specify whether the progress steps should be split equally in size in the div. |
+| Prop name | Type | Default value | Description |
+| :------------------- | :------------------- | :------------ | :---------------------------------------------------------------------------------------------- |
+| currentIndex | number
| `0` | Specify the current step index. |
+| vertical | boolean
| `false` | Set to `true` to use the vertical variant. |
+| spaceEqually | boolean
| `false` | Set to `true` to specify whether the progress steps should be split equally in size in the div. |
+| preventChangeOnClick | boolean
| `false` | Set to `true` to prevent updating `currentIndex`. |
### Slots
diff --git a/docs/src/PUBLIC_API.json b/docs/src/PUBLIC_API.json
index 5ea8703a..32f5ed65 100644
--- a/docs/src/PUBLIC_API.json
+++ b/docs/src/PUBLIC_API.json
@@ -2089,8 +2089,8 @@
[
"click",
{
- "start": 2342,
- "end": 2350,
+ "start": 2355,
+ "end": 2363,
"type": "EventHandler",
"name": "click",
"modifiers": [],
@@ -2100,8 +2100,8 @@
[
"mouseover",
{
- "start": 2486,
- "end": 2498,
+ "start": 2499,
+ "end": 2511,
"type": "EventHandler",
"name": "mouseover",
"modifiers": [],
@@ -2111,8 +2111,8 @@
[
"mouseenter",
{
- "start": 2501,
- "end": 2514,
+ "start": 2514,
+ "end": 2527,
"type": "EventHandler",
"name": "mouseenter",
"modifiers": [],
@@ -2122,8 +2122,8 @@
[
"mouseleave",
{
- "start": 2517,
- "end": 2530,
+ "start": 2530,
+ "end": 2543,
"type": "EventHandler",
"name": "mouseleave",
"modifiers": [],
@@ -2133,8 +2133,8 @@
[
"transitionend",
{
- "start": 2533,
- "end": 2549,
+ "start": 2546,
+ "end": 2562,
"type": "EventHandler",
"name": "transitionend",
"modifiers": [],
@@ -9529,6 +9529,15 @@
"type": "boolean",
"description": "Set to `true` to specify whether the progress steps should be split equally in size in the div"
}
+ ],
+ [
+ "preventChangeOnClick",
+ {
+ "kind": "let",
+ "value": "false",
+ "type": "boolean",
+ "description": "Set to `true` to prevent updating `currentIndex`"
+ }
]
],
"slots": [
@@ -9546,8 +9555,8 @@
[
"click",
{
- "start": 1278,
- "end": 1286,
+ "start": 1640,
+ "end": 1648,
"type": "EventHandler",
"name": "click",
"modifiers": [],
@@ -9557,8 +9566,8 @@
[
"mouseover",
{
- "start": 1289,
- "end": 1301,
+ "start": 1651,
+ "end": 1663,
"type": "EventHandler",
"name": "mouseover",
"modifiers": [],
@@ -9568,8 +9577,8 @@
[
"mouseenter",
{
- "start": 1304,
- "end": 1317,
+ "start": 1666,
+ "end": 1679,
"type": "EventHandler",
"name": "mouseenter",
"modifiers": [],
@@ -9579,8 +9588,8 @@
[
"mouseleave",
{
- "start": 1320,
- "end": 1333,
+ "start": 1682,
+ "end": 1695,
"type": "EventHandler",
"name": "mouseleave",
"modifiers": [],
@@ -9749,41 +9758,41 @@
{
"attributes": [
{
- "start": 2725,
- "end": 2766,
+ "start": 2759,
+ "end": 2800,
"type": "Attribute",
"name": "props",
"value": [
{
- "start": 2732,
- "end": 2765,
+ "start": 2766,
+ "end": 2799,
"type": "MustacheTag",
"expression": {
"type": "ObjectExpression",
- "start": 2733,
- "end": 2764,
+ "start": 2767,
+ "end": 2798,
"loc": {
"start": {
- "line": 113,
+ "line": 114,
"column": 18
},
"end": {
- "line": 113,
+ "line": 114,
"column": 49
}
},
"properties": [
{
"type": "Property",
- "start": 2735,
- "end": 2762,
+ "start": 2769,
+ "end": 2796,
"loc": {
"start": {
- "line": 113,
+ "line": 114,
"column": 20
},
"end": {
- "line": 113,
+ "line": 114,
"column": 47
}
},
@@ -9792,15 +9801,15 @@
"computed": false,
"key": {
"type": "Identifier",
- "start": 2735,
- "end": 2740,
+ "start": 2769,
+ "end": 2774,
"loc": {
"start": {
- "line": 113,
+ "line": 114,
"column": 20
},
"end": {
- "line": 113,
+ "line": 114,
"column": 25
}
},
@@ -9808,15 +9817,15 @@
},
"value": {
"type": "Literal",
- "start": 2742,
- "end": 2762,
+ "start": 2776,
+ "end": 2796,
"loc": {
"start": {
- "line": 113,
+ "line": 114,
"column": 27
},
"end": {
- "line": 113,
+ "line": 114,
"column": 47
}
},
@@ -9833,35 +9842,35 @@
],
"children": [
{
- "start": 2767,
- "end": 2774,
+ "start": 2801,
+ "end": 2808,
"type": "Text",
"raw": "\n ",
"data": "\n "
},
{
- "start": 2774,
- "end": 2822,
+ "start": 2808,
+ "end": 2856,
"type": "Element",
"name": "p",
"attributes": [
{
- "start": 2777,
- "end": 2810,
+ "start": 2811,
+ "end": 2844,
"type": "Class",
"name": "bx--progress-label",
"modifiers": [],
"expression": {
"type": "Literal",
- "start": 2804,
- "end": 2808,
+ "start": 2838,
+ "end": 2842,
"loc": {
"start": {
- "line": 114,
+ "line": 115,
"column": 36
},
"end": {
- "line": 114,
+ "line": 115,
"column": 40
}
},
@@ -9872,20 +9881,20 @@
],
"children": [
{
- "start": 2811,
- "end": 2818,
+ "start": 2845,
+ "end": 2852,
"type": "MustacheTag",
"expression": {
"type": "Identifier",
- "start": 2812,
- "end": 2817,
+ "start": 2846,
+ "end": 2851,
"loc": {
"start": {
- "line": 114,
+ "line": 115,
"column": 44
},
"end": {
- "line": 114,
+ "line": 115,
"column": 49
}
},
@@ -9895,8 +9904,8 @@
]
},
{
- "start": 2822,
- "end": 2827,
+ "start": 2856,
+ "end": 2861,
"type": "Text",
"raw": "\n ",
"data": "\n "
@@ -9922,8 +9931,8 @@
[
"mouseover",
{
- "start": 1981,
- "end": 1993,
+ "start": 2015,
+ "end": 2027,
"type": "EventHandler",
"name": "mouseover",
"modifiers": [],
@@ -9933,8 +9942,8 @@
[
"mouseenter",
{
- "start": 1998,
- "end": 2011,
+ "start": 2032,
+ "end": 2045,
"type": "EventHandler",
"name": "mouseenter",
"modifiers": [],
@@ -9944,8 +9953,8 @@
[
"mouseleave",
{
- "start": 2016,
- "end": 2029,
+ "start": 2050,
+ "end": 2063,
"type": "EventHandler",
"name": "mouseleave",
"modifiers": [],
@@ -9955,8 +9964,8 @@
[
"keydown",
{
- "start": 2034,
- "end": 2044,
+ "start": 2068,
+ "end": 2078,
"type": "EventHandler",
"name": "keydown",
"modifiers": [],
diff --git a/docs/src/pages/components/ProgressIndicator.svx b/docs/src/pages/components/ProgressIndicator.svx
index adf0fac8..909af2be 100644
--- a/docs/src/pages/components/ProgressIndicator.svx
+++ b/docs/src/pages/components/ProgressIndicator.svx
@@ -9,17 +9,46 @@ components: ["ProgressIndicator", "ProgressStep", "ProgressIndicatorSkeleton"]
### Default (horizontal)
-
-
+
+
+
+
+
+### Prevent change on click
+
+By default, clicking any step that is complete will update the current step index.
+
+Set `preventChangeOnClick` to `true` to prevent this behavior.
+
+
+
+
+
diff --git a/src/ProgressIndicator/ProgressIndicator.svelte b/src/ProgressIndicator/ProgressIndicator.svelte
index e0b7b0e6..49377558 100644
--- a/src/ProgressIndicator/ProgressIndicator.svelte
+++ b/src/ProgressIndicator/ProgressIndicator.svelte
@@ -17,6 +17,12 @@
*/
export let spaceEqually = false;
+ /**
+ * Set to `true` to prevent updating `currentIndex`
+ * @type {boolean} [preventChangeOnClick=false]
+ */
+ export let preventChangeOnClick = false;
+
import { createEventDispatcher, setContext } from "svelte";
import { writable, derived } from "svelte/store";
@@ -41,6 +47,14 @@
]);
},
change: (index) => {
+ if (preventChangeOnClick) return;
+ currentIndex = index;
+ steps.update((_) =>
+ [..._].map((step, i) => ({
+ ...step,
+ current: i === index,
+ }))
+ );
dispatch("change", index);
},
});
diff --git a/src/ProgressIndicator/ProgressStep.svelte b/src/ProgressIndicator/ProgressStep.svelte
index 66b09d81..3ed26843 100644
--- a/src/ProgressIndicator/ProgressStep.svelte
+++ b/src/ProgressIndicator/ProgressStep.svelte
@@ -80,6 +80,7 @@
class:bx--progress-step-button--unclickable="{current}"
on:click
on:click="{() => {
+ if (!step.complete) return;
change(step.index);
}}"
on:mouseover
diff --git a/types/index.d.ts b/types/index.d.ts
index 3a0a7008..1cc622e0 100644
--- a/types/index.d.ts
+++ b/types/index.d.ts
@@ -3225,6 +3225,12 @@ export class ProgressIndicator extends CarbonSvelteComponent {
* @default false
*/
spaceEqually?: boolean;
+
+ /**
+ * Set to `true` to prevent updating `currentIndex`
+ * @default false
+ */
+ preventChangeOnClick?: boolean;
};
$$slot_def: { default: {} };