@salt-ds/core 1.53.0 → 1.54.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/css/salt-core.css +47 -45
- package/dist-cjs/avatar/Avatar.css.js +1 -1
- package/dist-cjs/badge/Badge.css.js +1 -1
- package/dist-cjs/combo-box/ComboBox.js +2 -1
- package/dist-cjs/combo-box/ComboBox.js.map +1 -1
- package/dist-cjs/index.js +2 -0
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/menu/MenuBase.js +5 -2
- package/dist-cjs/menu/MenuBase.js.map +1 -1
- package/dist-cjs/menu/MenuContext.js +3 -1
- package/dist-cjs/menu/MenuContext.js.map +1 -1
- package/dist-cjs/menu/MenuItem.js +5 -0
- package/dist-cjs/menu/MenuItem.js.map +1 -1
- package/dist-cjs/multiline-input/MultilineInput.js +2 -1
- package/dist-cjs/multiline-input/MultilineInput.js.map +1 -1
- package/dist-cjs/number-input/NumberInput.js +7 -7
- package/dist-cjs/number-input/NumberInput.js.map +1 -1
- package/dist-cjs/number-input/internal/useLongPressPointerAction.js +63 -0
- package/dist-cjs/number-input/internal/useLongPressPointerAction.js.map +1 -0
- package/dist-cjs/pill/Pill.js +72 -9
- package/dist-cjs/pill/Pill.js.map +1 -1
- package/dist-cjs/pill/PillCheckIcon.css.js +6 -0
- package/dist-cjs/pill/PillCheckIcon.css.js.map +1 -0
- package/dist-cjs/pill/PillCheckIcon.js +48 -0
- package/dist-cjs/pill/PillCheckIcon.js.map +1 -0
- package/dist-cjs/pill/PillGroup.css.js +6 -0
- package/dist-cjs/pill/PillGroup.css.js.map +1 -0
- package/dist-cjs/pill/PillGroup.js +83 -0
- package/dist-cjs/pill/PillGroup.js.map +1 -0
- package/dist-cjs/pill/PillGroupContext.js +27 -0
- package/dist-cjs/pill/PillGroupContext.js.map +1 -0
- package/dist-cjs/pill-input/PillInput.js +1 -0
- package/dist-cjs/pill-input/PillInput.js.map +1 -1
- package/dist-cjs/slider/internal/useRangeSliderThumb.js +14 -5
- package/dist-cjs/slider/internal/useRangeSliderThumb.js.map +1 -1
- package/dist-cjs/slider/internal/useSliderThumb.js +14 -5
- package/dist-cjs/slider/internal/useSliderThumb.js.map +1 -1
- package/dist-cjs/tag/Tag.css.js +1 -1
- package/dist-cjs/toggle-button/ToggleButton.css.js +1 -1
- package/dist-es/avatar/Avatar.css.js +1 -1
- package/dist-es/badge/Badge.css.js +1 -1
- package/dist-es/combo-box/ComboBox.js +3 -2
- package/dist-es/combo-box/ComboBox.js.map +1 -1
- package/dist-es/index.js +1 -0
- package/dist-es/index.js.map +1 -1
- package/dist-es/menu/MenuBase.js +5 -2
- package/dist-es/menu/MenuBase.js.map +1 -1
- package/dist-es/menu/MenuContext.js +3 -1
- package/dist-es/menu/MenuContext.js.map +1 -1
- package/dist-es/menu/MenuItem.js +6 -1
- package/dist-es/menu/MenuItem.js.map +1 -1
- package/dist-es/multiline-input/MultilineInput.js +3 -2
- package/dist-es/multiline-input/MultilineInput.js.map +1 -1
- package/dist-es/number-input/NumberInput.js +7 -7
- package/dist-es/number-input/NumberInput.js.map +1 -1
- package/dist-es/number-input/internal/useLongPressPointerAction.js +61 -0
- package/dist-es/number-input/internal/useLongPressPointerAction.js.map +1 -0
- package/dist-es/pill/Pill.js +74 -11
- package/dist-es/pill/Pill.js.map +1 -1
- package/dist-es/pill/PillCheckIcon.css.js +4 -0
- package/dist-es/pill/PillCheckIcon.css.js.map +1 -0
- package/dist-es/pill/PillCheckIcon.js +46 -0
- package/dist-es/pill/PillCheckIcon.js.map +1 -0
- package/dist-es/pill/PillGroup.css.js +4 -0
- package/dist-es/pill/PillGroup.css.js.map +1 -0
- package/dist-es/pill/PillGroup.js +81 -0
- package/dist-es/pill/PillGroup.js.map +1 -0
- package/dist-es/pill/PillGroupContext.js +24 -0
- package/dist-es/pill/PillGroupContext.js.map +1 -0
- package/dist-es/pill-input/PillInput.js +1 -0
- package/dist-es/pill-input/PillInput.js.map +1 -1
- package/dist-es/slider/internal/useRangeSliderThumb.js +14 -5
- package/dist-es/slider/internal/useRangeSliderThumb.js.map +1 -1
- package/dist-es/slider/internal/useSliderThumb.js +14 -5
- package/dist-es/slider/internal/useSliderThumb.js.map +1 -1
- package/dist-es/tag/Tag.css.js +1 -1
- package/dist-es/toggle-button/ToggleButton.css.js +1 -1
- package/dist-types/menu/MenuContext.d.ts +2 -0
- package/dist-types/number-input/internal/useLongPressPointerAction.d.ts +2 -0
- package/dist-types/pill/Pill.d.ts +1 -0
- package/dist-types/pill/PillCheckIcon.d.ts +7 -0
- package/dist-types/pill/PillGroup.d.ts +34 -0
- package/dist-types/pill/PillGroupContext.d.ts +9 -0
- package/dist-types/pill/index.d.ts +1 -0
- package/package.json +1 -1
- package/dist-cjs/number-input/internal/useActivateWhileMouseDown.js +0 -50
- package/dist-cjs/number-input/internal/useActivateWhileMouseDown.js.map +0 -1
- package/dist-es/number-input/internal/useActivateWhileMouseDown.js +0 -48
- package/dist-es/number-input/internal/useActivateWhileMouseDown.js.map +0 -1
- package/dist-types/number-input/internal/useActivateWhileMouseDown.d.ts +0 -5
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type ComponentPropsWithoutRef, type SyntheticEvent } from "react";
|
|
2
|
+
interface CommonPillGroupProps extends ComponentPropsWithoutRef<"fieldset"> {
|
|
3
|
+
/**
|
|
4
|
+
* If `true`, the Pill group will be disabled.
|
|
5
|
+
*/
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Selection variant of the Pill group. If "none", the Pills will not be selectable. If "multiple", pills inside behave like checkboxes.
|
|
9
|
+
*/
|
|
10
|
+
selectionVariant?: "none" | "multiple";
|
|
11
|
+
}
|
|
12
|
+
interface SelectablePillGroupProps extends CommonPillGroupProps {
|
|
13
|
+
selectionVariant: "multiple";
|
|
14
|
+
/**
|
|
15
|
+
* The currently selected values.
|
|
16
|
+
*/
|
|
17
|
+
selected?: string[];
|
|
18
|
+
/**
|
|
19
|
+
* The default selected values for un-controlled component.
|
|
20
|
+
*/
|
|
21
|
+
defaultSelected?: string[];
|
|
22
|
+
/**
|
|
23
|
+
* Callback fired when the selection changes.
|
|
24
|
+
* @param event
|
|
25
|
+
* @param newSelected The new selected values.
|
|
26
|
+
*/
|
|
27
|
+
onSelectionChange?: (event: SyntheticEvent, newSelected: string[]) => void;
|
|
28
|
+
}
|
|
29
|
+
interface NonSelectablePillGroupProps extends CommonPillGroupProps {
|
|
30
|
+
selectionVariant?: "none";
|
|
31
|
+
}
|
|
32
|
+
export type PillGroupProps = SelectablePillGroupProps | NonSelectablePillGroupProps;
|
|
33
|
+
export declare const PillGroup: import("react").ForwardRefExoticComponent<PillGroupProps & import("react").RefAttributes<HTMLFieldSetElement>>;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type SyntheticEvent } from "react";
|
|
2
|
+
export interface PillGroupContextValue {
|
|
3
|
+
selected: string[];
|
|
4
|
+
select: (e: SyntheticEvent, value: string) => void;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
selectionVariant: "none" | "multiple";
|
|
7
|
+
}
|
|
8
|
+
export declare const PillGroupContext: import("react").Context<PillGroupContextValue>;
|
|
9
|
+
export declare function usePillGroup(): PillGroupContextValue;
|
package/package.json
CHANGED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var window = require('@salt-ds/window');
|
|
4
|
-
var React = require('react');
|
|
5
|
-
var useInterval = require('./useInterval.js');
|
|
6
|
-
|
|
7
|
-
const INITIAL_DELAY = 500;
|
|
8
|
-
const INTERVAL_DELAY = 100;
|
|
9
|
-
function useActivateWhileMouseDown(activationFn, isAtLimit) {
|
|
10
|
-
const [buttonDown, setButtonDown] = React.useState(false);
|
|
11
|
-
const [delay, setDelay] = React.useState(INITIAL_DELAY);
|
|
12
|
-
const cancelInterval = React.useCallback(() => {
|
|
13
|
-
setButtonDown(false);
|
|
14
|
-
setDelay(INITIAL_DELAY);
|
|
15
|
-
}, []);
|
|
16
|
-
React.useEffect(() => {
|
|
17
|
-
if (isAtLimit) cancelInterval();
|
|
18
|
-
}, [isAtLimit, cancelInterval]);
|
|
19
|
-
const targetWindow = window.useWindow();
|
|
20
|
-
React.useEffect(() => {
|
|
21
|
-
if (targetWindow) {
|
|
22
|
-
targetWindow.addEventListener("mouseup", cancelInterval);
|
|
23
|
-
}
|
|
24
|
-
return () => {
|
|
25
|
-
if (targetWindow) {
|
|
26
|
-
targetWindow.removeEventListener("mouseup", cancelInterval);
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
}, [cancelInterval, targetWindow]);
|
|
30
|
-
const activate = (event) => {
|
|
31
|
-
activationFn(event);
|
|
32
|
-
if (event.type === "mousedown") {
|
|
33
|
-
setButtonDown(true);
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
useInterval.useInterval(
|
|
37
|
-
() => {
|
|
38
|
-
if (!buttonDown) return;
|
|
39
|
-
activationFn();
|
|
40
|
-
if (delay === INITIAL_DELAY) {
|
|
41
|
-
setDelay(INTERVAL_DELAY);
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
buttonDown ? delay : null
|
|
45
|
-
);
|
|
46
|
-
return { activate, buttonDown };
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
exports.useActivateWhileMouseDown = useActivateWhileMouseDown;
|
|
50
|
-
//# sourceMappingURL=useActivateWhileMouseDown.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useActivateWhileMouseDown.js","sources":["../src/number-input/internal/useActivateWhileMouseDown.ts"],"sourcesContent":["import { useWindow } from \"@salt-ds/window\";\nimport { type SyntheticEvent, useCallback, useEffect, useState } from \"react\";\nimport { useInterval } from \"./useInterval\";\n\nconst INITIAL_DELAY = 500;\nconst INTERVAL_DELAY = 100;\n\nexport function useActivateWhileMouseDown(\n activationFn: (event?: SyntheticEvent) => void,\n isAtLimit: boolean,\n) {\n const [buttonDown, setButtonDown] = useState(false);\n const [delay, setDelay] = useState(INITIAL_DELAY);\n\n const cancelInterval = useCallback(() => {\n setButtonDown(false);\n setDelay(INITIAL_DELAY);\n }, []);\n\n useEffect(() => {\n if (isAtLimit) cancelInterval();\n }, [isAtLimit, cancelInterval]);\n\n const targetWindow = useWindow();\n\n useEffect(() => {\n if (targetWindow) {\n targetWindow.addEventListener(\"mouseup\", cancelInterval);\n }\n return () => {\n if (targetWindow) {\n targetWindow.removeEventListener(\"mouseup\", cancelInterval);\n }\n };\n }, [cancelInterval, targetWindow]);\n\n const activate = (event: SyntheticEvent) => {\n activationFn(event);\n if (event.type === \"mousedown\") {\n setButtonDown(true);\n }\n };\n\n useInterval(\n () => {\n if (!buttonDown) return;\n activationFn();\n if (delay === INITIAL_DELAY) {\n setDelay(INTERVAL_DELAY);\n }\n },\n buttonDown ? delay : null,\n );\n\n return { activate, buttonDown };\n}\n"],"names":["useState","useCallback","useEffect","useWindow","useInterval"],"mappings":";;;;;;AAIA,MAAM,aAAA,GAAgB,GAAA;AACtB,MAAM,cAAA,GAAiB,GAAA;AAEhB,SAAS,yBAAA,CACd,cACA,SAAA,EACA;AACA,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,eAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIA,eAAS,aAAa,CAAA;AAEhD,EAAA,MAAM,cAAA,GAAiBC,kBAAY,MAAM;AACvC,IAAA,aAAA,CAAc,KAAK,CAAA;AACnB,IAAA,QAAA,CAAS,aAAa,CAAA;AAAA,EACxB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAAC,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,WAAW,cAAA,EAAe;AAAA,EAChC,CAAA,EAAG,CAAC,SAAA,EAAW,cAAc,CAAC,CAAA;AAE9B,EAAA,MAAM,eAAeC,gBAAA,EAAU;AAE/B,EAAAD,eAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,YAAA,CAAa,gBAAA,CAAiB,WAAW,cAAc,CAAA;AAAA,IACzD;AACA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,YAAA,CAAa,mBAAA,CAAoB,WAAW,cAAc,CAAA;AAAA,MAC5D;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,cAAA,EAAgB,YAAY,CAAC,CAAA;AAEjC,EAAA,MAAM,QAAA,GAAW,CAAC,KAAA,KAA0B;AAC1C,IAAA,YAAA,CAAa,KAAK,CAAA;AAClB,IAAA,IAAI,KAAA,CAAM,SAAS,WAAA,EAAa;AAC9B,MAAA,aAAA,CAAc,IAAI,CAAA;AAAA,IACpB;AAAA,EACF,CAAA;AAEA,EAAAE,uBAAA;AAAA,IACE,MAAM;AACJ,MAAA,IAAI,CAAC,UAAA,EAAY;AACjB,MAAA,YAAA,EAAa;AACb,MAAA,IAAI,UAAU,aAAA,EAAe;AAC3B,QAAA,QAAA,CAAS,cAAc,CAAA;AAAA,MACzB;AAAA,IACF,CAAA;AAAA,IACA,aAAa,KAAA,GAAQ;AAAA,GACvB;AAEA,EAAA,OAAO,EAAE,UAAU,UAAA,EAAW;AAChC;;;;"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { useWindow } from '@salt-ds/window';
|
|
2
|
-
import { useState, useCallback, useEffect } from 'react';
|
|
3
|
-
import { useInterval } from './useInterval.js';
|
|
4
|
-
|
|
5
|
-
const INITIAL_DELAY = 500;
|
|
6
|
-
const INTERVAL_DELAY = 100;
|
|
7
|
-
function useActivateWhileMouseDown(activationFn, isAtLimit) {
|
|
8
|
-
const [buttonDown, setButtonDown] = useState(false);
|
|
9
|
-
const [delay, setDelay] = useState(INITIAL_DELAY);
|
|
10
|
-
const cancelInterval = useCallback(() => {
|
|
11
|
-
setButtonDown(false);
|
|
12
|
-
setDelay(INITIAL_DELAY);
|
|
13
|
-
}, []);
|
|
14
|
-
useEffect(() => {
|
|
15
|
-
if (isAtLimit) cancelInterval();
|
|
16
|
-
}, [isAtLimit, cancelInterval]);
|
|
17
|
-
const targetWindow = useWindow();
|
|
18
|
-
useEffect(() => {
|
|
19
|
-
if (targetWindow) {
|
|
20
|
-
targetWindow.addEventListener("mouseup", cancelInterval);
|
|
21
|
-
}
|
|
22
|
-
return () => {
|
|
23
|
-
if (targetWindow) {
|
|
24
|
-
targetWindow.removeEventListener("mouseup", cancelInterval);
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
}, [cancelInterval, targetWindow]);
|
|
28
|
-
const activate = (event) => {
|
|
29
|
-
activationFn(event);
|
|
30
|
-
if (event.type === "mousedown") {
|
|
31
|
-
setButtonDown(true);
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
useInterval(
|
|
35
|
-
() => {
|
|
36
|
-
if (!buttonDown) return;
|
|
37
|
-
activationFn();
|
|
38
|
-
if (delay === INITIAL_DELAY) {
|
|
39
|
-
setDelay(INTERVAL_DELAY);
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
buttonDown ? delay : null
|
|
43
|
-
);
|
|
44
|
-
return { activate, buttonDown };
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export { useActivateWhileMouseDown };
|
|
48
|
-
//# sourceMappingURL=useActivateWhileMouseDown.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useActivateWhileMouseDown.js","sources":["../src/number-input/internal/useActivateWhileMouseDown.ts"],"sourcesContent":["import { useWindow } from \"@salt-ds/window\";\nimport { type SyntheticEvent, useCallback, useEffect, useState } from \"react\";\nimport { useInterval } from \"./useInterval\";\n\nconst INITIAL_DELAY = 500;\nconst INTERVAL_DELAY = 100;\n\nexport function useActivateWhileMouseDown(\n activationFn: (event?: SyntheticEvent) => void,\n isAtLimit: boolean,\n) {\n const [buttonDown, setButtonDown] = useState(false);\n const [delay, setDelay] = useState(INITIAL_DELAY);\n\n const cancelInterval = useCallback(() => {\n setButtonDown(false);\n setDelay(INITIAL_DELAY);\n }, []);\n\n useEffect(() => {\n if (isAtLimit) cancelInterval();\n }, [isAtLimit, cancelInterval]);\n\n const targetWindow = useWindow();\n\n useEffect(() => {\n if (targetWindow) {\n targetWindow.addEventListener(\"mouseup\", cancelInterval);\n }\n return () => {\n if (targetWindow) {\n targetWindow.removeEventListener(\"mouseup\", cancelInterval);\n }\n };\n }, [cancelInterval, targetWindow]);\n\n const activate = (event: SyntheticEvent) => {\n activationFn(event);\n if (event.type === \"mousedown\") {\n setButtonDown(true);\n }\n };\n\n useInterval(\n () => {\n if (!buttonDown) return;\n activationFn();\n if (delay === INITIAL_DELAY) {\n setDelay(INTERVAL_DELAY);\n }\n },\n buttonDown ? delay : null,\n );\n\n return { activate, buttonDown };\n}\n"],"names":[],"mappings":";;;;AAIA,MAAM,aAAA,GAAgB,GAAA;AACtB,MAAM,cAAA,GAAiB,GAAA;AAEhB,SAAS,yBAAA,CACd,cACA,SAAA,EACA;AACA,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,aAAa,CAAA;AAEhD,EAAA,MAAM,cAAA,GAAiB,YAAY,MAAM;AACvC,IAAA,aAAA,CAAc,KAAK,CAAA;AACnB,IAAA,QAAA,CAAS,aAAa,CAAA;AAAA,EACxB,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,WAAW,cAAA,EAAe;AAAA,EAChC,CAAA,EAAG,CAAC,SAAA,EAAW,cAAc,CAAC,CAAA;AAE9B,EAAA,MAAM,eAAe,SAAA,EAAU;AAE/B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,YAAA,EAAc;AAChB,MAAA,YAAA,CAAa,gBAAA,CAAiB,WAAW,cAAc,CAAA;AAAA,IACzD;AACA,IAAA,OAAO,MAAM;AACX,MAAA,IAAI,YAAA,EAAc;AAChB,QAAA,YAAA,CAAa,mBAAA,CAAoB,WAAW,cAAc,CAAA;AAAA,MAC5D;AAAA,IACF,CAAA;AAAA,EACF,CAAA,EAAG,CAAC,cAAA,EAAgB,YAAY,CAAC,CAAA;AAEjC,EAAA,MAAM,QAAA,GAAW,CAAC,KAAA,KAA0B;AAC1C,IAAA,YAAA,CAAa,KAAK,CAAA;AAClB,IAAA,IAAI,KAAA,CAAM,SAAS,WAAA,EAAa;AAC9B,MAAA,aAAA,CAAc,IAAI,CAAA;AAAA,IACpB;AAAA,EACF,CAAA;AAEA,EAAA,WAAA;AAAA,IACE,MAAM;AACJ,MAAA,IAAI,CAAC,UAAA,EAAY;AACjB,MAAA,YAAA,EAAa;AACb,MAAA,IAAI,UAAU,aAAA,EAAe;AAC3B,QAAA,QAAA,CAAS,cAAc,CAAA;AAAA,MACzB;AAAA,IACF,CAAA;AAAA,IACA,aAAa,KAAA,GAAQ;AAAA,GACvB;AAEA,EAAA,OAAO,EAAE,UAAU,UAAA,EAAW;AAChC;;;;"}
|