@bspk/ui 1.3.9 → 1.3.10
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/dist/components/BannerAlert/BannerAlert.d.ts +5 -5
- package/dist/components/BannerAlert/BannerAlert.js +5 -5
- package/dist/components/Breadcrumb/BreadcrumbDropdown.d.ts +6 -0
- package/dist/components/Breadcrumb/BreadcrumbDropdown.js +6 -0
- package/dist/components/Breadcrumb/BreadcrumbDropdown.js.map +1 -1
- package/dist/components/CheckboxGroup/CheckboxGroupExample.js +1 -0
- package/dist/components/CheckboxGroup/CheckboxGroupExample.js.map +1 -1
- package/dist/components/Drawer/Drawer.js.map +1 -1
- package/dist/components/Field/FieldDescription.d.ts +7 -5
- package/dist/components/Field/FieldDescription.js +7 -3
- package/dist/components/Field/FieldDescription.js.map +1 -1
- package/dist/components/Field/FieldError.d.ts +6 -0
- package/dist/components/Field/FieldError.js +6 -0
- package/dist/components/Field/FieldError.js.map +1 -1
- package/dist/components/Field/FieldLabel.d.ts +6 -0
- package/dist/components/Field/FieldLabel.js +6 -0
- package/dist/components/Field/FieldLabel.js.map +1 -1
- package/dist/components/Field/utils.d.ts +5 -0
- package/dist/components/Field/utils.js +5 -0
- package/dist/components/Field/utils.js.map +1 -1
- package/dist/components/InlineAlert/SvgWarningTwoTone.d.ts +6 -0
- package/dist/components/InlineAlert/SvgWarningTwoTone.js +6 -0
- package/dist/components/InlineAlert/SvgWarningTwoTone.js.map +1 -1
- package/dist/components/InputNumber/IncrementButton.d.ts +13 -3
- package/dist/components/InputNumber/IncrementButton.js +11 -4
- package/dist/components/InputNumber/IncrementButton.js.map +1 -1
- package/dist/components/InputNumber/InputNumber.js +26 -10
- package/dist/components/InputNumber/InputNumber.js.map +1 -1
- package/dist/components/InputNumber/InputNumberExample.js +1 -0
- package/dist/components/InputNumber/InputNumberExample.js.map +1 -1
- package/dist/components/InputNumber/input-number.css +6 -0
- package/dist/components/InputNumber/input-number.css.js +6 -0
- package/dist/components/Link/Link.d.ts +1 -1
- package/dist/components/Link/Link.js +1 -1
- package/dist/components/OTPInput/OTPInput.d.ts +5 -1
- package/dist/components/OTPInput/OTPInput.js +5 -1
- package/dist/components/OTPInput/OTPInput.js.map +1 -1
- package/dist/components/Pagination/PageList.d.ts +6 -0
- package/dist/components/Pagination/PageList.js +6 -0
- package/dist/components/Pagination/PageList.js.map +1 -1
- package/dist/components/Scrim/Scrim.d.ts +0 -1
- package/dist/components/Scrim/Scrim.js +0 -1
- package/dist/components/Scrim/Scrim.js.map +1 -1
- package/dist/components/Select/Select.d.ts +11 -11
- package/dist/components/Select/Select.js +11 -11
- package/dist/components/Skeleton/Circular.d.ts +6 -0
- package/dist/components/Skeleton/Circular.js +6 -0
- package/dist/components/Skeleton/Circular.js.map +1 -1
- package/dist/components/Skeleton/Photo.d.ts +6 -0
- package/dist/components/Skeleton/Photo.js +6 -0
- package/dist/components/Skeleton/Photo.js.map +1 -1
- package/dist/components/Skeleton/Profile.d.ts +6 -0
- package/dist/components/Skeleton/Profile.js +6 -0
- package/dist/components/Skeleton/Profile.js.map +1 -1
- package/dist/components/Skeleton/Rectangular.d.ts +6 -0
- package/dist/components/Skeleton/Rectangular.js +6 -0
- package/dist/components/Skeleton/Rectangular.js.map +1 -1
- package/dist/components/Skeleton/Thumbnail.d.ts +6 -0
- package/dist/components/Skeleton/Thumbnail.js +6 -0
- package/dist/components/Skeleton/Thumbnail.js.map +1 -1
- package/dist/components/Slider/SliderIntervalDots.d.ts +6 -0
- package/dist/components/Slider/SliderIntervalDots.js +6 -0
- package/dist/components/Slider/SliderIntervalDots.js.map +1 -1
- package/dist/components/Snackbar/Manager.d.ts +0 -1
- package/dist/components/Snackbar/Manager.js +0 -1
- package/dist/components/Snackbar/Manager.js.map +1 -1
- package/dist/components/Snackbar/Snackbar.d.ts +0 -1
- package/dist/components/Snackbar/Snackbar.js +0 -1
- package/dist/components/Snackbar/Snackbar.js.map +1 -1
- package/dist/components/TabList/TabList.js +1 -2
- package/dist/components/TabList/TabList.js.map +1 -1
- package/dist/components/Table/Footer.d.ts +6 -0
- package/dist/components/Table/Footer.js +6 -0
- package/dist/components/Table/Footer.js.map +1 -1
- package/dist/components/TimePicker/Listbox.d.ts +6 -0
- package/dist/components/TimePicker/Listbox.js +6 -0
- package/dist/components/TimePicker/Listbox.js.map +1 -1
- package/dist/components/TimePicker/Segment.d.ts +6 -0
- package/dist/components/TimePicker/Segment.js +6 -0
- package/dist/components/TimePicker/Segment.js.map +1 -1
- package/dist/components/Truncated/Truncated.d.ts +0 -1
- package/dist/components/Truncated/Truncated.js +1 -2
- package/dist/components/Truncated/Truncated.js.map +1 -1
- package/dist/components/UIProvider/UIProvider.d.ts +0 -1
- package/dist/components/UIProvider/UIProvider.js +0 -1
- package/dist/components/UIProvider/UIProvider.js.map +1 -1
- package/dist/hooks/useLongPress.d.ts +30 -15
- package/dist/hooks/useLongPress.js +26 -42
- package/dist/hooks/useLongPress.js.map +1 -1
- package/dist/styles/base.css +9 -0
- package/dist/styles/base.css.js +9 -0
- package/package.json +1 -1
- package/src/components/BannerAlert/BannerAlert.tsx +5 -5
- package/src/components/Breadcrumb/BreadcrumbDropdown.tsx +6 -0
- package/src/components/CheckboxGroup/CheckboxGroupExample.tsx +1 -0
- package/src/components/Drawer/Drawer.tsx +0 -1
- package/src/components/Field/FieldDescription.tsx +7 -5
- package/src/components/Field/FieldError.tsx +6 -0
- package/src/components/Field/FieldLabel.tsx +6 -0
- package/src/components/Field/utils.ts +5 -0
- package/src/components/InlineAlert/SvgWarningTwoTone.tsx +6 -0
- package/src/components/InputNumber/IncrementButton.tsx +21 -11
- package/src/components/InputNumber/InputNumber.tsx +33 -31
- package/src/components/InputNumber/InputNumberExample.tsx +1 -0
- package/src/components/InputNumber/input-number.scss +10 -0
- package/src/components/Link/Link.tsx +1 -1
- package/src/components/OTPInput/OTPInput.tsx +5 -1
- package/src/components/Pagination/PageList.tsx +6 -0
- package/src/components/Scrim/Scrim.tsx +0 -1
- package/src/components/Select/Select.tsx +11 -11
- package/src/components/Skeleton/Circular.tsx +6 -0
- package/src/components/Skeleton/Photo.tsx +6 -0
- package/src/components/Skeleton/Profile.tsx +6 -0
- package/src/components/Skeleton/Rectangular.tsx +6 -0
- package/src/components/Skeleton/Thumbnail.tsx +6 -0
- package/src/components/Slider/SliderIntervalDots.tsx +6 -0
- package/src/components/Snackbar/Manager.tsx +0 -1
- package/src/components/Snackbar/Snackbar.tsx +0 -1
- package/src/components/TabList/TabList.tsx +1 -2
- package/src/components/Table/Footer.tsx +6 -0
- package/src/components/TimePicker/Listbox.tsx +6 -0
- package/src/components/TimePicker/Segment.tsx +6 -0
- package/src/components/Truncated/Truncated.tsx +1 -2
- package/src/components/UIProvider/UIProvider.tsx +0 -1
- package/src/hooks/useLongPress.ts +58 -48
- package/src/styles/base.scss +9 -0
- package/dist/components/Truncated/truncated.css +0 -8
- package/dist/components/Truncated/truncated.css.js +0 -13
- package/src/components/Truncated/truncated.scss +0 -8
|
@@ -2,7 +2,6 @@ import './tab-list.scss';
|
|
|
2
2
|
import { Fragment, ReactNode, useMemo } from 'react';
|
|
3
3
|
import { Badge, BadgeProps } from '-/components/Badge';
|
|
4
4
|
import { Tooltip } from '-/components/Tooltip';
|
|
5
|
-
import { Truncated } from '-/components/Truncated';
|
|
6
5
|
import { useArrowNavigation } from '-/hooks/useArrowNavigation';
|
|
7
6
|
import { useId } from '-/hooks/useId';
|
|
8
7
|
import { ElementProps } from '-/types/common';
|
|
@@ -238,7 +237,7 @@ export function TabList({
|
|
|
238
237
|
tabIndex={focusableOption.id === item.id ? 0 : -1}
|
|
239
238
|
>
|
|
240
239
|
{icon && <span aria-hidden="true">{icon}</span>}
|
|
241
|
-
{!iconsOnly && <
|
|
240
|
+
{!iconsOnly && <span data-label>{item.label}</span>}
|
|
242
241
|
{item.badge && !item.disabled && (
|
|
243
242
|
<Badge count={item.badge} size={TAB_BADGE_SIZES[size]} />
|
|
244
243
|
)}
|
|
@@ -17,6 +17,12 @@ export type TimePickerListboxProps = {
|
|
|
17
17
|
onTab?: (e: React.KeyboardEvent) => void;
|
|
18
18
|
};
|
|
19
19
|
|
|
20
|
+
/**
|
|
21
|
+
* TimePickerListbox component displays a listbox for selecting time values.
|
|
22
|
+
*
|
|
23
|
+
* @name TimePickerListbox
|
|
24
|
+
* @parent TimePicker
|
|
25
|
+
*/
|
|
20
26
|
export function TimePickerListbox({ options, selectedValue, type: kind, onSelect, onTab }: TimePickerListboxProps) {
|
|
21
27
|
const { activeElementId, arrowKeyCallbacks } = useArrowNavigation({
|
|
22
28
|
ids: options.map((option) => option.id),
|
|
@@ -19,6 +19,12 @@ export type TimePickerSegmentProps<T extends string> = {
|
|
|
19
19
|
setRef?: (element: HTMLElement | null) => void;
|
|
20
20
|
};
|
|
21
21
|
|
|
22
|
+
/**
|
|
23
|
+
* TimePickerSegment component displays an individual segment of a time picker (hours, minutes, or meridiem).
|
|
24
|
+
*
|
|
25
|
+
* @name TimePickerSegment
|
|
26
|
+
* @parent TimePicker
|
|
27
|
+
*/
|
|
22
28
|
export function TimePickerSegment<T extends string>({
|
|
23
29
|
disabled,
|
|
24
30
|
name,
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import './truncated.scss';
|
|
2
1
|
import { ElementType } from 'react';
|
|
3
2
|
import { Tooltip, TooltipTriggerProps } from '-/components/Tooltip';
|
|
4
3
|
import { useTruncatedText } from '-/hooks/useTruncatedText';
|
|
@@ -45,7 +44,7 @@ export function Truncated<As extends ElementType = ElementType>({
|
|
|
45
44
|
const span = (triggerProps: TooltipTriggerProps) => (
|
|
46
45
|
<span
|
|
47
46
|
{...props}
|
|
48
|
-
data-
|
|
47
|
+
data-truncated
|
|
49
48
|
ref={(node) => setElement(node)}
|
|
50
49
|
{...triggerProps}
|
|
51
50
|
role={isTruncated ? 'note' : props.role}
|
|
@@ -22,7 +22,6 @@ export type UIProviderProps = {
|
|
|
22
22
|
* This provider should wrap the root of your application to ensure that all components have access to the UI context.
|
|
23
23
|
*
|
|
24
24
|
* @name UIProvider
|
|
25
|
-
*
|
|
26
25
|
* @phase Utility
|
|
27
26
|
*/
|
|
28
27
|
export function UIProvider({ children }: UIProviderProps) {
|
|
@@ -1,57 +1,67 @@
|
|
|
1
|
-
import { useRef
|
|
2
|
-
|
|
1
|
+
import { useRef } from 'react';
|
|
3
2
|
import { useTimeout } from './useTimeout';
|
|
4
3
|
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
4
|
+
export type LongPressProps = {
|
|
5
|
+
/** The callback to be invoked on long press. If false is returned, the repeating will stop. */
|
|
6
|
+
callback: () => boolean;
|
|
7
|
+
/**
|
|
8
|
+
* The initial delay (in ms) before repeating starts. Default is 750ms.
|
|
9
|
+
*
|
|
10
|
+
* @default 750
|
|
11
|
+
*/
|
|
12
|
+
delay?: number;
|
|
13
|
+
/**
|
|
14
|
+
* The amount (in percent) to decrement the delay after each repeat. Default is 15%.
|
|
15
|
+
*
|
|
16
|
+
* @default 15
|
|
17
|
+
*/
|
|
18
|
+
delayDecrement?: number;
|
|
19
|
+
/**
|
|
20
|
+
* The minimum delay (in ms) between repeats. Default is 100ms.
|
|
21
|
+
*
|
|
22
|
+
* @default 100
|
|
23
|
+
*/
|
|
24
|
+
delayMin?: number;
|
|
25
|
+
};
|
|
17
26
|
|
|
18
|
-
|
|
27
|
+
/**
|
|
28
|
+
* A hook that provides long press functionality. The provided callback will be invoked once immediately on press, and
|
|
29
|
+
* then repeatedly after a delay, with the delay decreasing by a specified amount after each repeat.
|
|
30
|
+
*/
|
|
31
|
+
export function useLongPress({
|
|
32
|
+
callback,
|
|
33
|
+
delay: initialDelay = 750,
|
|
34
|
+
delayDecrement = 15,
|
|
35
|
+
delayMin = 100,
|
|
36
|
+
}: LongPressProps) {
|
|
19
37
|
const timeout = useTimeout();
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
+
const isPressing = useRef(false);
|
|
39
|
+
const delay = useRef(initialDelay);
|
|
40
|
+
|
|
41
|
+
const setPressing = (pressing: boolean) => {
|
|
42
|
+
isPressing.current = pressing;
|
|
43
|
+
|
|
44
|
+
if (pressing) {
|
|
45
|
+
if (!callback()) return setPressing(false);
|
|
46
|
+
|
|
47
|
+
timeout.set(() => {
|
|
48
|
+
if (!isPressing.current) return setPressing(false);
|
|
49
|
+
|
|
50
|
+
const decrementMs = (delay.current * delayDecrement) / 100;
|
|
51
|
+
delay.current = delay.current <= delayMin ? delayMin : delay.current - decrementMs;
|
|
52
|
+
|
|
53
|
+
setPressing(true);
|
|
54
|
+
}, delay.current);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
delay.current = initialDelay;
|
|
59
|
+
timeout.clear();
|
|
38
60
|
};
|
|
39
61
|
|
|
40
62
|
return {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
callback();
|
|
45
|
-
timeout.set(run, intervalRef.current);
|
|
46
|
-
},
|
|
47
|
-
onMouseUp: () => {
|
|
48
|
-
timeout.clear();
|
|
49
|
-
},
|
|
50
|
-
onMouseLeave: () => {
|
|
51
|
-
timeout.clear();
|
|
52
|
-
},
|
|
53
|
-
setTriggerElement,
|
|
63
|
+
onPointerDown: () => setPressing(true),
|
|
64
|
+
onPointerLeave: () => setPressing(false),
|
|
65
|
+
onPointerUp: () => setPressing(false),
|
|
54
66
|
};
|
|
55
67
|
}
|
|
56
|
-
|
|
57
|
-
/** Copyright 2025 Anywhere Real Estate - CC BY 4.0 */
|
package/src/styles/base.scss
CHANGED
|
@@ -179,6 +179,15 @@ body[data-bspk] {
|
|
|
179
179
|
left: auto;
|
|
180
180
|
}
|
|
181
181
|
|
|
182
|
+
[data-truncated] {
|
|
183
|
+
max-width: 100%;
|
|
184
|
+
display: inline-block;
|
|
185
|
+
overflow: hidden;
|
|
186
|
+
text-overflow: ellipsis;
|
|
187
|
+
white-space: nowrap;
|
|
188
|
+
background-color: transparent;
|
|
189
|
+
}
|
|
190
|
+
|
|
182
191
|
[data-sr-only] {
|
|
183
192
|
height: 1px;
|
|
184
193
|
overflow: hidden;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/** * This file is generated by the build script.
|
|
2
|
-
* Do not edit this file directly. */
|
|
3
|
-
const style = document.createElement('style');
|
|
4
|
-
style.appendChild(document.createTextNode(`[data-bspk-utility=truncated] {
|
|
5
|
-
max-width: 100%;
|
|
6
|
-
display: inline-block;
|
|
7
|
-
overflow: hidden;
|
|
8
|
-
text-overflow: ellipsis;
|
|
9
|
-
white-space: nowrap;
|
|
10
|
-
background-color: transparent;
|
|
11
|
-
}
|
|
12
|
-
`));
|
|
13
|
-
document.head.appendChild(style);
|