@salt-ds/lab 1.0.0-alpha.57 → 1.0.0-alpha.58
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.
- package/CHANGELOG.md +232 -0
- package/css/salt-lab.css +216 -143
- package/dist-cjs/date-picker/DatePicker.js +3 -2
- package/dist-cjs/date-picker/DatePicker.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerOverlayProvider.js +5 -2
- package/dist-cjs/date-picker/DatePickerOverlayProvider.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerRangeInput.js +1 -1
- package/dist-cjs/date-picker/DatePickerRangeInput.js.map +1 -1
- package/dist-cjs/date-picker/DatePickerSingleInput.js +1 -1
- package/dist-cjs/date-picker/DatePickerSingleInput.js.map +1 -1
- package/dist-cjs/index.js +4 -6
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/skip-link/SkipLink.css.js +1 -1
- package/dist-cjs/skip-link/SkipLink.js +25 -8
- package/dist-cjs/skip-link/SkipLink.js.map +1 -1
- package/dist-cjs/skip-link/internal/useManageFocusOnTarget.js +54 -37
- package/dist-cjs/skip-link/internal/useManageFocusOnTarget.js.map +1 -1
- package/dist-cjs/stepped-tracker/Step.Connector.css.js +6 -0
- package/dist-cjs/stepped-tracker/Step.Connector.css.js.map +1 -0
- package/dist-cjs/stepped-tracker/Step.Connector.js +21 -0
- package/dist-cjs/stepped-tracker/Step.Connector.js.map +1 -0
- package/dist-cjs/stepped-tracker/Step.Description.css.js +6 -0
- package/dist-cjs/stepped-tracker/Step.Description.css.js.map +1 -0
- package/dist-cjs/stepped-tracker/Step.Description.js +35 -0
- package/dist-cjs/stepped-tracker/Step.Description.js.map +1 -0
- package/dist-cjs/stepped-tracker/Step.ExpandTrigger.css.js +6 -0
- package/dist-cjs/stepped-tracker/Step.ExpandTrigger.css.js.map +1 -0
- package/dist-cjs/stepped-tracker/Step.ExpandTrigger.js +38 -0
- package/dist-cjs/stepped-tracker/Step.ExpandTrigger.js.map +1 -0
- package/dist-cjs/stepped-tracker/Step.Icon.css.js +6 -0
- package/dist-cjs/stepped-tracker/Step.Icon.css.js.map +1 -0
- package/dist-cjs/stepped-tracker/Step.Icon.js +57 -0
- package/dist-cjs/stepped-tracker/Step.Icon.js.map +1 -0
- package/dist-cjs/stepped-tracker/Step.Label.css.js +6 -0
- package/dist-cjs/stepped-tracker/Step.Label.css.js.map +1 -0
- package/dist-cjs/stepped-tracker/Step.Label.js +37 -0
- package/dist-cjs/stepped-tracker/Step.Label.js.map +1 -0
- package/dist-cjs/stepped-tracker/Step.SROnly.css.js +6 -0
- package/dist-cjs/stepped-tracker/Step.SROnly.css.js.map +1 -0
- package/dist-cjs/stepped-tracker/Step.SROnly.js +21 -0
- package/dist-cjs/stepped-tracker/Step.SROnly.js.map +1 -0
- package/dist-cjs/stepped-tracker/Step.css.js +6 -0
- package/dist-cjs/stepped-tracker/Step.css.js.map +1 -0
- package/dist-cjs/stepped-tracker/Step.js +161 -0
- package/dist-cjs/stepped-tracker/Step.js.map +1 -0
- package/dist-cjs/stepped-tracker/SteppedTracker.Provider.js +19 -0
- package/dist-cjs/stepped-tracker/SteppedTracker.Provider.js.map +1 -0
- package/dist-cjs/stepped-tracker/SteppedTracker.css.js +1 -1
- package/dist-cjs/stepped-tracker/SteppedTracker.js +10 -33
- package/dist-cjs/stepped-tracker/SteppedTracker.js.map +1 -1
- package/dist-cjs/stepped-tracker/stepReducer.js +109 -0
- package/dist-cjs/stepped-tracker/stepReducer.js.map +1 -0
- package/dist-cjs/stepped-tracker/useStepReducer.js +16 -0
- package/dist-cjs/stepped-tracker/useStepReducer.js.map +1 -0
- package/dist-cjs/stepped-tracker/utils.js +86 -0
- package/dist-cjs/stepped-tracker/utils.js.map +1 -0
- package/dist-es/date-picker/DatePicker.js +3 -2
- package/dist-es/date-picker/DatePicker.js.map +1 -1
- package/dist-es/date-picker/DatePickerOverlayProvider.js +5 -2
- package/dist-es/date-picker/DatePickerOverlayProvider.js.map +1 -1
- package/dist-es/date-picker/DatePickerRangeInput.js +1 -1
- package/dist-es/date-picker/DatePickerRangeInput.js.map +1 -1
- package/dist-es/date-picker/DatePickerSingleInput.js +1 -1
- package/dist-es/date-picker/DatePickerSingleInput.js.map +1 -1
- package/dist-es/index.js +2 -3
- package/dist-es/index.js.map +1 -1
- package/dist-es/skip-link/SkipLink.css.js +1 -1
- package/dist-es/skip-link/SkipLink.js +27 -10
- package/dist-es/skip-link/SkipLink.js.map +1 -1
- package/dist-es/skip-link/internal/useManageFocusOnTarget.js +55 -38
- package/dist-es/skip-link/internal/useManageFocusOnTarget.js.map +1 -1
- package/dist-es/stepped-tracker/Step.Connector.css.js +4 -0
- package/dist-es/stepped-tracker/Step.Connector.css.js.map +1 -0
- package/dist-es/stepped-tracker/Step.Connector.js +19 -0
- package/dist-es/stepped-tracker/Step.Connector.js.map +1 -0
- package/dist-es/stepped-tracker/Step.Description.css.js +4 -0
- package/dist-es/stepped-tracker/Step.Description.css.js.map +1 -0
- package/dist-es/stepped-tracker/Step.Description.js +33 -0
- package/dist-es/stepped-tracker/Step.Description.js.map +1 -0
- package/dist-es/stepped-tracker/Step.ExpandTrigger.css.js +4 -0
- package/dist-es/stepped-tracker/Step.ExpandTrigger.css.js.map +1 -0
- package/dist-es/stepped-tracker/Step.ExpandTrigger.js +36 -0
- package/dist-es/stepped-tracker/Step.ExpandTrigger.js.map +1 -0
- package/dist-es/stepped-tracker/Step.Icon.css.js +4 -0
- package/dist-es/stepped-tracker/Step.Icon.css.js.map +1 -0
- package/dist-es/stepped-tracker/Step.Icon.js +55 -0
- package/dist-es/stepped-tracker/Step.Icon.js.map +1 -0
- package/dist-es/stepped-tracker/Step.Label.css.js +4 -0
- package/dist-es/stepped-tracker/Step.Label.css.js.map +1 -0
- package/dist-es/stepped-tracker/Step.Label.js +35 -0
- package/dist-es/stepped-tracker/Step.Label.js.map +1 -0
- package/dist-es/stepped-tracker/Step.SROnly.css.js +4 -0
- package/dist-es/stepped-tracker/Step.SROnly.css.js.map +1 -0
- package/dist-es/stepped-tracker/Step.SROnly.js +19 -0
- package/dist-es/stepped-tracker/Step.SROnly.js.map +1 -0
- package/dist-es/stepped-tracker/Step.css.js +4 -0
- package/dist-es/stepped-tracker/Step.css.js.map +1 -0
- package/dist-es/stepped-tracker/Step.js +159 -0
- package/dist-es/stepped-tracker/Step.js.map +1 -0
- package/dist-es/stepped-tracker/SteppedTracker.Provider.js +15 -0
- package/dist-es/stepped-tracker/SteppedTracker.Provider.js.map +1 -0
- package/dist-es/stepped-tracker/SteppedTracker.css.js +1 -1
- package/dist-es/stepped-tracker/SteppedTracker.js +11 -34
- package/dist-es/stepped-tracker/SteppedTracker.js.map +1 -1
- package/dist-es/stepped-tracker/stepReducer.js +107 -0
- package/dist-es/stepped-tracker/stepReducer.js.map +1 -0
- package/dist-es/stepped-tracker/useStepReducer.js +14 -0
- package/dist-es/stepped-tracker/useStepReducer.js.map +1 -0
- package/dist-es/stepped-tracker/utils.js +80 -0
- package/dist-es/stepped-tracker/utils.js.map +1 -0
- package/dist-types/date-picker/DatePickerOverlayProvider.d.ts +4 -0
- package/dist-types/skip-link/SkipLink.d.ts +6 -11
- package/dist-types/skip-link/index.d.ts +0 -1
- package/dist-types/skip-link/internal/useManageFocusOnTarget.d.ts +13 -8
- package/dist-types/stepped-tracker/Step.Connector.d.ts +1 -0
- package/dist-types/stepped-tracker/Step.Description.d.ts +4 -0
- package/dist-types/stepped-tracker/Step.ExpandTrigger.d.ts +5 -0
- package/dist-types/stepped-tracker/Step.Icon.d.ts +8 -0
- package/dist-types/stepped-tracker/Step.Label.d.ts +4 -0
- package/dist-types/stepped-tracker/Step.SROnly.d.ts +5 -0
- package/dist-types/stepped-tracker/Step.d.ts +2 -0
- package/dist-types/stepped-tracker/Step.types.d.ts +21 -0
- package/dist-types/stepped-tracker/SteppedTracker.Provider.d.ts +9 -0
- package/dist-types/stepped-tracker/SteppedTracker.d.ts +2 -16
- package/dist-types/stepped-tracker/SteppedTracker.types.d.ts +6 -0
- package/dist-types/stepped-tracker/index.d.ts +5 -2
- package/dist-types/stepped-tracker/stepReducer.d.ts +2 -0
- package/dist-types/stepped-tracker/stepReducer.types.d.ts +25 -0
- package/dist-types/stepped-tracker/useStepReducer.d.ts +3 -0
- package/dist-types/stepped-tracker/utils.d.ts +7 -0
- package/package.json +14 -12
- package/dist-cjs/skip-link/SkipLinks.css.js +0 -6
- package/dist-cjs/skip-link/SkipLinks.css.js.map +0 -1
- package/dist-cjs/skip-link/SkipLinks.js +0 -24
- package/dist-cjs/skip-link/SkipLinks.js.map +0 -1
- package/dist-cjs/stepped-tracker/StepLabel/StepLabel.css.js +0 -6
- package/dist-cjs/stepped-tracker/StepLabel/StepLabel.css.js.map +0 -1
- package/dist-cjs/stepped-tracker/StepLabel/StepLabel.js +0 -25
- package/dist-cjs/stepped-tracker/StepLabel/StepLabel.js.map +0 -1
- package/dist-cjs/stepped-tracker/SteppedTrackerContext.js +0 -43
- package/dist-cjs/stepped-tracker/SteppedTrackerContext.js.map +0 -1
- package/dist-cjs/stepped-tracker/TrackerConnector/TrackerConnector.css.js +0 -6
- package/dist-cjs/stepped-tracker/TrackerConnector/TrackerConnector.css.js.map +0 -1
- package/dist-cjs/stepped-tracker/TrackerConnector/TrackerConnector.js +0 -22
- package/dist-cjs/stepped-tracker/TrackerConnector/TrackerConnector.js.map +0 -1
- package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.css.js +0 -6
- package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.css.js.map +0 -1
- package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js +0 -96
- package/dist-cjs/stepped-tracker/TrackerStep/TrackerStep.js.map +0 -1
- package/dist-es/skip-link/SkipLinks.css.js +0 -4
- package/dist-es/skip-link/SkipLinks.css.js.map +0 -1
- package/dist-es/skip-link/SkipLinks.js +0 -22
- package/dist-es/skip-link/SkipLinks.js.map +0 -1
- package/dist-es/stepped-tracker/StepLabel/StepLabel.css.js +0 -4
- package/dist-es/stepped-tracker/StepLabel/StepLabel.css.js.map +0 -1
- package/dist-es/stepped-tracker/StepLabel/StepLabel.js +0 -23
- package/dist-es/stepped-tracker/StepLabel/StepLabel.js.map +0 -1
- package/dist-es/stepped-tracker/SteppedTrackerContext.js +0 -38
- package/dist-es/stepped-tracker/SteppedTrackerContext.js.map +0 -1
- package/dist-es/stepped-tracker/TrackerConnector/TrackerConnector.css.js +0 -4
- package/dist-es/stepped-tracker/TrackerConnector/TrackerConnector.css.js.map +0 -1
- package/dist-es/stepped-tracker/TrackerConnector/TrackerConnector.js +0 -20
- package/dist-es/stepped-tracker/TrackerConnector/TrackerConnector.js.map +0 -1
- package/dist-es/stepped-tracker/TrackerStep/TrackerStep.css.js +0 -4
- package/dist-es/stepped-tracker/TrackerStep/TrackerStep.css.js.map +0 -1
- package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js +0 -94
- package/dist-es/stepped-tracker/TrackerStep/TrackerStep.js.map +0 -1
- package/dist-types/skip-link/SkipLinks.d.ts +0 -2
- package/dist-types/stepped-tracker/StepLabel/StepLabel.d.ts +0 -9
- package/dist-types/stepped-tracker/StepLabel/index.d.ts +0 -1
- package/dist-types/stepped-tracker/SteppedTrackerContext.d.ts +0 -18
- package/dist-types/stepped-tracker/TrackerConnector/TrackerConnector.d.ts +0 -9
- package/dist-types/stepped-tracker/TrackerConnector/index.d.ts +0 -1
- package/dist-types/stepped-tracker/TrackerStep/TrackerStep.d.ts +0 -18
- package/dist-types/stepped-tracker/TrackerStep/index.d.ts +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SkipLink.js","sources":["../src/skip-link/SkipLink.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"SkipLink.js","sources":["../src/skip-link/SkipLink.tsx"],"sourcesContent":["import { makePrefixer } 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 forwardRef,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useManageFocusOnTarget } from \"./internal/useManageFocusOnTarget\";\n\nimport skipLinkCss from \"./SkipLink.css\";\n\ninterface SkipLinkProps extends ComponentPropsWithoutRef<\"a\"> {\n /**\n * The ID of the target element to apply focus when the link is clicked.\n * If the element with this ID is not found, the SkipLink will not be rendered.\n */\n targetId: string;\n}\n\nconst withBaseName = makePrefixer(\"saltSkipLink\");\n\nexport const SkipLink = forwardRef<HTMLAnchorElement, SkipLinkProps>(\n function SkipLink(\n { className, targetId, children, onKeyUp, onBlur, onClick, ...rest },\n ref,\n ) {\n const [isTargetAvailable, setIsTargetAvailable] = useState(false);\n const targetWindow = useWindow();\n useComponentCssInjection({\n testId: \"salt-skip-link\",\n css: skipLinkCss,\n window: targetWindow,\n });\n\n const targetRef = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (targetWindow) {\n targetRef.current = targetWindow.document.getElementById(targetId);\n }\n setIsTargetAvailable(!!targetRef.current);\n }, [targetId, targetWindow]);\n\n const eventHandlers = useManageFocusOnTarget({\n onKeyUp,\n onBlur,\n onClick,\n targetRef,\n targetClass: withBaseName(\"target\"),\n });\n\n if (!isTargetAvailable) return null;\n return (\n <a\n className={clsx(withBaseName(), className)}\n href={`#${targetId}`}\n ref={ref}\n target=\"_self\"\n {...eventHandlers}\n {...rest}\n >\n {children}\n </a>\n );\n },\n);\n"],"names":["SkipLink","skipLinkCss"],"mappings":";;;;;;;;;AAuBA,MAAM,YAAA,GAAe,aAAa,cAAc,CAAA;AAEzC,MAAM,QAAW,GAAA,UAAA;AAAA,EACtB,SAASA,SAAAA,CACP,EAAE,SAAA,EAAW,QAAU,EAAA,QAAA,EAAU,OAAS,EAAA,MAAA,EAAQ,OAAS,EAAA,GAAG,IAAK,EAAA,EACnE,GACA,EAAA;AACA,IAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,SAAS,KAAK,CAAA;AAChE,IAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,IAAyB,wBAAA,CAAA;AAAA,MACvB,MAAQ,EAAA,gBAAA;AAAA,MACR,GAAK,EAAAC,QAAA;AAAA,MACL,MAAQ,EAAA;AAAA,KACT,CAAA;AAED,IAAM,MAAA,SAAA,GAAY,OAA2B,IAAI,CAAA;AAEjD,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,YAAc,EAAA;AAChB,QAAA,SAAA,CAAU,OAAU,GAAA,YAAA,CAAa,QAAS,CAAA,cAAA,CAAe,QAAQ,CAAA;AAAA;AAEnE,MAAqB,oBAAA,CAAA,CAAC,CAAC,SAAA,CAAU,OAAO,CAAA;AAAA,KACvC,EAAA,CAAC,QAAU,EAAA,YAAY,CAAC,CAAA;AAE3B,IAAA,MAAM,gBAAgB,sBAAuB,CAAA;AAAA,MAC3C,OAAA;AAAA,MACA,MAAA;AAAA,MACA,OAAA;AAAA,MACA,SAAA;AAAA,MACA,WAAA,EAAa,aAAa,QAAQ;AAAA,KACnC,CAAA;AAED,IAAI,IAAA,CAAC,mBAA0B,OAAA,IAAA;AAC/B,IACE,uBAAA,GAAA;AAAA,MAAC,GAAA;AAAA,MAAA;AAAA,QACC,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,QACzC,IAAA,EAAM,IAAI,QAAQ,CAAA,CAAA;AAAA,QAClB,GAAA;AAAA,QACA,MAAO,EAAA,OAAA;AAAA,QACN,GAAG,aAAA;AAAA,QACH,GAAG,IAAA;AAAA,QAEH;AAAA;AAAA,KACH;AAAA;AAGN;;;;"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
import { useState, useRef, useEffect
|
|
1
|
+
import { useState, useRef, useEffect } from 'react';
|
|
2
2
|
|
|
3
3
|
const FOCUS_TIMEOUT = 50;
|
|
4
4
|
const useManageFocusOnTarget = ({
|
|
5
|
+
onKeyUp,
|
|
6
|
+
onBlur,
|
|
7
|
+
onClick,
|
|
5
8
|
targetRef,
|
|
6
9
|
targetClass
|
|
7
10
|
}) => {
|
|
@@ -13,44 +16,58 @@ const useManageFocusOnTarget = ({
|
|
|
13
16
|
setTarget(targetRef.current);
|
|
14
17
|
}
|
|
15
18
|
}, [targetRef]);
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
if (!hasTabIndex.current) {
|
|
24
|
-
shouldRemoveTabIndex.current = true;
|
|
25
|
-
target.setAttribute("tabIndex", "-1");
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
const removeTabIndex = () => {
|
|
29
|
-
if (!hasTabIndex.current && shouldRemoveTabIndex.current) {
|
|
30
|
-
target.removeAttribute("tabIndex");
|
|
31
|
-
}
|
|
32
|
-
};
|
|
33
|
-
const handleFocusOnTarget = () => {
|
|
34
|
-
shouldRemoveTabIndex.current = false;
|
|
35
|
-
target.classList.add(targetClass);
|
|
36
|
-
};
|
|
37
|
-
const handleBlurFromTarget = () => {
|
|
19
|
+
if (!target) {
|
|
20
|
+
return {};
|
|
21
|
+
}
|
|
22
|
+
const addTabIndex = () => {
|
|
23
|
+
const tabIndex = target.getAttribute("tabIndex");
|
|
24
|
+
hasTabIndex.current = tabIndex || tabIndex === "0";
|
|
25
|
+
if (!hasTabIndex.current) {
|
|
38
26
|
shouldRemoveTabIndex.current = true;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
27
|
+
target.setAttribute("tabIndex", "-1");
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const removeTabIndex = () => {
|
|
31
|
+
if (!hasTabIndex.current && shouldRemoveTabIndex.current) {
|
|
32
|
+
target.removeAttribute("tabIndex");
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
const handleFocusOnTarget = () => {
|
|
36
|
+
shouldRemoveTabIndex.current = false;
|
|
37
|
+
target.classList.add(targetClass);
|
|
38
|
+
};
|
|
39
|
+
const handleBlurFromTarget = () => {
|
|
40
|
+
shouldRemoveTabIndex.current = true;
|
|
41
|
+
removeTabIndex();
|
|
42
|
+
target.classList.remove(targetClass);
|
|
43
|
+
};
|
|
44
|
+
function moveToTarget() {
|
|
45
|
+
addTabIndex();
|
|
46
|
+
setTimeout(() => {
|
|
47
|
+
target == null ? void 0 : target.focus();
|
|
48
|
+
}, FOCUS_TIMEOUT);
|
|
49
|
+
target == null ? void 0 : target.addEventListener("focus", handleFocusOnTarget, { once: true });
|
|
50
|
+
target == null ? void 0 : target.addEventListener("blur", handleBlurFromTarget, { once: true });
|
|
51
|
+
}
|
|
52
|
+
const handleKeyUp = (event) => {
|
|
53
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
54
|
+
moveToTarget();
|
|
55
|
+
}
|
|
56
|
+
onKeyUp == null ? void 0 : onKeyUp(event);
|
|
57
|
+
};
|
|
58
|
+
const handleClick = (event) => {
|
|
59
|
+
moveToTarget();
|
|
60
|
+
onClick == null ? void 0 : onClick(event);
|
|
61
|
+
};
|
|
62
|
+
const handleBlur = (event) => {
|
|
63
|
+
setTimeout(removeTabIndex, FOCUS_TIMEOUT);
|
|
64
|
+
onBlur == null ? void 0 : onBlur(event);
|
|
65
|
+
};
|
|
66
|
+
return {
|
|
67
|
+
onBlur: handleBlur,
|
|
68
|
+
onClick: handleClick,
|
|
69
|
+
onKeyUp: handleKeyUp
|
|
70
|
+
};
|
|
54
71
|
};
|
|
55
72
|
|
|
56
73
|
export { useManageFocusOnTarget };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useManageFocusOnTarget.js","sources":["../src/skip-link/internal/useManageFocusOnTarget.ts"],"sourcesContent":["import { type RefObject
|
|
1
|
+
{"version":3,"file":"useManageFocusOnTarget.js","sources":["../src/skip-link/internal/useManageFocusOnTarget.ts"],"sourcesContent":["import {\n type FocusEventHandler,\n type KeyboardEventHandler,\n type MouseEventHandler,\n type RefObject,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nconst FOCUS_TIMEOUT = 50;\n\n// Props interface\ninterface ManageFocusOnTargetProps {\n onBlur?: FocusEventHandler;\n onClick?: MouseEventHandler;\n onKeyUp?: KeyboardEventHandler;\n targetRef: RefObject<HTMLElement> | undefined;\n targetClass: string;\n}\n\n// Result interface\ninterface ManageFocusOnTargetResult {\n onBlur?: FocusEventHandler<HTMLAnchorElement>;\n onClick?: MouseEventHandler<HTMLAnchorElement>;\n onKeyUp?: KeyboardEventHandler<HTMLAnchorElement>;\n}\nexport const useManageFocusOnTarget = ({\n onKeyUp,\n onBlur,\n onClick,\n targetRef,\n targetClass,\n}: ManageFocusOnTargetProps): ManageFocusOnTargetResult => {\n const [target, setTarget] = useState<HTMLElement>();\n\n const hasTabIndex = useRef<boolean | string>();\n const shouldRemoveTabIndex = useRef<boolean>();\n\n useEffect(() => {\n if (targetRef?.current) {\n setTarget(targetRef.current);\n }\n }, [targetRef]);\n\n if (!target) {\n return {};\n }\n\n const addTabIndex = () => {\n const tabIndex = target.getAttribute(\"tabIndex\");\n hasTabIndex.current = tabIndex || tabIndex === \"0\";\n\n if (!hasTabIndex.current) {\n shouldRemoveTabIndex.current = true;\n target.setAttribute(\"tabIndex\", \"-1\");\n }\n };\n\n const removeTabIndex = () => {\n if (!hasTabIndex.current && shouldRemoveTabIndex.current) {\n target.removeAttribute(\"tabIndex\");\n }\n };\n\n const handleFocusOnTarget = () => {\n shouldRemoveTabIndex.current = false;\n target.classList.add(targetClass);\n };\n\n const handleBlurFromTarget = () => {\n shouldRemoveTabIndex.current = true;\n removeTabIndex();\n target.classList.remove(targetClass);\n };\n\n function moveToTarget() {\n addTabIndex();\n setTimeout(() => {\n target?.focus();\n }, FOCUS_TIMEOUT);\n\n target?.addEventListener(\"focus\", handleFocusOnTarget, { once: true });\n target?.addEventListener(\"blur\", handleBlurFromTarget, { once: true });\n }\n\n const handleKeyUp: KeyboardEventHandler<HTMLAnchorElement> = (event) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n moveToTarget();\n }\n onKeyUp?.(event);\n };\n\n const handleClick: MouseEventHandler<HTMLAnchorElement> = (event) => {\n moveToTarget();\n onClick?.(event);\n };\n\n const handleBlur: FocusEventHandler<HTMLAnchorElement> = (event) => {\n setTimeout(removeTabIndex, FOCUS_TIMEOUT);\n onBlur?.(event);\n };\n\n return {\n onBlur: handleBlur,\n onClick: handleClick,\n onKeyUp: handleKeyUp,\n };\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var css_248z = ".saltStepConnector {\n grid-area: connector;\n\n transition-duration: inherit;\n transition-timing-function: inherit;\n transition-property: opacity, min-height;\n}\n\n.saltSteppedTracker-horizontal .saltStepConnector {\n position: absolute;\n transform: translateY(-100%);\n top: calc(var(--step-icon-size) / 2);\n left: calc(50% + calc(var(--step-icon-size) / 2 + var(--salt-spacing-100)));\n right: calc(-50% + calc(var(--step-icon-size) / 2 + var(--salt-spacing-100)));\n\n border-top-width: var(--salt-size-border-strong);\n border-top-style: var(--salt-track-borderStyle-incomplete);\n border-top-color: var(--salt-track-borderColor);\n}\n\n.saltSteppedTracker-horizontal .saltStep-stage-completed > .saltStepConnector,\n.saltSteppedTracker-horizontal .saltStep-stage-inprogress > .saltStepConnector {\n border-top-style: var(--salt-track-borderStyle-complete);\n}\n\n.saltSteppedTracker-vertical .saltStepConnector {\n min-height: var(--salt-size-base);\n align-self: stretch;\n justify-self: center;\n\n border-left-width: var(--salt-size-border-strong);\n border-left-style: var(--salt-track-borderStyle-incomplete);\n border-left-color: var(--salt-track-borderColor);\n}\n\n.saltSteppedTracker-vertical .saltStep-stage-completed > .saltStepConnector,\n.saltSteppedTracker-vertical .saltStep-stage-inprogress > .saltStepConnector {\n border-left-style: var(--salt-track-borderStyle-complete);\n}\n\n.saltStep-depth-0.saltStep:not(.saltStep-expanded):last-child > .saltStepConnector {\n opacity: 0;\n min-height: 0;\n}\n\n.saltStep-depth-0.saltStep-expanded:last-child .saltStep:not(.saltStep-expanded):last-child .saltStepConnector {\n opacity: 0;\n min-height: 0;\n}\n";
|
|
2
|
+
|
|
3
|
+
export { css_248z as default };
|
|
4
|
+
//# sourceMappingURL=Step.Connector.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Step.Connector.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { makePrefixer } from '@salt-ds/core';
|
|
3
|
+
import { useComponentCssInjection } from '@salt-ds/styles';
|
|
4
|
+
import { useWindow } from '@salt-ds/window';
|
|
5
|
+
import css_248z from './Step.Connector.css.js';
|
|
6
|
+
|
|
7
|
+
const withBaseName = makePrefixer("saltStepConnector");
|
|
8
|
+
function StepConnector() {
|
|
9
|
+
const targetWindow = useWindow();
|
|
10
|
+
useComponentCssInjection({
|
|
11
|
+
testId: "salt-step-connector",
|
|
12
|
+
css: css_248z,
|
|
13
|
+
window: targetWindow
|
|
14
|
+
});
|
|
15
|
+
return /* @__PURE__ */ jsx("div", { "aria-hidden": true, className: withBaseName() });
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { StepConnector };
|
|
19
|
+
//# sourceMappingURL=Step.Connector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Step.Connector.js","sources":["../src/stepped-tracker/Step.Connector.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\n\nimport stepConnectorCSS from \"./Step.Connector.css\";\n\nconst withBaseName = makePrefixer(\"saltStepConnector\");\n\nexport function StepConnector() {\n const targetWindow = useWindow();\n\n useComponentCssInjection({\n testId: \"salt-step-connector\",\n css: stepConnectorCSS,\n window: targetWindow,\n });\n\n return <div aria-hidden className={withBaseName()} />;\n}\n"],"names":["stepConnectorCSS"],"mappings":";;;;;;AAMA,MAAM,YAAA,GAAe,aAAa,mBAAmB,CAAA;AAE9C,SAAS,aAAgB,GAAA;AAC9B,EAAA,MAAM,eAAe,SAAU,EAAA;AAE/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,qBAAA;AAAA,IACR,GAAK,EAAAA,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,2BAAQ,KAAI,EAAA,EAAA,aAAA,EAAW,IAAC,EAAA,SAAA,EAAW,cAAgB,EAAA,CAAA;AACrD;;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var css_248z = ".saltStepDescription {\n grid-area: description;\n}\n\n.saltSteppedTracker-vertical .saltStepDescription {\n padding-bottom: var(--salt-spacing-300);\n padding-left: calc((var(--step-depth)) * var(--salt-spacing-100));\n}\n\n.saltStep-status-warning > .saltStepDescription {\n color: var(--salt-status-warning-foreground-informative);\n}\n\n.saltStep-status-error > .saltStepDescription {\n color: var(--salt-status-error-foreground-informative);\n}\n";
|
|
2
|
+
|
|
3
|
+
export { css_248z as default };
|
|
4
|
+
//# sourceMappingURL=Step.Description.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Step.Description.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { makePrefixer, Text } from '@salt-ds/core';
|
|
3
|
+
import { useComponentCssInjection } from '@salt-ds/styles';
|
|
4
|
+
import { useWindow } from '@salt-ds/window';
|
|
5
|
+
import clsx from 'clsx';
|
|
6
|
+
import css_248z from './Step.Description.css.js';
|
|
7
|
+
|
|
8
|
+
const withBaseName = makePrefixer("saltStepDescription");
|
|
9
|
+
function StepDescription({
|
|
10
|
+
id,
|
|
11
|
+
className,
|
|
12
|
+
styleAs = "label",
|
|
13
|
+
...props
|
|
14
|
+
}) {
|
|
15
|
+
const targetWindow = useWindow();
|
|
16
|
+
useComponentCssInjection({
|
|
17
|
+
testId: "salt-step-description",
|
|
18
|
+
css: css_248z,
|
|
19
|
+
window: targetWindow
|
|
20
|
+
});
|
|
21
|
+
return /* @__PURE__ */ jsx(
|
|
22
|
+
Text,
|
|
23
|
+
{
|
|
24
|
+
id,
|
|
25
|
+
styleAs: "label",
|
|
26
|
+
className: clsx(withBaseName(), className),
|
|
27
|
+
...props
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export { StepDescription };
|
|
33
|
+
//# sourceMappingURL=Step.Description.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Step.Description.js","sources":["../src/stepped-tracker/Step.Description.tsx"],"sourcesContent":["import { Text, type TextProps, makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport clsx from \"clsx\";\n\nimport stepDescriptionCSS from \"./Step.Description.css\";\n\nexport interface StepDescriptionProps extends TextProps<\"div\"> {}\n\nconst withBaseName = makePrefixer(\"saltStepDescription\");\n\nexport function StepDescription({\n id,\n className,\n styleAs = \"label\",\n ...props\n}: StepDescriptionProps) {\n const targetWindow = useWindow();\n\n useComponentCssInjection({\n testId: \"salt-step-description\",\n css: stepDescriptionCSS,\n window: targetWindow,\n });\n\n return (\n <Text\n id={id}\n styleAs=\"label\"\n className={clsx(withBaseName(), className)}\n {...props}\n />\n );\n}\n"],"names":["stepDescriptionCSS"],"mappings":";;;;;;;AASA,MAAM,YAAA,GAAe,aAAa,qBAAqB,CAAA;AAEhD,SAAS,eAAgB,CAAA;AAAA,EAC9B,EAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAU,GAAA,OAAA;AAAA,EACV,GAAG;AACL,CAAyB,EAAA;AACvB,EAAA,MAAM,eAAe,SAAU,EAAA;AAE/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,uBAAA;AAAA,IACR,GAAK,EAAAA,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EACE,uBAAA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,OAAQ,EAAA,OAAA;AAAA,MACR,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACxC,GAAG;AAAA;AAAA,GACN;AAEJ;;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var css_248z = ".saltStepExpandTrigger {\n grid-area: expand;\n}\n\n.saltButton.saltStepExpandTrigger:focus-visible {\n outline-offset: calc(-1 * var(--salt-focused-outlineWidth));\n}\n";
|
|
2
|
+
|
|
3
|
+
export { css_248z as default };
|
|
4
|
+
//# sourceMappingURL=Step.ExpandTrigger.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Step.ExpandTrigger.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { makePrefixer, useIcon, Button } from '@salt-ds/core';
|
|
3
|
+
import { useComponentCssInjection } from '@salt-ds/styles';
|
|
4
|
+
import { useWindow } from '@salt-ds/window';
|
|
5
|
+
import clsx from 'clsx';
|
|
6
|
+
import css_248z from './Step.ExpandTrigger.css.js';
|
|
7
|
+
|
|
8
|
+
const withBaseName = makePrefixer("saltStepExpandTrigger");
|
|
9
|
+
function StepExpandTrigger({
|
|
10
|
+
id,
|
|
11
|
+
expanded,
|
|
12
|
+
className,
|
|
13
|
+
...props
|
|
14
|
+
}) {
|
|
15
|
+
const { CollapseIcon, ExpandIcon } = useIcon();
|
|
16
|
+
const targetWindow = useWindow();
|
|
17
|
+
useComponentCssInjection({
|
|
18
|
+
testId: "salt-step-expand-trigger",
|
|
19
|
+
css: css_248z,
|
|
20
|
+
window: targetWindow
|
|
21
|
+
});
|
|
22
|
+
return /* @__PURE__ */ jsx(
|
|
23
|
+
Button,
|
|
24
|
+
{
|
|
25
|
+
id,
|
|
26
|
+
appearance: "transparent",
|
|
27
|
+
sentiment: "neutral",
|
|
28
|
+
className: clsx(withBaseName(), className),
|
|
29
|
+
...props,
|
|
30
|
+
children: expanded ? /* @__PURE__ */ jsx(CollapseIcon, { "aria-hidden": true }) : /* @__PURE__ */ jsx(ExpandIcon, { "aria-hidden": true })
|
|
31
|
+
}
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export { StepExpandTrigger };
|
|
36
|
+
//# sourceMappingURL=Step.ExpandTrigger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Step.ExpandTrigger.js","sources":["../src/stepped-tracker/Step.ExpandTrigger.tsx"],"sourcesContent":["import { Button, type ButtonProps } from \"@salt-ds/core\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { useIcon } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport clsx from \"clsx\";\n\nimport stepExpandTriggerCSS from \"./Step.ExpandTrigger.css\";\n\nexport interface StepExpandTriggerProps extends ButtonProps {\n expanded: boolean;\n}\n\nconst withBaseName = makePrefixer(\"saltStepExpandTrigger\");\n\nexport function StepExpandTrigger({\n id,\n expanded,\n className,\n ...props\n}: StepExpandTriggerProps) {\n const { CollapseIcon, ExpandIcon } = useIcon();\n const targetWindow = useWindow();\n\n useComponentCssInjection({\n testId: \"salt-step-expand-trigger\",\n css: stepExpandTriggerCSS,\n window: targetWindow,\n });\n\n return (\n <Button\n id={id}\n appearance=\"transparent\"\n sentiment=\"neutral\"\n className={clsx(withBaseName(), className)}\n {...props}\n >\n {expanded ? <CollapseIcon aria-hidden /> : <ExpandIcon aria-hidden />}\n </Button>\n );\n}\n"],"names":["stepExpandTriggerCSS"],"mappings":";;;;;;;AAaA,MAAM,YAAA,GAAe,aAAa,uBAAuB,CAAA;AAElD,SAAS,iBAAkB,CAAA;AAAA,EAChC,EAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAA2B,EAAA;AACzB,EAAA,MAAM,EAAE,YAAA,EAAc,UAAW,EAAA,GAAI,OAAQ,EAAA;AAC7C,EAAA,MAAM,eAAe,SAAU,EAAA;AAE/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,0BAAA;AAAA,IACR,GAAK,EAAAA,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EACE,uBAAA,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,UAAW,EAAA,aAAA;AAAA,MACX,SAAU,EAAA,SAAA;AAAA,MACV,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACxC,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA,QAAA,uBAAY,YAAa,EAAA,EAAA,aAAA,EAAW,MAAC,CAAK,mBAAA,GAAA,CAAC,UAAW,EAAA,EAAA,aAAA,EAAW,IAAC,EAAA;AAAA;AAAA,GACrE;AAEJ;;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var css_248z = ".saltStepIcon {\n grid-area: icon;\n\n display: flex;\n justify-content: center;\n align-items: center;\n justify-self: center;\n}\n\n.saltSteppedTracker-vertical .saltStepIcon {\n height: var(--salt-size-base);\n}\n\n.saltStep-stage-pending > .saltStepIcon {\n --saltIcon-color: var(--salt-status-static-foreground);\n}\n\n.saltStep-stage-locked > .saltStepIcon {\n --saltIcon-color: var(--salt-status-static-foreground);\n}\n\n.saltStep-stage-inprogress > .saltStepIcon {\n --saltIcon-color: var(--salt-status-info-foreground-decorative);\n}\n\n.saltStep-stage-active > .saltStepIcon {\n --saltIcon-color: var(--salt-status-info-foreground-decorative);\n}\n\n.saltStep-stage-completed > .saltStepIcon {\n --saltIcon-color: var(--salt-status-success-foreground-decorative);\n}\n\n.saltStep-status-warning > .saltStepIcon {\n --saltIcon-color: var(--salt-status-warning-foreground-decorative);\n}\n\n.saltStep-status-error > .saltStepIcon {\n --saltIcon-color: var(--salt-status-error-foreground-decorative);\n}\n";
|
|
2
|
+
|
|
3
|
+
export { css_248z as default };
|
|
4
|
+
//# sourceMappingURL=Step.Icon.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Step.Icon.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { makePrefixer, useIcon } from '@salt-ds/core';
|
|
3
|
+
import { useComponentCssInjection } from '@salt-ds/styles';
|
|
4
|
+
import { useWindow } from '@salt-ds/window';
|
|
5
|
+
import clsx from 'clsx';
|
|
6
|
+
import { useMemo } from 'react';
|
|
7
|
+
import css_248z from './Step.Icon.css.js';
|
|
8
|
+
|
|
9
|
+
const withBaseName = makePrefixer("saltStepIcon");
|
|
10
|
+
function StepIcon({
|
|
11
|
+
status,
|
|
12
|
+
stage,
|
|
13
|
+
size,
|
|
14
|
+
sizeMultiplier = size || 1.5,
|
|
15
|
+
className,
|
|
16
|
+
...props
|
|
17
|
+
}) {
|
|
18
|
+
const targetWindow = useWindow();
|
|
19
|
+
const IconComponent = useStepIcon({ stage, status });
|
|
20
|
+
useComponentCssInjection({
|
|
21
|
+
testId: "salt-step-icon",
|
|
22
|
+
css: css_248z,
|
|
23
|
+
window: targetWindow
|
|
24
|
+
});
|
|
25
|
+
return /* @__PURE__ */ jsx(
|
|
26
|
+
IconComponent,
|
|
27
|
+
{
|
|
28
|
+
size: sizeMultiplier,
|
|
29
|
+
className: clsx(withBaseName(), className),
|
|
30
|
+
...props
|
|
31
|
+
}
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
function useStepIcon({
|
|
35
|
+
stage,
|
|
36
|
+
status
|
|
37
|
+
}) {
|
|
38
|
+
const icons = useIcon();
|
|
39
|
+
const stepIconMap = useMemo(
|
|
40
|
+
() => ({
|
|
41
|
+
error: icons.ErrorIcon,
|
|
42
|
+
warning: icons.WarningIcon,
|
|
43
|
+
active: icons.ActiveIcon,
|
|
44
|
+
completed: icons.CompletedIcon,
|
|
45
|
+
pending: icons.PendingIcon,
|
|
46
|
+
inprogress: icons.InProgressIcon,
|
|
47
|
+
locked: icons.LockedIcon
|
|
48
|
+
}),
|
|
49
|
+
[icons]
|
|
50
|
+
);
|
|
51
|
+
return stepIconMap[status || stage];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export { StepIcon };
|
|
55
|
+
//# sourceMappingURL=Step.Icon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Step.Icon.js","sources":["../src/stepped-tracker/Step.Icon.tsx"],"sourcesContent":["import { makePrefixer, useIcon } from \"@salt-ds/core\";\nimport type { IconProps } from \"@salt-ds/icons\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport clsx from \"clsx\";\nimport { useMemo } from \"react\";\n\nimport stepIconCSS from \"./Step.Icon.css\";\n\nimport type { StepStage, StepStatus } from \"./Step.types\";\n\nexport interface StepIconProps extends IconProps {\n stage: StepStage;\n status?: StepStatus;\n sizeMultiplier?: IconProps[\"size\"];\n}\n\nconst withBaseName = makePrefixer(\"saltStepIcon\");\n\nexport function StepIcon({\n status,\n stage,\n size,\n sizeMultiplier = size || 1.5,\n className,\n ...props\n}: StepIconProps) {\n const targetWindow = useWindow();\n const IconComponent = useStepIcon({ stage, status });\n\n useComponentCssInjection({\n testId: \"salt-step-icon\",\n css: stepIconCSS,\n window: targetWindow,\n });\n\n return (\n <IconComponent\n size={sizeMultiplier}\n className={clsx(withBaseName(), className)}\n {...props}\n />\n );\n}\n\nfunction useStepIcon({\n stage,\n status,\n}: Pick<StepIconProps, \"stage\" | \"status\">) {\n const icons = useIcon();\n\n const stepIconMap = useMemo(\n () => ({\n error: icons.ErrorIcon,\n warning: icons.WarningIcon,\n active: icons.ActiveIcon,\n completed: icons.CompletedIcon,\n pending: icons.PendingIcon,\n inprogress: icons.InProgressIcon,\n locked: icons.LockedIcon,\n }),\n [icons],\n );\n\n return stepIconMap[status || stage];\n}\n"],"names":["stepIconCSS"],"mappings":";;;;;;;;AAiBA,MAAM,YAAA,GAAe,aAAa,cAAc,CAAA;AAEzC,SAAS,QAAS,CAAA;AAAA,EACvB,MAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,iBAAiB,IAAQ,IAAA,GAAA;AAAA,EACzB,SAAA;AAAA,EACA,GAAG;AACL,CAAkB,EAAA;AAChB,EAAA,MAAM,eAAe,SAAU,EAAA;AAC/B,EAAA,MAAM,aAAgB,GAAA,WAAA,CAAY,EAAE,KAAA,EAAO,QAAQ,CAAA;AAEnD,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,gBAAA;AAAA,IACR,GAAK,EAAAA,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EACE,uBAAA,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACC,IAAM,EAAA,cAAA;AAAA,MACN,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACxC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,WAAY,CAAA;AAAA,EACnB,KAAA;AAAA,EACA;AACF,CAA4C,EAAA;AAC1C,EAAA,MAAM,QAAQ,OAAQ,EAAA;AAEtB,EAAA,MAAM,WAAc,GAAA,OAAA;AAAA,IAClB,OAAO;AAAA,MACL,OAAO,KAAM,CAAA,SAAA;AAAA,MACb,SAAS,KAAM,CAAA,WAAA;AAAA,MACf,QAAQ,KAAM,CAAA,UAAA;AAAA,MACd,WAAW,KAAM,CAAA,aAAA;AAAA,MACjB,SAAS,KAAM,CAAA,WAAA;AAAA,MACf,YAAY,KAAM,CAAA,cAAA;AAAA,MAClB,QAAQ,KAAM,CAAA;AAAA,KAChB,CAAA;AAAA,IACA,CAAC,KAAK;AAAA,GACR;AAEA,EAAO,OAAA,WAAA,CAAY,UAAU,KAAK,CAAA;AACpC;;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var css_248z = ".saltStepLabel {\n grid-area: label;\n}\n\n.saltSteppedTracker-horizontal .saltStepLabel {\n margin-top: var(--salt-spacing-50);\n}\n\n.saltSteppedTracker-vertical .saltStepLabel {\n padding-top: calc((var(--salt-size-base) - var(--salt-text-label-lineHeight)) / 2);\n padding-bottom: calc((var(--salt-size-base) - var(--salt-text-label-lineHeight)) / 2);\n padding-left: calc((var(--step-depth)) * var(--salt-spacing-100));\n}\n\n.saltStep-depth-0 > .saltText.saltStepLabel {\n font-weight: var(--salt-text-fontWeight-strong);\n}\n";
|
|
2
|
+
|
|
3
|
+
export { css_248z as default };
|
|
4
|
+
//# sourceMappingURL=Step.Label.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Step.Label.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { makePrefixer, Text } from '@salt-ds/core';
|
|
3
|
+
import { useComponentCssInjection } from '@salt-ds/styles';
|
|
4
|
+
import { useWindow } from '@salt-ds/window';
|
|
5
|
+
import clsx from 'clsx';
|
|
6
|
+
import css_248z from './Step.Label.css.js';
|
|
7
|
+
|
|
8
|
+
const withBaseName = makePrefixer("saltStepLabel");
|
|
9
|
+
function StepLabel({
|
|
10
|
+
id,
|
|
11
|
+
className,
|
|
12
|
+
styleAs = "label",
|
|
13
|
+
children,
|
|
14
|
+
...props
|
|
15
|
+
}) {
|
|
16
|
+
const targetWindow = useWindow();
|
|
17
|
+
useComponentCssInjection({
|
|
18
|
+
testId: "salt-step-label",
|
|
19
|
+
css: css_248z,
|
|
20
|
+
window: targetWindow
|
|
21
|
+
});
|
|
22
|
+
return /* @__PURE__ */ jsx(
|
|
23
|
+
Text,
|
|
24
|
+
{
|
|
25
|
+
id,
|
|
26
|
+
styleAs: "label",
|
|
27
|
+
className: clsx(withBaseName(), className),
|
|
28
|
+
...props,
|
|
29
|
+
children
|
|
30
|
+
}
|
|
31
|
+
);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export { StepLabel };
|
|
35
|
+
//# sourceMappingURL=Step.Label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Step.Label.js","sources":["../src/stepped-tracker/Step.Label.tsx"],"sourcesContent":["import { Text, type TextProps, makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport clsx from \"clsx\";\n\nimport stepLabelCSS from \"./Step.Label.css\";\n\nexport interface StepLabelProps extends TextProps<\"div\"> {}\n\nconst withBaseName = makePrefixer(\"saltStepLabel\");\n\nexport function StepLabel({\n id,\n className,\n styleAs = \"label\",\n children,\n ...props\n}: StepLabelProps) {\n const targetWindow = useWindow();\n\n useComponentCssInjection({\n testId: \"salt-step-label\",\n css: stepLabelCSS,\n window: targetWindow,\n });\n\n return (\n <Text\n id={id}\n styleAs=\"label\"\n className={clsx(withBaseName(), className)}\n {...props}\n >\n {children}\n </Text>\n );\n}\n"],"names":["stepLabelCSS"],"mappings":";;;;;;;AASA,MAAM,YAAA,GAAe,aAAa,eAAe,CAAA;AAE1C,SAAS,SAAU,CAAA;AAAA,EACxB,EAAA;AAAA,EACA,SAAA;AAAA,EACA,OAAU,GAAA,OAAA;AAAA,EACV,QAAA;AAAA,EACA,GAAG;AACL,CAAmB,EAAA;AACjB,EAAA,MAAM,eAAe,SAAU,EAAA;AAE/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,iBAAA;AAAA,IACR,GAAK,EAAAA,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EACE,uBAAA,GAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,OAAQ,EAAA,OAAA;AAAA,MACR,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,SAAS,CAAA;AAAA,MACxC,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Step.SROnly.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { makePrefixer } from '@salt-ds/core';
|
|
3
|
+
import { useComponentCssInjection } from '@salt-ds/styles';
|
|
4
|
+
import { useWindow } from '@salt-ds/window';
|
|
5
|
+
import css_248z from './Step.SROnly.css.js';
|
|
6
|
+
|
|
7
|
+
const withBaseName = makePrefixer("saltStepSROnly");
|
|
8
|
+
function StepSROnly({ children, ...props }) {
|
|
9
|
+
const targetWindow = useWindow();
|
|
10
|
+
useComponentCssInjection({
|
|
11
|
+
testId: "salt-step-sr-only",
|
|
12
|
+
css: css_248z,
|
|
13
|
+
window: targetWindow
|
|
14
|
+
});
|
|
15
|
+
return /* @__PURE__ */ jsx("div", { className: withBaseName(), ...props, children });
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { StepSROnly };
|
|
19
|
+
//# sourceMappingURL=Step.SROnly.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Step.SROnly.js","sources":["../src/stepped-tracker/Step.SROnly.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useComponentCssInjection } from \"@salt-ds/styles\";\nimport { useWindow } from \"@salt-ds/window\";\nimport type { ComponentPropsWithoutRef, ReactNode } from \"react\";\n\nimport stepSROnlyCSS from \"./Step.SROnly.css\";\n\nconst withBaseName = makePrefixer(\"saltStepSROnly\");\n\nexport interface StepSROnlyProps extends ComponentPropsWithoutRef<\"div\"> {\n children?: ReactNode;\n}\n\nexport function StepSROnly({ children, ...props }: StepSROnlyProps) {\n const targetWindow = useWindow();\n\n useComponentCssInjection({\n testId: \"salt-step-sr-only\",\n css: stepSROnlyCSS,\n window: targetWindow,\n });\n\n return (\n <div className={withBaseName()} {...props}>\n {children}\n </div>\n );\n}\n"],"names":["stepSROnlyCSS"],"mappings":";;;;;;AAOA,MAAM,YAAA,GAAe,aAAa,gBAAgB,CAAA;AAM3C,SAAS,UAAW,CAAA,EAAE,QAAU,EAAA,GAAG,OAA0B,EAAA;AAClE,EAAA,MAAM,eAAe,SAAU,EAAA;AAE/B,EAAyB,wBAAA,CAAA;AAAA,IACvB,MAAQ,EAAA,mBAAA;AAAA,IACR,GAAK,EAAAA,QAAA;AAAA,IACL,MAAQ,EAAA;AAAA,GACT,CAAA;AAED,EAAA,2BACG,KAAI,EAAA,EAAA,SAAA,EAAW,cAAiB,EAAA,GAAG,OACjC,QACH,EAAA,CAAA;AAEJ;;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var css_248z = ".saltStep {\n /* Copy of size calculations of <Icon /> */\n --step-icon-base-size: var(--salt-size-icon, 12px);\n --step-icon-size-multiplier: var(--saltIcon-size-multiplier, 1.5);\n --step-icon-size: calc(var(--step-icon-base-size) * var(--step-icon-size-multiplier));\n --step-depth: var(--saltStep-depth, 0);\n}\n\n.saltSteppedTracker-horizontal .saltStep {\n position: relative;\n display: grid;\n grid-template-columns: 1fr;\n grid-template-rows: repeat(3, min-content);\n grid-template-areas:\n \"icon\"\n \"label\"\n \"description\";\n justify-items: center;\n align-items: center;\n text-align: center;\n flex: 1;\n padding: 0 var(--salt-spacing-25);\n}\n\n.saltSteppedTracker-vertical .saltStep {\n display: grid;\n grid-template-columns: var(--step-icon-size) 1fr min-content;\n grid-template-areas:\n \"icon label expand\"\n \"connector description .\"\n \"stepped-tracker stepped-tracker stepped-tracker\";\n justify-items: start;\n align-items: start;\n gap: 0 var(--salt-spacing-100);\n width: 100%;\n transition-duration: inherit;\n transition-timing-function: inherit;\n transition-property: grid-template-rows;\n}\n\n.saltSteppedTracker-vertical .saltStep-terminal {\n grid-template-areas:\n \"icon label label\"\n \"connector description description\"\n \"stepped-tracker stepped-tracker stepped-tracker\";\n}\n\n.saltSteppedTracker-vertical > .saltStep.saltStep-expanded {\n grid-template-rows:\n var(--salt-size-base)\n min-content\n 1fr;\n}\n\n.saltSteppedTracker-vertical > .saltStep.saltStep-collapsed {\n grid-template-rows:\n var(--salt-size-base)\n min-content\n 0fr;\n}\n";
|
|
2
|
+
|
|
3
|
+
export { css_248z as default };
|
|
4
|
+
//# sourceMappingURL=Step.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Step.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import { makePrefixer, useId, useControlled } from '@salt-ds/core';
|
|
3
|
+
import { useComponentCssInjection } from '@salt-ds/styles';
|
|
4
|
+
import { useWindow } from '@salt-ds/window';
|
|
5
|
+
import clsx from 'clsx';
|
|
6
|
+
import { useContext, useEffect } from 'react';
|
|
7
|
+
import { StepConnector } from './Step.Connector.js';
|
|
8
|
+
import { StepDescription } from './Step.Description.js';
|
|
9
|
+
import { StepExpandTrigger } from './Step.ExpandTrigger.js';
|
|
10
|
+
import { StepIcon } from './Step.Icon.js';
|
|
11
|
+
import { StepLabel } from './Step.Label.js';
|
|
12
|
+
import { StepSROnly } from './Step.SROnly.js';
|
|
13
|
+
import css_248z from './Step.css.js';
|
|
14
|
+
import { SteppedTracker } from './SteppedTracker.js';
|
|
15
|
+
import { DepthContext } from './SteppedTracker.Provider.js';
|
|
16
|
+
|
|
17
|
+
const withBaseName = makePrefixer("saltStep");
|
|
18
|
+
function Step({
|
|
19
|
+
id: idProp,
|
|
20
|
+
label,
|
|
21
|
+
description,
|
|
22
|
+
status,
|
|
23
|
+
stage = "pending",
|
|
24
|
+
expanded: expandedProp,
|
|
25
|
+
defaultExpanded,
|
|
26
|
+
onToggle,
|
|
27
|
+
className,
|
|
28
|
+
style,
|
|
29
|
+
substeps,
|
|
30
|
+
children,
|
|
31
|
+
...props
|
|
32
|
+
}) {
|
|
33
|
+
const id = useId(idProp);
|
|
34
|
+
const targetWindow = useWindow();
|
|
35
|
+
const depth = useContext(DepthContext);
|
|
36
|
+
const [expanded, setExpanded] = useControlled({
|
|
37
|
+
name: "Step",
|
|
38
|
+
state: "expanded",
|
|
39
|
+
controlled: expandedProp,
|
|
40
|
+
default: Boolean(defaultExpanded)
|
|
41
|
+
});
|
|
42
|
+
useComponentCssInjection({
|
|
43
|
+
testId: "salt-step",
|
|
44
|
+
css: css_248z,
|
|
45
|
+
window: targetWindow
|
|
46
|
+
});
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (process.env.NODE_ENV !== "production") {
|
|
49
|
+
if (depth === -1) {
|
|
50
|
+
console.warn(
|
|
51
|
+
"<Step /> should be used within a <SteppedTracker /> component!"
|
|
52
|
+
);
|
|
53
|
+
}
|
|
54
|
+
if (depth > 2) {
|
|
55
|
+
console.warn("<Step /> should not be nested more than 2 levels deep!");
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}, [depth]);
|
|
59
|
+
const ariaCurrent = stage === "active" ? "step" : void 0;
|
|
60
|
+
const iconSizeMultiplier = depth === 0 ? 1.5 : 1;
|
|
61
|
+
const hasNestedSteps = !!children || !!substeps;
|
|
62
|
+
const state = status || stage;
|
|
63
|
+
const labelId = `${id}-label`;
|
|
64
|
+
const descriptionId = `${id}-description`;
|
|
65
|
+
const expandTriggerId = `${id}-expand-trigger`;
|
|
66
|
+
const nestedSteppedTrackerId = `${id}-nested-stepped-tracker`;
|
|
67
|
+
const srOnly = {
|
|
68
|
+
stateId: `${id}-sr-only-state`,
|
|
69
|
+
stateText: state !== "active" ? state : void 0,
|
|
70
|
+
substepsId: `${id}-sr-only-substeps`,
|
|
71
|
+
substepsText: "substeps",
|
|
72
|
+
toggleSubstepsId: `${id}-sr-only-toggle-substeps`,
|
|
73
|
+
toggleSubstepsText: "toggle substeps"
|
|
74
|
+
};
|
|
75
|
+
return /* @__PURE__ */ jsxs(
|
|
76
|
+
"li",
|
|
77
|
+
{
|
|
78
|
+
id,
|
|
79
|
+
"data-stage": stage,
|
|
80
|
+
"data-status": status,
|
|
81
|
+
"data-depth": depth,
|
|
82
|
+
"aria-current": ariaCurrent,
|
|
83
|
+
className: clsx(
|
|
84
|
+
withBaseName(),
|
|
85
|
+
withBaseName(`stage-${stage}`),
|
|
86
|
+
withBaseName(`depth-${depth}`),
|
|
87
|
+
status && withBaseName(`status-${status}`),
|
|
88
|
+
!hasNestedSteps && withBaseName("terminal"),
|
|
89
|
+
hasNestedSteps && expanded && withBaseName("expanded"),
|
|
90
|
+
hasNestedSteps && !expanded && withBaseName("collapsed"),
|
|
91
|
+
className
|
|
92
|
+
),
|
|
93
|
+
style: {
|
|
94
|
+
"--saltStep-depth": depth,
|
|
95
|
+
...style
|
|
96
|
+
},
|
|
97
|
+
...props,
|
|
98
|
+
children: [
|
|
99
|
+
/* @__PURE__ */ jsxs(StepSROnly, { children: [
|
|
100
|
+
label,
|
|
101
|
+
" ",
|
|
102
|
+
description,
|
|
103
|
+
" ",
|
|
104
|
+
srOnly.stateText
|
|
105
|
+
] }),
|
|
106
|
+
/* @__PURE__ */ jsx(StepSROnly, { id: srOnly.toggleSubstepsId, "aria-hidden": true, children: srOnly.toggleSubstepsText }),
|
|
107
|
+
/* @__PURE__ */ jsx(StepSROnly, { id: srOnly.substepsId, "aria-hidden": true, children: srOnly.substepsText }),
|
|
108
|
+
/* @__PURE__ */ jsx(StepSROnly, { id: srOnly.stateId, "aria-hidden": true, children: srOnly.stateText }),
|
|
109
|
+
/* @__PURE__ */ jsx(StepConnector, {}),
|
|
110
|
+
/* @__PURE__ */ jsx(
|
|
111
|
+
StepIcon,
|
|
112
|
+
{
|
|
113
|
+
stage,
|
|
114
|
+
status,
|
|
115
|
+
sizeMultiplier: iconSizeMultiplier,
|
|
116
|
+
"aria-hidden": true
|
|
117
|
+
}
|
|
118
|
+
),
|
|
119
|
+
label && /* @__PURE__ */ jsx(StepLabel, { id: labelId, "aria-hidden": true, children: label }),
|
|
120
|
+
description && /* @__PURE__ */ jsx(StepDescription, { id: descriptionId, "aria-hidden": true, children: description }),
|
|
121
|
+
hasNestedSteps && /* @__PURE__ */ jsx(
|
|
122
|
+
StepExpandTrigger,
|
|
123
|
+
{
|
|
124
|
+
id: expandTriggerId,
|
|
125
|
+
"aria-expanded": expanded,
|
|
126
|
+
"aria-controls": nestedSteppedTrackerId,
|
|
127
|
+
"aria-labelledby": [
|
|
128
|
+
labelId,
|
|
129
|
+
descriptionId,
|
|
130
|
+
srOnly.stateId,
|
|
131
|
+
srOnly.toggleSubstepsId
|
|
132
|
+
].join(" "),
|
|
133
|
+
expanded,
|
|
134
|
+
onClick: (event) => {
|
|
135
|
+
onToggle == null ? void 0 : onToggle(event);
|
|
136
|
+
setExpanded(!expanded);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
),
|
|
140
|
+
hasNestedSteps && /* @__PURE__ */ jsxs(
|
|
141
|
+
SteppedTracker,
|
|
142
|
+
{
|
|
143
|
+
id: nestedSteppedTrackerId,
|
|
144
|
+
"aria-labelledby": [labelId, srOnly.substepsId].join(" "),
|
|
145
|
+
"aria-hidden": !expanded,
|
|
146
|
+
hidden: !expanded,
|
|
147
|
+
children: [
|
|
148
|
+
children,
|
|
149
|
+
substeps == null ? void 0 : substeps.map((step) => /* @__PURE__ */ jsx(Step, { ...step }, step.id))
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
)
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export { Step };
|
|
159
|
+
//# sourceMappingURL=Step.js.map
|