@salt-ds/lab 1.0.0-alpha.61 → 1.0.0-alpha.62

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/CHANGELOG.md +75 -0
  2. package/css/salt-lab.css +185 -1
  3. package/dist-cjs/date-picker/DatePickerRangeInput.js +1 -0
  4. package/dist-cjs/date-picker/DatePickerRangeInput.js.map +1 -1
  5. package/dist-cjs/date-picker/DatePickerSingleInput.js +1 -0
  6. package/dist-cjs/date-picker/DatePickerSingleInput.js.map +1 -1
  7. package/dist-cjs/index.js +6 -0
  8. package/dist-cjs/index.js.map +1 -1
  9. package/dist-cjs/splitter/SplitHandle.css.js +6 -0
  10. package/dist-cjs/splitter/SplitHandle.css.js.map +1 -0
  11. package/dist-cjs/splitter/SplitHandle.js +60 -0
  12. package/dist-cjs/splitter/SplitHandle.js.map +1 -0
  13. package/dist-cjs/splitter/SplitPanel.css.js +6 -0
  14. package/dist-cjs/splitter/SplitPanel.css.js.map +1 -0
  15. package/dist-cjs/splitter/SplitPanel.js +37 -0
  16. package/dist-cjs/splitter/SplitPanel.js.map +1 -0
  17. package/dist-cjs/splitter/Splitter.js +31 -0
  18. package/dist-cjs/splitter/Splitter.js.map +1 -0
  19. package/dist-cjs/splitter/utils.js +18 -0
  20. package/dist-cjs/splitter/utils.js.map +1 -0
  21. package/dist-cjs/stepped-tracker/stepReducer.js +127 -81
  22. package/dist-cjs/stepped-tracker/stepReducer.js.map +1 -1
  23. package/dist-cjs/stepped-tracker/useStepReducer.js +6 -4
  24. package/dist-cjs/stepped-tracker/useStepReducer.js.map +1 -1
  25. package/dist-cjs/stepped-tracker/utils.js +44 -9
  26. package/dist-cjs/stepped-tracker/utils.js.map +1 -1
  27. package/dist-cjs/tabs-next/TabListNext.css.js +1 -1
  28. package/dist-cjs/tabs-next/TabListNext.js +10 -16
  29. package/dist-cjs/tabs-next/TabListNext.js.map +1 -1
  30. package/dist-cjs/tabs-next/TabOverflowList.js +1 -1
  31. package/dist-cjs/tabs-next/TabOverflowList.js.map +1 -1
  32. package/dist-cjs/tabs-next/TabsNext.js +4 -51
  33. package/dist-cjs/tabs-next/TabsNext.js.map +1 -1
  34. package/dist-cjs/tabs-next/TabsNextContext.js +1 -1
  35. package/dist-cjs/tabs-next/TabsNextContext.js.map +1 -1
  36. package/dist-cjs/tabs-next/hooks/useCollection.js.map +1 -1
  37. package/dist-cjs/tabs-next/hooks/useOverflow.js +48 -5
  38. package/dist-cjs/tabs-next/hooks/useOverflow.js.map +1 -1
  39. package/dist-cjs/tabs-next/hooks/useRestoreActiveTab.js +93 -0
  40. package/dist-cjs/tabs-next/hooks/useRestoreActiveTab.js.map +1 -0
  41. package/dist-es/date-picker/DatePickerRangeInput.js +1 -0
  42. package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -1
  43. package/dist-es/date-picker/DatePickerSingleInput.js +1 -0
  44. package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -1
  45. package/dist-es/index.js +3 -0
  46. package/dist-es/index.js.map +1 -1
  47. package/dist-es/splitter/SplitHandle.css.js +4 -0
  48. package/dist-es/splitter/SplitHandle.css.js.map +1 -0
  49. package/dist-es/splitter/SplitHandle.js +58 -0
  50. package/dist-es/splitter/SplitHandle.js.map +1 -0
  51. package/dist-es/splitter/SplitPanel.css.js +4 -0
  52. package/dist-es/splitter/SplitPanel.css.js.map +1 -0
  53. package/dist-es/splitter/SplitPanel.js +35 -0
  54. package/dist-es/splitter/SplitPanel.js.map +1 -0
  55. package/dist-es/splitter/Splitter.js +27 -0
  56. package/dist-es/splitter/Splitter.js.map +1 -0
  57. package/dist-es/splitter/utils.js +15 -0
  58. package/dist-es/splitter/utils.js.map +1 -0
  59. package/dist-es/stepped-tracker/stepReducer.js +128 -82
  60. package/dist-es/stepped-tracker/stepReducer.js.map +1 -1
  61. package/dist-es/stepped-tracker/useStepReducer.js +7 -5
  62. package/dist-es/stepped-tracker/useStepReducer.js.map +1 -1
  63. package/dist-es/stepped-tracker/utils.js +43 -9
  64. package/dist-es/stepped-tracker/utils.js.map +1 -1
  65. package/dist-es/tabs-next/TabListNext.css.js +1 -1
  66. package/dist-es/tabs-next/TabListNext.js +11 -17
  67. package/dist-es/tabs-next/TabListNext.js.map +1 -1
  68. package/dist-es/tabs-next/TabOverflowList.js +1 -1
  69. package/dist-es/tabs-next/TabOverflowList.js.map +1 -1
  70. package/dist-es/tabs-next/TabsNext.js +5 -52
  71. package/dist-es/tabs-next/TabsNext.js.map +1 -1
  72. package/dist-es/tabs-next/TabsNextContext.js +1 -1
  73. package/dist-es/tabs-next/TabsNextContext.js.map +1 -1
  74. package/dist-es/tabs-next/hooks/useCollection.js.map +1 -1
  75. package/dist-es/tabs-next/hooks/useOverflow.js +49 -6
  76. package/dist-es/tabs-next/hooks/useOverflow.js.map +1 -1
  77. package/dist-es/tabs-next/hooks/useRestoreActiveTab.js +91 -0
  78. package/dist-es/tabs-next/hooks/useRestoreActiveTab.js.map +1 -0
  79. package/dist-types/index.d.ts +1 -0
  80. package/dist-types/splitter/SplitHandle.d.ts +21 -0
  81. package/dist-types/splitter/SplitPanel.d.ts +10 -0
  82. package/dist-types/splitter/Splitter.d.ts +22 -0
  83. package/dist-types/splitter/index.d.ts +4 -0
  84. package/dist-types/splitter/utils.d.ts +4 -0
  85. package/dist-types/stepped-tracker/Step.types.d.ts +2 -4
  86. package/dist-types/stepped-tracker/stepReducer.types.d.ts +6 -4
  87. package/dist-types/stepped-tracker/utils.d.ts +6 -3
  88. package/dist-types/tabs/drag-drop/drag-utils.d.ts +6 -6
  89. package/dist-types/tabs-next/TabsNextContext.d.ts +1 -1
  90. package/dist-types/tabs-next/hooks/useOverflow.d.ts +1 -1
  91. package/dist-types/tabs-next/hooks/useRestoreActiveTab.d.ts +10 -0
  92. package/package.json +4 -3
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ function computeAccent(appearance, orientation) {
4
+ if (appearance === "transparent") {
5
+ return "none";
6
+ }
7
+ if (orientation === "horizontal") {
8
+ return "top-bottom";
9
+ }
10
+ return "left-right";
11
+ }
12
+ function computeVariant(appearance) {
13
+ return appearance === "bordered" ? "primary" : "transparent";
14
+ }
15
+
16
+ exports.computeAccent = computeAccent;
17
+ exports.computeVariant = computeVariant;
18
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../src/splitter/utils.ts"],"sourcesContent":["import type { SplitHandleBorder } from \"./SplitHandle\";\nimport type { SplitterAppearance, SplitterOrientation } from \"./Splitter\";\n\nexport function computeAccent(\n appearance: SplitterAppearance,\n orientation: SplitterOrientation,\n): SplitHandleBorder {\n if (appearance === \"transparent\") {\n return \"none\";\n }\n\n if (orientation === \"horizontal\") {\n return \"top-bottom\";\n }\n\n return \"left-right\";\n}\n\nexport function computeVariant(\n appearance: SplitterAppearance,\n): \"primary\" | \"transparent\" {\n return appearance === \"bordered\" ? \"primary\" : \"transparent\";\n}\n"],"names":[],"mappings":";;AAGgB,SAAA,aAAA,CACd,YACA,WACmB,EAAA;AACnB,EAAA,IAAI,eAAe,aAAe,EAAA;AAChC,IAAO,OAAA,MAAA;AAAA;AAGT,EAAA,IAAI,gBAAgB,YAAc,EAAA;AAChC,IAAO,OAAA,YAAA;AAAA;AAGT,EAAO,OAAA,YAAA;AACT;AAEO,SAAS,eACd,UAC2B,EAAA;AAC3B,EAAO,OAAA,UAAA,KAAe,aAAa,SAAY,GAAA,aAAA;AACjD;;;;;"}
@@ -4,105 +4,151 @@ var utils = require('./utils.js');
4
4
 
5
5
  function stepReducer(state, action) {
6
6
  var _a, _b;
7
- if (action.type === "next") {
8
- if (((_a = state.activeStep) == null ? void 0 : _a.status) === "error") {
9
- return state;
10
- }
11
- const steps = utils.resetSteps(state.steps);
12
- const flatSteps = utils.flattenSteps(steps);
13
- if (state.nextStep) {
14
- const activeStepIndex2 = state.activeStepIndex + 1;
15
- const activeStep2 = flatSteps[activeStepIndex2];
16
- const previousStep2 = flatSteps[activeStepIndex2 - 1] || null;
17
- const nextStep2 = flatSteps[activeStepIndex2 + 1] || null;
18
- if (activeStep2) {
19
- activeStep2.stage = "active";
7
+ switch (action.type) {
8
+ case "next": {
9
+ if (((_a = state.activeStep) == null ? void 0 : _a.status) === "error") {
10
+ return state;
11
+ }
12
+ const activeStepIndex = state.activeStepIndex + 1;
13
+ const lastStepIndex = state.flatSteps.length - 1;
14
+ if (activeStepIndex > lastStepIndex) {
15
+ const steps2 = utils.assignStepsStage(state.steps, "completed");
16
+ const flatSteps2 = utils.flattenSteps(steps2);
17
+ return {
18
+ steps: steps2,
19
+ flatSteps: flatSteps2,
20
+ activeStepIndex: lastStepIndex + 1,
21
+ activeStep: null,
22
+ previousStep: flatSteps2[lastStepIndex],
23
+ nextStep: null,
24
+ started: true,
25
+ ended: true
26
+ };
20
27
  }
28
+ const activeStepId = state.flatSteps[activeStepIndex].id;
29
+ const steps = utils.autoStageSteps(utils.resetSteps(state.steps), { activeStepId });
30
+ const flatSteps = utils.flattenSteps(steps);
21
31
  return {
22
- steps: utils.autoStageSteps(steps),
32
+ steps,
23
33
  flatSteps,
24
- activeStepIndex: activeStepIndex2,
25
- activeStep: activeStep2,
26
- previousStep: previousStep2,
27
- nextStep: nextStep2,
34
+ activeStepIndex,
35
+ activeStep: flatSteps[activeStepIndex],
36
+ previousStep: flatSteps[activeStepIndex - 1],
37
+ nextStep: flatSteps[activeStepIndex + 1] ?? null,
28
38
  started: true,
29
39
  ended: false
30
40
  };
31
41
  }
32
- const activeStepIndex = flatSteps.length;
33
- const previousStep = flatSteps.at(-1);
34
- const activeStep = null;
35
- const nextStep = null;
36
- return {
37
- steps: utils.assignSteps(steps, "completed"),
38
- flatSteps,
39
- activeStepIndex,
40
- activeStep,
41
- previousStep,
42
- nextStep,
43
- started: true,
44
- ended: true
45
- };
46
- }
47
- if (action.type === "previous") {
48
- if (((_b = state.activeStep) == null ? void 0 : _b.status) === "error") {
49
- return state;
50
- }
51
- const steps = utils.resetSteps(state.steps);
52
- const flatSteps = utils.flattenSteps(steps);
53
- if (state.previousStep) {
54
- const activeStepIndex2 = state.activeStepIndex - 1;
55
- const activeStep2 = flatSteps[activeStepIndex2];
56
- const previousStep2 = flatSteps[activeStepIndex2 - 1] || null;
57
- const nextStep2 = flatSteps[activeStepIndex2 + 1] || null;
58
- if (activeStep2) {
59
- activeStep2.stage = "active";
42
+ case "previous": {
43
+ if (((_b = state.activeStep) == null ? void 0 : _b.status) === "error") {
44
+ return state;
60
45
  }
46
+ const activeStepIndex = state.activeStepIndex - 1;
47
+ if (activeStepIndex < 0) {
48
+ const steps2 = utils.assignStepsStage(state.steps, "pending");
49
+ const flatSteps2 = utils.flattenSteps(steps2);
50
+ return {
51
+ steps: steps2,
52
+ flatSteps: flatSteps2,
53
+ activeStepIndex: -1,
54
+ activeStep: null,
55
+ previousStep: null,
56
+ nextStep: flatSteps2[0],
57
+ started: false,
58
+ ended: false
59
+ };
60
+ }
61
+ const activeStepId = state.flatSteps[activeStepIndex].id;
62
+ const steps = utils.autoStageSteps(utils.resetSteps(state.steps), { activeStepId });
63
+ const flatSteps = utils.flattenSteps(steps);
61
64
  return {
62
- steps: utils.autoStageSteps(steps),
65
+ steps,
63
66
  flatSteps,
64
- activeStepIndex: activeStepIndex2,
65
- activeStep: activeStep2,
66
- previousStep: previousStep2,
67
- nextStep: nextStep2,
67
+ activeStepIndex,
68
+ activeStep: flatSteps[activeStepIndex],
69
+ previousStep: flatSteps[activeStepIndex - 1] ?? null,
70
+ nextStep: flatSteps[activeStepIndex + 1],
68
71
  started: true,
69
72
  ended: false
70
73
  };
71
74
  }
72
- const activeStepIndex = -1;
73
- const activeStep = null;
74
- const previousStep = null;
75
- const nextStep = flatSteps.at(0);
76
- return {
77
- steps: utils.assignSteps(steps, "pending"),
78
- flatSteps,
79
- activeStepIndex,
80
- activeStep,
81
- previousStep,
82
- nextStep,
83
- ended: false,
84
- started: false
85
- };
86
- }
87
- if (action.type === "error") {
88
- if (state.activeStep) {
89
- state.activeStep.status = "error";
90
- return { ...state };
75
+ case "status/error": {
76
+ const { activeStep, activeStepIndex } = state;
77
+ if (!activeStep) {
78
+ return state;
79
+ }
80
+ const activeStepId = activeStep.id;
81
+ const steps = utils.assignStepStatus(state.steps, activeStepId, "error");
82
+ const flatSteps = utils.flattenSteps(steps);
83
+ return {
84
+ ...state,
85
+ steps,
86
+ flatSteps,
87
+ activeStepIndex,
88
+ activeStep: flatSteps[activeStepIndex],
89
+ previousStep: flatSteps[activeStepIndex - 1] ?? null,
90
+ nextStep: flatSteps[activeStepIndex + 1]
91
+ };
91
92
  }
92
- }
93
- if (action.type === "warning") {
94
- if (state.activeStep) {
95
- state.activeStep.status = "warning";
96
- return { ...state };
93
+ case "status/warning": {
94
+ const { activeStep, activeStepIndex } = state;
95
+ if (!activeStep) {
96
+ return state;
97
+ }
98
+ const activeStepId = activeStep.id;
99
+ const steps = utils.assignStepStatus(state.steps, activeStepId, "warning");
100
+ const flatSteps = utils.flattenSteps(steps);
101
+ return {
102
+ ...state,
103
+ steps,
104
+ flatSteps,
105
+ activeStepIndex,
106
+ activeStep: flatSteps[activeStepIndex],
107
+ previousStep: flatSteps[activeStepIndex - 1] ?? null,
108
+ nextStep: flatSteps[activeStepIndex + 1]
109
+ };
97
110
  }
98
- }
99
- if (action.type === "clear") {
100
- if (state.activeStep) {
101
- state.activeStep.status = void 0;
102
- return { ...state };
111
+ case "status/clear": {
112
+ const { activeStep, activeStepIndex } = state;
113
+ if (!activeStep) {
114
+ return state;
115
+ }
116
+ const activeStepId = activeStep.id;
117
+ const steps = utils.assignStepStatus(state.steps, activeStepId, void 0);
118
+ const flatSteps = utils.flattenSteps(steps);
119
+ return {
120
+ ...state,
121
+ steps,
122
+ flatSteps,
123
+ activeStepIndex,
124
+ activeStep: flatSteps[activeStepIndex],
125
+ previousStep: flatSteps[activeStepIndex - 1] ?? null,
126
+ nextStep: flatSteps[activeStepIndex + 1]
127
+ };
128
+ }
129
+ case "reset": {
130
+ const firstStepId = state.flatSteps[0].id;
131
+ const steps = utils.autoStageSteps(
132
+ utils.resetSteps(state.steps, { resetStatus: true }),
133
+ { activeStepId: firstStepId }
134
+ );
135
+ const flatSteps = utils.flattenSteps(steps);
136
+ return {
137
+ steps,
138
+ flatSteps,
139
+ activeStepIndex: 0,
140
+ activeStep: flatSteps[0],
141
+ previousStep: null,
142
+ nextStep: flatSteps[1],
143
+ started: true,
144
+ ended: false
145
+ };
146
+ }
147
+ default: {
148
+ const exhaustiveCheck = action;
149
+ throw new Error(`Unhandled action: ${exhaustiveCheck}`);
103
150
  }
104
151
  }
105
- return state;
106
152
  }
107
153
 
108
154
  module.exports = stepReducer;
@@ -1 +1 @@
1
- {"version":3,"file":"stepReducer.js","sources":["../src/stepped-tracker/stepReducer.ts"],"sourcesContent":["import type { StepReducerAction, StepReducerState } from \"./stepReducer.types\";\nimport { assignSteps, autoStageSteps, flattenSteps, resetSteps } from \"./utils\";\n\nexport default function stepReducer(\n state: StepReducerState,\n action: StepReducerAction,\n) {\n if (action.type === \"next\") {\n if (state.activeStep?.status === \"error\") {\n return state;\n }\n\n const steps = resetSteps(state.steps);\n const flatSteps = flattenSteps(steps);\n\n if (state.nextStep) {\n const activeStepIndex = state.activeStepIndex + 1;\n const activeStep = flatSteps[activeStepIndex];\n const previousStep = flatSteps[activeStepIndex - 1] || null;\n const nextStep = flatSteps[activeStepIndex + 1] || null;\n\n if (activeStep) {\n activeStep.stage = \"active\";\n }\n\n return {\n steps: autoStageSteps(steps),\n flatSteps,\n activeStepIndex,\n activeStep,\n previousStep,\n nextStep,\n started: true,\n ended: false,\n };\n }\n\n const activeStepIndex = flatSteps.length;\n const previousStep = flatSteps.at(-1);\n const activeStep = null;\n const nextStep = null;\n\n return {\n steps: assignSteps(steps, \"completed\"),\n flatSteps,\n activeStepIndex,\n activeStep,\n previousStep,\n nextStep,\n started: true,\n ended: true,\n } as StepReducerState;\n }\n\n if (action.type === \"previous\") {\n if (state.activeStep?.status === \"error\") {\n return state;\n }\n\n const steps = resetSteps(state.steps);\n const flatSteps = flattenSteps(steps);\n\n if (state.previousStep) {\n const activeStepIndex = state.activeStepIndex - 1;\n const activeStep = flatSteps[activeStepIndex];\n const previousStep = flatSteps[activeStepIndex - 1] || null;\n const nextStep = flatSteps[activeStepIndex + 1] || null;\n\n if (activeStep) {\n activeStep.stage = \"active\";\n }\n\n return {\n steps: autoStageSteps(steps),\n flatSteps,\n activeStepIndex,\n activeStep,\n previousStep,\n nextStep,\n started: true,\n ended: false,\n } as StepReducerState;\n }\n\n const activeStepIndex = -1;\n const activeStep = null;\n const previousStep = null;\n const nextStep = flatSteps.at(0);\n\n return {\n steps: assignSteps(steps, \"pending\"),\n flatSteps,\n activeStepIndex,\n activeStep,\n previousStep,\n nextStep,\n ended: false,\n started: false,\n } as StepReducerState;\n }\n\n if (action.type === \"error\") {\n if (state.activeStep) {\n state.activeStep.status = \"error\";\n return { ...state };\n }\n }\n\n if (action.type === \"warning\") {\n if (state.activeStep) {\n state.activeStep.status = \"warning\";\n return { ...state };\n }\n }\n\n if (action.type === \"clear\") {\n if (state.activeStep) {\n state.activeStep.status = undefined;\n return { ...state };\n }\n }\n\n return state;\n}\n"],"names":["resetSteps","flattenSteps","activeStepIndex","activeStep","previousStep","nextStep","autoStageSteps","assignSteps"],"mappings":"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"}
1
+ {"version":3,"file":"stepReducer.js","sources":["../src/stepped-tracker/stepReducer.ts"],"sourcesContent":["import type { StepReducerAction, StepReducerState } from \"./stepReducer.types\";\nimport {\n assignStepStatus,\n assignStepsStage,\n autoStageSteps,\n flattenSteps,\n resetSteps,\n} from \"./utils\";\n\nexport default function stepReducer(\n state: StepReducerState,\n action: StepReducerAction,\n): StepReducerState {\n switch (action.type) {\n case \"next\": {\n if (state.activeStep?.status === \"error\") {\n return state;\n }\n\n const activeStepIndex = state.activeStepIndex + 1;\n const lastStepIndex = state.flatSteps.length - 1;\n\n if (activeStepIndex > lastStepIndex) {\n const steps = assignStepsStage(state.steps, \"completed\");\n const flatSteps = flattenSteps(steps);\n\n return {\n steps,\n flatSteps,\n activeStepIndex: lastStepIndex + 1,\n activeStep: null,\n previousStep: flatSteps[lastStepIndex],\n nextStep: null,\n started: true,\n ended: true,\n };\n }\n\n const activeStepId = state.flatSteps[activeStepIndex].id;\n const steps = autoStageSteps(resetSteps(state.steps), { activeStepId });\n const flatSteps = flattenSteps(steps);\n\n return {\n steps,\n flatSteps,\n activeStepIndex,\n activeStep: flatSteps[activeStepIndex],\n previousStep: flatSteps[activeStepIndex - 1],\n nextStep: flatSteps[activeStepIndex + 1] ?? null,\n started: true,\n ended: false,\n };\n }\n\n case \"previous\": {\n if (state.activeStep?.status === \"error\") {\n return state;\n }\n\n const activeStepIndex = state.activeStepIndex - 1;\n\n if (activeStepIndex < 0) {\n const steps = assignStepsStage(state.steps, \"pending\");\n const flatSteps = flattenSteps(steps);\n\n return {\n steps,\n flatSteps,\n activeStepIndex: -1,\n activeStep: null,\n previousStep: null,\n nextStep: flatSteps[0],\n started: false,\n ended: false,\n };\n }\n\n const activeStepId = state.flatSteps[activeStepIndex].id;\n const steps = autoStageSteps(resetSteps(state.steps), { activeStepId });\n const flatSteps = flattenSteps(steps);\n\n return {\n steps,\n flatSteps,\n activeStepIndex,\n activeStep: flatSteps[activeStepIndex],\n previousStep: flatSteps[activeStepIndex - 1] ?? null,\n nextStep: flatSteps[activeStepIndex + 1],\n started: true,\n ended: false,\n };\n }\n\n case \"status/error\": {\n const { activeStep, activeStepIndex } = state;\n\n if (!activeStep) {\n return state;\n }\n\n const activeStepId = activeStep.id;\n\n const steps = assignStepStatus(state.steps, activeStepId, \"error\");\n const flatSteps = flattenSteps(steps);\n\n return {\n ...state,\n steps,\n flatSteps,\n activeStepIndex,\n activeStep: flatSteps[activeStepIndex],\n previousStep: flatSteps[activeStepIndex - 1] ?? null,\n nextStep: flatSteps[activeStepIndex + 1],\n };\n }\n\n case \"status/warning\": {\n const { activeStep, activeStepIndex } = state;\n\n if (!activeStep) {\n return state;\n }\n\n const activeStepId = activeStep.id;\n\n const steps = assignStepStatus(state.steps, activeStepId, \"warning\");\n const flatSteps = flattenSteps(steps);\n\n return {\n ...state,\n steps,\n flatSteps,\n activeStepIndex,\n activeStep: flatSteps[activeStepIndex],\n previousStep: flatSteps[activeStepIndex - 1] ?? null,\n nextStep: flatSteps[activeStepIndex + 1],\n };\n }\n\n case \"status/clear\": {\n const { activeStep, activeStepIndex } = state;\n\n if (!activeStep) {\n return state;\n }\n\n const activeStepId = activeStep.id;\n\n const steps = assignStepStatus(state.steps, activeStepId, undefined);\n const flatSteps = flattenSteps(steps);\n\n return {\n ...state,\n steps,\n flatSteps,\n activeStepIndex,\n activeStep: flatSteps[activeStepIndex],\n previousStep: flatSteps[activeStepIndex - 1] ?? null,\n nextStep: flatSteps[activeStepIndex + 1],\n };\n }\n\n case \"reset\": {\n const firstStepId = state.flatSteps[0].id;\n\n const steps = autoStageSteps(\n resetSteps(state.steps, { resetStatus: true }),\n { activeStepId: firstStepId },\n );\n const flatSteps = flattenSteps(steps);\n\n return {\n steps,\n flatSteps,\n activeStepIndex: 0,\n activeStep: flatSteps[0],\n previousStep: null,\n nextStep: flatSteps[1],\n started: true,\n ended: false,\n };\n }\n\n default: {\n const exhaustiveCheck: never = action;\n throw new Error(`Unhandled action: ${exhaustiveCheck}`);\n }\n }\n}\n"],"names":["steps","assignStepsStage","flatSteps","flattenSteps","autoStageSteps","resetSteps","assignStepStatus"],"mappings":"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"}
@@ -5,11 +5,13 @@ var stepReducer = require('./stepReducer.js');
5
5
  var utils = require('./utils.js');
6
6
 
7
7
  function useStepReducer(initialSteps, options) {
8
- const state = react.useMemo(
9
- () => utils.initStepReducerState(initialSteps, options),
10
- [initialSteps, options]
8
+ const initializer = react.useCallback(
9
+ (initialSteps2) => {
10
+ return utils.initStepReducerState(initialSteps2, options);
11
+ },
12
+ [options]
11
13
  );
12
- return react.useReducer(stepReducer, state);
14
+ return react.useReducer(stepReducer, initialSteps, initializer);
13
15
  }
14
16
 
15
17
  exports.useStepReducer = useStepReducer;
@@ -1 +1 @@
1
- {"version":3,"file":"useStepReducer.js","sources":["../src/stepped-tracker/useStepReducer.ts"],"sourcesContent":["import { useMemo, useReducer } from \"react\";\n\nimport stepReducer from \"./stepReducer\";\nimport { initStepReducerState } from \"./utils\";\n\nimport type { StepRecord } from \"./Step.types\";\nimport type { StepReducerOptions } from \"./stepReducer.types\";\n\nexport function useStepReducer(\n initialSteps: StepRecord[],\n options?: StepReducerOptions,\n) {\n const state = useMemo(\n () => initStepReducerState(initialSteps, options),\n [initialSteps, options],\n );\n\n return useReducer(stepReducer, state);\n}\n"],"names":["useMemo","initStepReducerState","useReducer"],"mappings":";;;;;;AAQgB,SAAA,cAAA,CACd,cACA,OACA,EAAA;AACA,EAAA,MAAM,KAAQ,GAAAA,aAAA;AAAA,IACZ,MAAMC,0BAAqB,CAAA,YAAA,EAAc,OAAO,CAAA;AAAA,IAChD,CAAC,cAAc,OAAO;AAAA,GACxB;AAEA,EAAO,OAAAC,gBAAA,CAAW,aAAa,KAAK,CAAA;AACtC;;;;"}
1
+ {"version":3,"file":"useStepReducer.js","sources":["../src/stepped-tracker/useStepReducer.ts"],"sourcesContent":["import { useCallback, useReducer } from \"react\";\n\nimport stepReducer from \"./stepReducer\";\n\nimport type { StepRecord } from \"./Step.types\";\nimport type { StepReducerOptions } from \"./stepReducer.types\";\nimport { initStepReducerState } from \"./utils\";\n\nexport function useStepReducer(\n initialSteps: StepRecord[],\n options?: StepReducerOptions,\n) {\n const initializer = useCallback(\n (initialSteps: StepRecord[]) => {\n return initStepReducerState(initialSteps, options);\n },\n [options],\n );\n\n return useReducer(stepReducer, initialSteps, initializer);\n}\n"],"names":["useCallback","initialSteps","initStepReducerState","useReducer"],"mappings":";;;;;;AAQgB,SAAA,cAAA,CACd,cACA,OACA,EAAA;AACA,EAAA,MAAM,WAAc,GAAAA,iBAAA;AAAA,IAClB,CAACC,aAA+B,KAAA;AAC9B,MAAO,OAAAC,0BAAA,CAAqBD,eAAc,OAAO,CAAA;AAAA,KACnD;AAAA,IACA,CAAC,OAAO;AAAA,GACV;AAEA,EAAO,OAAAE,gBAAA,CAAW,WAAa,EAAA,YAAA,EAAc,WAAW,CAAA;AAC1D;;;;"}
@@ -1,16 +1,47 @@
1
1
  'use strict';
2
2
 
3
- function assignSteps(steps, stage) {
3
+ function assignStepsStage(steps, stage) {
4
4
  return steps.map((step) => {
5
- step.stage = stage;
5
+ if (!step.substeps) {
6
+ return { ...step, stage };
7
+ }
8
+ return {
9
+ ...step,
10
+ stage,
11
+ substeps: assignStepsStage(step.substeps, stage)
12
+ };
13
+ });
14
+ }
15
+ function assignStepStatus(steps, stepId, status) {
16
+ return steps.map((step) => {
17
+ if (step.id === stepId) {
18
+ return { ...step, status };
19
+ }
6
20
  if (step.substeps) {
7
- step.substeps = assignSteps(step.substeps, stage);
21
+ return {
22
+ ...step,
23
+ substeps: assignStepStatus(step.substeps, stepId, status)
24
+ };
8
25
  }
9
26
  return step;
10
27
  });
11
28
  }
12
- function resetSteps(steps) {
13
- return assignSteps(steps, void 0);
29
+ function resetSteps(steps, options = { resetStatus: false }) {
30
+ const { resetStatus } = options;
31
+ return steps.map((step) => {
32
+ if (!step.substeps) {
33
+ return {
34
+ ...step,
35
+ stage: void 0,
36
+ status: !resetStatus ? step.status : void 0
37
+ };
38
+ }
39
+ return {
40
+ ...step,
41
+ stage: void 0,
42
+ substeps: resetSteps(step.substeps, options)
43
+ };
44
+ });
14
45
  }
15
46
  function autoStageSteps(steps, options) {
16
47
  function autoStageHelper(steps2) {
@@ -20,11 +51,14 @@ function autoStageSteps(steps, options) {
20
51
  if (pivotIndex !== -1) {
21
52
  const activeStep = steps2[pivotIndex];
22
53
  activeStep.stage ||= "active";
23
- const previousSteps = assignSteps(
54
+ const previousSteps = assignStepsStage(
24
55
  steps2.slice(0, pivotIndex),
25
56
  "completed"
26
57
  );
27
- const nextSteps = assignSteps(steps2.slice(pivotIndex + 1), "pending");
58
+ const nextSteps = assignStepsStage(
59
+ steps2.slice(pivotIndex + 1),
60
+ "pending"
61
+ );
28
62
  return [...previousSteps, activeStep, ...nextSteps];
29
63
  }
30
64
  return steps2.reduce(
@@ -42,7 +76,7 @@ function autoStageSteps(steps, options) {
42
76
  null
43
77
  );
44
78
  }
45
- return autoStageHelper(steps) || assignSteps(steps, steps[0].stage || "pending");
79
+ return autoStageHelper(steps) || assignStepsStage(steps, steps[0].stage || "pending");
46
80
  }
47
81
  function flattenSteps(steps) {
48
82
  return steps.reduce((acc, step) => {
@@ -78,7 +112,8 @@ function initStepReducerState(initialSteps, options) {
78
112
  };
79
113
  }
80
114
 
81
- exports.assignSteps = assignSteps;
115
+ exports.assignStepStatus = assignStepStatus;
116
+ exports.assignStepsStage = assignStepsStage;
82
117
  exports.autoStageSteps = autoStageSteps;
83
118
  exports.flattenSteps = flattenSteps;
84
119
  exports.initStepReducerState = initStepReducerState;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../src/stepped-tracker/utils.ts"],"sourcesContent":["import type { StepRecord, StepStage } from \"./Step.types\";\nimport type { StepReducerOptions, StepReducerState } from \"./stepReducer.types\";\n\nexport function assignSteps(\n steps: StepRecord[],\n stage?: StepStage,\n): StepRecord[] {\n return steps.map((step) => {\n step.stage = stage;\n if (step.substeps) {\n step.substeps = assignSteps(step.substeps, stage);\n }\n\n return step;\n });\n}\n\nexport function resetSteps(steps: StepRecord[]): StepRecord[] {\n return assignSteps(steps, undefined);\n}\n\nexport function autoStageSteps(\n steps: StepRecord[],\n options?: StepReducerOptions,\n): StepRecord[] {\n function autoStageHelper(steps: StepRecord[]): StepRecord[] | null {\n const pivotIndex = steps.findIndex(\n (step) =>\n (step?.id &&\n options?.activeStepId &&\n step.id === options.activeStepId) ||\n step.stage === \"active\" ||\n step.stage === \"inprogress\",\n );\n\n if (pivotIndex !== -1) {\n const activeStep = steps[pivotIndex];\n\n activeStep.stage ||= \"active\";\n\n const previousSteps = assignSteps(\n steps.slice(0, pivotIndex),\n \"completed\",\n );\n const nextSteps = assignSteps(steps.slice(pivotIndex + 1), \"pending\");\n\n return [...previousSteps, activeStep, ...nextSteps] as StepRecord[];\n }\n\n return steps.reduce(\n (acc, step, index) => {\n if (step.substeps) {\n const substeps = autoStageHelper(step.substeps);\n\n if (substeps) {\n steps[index].substeps = substeps;\n steps[index].stage = \"inprogress\";\n\n return autoStageHelper(steps);\n }\n }\n\n return acc;\n },\n null as StepRecord[] | null,\n );\n }\n\n return (\n autoStageHelper(steps) || assignSteps(steps, steps[0].stage || \"pending\")\n );\n}\n\nexport function flattenSteps(steps: StepRecord[]): StepRecord[] {\n return steps.reduce((acc, step) => {\n if (step.substeps) {\n acc.push(...flattenSteps(step.substeps));\n\n return acc;\n }\n\n acc.push(step);\n\n return acc;\n }, [] as StepRecord[]);\n}\n\nexport function initStepReducerState(\n initialSteps: StepRecord[],\n options?: StepReducerOptions,\n) {\n const steps = autoStageSteps(initialSteps, options);\n const flatSteps = flattenSteps(steps);\n const started = !flatSteps.every((step) => step.stage === \"pending\");\n const ended = flatSteps.every((step) => step.stage === \"completed\");\n\n let activeStepIndex = flatSteps.findIndex((step) => step.stage === \"active\");\n\n if (activeStepIndex === -1 && ended) {\n activeStepIndex = flatSteps.length;\n }\n\n const activeStep = flatSteps[activeStepIndex] || null;\n const previousStep = flatSteps[activeStepIndex - 1] || null;\n const nextStep = flatSteps[activeStepIndex + 1] || null;\n\n return {\n steps,\n flatSteps,\n activeStep,\n previousStep,\n nextStep,\n activeStepIndex,\n ended,\n started,\n } as StepReducerState;\n}\n"],"names":["steps"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../src/stepped-tracker/utils.ts"],"sourcesContent":["import type { StepRecord, StepStage, StepStatus } from \"./Step.types\";\nimport type { StepReducerOptions, StepReducerState } from \"./stepReducer.types\";\n\nexport function assignStepsStage(\n steps: StepRecord[],\n stage?: StepStage,\n): StepRecord[] {\n return steps.map((step) => {\n if (!step.substeps) {\n return { ...step, stage };\n }\n\n return {\n ...step,\n stage,\n substeps: assignStepsStage(step.substeps, stage),\n };\n });\n}\n\nexport function assignStepStatus(\n steps: StepRecord[],\n stepId: string,\n status: StepStatus | undefined,\n): StepRecord[] {\n return steps.map((step) => {\n if (step.id === stepId) {\n return { ...step, status };\n }\n\n if (step.substeps) {\n return {\n ...step,\n substeps: assignStepStatus(step.substeps, stepId, status),\n };\n }\n\n return step;\n });\n}\n\nexport function resetSteps(\n steps: StepRecord[],\n options = { resetStatus: false },\n): StepRecord[] {\n const { resetStatus } = options;\n\n return steps.map((step) => {\n if (!step.substeps) {\n return {\n ...step,\n stage: undefined,\n status: !resetStatus ? step.status : undefined,\n };\n }\n\n return {\n ...step,\n stage: undefined,\n substeps: resetSteps(step.substeps, options),\n };\n });\n}\n\nexport function autoStageSteps(\n steps: StepRecord[],\n options?: StepReducerOptions,\n): StepRecord[] {\n function autoStageHelper(steps: StepRecord[]): StepRecord[] | null {\n const pivotIndex = steps.findIndex(\n (step) =>\n (step?.id &&\n options?.activeStepId &&\n step.id === options.activeStepId) ||\n step.stage === \"active\" ||\n step.stage === \"inprogress\",\n );\n\n if (pivotIndex !== -1) {\n const activeStep = steps[pivotIndex];\n\n activeStep.stage ||= \"active\";\n\n const previousSteps = assignStepsStage(\n steps.slice(0, pivotIndex),\n \"completed\",\n );\n const nextSteps = assignStepsStage(\n steps.slice(pivotIndex + 1),\n \"pending\",\n );\n\n return [...previousSteps, activeStep, ...nextSteps] as StepRecord[];\n }\n\n return steps.reduce(\n (acc, step, index) => {\n if (step.substeps) {\n const substeps = autoStageHelper(step.substeps);\n\n if (substeps) {\n steps[index].substeps = substeps;\n steps[index].stage = \"inprogress\";\n\n return autoStageHelper(steps);\n }\n }\n\n return acc;\n },\n null as StepRecord[] | null,\n );\n }\n\n return (\n autoStageHelper(steps) ||\n assignStepsStage(steps, steps[0].stage || \"pending\")\n );\n}\n\nexport function flattenSteps(steps: StepRecord[]): StepRecord[] {\n return steps.reduce((acc, step) => {\n if (step.substeps) {\n acc.push(...flattenSteps(step.substeps));\n\n return acc;\n }\n\n acc.push(step);\n\n return acc;\n }, [] as StepRecord[]);\n}\n\nexport function initStepReducerState(\n initialSteps: StepRecord[],\n options?: StepReducerOptions,\n) {\n const steps = autoStageSteps(initialSteps, options);\n const flatSteps = flattenSteps(steps);\n const started = !flatSteps.every((step) => step.stage === \"pending\");\n const ended = flatSteps.every((step) => step.stage === \"completed\");\n\n let activeStepIndex = flatSteps.findIndex((step) => step.stage === \"active\");\n\n if (activeStepIndex === -1 && ended) {\n activeStepIndex = flatSteps.length;\n }\n\n const activeStep = flatSteps[activeStepIndex] || null;\n const previousStep = flatSteps[activeStepIndex - 1] || null;\n const nextStep = flatSteps[activeStepIndex + 1] || null;\n\n return {\n steps,\n flatSteps,\n activeStep,\n previousStep,\n nextStep,\n activeStepIndex,\n ended,\n started,\n } as StepReducerState;\n}\n"],"names":["steps"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var css_248z = "/* Component class applied to the root element */\n.saltTabListNext {\n display: flex;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n position: relative;\n background: transparent;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n gap: var(--salt-spacing-100);\n max-width: 100%;\n}\n\n.saltTabListNext-center {\n justify-content: center;\n}\n\n.saltTabListNext-right {\n justify-content: flex-end;\n}\n\n.saltTabListNext-activeColorPrimary {\n --saltTabListNext-activeColor: var(--salt-container-primary-background);\n}\n\n.saltTabListNext-activeColorSecondary {\n --saltTabListNext-activeColor: var(--salt-container-secondary-background);\n}\n\n.saltTabListNext-activeColorTertiary {\n --saltTabListNext-activeColor: var(--salt-container-tertiary-background);\n}\n\n.saltTabListNext-overflowWarning {\n display: none;\n}\n";
3
+ var css_248z = "/* Component class applied to the root element */\n.saltTabListNext {\n display: flex;\n flex-wrap: nowrap;\n justify-content: flex-start;\n align-items: center;\n position: relative;\n background: transparent;\n min-height: calc(var(--salt-size-base) + var(--salt-spacing-100));\n gap: var(--salt-spacing-100);\n max-width: 100%;\n width: 100%;\n}\n\n.saltTabListNext-center {\n justify-content: center;\n}\n\n.saltTabListNext-right {\n justify-content: flex-end;\n}\n\n.saltTabListNext-activeColorPrimary {\n --saltTabListNext-activeColor: var(--salt-container-primary-background);\n}\n\n.saltTabListNext-activeColorSecondary {\n --saltTabListNext-activeColor: var(--salt-container-secondary-background);\n}\n\n.saltTabListNext-activeColorTertiary {\n --saltTabListNext-activeColor: var(--salt-container-tertiary-background);\n}\n\n.saltTabListNext-overflowWarning {\n display: none;\n}\n";
4
4
 
5
5
  module.exports = css_248z;
6
6
  //# sourceMappingURL=TabListNext.css.js.map
@@ -10,6 +10,7 @@ var TabListNext$1 = require('./TabListNext.css.js');
10
10
  var TabOverflowList = require('./TabOverflowList.js');
11
11
  var TabsNextContext = require('./TabsNextContext.js');
12
12
  var useOverflow = require('./hooks/useOverflow.js');
13
+ var useRestoreActiveTab = require('./hooks/useRestoreActiveTab.js');
13
14
 
14
15
  const withBaseName = core.makePrefixer("saltTabListNext");
15
16
  const TabListNext = react.forwardRef(
@@ -39,18 +40,24 @@ const TabListNext = react.forwardRef(
39
40
  activeTab,
40
41
  menuOpen,
41
42
  setMenuOpen,
42
- returnFocus
43
+ removedActiveTabRef
43
44
  } = TabsNextContext.useTabsNext();
44
45
  const tabstripRef = react.useRef(null);
45
46
  const handleRef = core.useForkRef(tabstripRef, ref);
46
47
  const overflowButtonRef = react.useRef(null);
47
- const [visible, hidden, isMeasuring] = useOverflow.useOverflow({
48
+ const [visible, hidden, isMeasuring, realSelectedIndexRef] = useOverflow.useOverflow({
48
49
  container: tabstripRef,
49
50
  tabs: items,
50
51
  children,
51
52
  selected,
52
53
  overflowButton: overflowButtonRef
53
54
  });
55
+ useRestoreActiveTab.useRestoreActiveTab({
56
+ container: tabstripRef,
57
+ tabs: items,
58
+ realSelectedIndex: realSelectedIndexRef,
59
+ removedActiveTabRef
60
+ });
54
61
  const handleKeyDown = (event) => {
55
62
  var _a, _b, _c;
56
63
  onKeyDown == null ? void 0 : onKeyDown(event);
@@ -77,19 +84,6 @@ const TabListNext = react.forwardRef(
77
84
  }
78
85
  }
79
86
  };
80
- core.useIsomorphicLayoutEffect(() => {
81
- var _a;
82
- if (!returnFocus.current || visible.length < 1 || selected === void 0)
83
- return;
84
- const itemToFocus = items.find((i) => i.value === returnFocus.current);
85
- (_a = itemToFocus == null ? void 0 : itemToFocus.element) == null ? void 0 : _a.focus({ preventScroll: true });
86
- requestAnimationFrame(() => {
87
- var _a2;
88
- if (((_a2 = targetWindow == null ? void 0 : targetWindow.document) == null ? void 0 : _a2.activeElement) === (itemToFocus == null ? void 0 : itemToFocus.element)) {
89
- returnFocus.current = void 0;
90
- }
91
- });
92
- }, [visible, returnFocus, targetWindow, items, selected]);
93
87
  const warningId = core.useId();
94
88
  return /* @__PURE__ */ jsxRuntime.jsxs(
95
89
  "div",
@@ -108,7 +102,7 @@ const TabListNext = react.forwardRef(
108
102
  "aria-describedby": clsx.clsx(ariaDescribedBy, warningId),
109
103
  ...rest,
110
104
  children: [
111
- hidden.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { id: warningId, className: withBaseName("overflowWarning"), children: "Note: This tab list includes overflow; tab positions may be inaccurate or change when a tab is selected" }),
105
+ !isMeasuring && hidden.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("span", { id: warningId, className: withBaseName("overflowWarning"), children: "Note: This tab list includes overflow; tab positions may be inaccurate or change when a tab is selected" }),
112
106
  visible,
113
107
  /* @__PURE__ */ jsxRuntime.jsx(
114
108
  TabOverflowList.TabOverflowList,
@@ -1 +1 @@
1
- {"version":3,"file":"TabListNext.js","sources":["../src/tabs-next/TabListNext.tsx"],"sourcesContent":["import {\n capitalize,\n makePrefixer,\n useForkRef,\n useId,\n useIsomorphicLayoutEffect,\n} from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type KeyboardEvent,\n forwardRef,\n useRef,\n} from \"react\";\n\nimport tablistNextCss from \"./TabListNext.css\";\nimport { TabOverflowList } from \"./TabOverflowList\";\nimport { useTabsNext } from \"./TabsNextContext\";\nimport { useOverflow } from \"./hooks/useOverflow\";\n\nconst withBaseName = makePrefixer(\"saltTabListNext\");\n\nexport interface TabListNextProps\n extends Omit<ComponentPropsWithoutRef<\"div\">, \"onChange\"> {\n /**\n * Styling active color variant. Defaults to \"primary\".\n */\n activeColor?: \"primary\" | \"secondary\" | \"tertiary\";\n /**\n * The appearance of the tabs. Defaults to \"bordered\".\n */\n appearance?: \"bordered\" | \"transparent\";\n}\n\nexport const TabListNext = forwardRef<HTMLDivElement, TabListNextProps>(\n function TabstripNext(props, ref) {\n const {\n appearance = \"bordered\",\n activeColor = \"primary\",\n \"aria-describedby\": ariaDescribedBy,\n children,\n className,\n onKeyDown,\n ...rest\n } = props;\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-tablist-next\",\n css: tablistNextCss,\n window: targetWindow,\n });\n\n const {\n selected,\n getNext,\n getPrevious,\n getFirst,\n getLast,\n items,\n activeTab,\n menuOpen,\n setMenuOpen,\n returnFocus,\n } = useTabsNext();\n\n const tabstripRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(tabstripRef, ref);\n const overflowButtonRef = useRef<HTMLButtonElement>(null);\n\n const [visible, hidden, isMeasuring] = useOverflow({\n container: tabstripRef,\n tabs: items,\n children,\n selected,\n overflowButton: overflowButtonRef,\n });\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n\n const actionMap = {\n ArrowRight: getNext,\n ArrowLeft: getPrevious,\n Home: getFirst,\n End: getLast,\n ArrowUp: menuOpen ? getPrevious : undefined,\n ArrowDown: menuOpen ? getNext : undefined,\n };\n\n const action = actionMap[event.key as keyof typeof actionMap];\n\n if (action) {\n event.preventDefault();\n const activeTabId = activeTab.current?.id;\n if (!activeTabId) return;\n const nextItem = action(activeTabId);\n if (nextItem) {\n nextItem.element?.scrollIntoView({\n block: \"nearest\",\n inline: \"nearest\",\n });\n nextItem.element?.focus({ preventScroll: true });\n }\n }\n };\n\n useIsomorphicLayoutEffect(() => {\n if (!returnFocus.current || visible.length < 1 || selected === undefined)\n return;\n\n const itemToFocus = items.find((i) => i.value === returnFocus.current);\n itemToFocus?.element?.focus({ preventScroll: true });\n\n requestAnimationFrame(() => {\n if (targetWindow?.document?.activeElement === itemToFocus?.element) {\n returnFocus.current = undefined;\n }\n });\n }, [visible, returnFocus, targetWindow, items, selected]);\n\n const warningId = useId();\n\n return (\n <div\n role=\"tablist\"\n className={clsx(\n withBaseName(),\n withBaseName(appearance),\n withBaseName(\"horizontal\"),\n withBaseName(`activeColor${capitalize(activeColor)}`),\n className,\n )}\n data-ismeasuring={isMeasuring ? true : undefined}\n ref={handleRef}\n onKeyDown={handleKeyDown}\n aria-describedby={clsx(ariaDescribedBy, warningId)}\n {...rest}\n >\n {hidden.length > 0 && (\n <span id={warningId} className={withBaseName(\"overflowWarning\")}>\n Note: This tab list includes overflow; tab positions may be\n inaccurate or change when a tab is selected\n </span>\n )}\n {visible}\n <TabOverflowList\n isMeasuring={isMeasuring}\n buttonRef={overflowButtonRef}\n tabstripRef={tabstripRef}\n open={menuOpen}\n setOpen={setMenuOpen}\n >\n {hidden}\n </TabOverflowList>\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","useWindow","useComponentCssInjection","tablistNextCss","useTabsNext","useRef","useForkRef","useOverflow","useIsomorphicLayoutEffect","_a","useId","jsxs","clsx","capitalize","jsx","TabOverflowList"],"mappings":"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"}
1
+ {"version":3,"file":"TabListNext.js","sources":["../src/tabs-next/TabListNext.tsx"],"sourcesContent":["import { capitalize, makePrefixer, useForkRef, useId } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport { clsx } from \"clsx\";\nimport {\n type ComponentPropsWithoutRef,\n type KeyboardEvent,\n forwardRef,\n useRef,\n} from \"react\";\n\nimport tablistNextCss from \"./TabListNext.css\";\nimport { TabOverflowList } from \"./TabOverflowList\";\nimport { useTabsNext } from \"./TabsNextContext\";\nimport { useOverflow } from \"./hooks/useOverflow\";\nimport { useRestoreActiveTab } from \"./hooks/useRestoreActiveTab\";\n\nconst withBaseName = makePrefixer(\"saltTabListNext\");\n\nexport interface TabListNextProps\n extends Omit<ComponentPropsWithoutRef<\"div\">, \"onChange\"> {\n /**\n * Styling active color variant. Defaults to \"primary\".\n */\n activeColor?: \"primary\" | \"secondary\" | \"tertiary\";\n /**\n * The appearance of the tabs. Defaults to \"bordered\".\n */\n appearance?: \"bordered\" | \"transparent\";\n}\n\nexport const TabListNext = forwardRef<HTMLDivElement, TabListNextProps>(\n function TabstripNext(props, ref) {\n const {\n appearance = \"bordered\",\n activeColor = \"primary\",\n \"aria-describedby\": ariaDescribedBy,\n children,\n className,\n onKeyDown,\n ...rest\n } = props;\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-tablist-next\",\n css: tablistNextCss,\n window: targetWindow,\n });\n\n const {\n selected,\n getNext,\n getPrevious,\n getFirst,\n getLast,\n items,\n activeTab,\n menuOpen,\n setMenuOpen,\n removedActiveTabRef,\n } = useTabsNext();\n\n const tabstripRef = useRef<HTMLDivElement>(null);\n const handleRef = useForkRef(tabstripRef, ref);\n const overflowButtonRef = useRef<HTMLButtonElement>(null);\n\n const [visible, hidden, isMeasuring, realSelectedIndexRef] = useOverflow({\n container: tabstripRef,\n tabs: items,\n children,\n selected,\n overflowButton: overflowButtonRef,\n });\n\n useRestoreActiveTab({\n container: tabstripRef,\n tabs: items,\n realSelectedIndex: realSelectedIndexRef,\n removedActiveTabRef,\n });\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n\n const actionMap = {\n ArrowRight: getNext,\n ArrowLeft: getPrevious,\n Home: getFirst,\n End: getLast,\n ArrowUp: menuOpen ? getPrevious : undefined,\n ArrowDown: menuOpen ? getNext : undefined,\n };\n\n const action = actionMap[event.key as keyof typeof actionMap];\n\n if (action) {\n event.preventDefault();\n const activeTabId = activeTab.current?.id;\n if (!activeTabId) return;\n const nextItem = action(activeTabId);\n if (nextItem) {\n nextItem.element?.scrollIntoView({\n block: \"nearest\",\n inline: \"nearest\",\n });\n nextItem.element?.focus({ preventScroll: true });\n }\n }\n };\n\n const warningId = useId();\n\n return (\n <div\n role=\"tablist\"\n className={clsx(\n withBaseName(),\n withBaseName(appearance),\n withBaseName(\"horizontal\"),\n withBaseName(`activeColor${capitalize(activeColor)}`),\n className,\n )}\n data-ismeasuring={isMeasuring ? true : undefined}\n ref={handleRef}\n onKeyDown={handleKeyDown}\n aria-describedby={clsx(ariaDescribedBy, warningId)}\n {...rest}\n >\n {!isMeasuring && hidden.length > 0 && (\n <span id={warningId} className={withBaseName(\"overflowWarning\")}>\n Note: This tab list includes overflow; tab positions may be\n inaccurate or change when a tab is selected\n </span>\n )}\n {visible}\n <TabOverflowList\n isMeasuring={isMeasuring}\n buttonRef={overflowButtonRef}\n tabstripRef={tabstripRef}\n open={menuOpen}\n setOpen={setMenuOpen}\n >\n {hidden}\n </TabOverflowList>\n </div>\n );\n },\n);\n"],"names":["makePrefixer","forwardRef","useWindow","useComponentCssInjection","tablistNextCss","useTabsNext","useRef","useForkRef","useOverflow","useRestoreActiveTab","useId","jsxs","clsx","capitalize","jsx","TabOverflowList"],"mappings":"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"}
@@ -89,7 +89,7 @@ const TabOverflowList = react.forwardRef(
89
89
  const listId = core.useId();
90
90
  const childCount = react.Children.count(children);
91
91
  if (childCount === 0 && !isMeasuring) return null;
92
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: withBaseName(), ref: handleRootRef, children: [
92
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: withBaseName(), ref: handleRootRef, "data-overflow": true, children: [
93
93
  /* @__PURE__ */ jsxRuntime.jsx(
94
94
  core.Button,
95
95
  {