@proyecto-viviana/solidaria-components 0.2.5 → 0.3.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/LICENSE +21 -0
- package/README.md +39 -272
- package/dist/ActionBar.d.ts +79 -0
- package/dist/ActionBar.d.ts.map +1 -0
- package/dist/ActionGroup.d.ts +74 -0
- package/dist/ActionGroup.d.ts.map +1 -0
- package/dist/Alert.d.ts +70 -0
- package/dist/Alert.d.ts.map +1 -0
- package/dist/Autocomplete.d.ts +5 -5
- package/dist/Autocomplete.d.ts.map +1 -1
- package/dist/Breadcrumbs.d.ts +27 -8
- package/dist/Breadcrumbs.d.ts.map +1 -1
- package/dist/Button.d.ts +28 -5
- package/dist/Button.d.ts.map +1 -1
- package/dist/Calendar.d.ts +51 -7
- package/dist/Calendar.d.ts.map +1 -1
- package/dist/Checkbox.d.ts +33 -8
- package/dist/Checkbox.d.ts.map +1 -1
- package/dist/Collection.d.ts +130 -0
- package/dist/Collection.d.ts.map +1 -0
- package/dist/Color.d.ts +210 -9
- package/dist/Color.d.ts.map +1 -1
- package/dist/ColorEditor.d.ts +42 -0
- package/dist/ColorEditor.d.ts.map +1 -0
- package/dist/ComboBox.d.ts +146 -16
- package/dist/ComboBox.d.ts.map +1 -1
- package/dist/ContextualHelpTrigger.d.ts +40 -0
- package/dist/ContextualHelpTrigger.d.ts.map +1 -0
- package/dist/DateField.d.ts +35 -8
- package/dist/DateField.d.ts.map +1 -1
- package/dist/DatePicker.d.ts +101 -5
- package/dist/DatePicker.d.ts.map +1 -1
- package/dist/DateRangePickerContext.d.ts +30 -0
- package/dist/DateRangePickerContext.d.ts.map +1 -0
- package/dist/Dialog.d.ts +5 -5
- package/dist/Dialog.d.ts.map +1 -1
- package/dist/Disclosure.d.ts +25 -5
- package/dist/Disclosure.d.ts.map +1 -1
- package/dist/DragAndDrop.d.ts +80 -0
- package/dist/DragAndDrop.d.ts.map +1 -0
- package/dist/DragPreview.d.ts +14 -0
- package/dist/DragPreview.d.ts.map +1 -0
- package/dist/DropZone.d.ts +27 -0
- package/dist/DropZone.d.ts.map +1 -0
- package/dist/FieldError.d.ts +27 -0
- package/dist/FieldError.d.ts.map +1 -0
- package/dist/FileTrigger.d.ts +26 -0
- package/dist/FileTrigger.d.ts.map +1 -0
- package/dist/Focusable.d.ts +27 -0
- package/dist/Focusable.d.ts.map +1 -0
- package/dist/Form.d.ts +41 -0
- package/dist/Form.d.ts.map +1 -0
- package/dist/GridList.d.ts +69 -10
- package/dist/GridList.d.ts.map +1 -1
- package/dist/HiddenDateInput.d.ts +26 -0
- package/dist/HiddenDateInput.d.ts.map +1 -0
- package/dist/HiddenTimeInput.d.ts +25 -0
- package/dist/HiddenTimeInput.d.ts.map +1 -0
- package/dist/Icon.d.ts +57 -0
- package/dist/Icon.d.ts.map +1 -0
- package/dist/Keyboard.d.ts +13 -0
- package/dist/Keyboard.d.ts.map +1 -0
- package/dist/Landmark.d.ts +3 -3
- package/dist/Landmark.d.ts.map +1 -1
- package/dist/Link.d.ts +10 -4
- package/dist/Link.d.ts.map +1 -1
- package/dist/ListBox.d.ts +73 -11
- package/dist/ListBox.d.ts.map +1 -1
- package/dist/ListDropTargetDelegate.d.ts +38 -0
- package/dist/ListDropTargetDelegate.d.ts.map +1 -0
- package/dist/Menu.d.ts +79 -10
- package/dist/Menu.d.ts.map +1 -1
- package/dist/Meter.d.ts +4 -4
- package/dist/Meter.d.ts.map +1 -1
- package/dist/Modal.d.ts +6 -4
- package/dist/Modal.d.ts.map +1 -1
- package/dist/NumberField.d.ts +10 -12
- package/dist/NumberField.d.ts.map +1 -1
- package/dist/Popover.d.ts +32 -7
- package/dist/Popover.d.ts.map +1 -1
- package/dist/Pressable.d.ts +27 -0
- package/dist/Pressable.d.ts.map +1 -0
- package/dist/ProgressBar.d.ts +6 -4
- package/dist/ProgressBar.d.ts.map +1 -1
- package/dist/RadioGroup.d.ts +43 -9
- package/dist/RadioGroup.d.ts.map +1 -1
- package/dist/RangeCalendar.d.ts +39 -7
- package/dist/RangeCalendar.d.ts.map +1 -1
- package/dist/RouterProvider.d.ts +75 -0
- package/dist/RouterProvider.d.ts.map +1 -0
- package/dist/SearchField.d.ts +23 -21
- package/dist/SearchField.d.ts.map +1 -1
- package/dist/Select.d.ts +48 -7
- package/dist/Select.d.ts.map +1 -1
- package/dist/SelectionIndicator.d.ts +30 -0
- package/dist/SelectionIndicator.d.ts.map +1 -0
- package/dist/Separator.d.ts +9 -3
- package/dist/Separator.d.ts.map +1 -1
- package/dist/SharedElementTransition.d.ts +41 -0
- package/dist/SharedElementTransition.d.ts.map +1 -0
- package/dist/Slider.d.ts +15 -8
- package/dist/Slider.d.ts.map +1 -1
- package/dist/StepList.d.ts +90 -0
- package/dist/StepList.d.ts.map +1 -0
- package/dist/Switch.d.ts +11 -5
- package/dist/Switch.d.ts.map +1 -1
- package/dist/Table.d.ts +222 -19
- package/dist/Table.d.ts.map +1 -1
- package/dist/Tabs.d.ts +47 -10
- package/dist/Tabs.d.ts.map +1 -1
- package/dist/TagGroup.d.ts +22 -10
- package/dist/TagGroup.d.ts.map +1 -1
- package/dist/Text.d.ts +10 -0
- package/dist/Text.d.ts.map +1 -0
- package/dist/TextField.d.ts +19 -11
- package/dist/TextField.d.ts.map +1 -1
- package/dist/TimeField.d.ts +32 -7
- package/dist/TimeField.d.ts.map +1 -1
- package/dist/Toast.d.ts +29 -14
- package/dist/Toast.d.ts.map +1 -1
- package/dist/ToggleButton.d.ts +36 -0
- package/dist/ToggleButton.d.ts.map +1 -0
- package/dist/ToggleButtonGroup.d.ts +33 -0
- package/dist/ToggleButtonGroup.d.ts.map +1 -0
- package/dist/Toolbar.d.ts +7 -3
- package/dist/Toolbar.d.ts.map +1 -1
- package/dist/Tooltip.d.ts +58 -7
- package/dist/Tooltip.d.ts.map +1 -1
- package/dist/Tree.d.ts +102 -11
- package/dist/Tree.d.ts.map +1 -1
- package/dist/Virtualizer.d.ts +61 -0
- package/dist/Virtualizer.d.ts.map +1 -0
- package/dist/VirtualizerLayouts.d.ts +82 -0
- package/dist/VirtualizerLayouts.d.ts.map +1 -0
- package/dist/VisuallyHidden.d.ts +4 -2
- package/dist/VisuallyHidden.d.ts.map +1 -1
- package/dist/contexts.d.ts +6 -1
- package/dist/contexts.d.ts.map +1 -1
- package/dist/index.d.ts +73 -39
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23342 -10644
- package/dist/index.js.map +1 -7
- package/dist/index.jsx +18110 -0
- package/dist/index.jsx.map +1 -0
- package/dist/useDragAndDrop.d.ts +93 -0
- package/dist/useDragAndDrop.d.ts.map +1 -0
- package/dist/utils.d.ts +8 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/virtualizer/Layout.d.ts +79 -0
- package/dist/virtualizer/Layout.d.ts.map +1 -0
- package/package.json +33 -32
- package/src/ActionBar.tsx +251 -0
- package/src/ActionGroup.tsx +277 -0
- package/src/Alert.tsx +152 -0
- package/src/Autocomplete.tsx +39 -44
- package/src/Breadcrumbs.tsx +227 -72
- package/src/Button.tsx +315 -74
- package/src/Calendar.tsx +347 -141
- package/src/Checkbox.tsx +414 -123
- package/src/Collection.tsx +350 -0
- package/src/Color.tsx +1325 -284
- package/src/ColorEditor.tsx +213 -0
- package/src/ComboBox.tsx +644 -245
- package/src/ContextualHelpTrigger.tsx +195 -0
- package/src/DateField.tsx +274 -106
- package/src/DatePicker.tsx +892 -111
- package/src/DateRangePickerContext.tsx +44 -0
- package/src/Dialog.tsx +173 -104
- package/src/Disclosure.tsx +158 -105
- package/src/DragAndDrop.tsx +340 -0
- package/src/DragPreview.tsx +47 -0
- package/src/DropZone.tsx +233 -0
- package/src/FieldError.tsx +89 -0
- package/src/FileTrigger.tsx +83 -0
- package/src/Focusable.tsx +103 -0
- package/src/Form.tsx +140 -0
- package/src/GridList.tsx +542 -128
- package/src/HiddenDateInput.tsx +153 -0
- package/src/HiddenTimeInput.tsx +133 -0
- package/src/Icon.tsx +133 -0
- package/src/Keyboard.tsx +26 -0
- package/src/Landmark.tsx +37 -63
- package/src/Link.tsx +132 -69
- package/src/ListBox.tsx +656 -106
- package/src/ListDropTargetDelegate.ts +283 -0
- package/src/Menu.tsx +1234 -132
- package/src/Meter.tsx +44 -58
- package/src/Modal.tsx +262 -166
- package/src/NumberField.tsx +267 -151
- package/src/Popover.tsx +452 -343
- package/src/Pressable.tsx +108 -0
- package/src/ProgressBar.tsx +54 -59
- package/src/RadioGroup.tsx +533 -121
- package/src/RangeCalendar.tsx +249 -150
- package/src/RouterProvider.tsx +223 -0
- package/src/SearchField.tsx +460 -133
- package/src/Select.tsx +804 -233
- package/src/SelectionIndicator.tsx +108 -0
- package/src/Separator.tsx +47 -49
- package/src/SharedElementTransition.tsx +264 -0
- package/src/Slider.tsx +148 -98
- package/src/StepList.tsx +272 -0
- package/src/Switch.tsx +93 -46
- package/src/Table.tsx +1551 -225
- package/src/Tabs.tsx +377 -123
- package/src/TagGroup.tsx +233 -135
- package/src/Text.tsx +18 -0
- package/src/TextField.tsx +413 -86
- package/src/TimeField.tsx +232 -222
- package/src/Toast.tsx +306 -160
- package/src/ToggleButton.tsx +169 -0
- package/src/ToggleButtonGroup.tsx +141 -0
- package/src/Toolbar.tsx +61 -70
- package/src/Tooltip.tsx +473 -116
- package/src/Tree.tsx +1514 -175
- package/src/Virtualizer.tsx +730 -0
- package/src/VirtualizerLayouts.ts +280 -0
- package/src/VisuallyHidden.tsx +32 -38
- package/src/contexts.ts +29 -36
- package/src/index.ts +972 -620
- package/src/useDragAndDrop.ts +367 -0
- package/src/utils.tsx +69 -50
- package/src/virtualizer/Layout.ts +192 -0
- package/dist/index.ssr.js +0 -9785
- package/dist/index.ssr.js.map +0 -7
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pressable component for solidaria-components
|
|
3
|
+
*
|
|
4
|
+
* A render-prop component that wraps createPress + createFocusable
|
|
5
|
+
* to make an element pressable. Port of React Aria's Pressable.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
type JSX,
|
|
10
|
+
children as resolveChildren,
|
|
11
|
+
createEffect,
|
|
12
|
+
onCleanup,
|
|
13
|
+
splitProps,
|
|
14
|
+
} from "solid-js";
|
|
15
|
+
import {
|
|
16
|
+
createPress,
|
|
17
|
+
createFocusable,
|
|
18
|
+
type CreatePressProps,
|
|
19
|
+
type CreateFocusableProps,
|
|
20
|
+
} from "@proyecto-viviana/solidaria";
|
|
21
|
+
|
|
22
|
+
export interface PressableProps extends CreatePressProps {
|
|
23
|
+
/** A single child element to make pressable. */
|
|
24
|
+
children: JSX.Element;
|
|
25
|
+
/** Ref callback. */
|
|
26
|
+
ref?: HTMLElement | ((el: HTMLElement) => void);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Makes its child element pressable and focusable.
|
|
31
|
+
* Combines createPress and createFocusable for full interaction support.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```tsx
|
|
35
|
+
* <Pressable onPress={() => console.log('pressed')}>
|
|
36
|
+
* <div role="button" tabIndex={0}>Click me</div>
|
|
37
|
+
* </Pressable>
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export function Pressable(props: PressableProps): JSX.Element {
|
|
41
|
+
const [local, pressProps] = splitProps(props, ["children", "ref"]);
|
|
42
|
+
|
|
43
|
+
let ref!: HTMLElement;
|
|
44
|
+
const { pressProps: domPressProps } = createPress(pressProps);
|
|
45
|
+
const { focusableProps: domFocusableProps } = createFocusable(
|
|
46
|
+
pressProps as CreateFocusableProps,
|
|
47
|
+
() => ref,
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
const resolved = resolveChildren(() => local.children);
|
|
51
|
+
|
|
52
|
+
createEffect(() => {
|
|
53
|
+
const child = resolved() as HTMLElement;
|
|
54
|
+
if (child instanceof HTMLElement) {
|
|
55
|
+
ref = child;
|
|
56
|
+
if (typeof local.ref === "function") {
|
|
57
|
+
local.ref(child);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Apply press props
|
|
61
|
+
const allProps = { ...domFocusableProps, ...domPressProps };
|
|
62
|
+
const listeners: Array<[string, EventListener]> = [];
|
|
63
|
+
for (const [key, handler] of Object.entries(allProps)) {
|
|
64
|
+
if (key.startsWith("on") && typeof handler === "function") {
|
|
65
|
+
const eventName = key.slice(2).toLowerCase();
|
|
66
|
+
const listener = handler as EventListener;
|
|
67
|
+
child.addEventListener(eventName, listener);
|
|
68
|
+
listeners.push([eventName, listener]);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Apply non-event press/focusable props (e.g. tabIndex/data attrs).
|
|
73
|
+
// Keep explicit child tabIndex to mirror mergeProps(child.props precedence).
|
|
74
|
+
for (const [key, value] of Object.entries(allProps)) {
|
|
75
|
+
if (key === "ref" || (key.startsWith("on") && typeof value === "function")) continue;
|
|
76
|
+
|
|
77
|
+
if (key === "tabIndex") {
|
|
78
|
+
if (child.hasAttribute("tabindex")) continue;
|
|
79
|
+
if (value == null || value === false) {
|
|
80
|
+
child.removeAttribute("tabindex");
|
|
81
|
+
} else {
|
|
82
|
+
child.tabIndex = Number(value);
|
|
83
|
+
}
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
if (key.startsWith("aria-") || key.startsWith("data-") || key === "id" || key === "role") {
|
|
88
|
+
if (child.hasAttribute(key)) continue;
|
|
89
|
+
if (value == null || value === false) {
|
|
90
|
+
child.removeAttribute(key);
|
|
91
|
+
} else if (value === true) {
|
|
92
|
+
child.setAttribute(key, "");
|
|
93
|
+
} else {
|
|
94
|
+
child.setAttribute(key, String(value));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
onCleanup(() => {
|
|
100
|
+
for (const [eventName, listener] of listeners) {
|
|
101
|
+
child.removeEventListener(eventName, listener);
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
return <>{resolved()}</>;
|
|
108
|
+
}
|
package/src/ProgressBar.tsx
CHANGED
|
@@ -5,17 +5,8 @@
|
|
|
5
5
|
* Port of react-aria-components/src/ProgressBar.tsx
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
type ParentProps,
|
|
11
|
-
createContext,
|
|
12
|
-
createMemo,
|
|
13
|
-
splitProps,
|
|
14
|
-
} from 'solid-js';
|
|
15
|
-
import {
|
|
16
|
-
createProgressBar,
|
|
17
|
-
type AriaProgressBarProps,
|
|
18
|
-
} from '@proyecto-viviana/solidaria';
|
|
8
|
+
import { type JSX, createContext, createMemo, mergeProps, splitProps, useContext } from "solid-js";
|
|
9
|
+
import { createProgressBar, type AriaProgressBarProps } from "@proyecto-viviana/solidaria";
|
|
19
10
|
import {
|
|
20
11
|
type RenderChildren,
|
|
21
12
|
type ClassNameOrFunction,
|
|
@@ -23,11 +14,7 @@ import {
|
|
|
23
14
|
type SlotProps,
|
|
24
15
|
useRenderProps,
|
|
25
16
|
filterDOMProps,
|
|
26
|
-
} from
|
|
27
|
-
|
|
28
|
-
// ============================================
|
|
29
|
-
// TYPES
|
|
30
|
-
// ============================================
|
|
17
|
+
} from "./utils";
|
|
31
18
|
|
|
32
19
|
export interface ProgressBarRenderProps {
|
|
33
20
|
/** The value as a percentage between the minimum and maximum (0-100). */
|
|
@@ -38,9 +25,9 @@ export interface ProgressBarRenderProps {
|
|
|
38
25
|
isIndeterminate: boolean;
|
|
39
26
|
}
|
|
40
27
|
|
|
41
|
-
export interface ProgressBarProps
|
|
42
|
-
|
|
43
|
-
|
|
28
|
+
export interface ProgressBarProps extends AriaProgressBarProps, SlotProps {
|
|
29
|
+
/** The element id. */
|
|
30
|
+
id?: string;
|
|
44
31
|
/** The children of the component. A function may be provided to receive render props. */
|
|
45
32
|
children?: RenderChildren<ProgressBarRenderProps>;
|
|
46
33
|
/** The CSS className for the element. */
|
|
@@ -49,23 +36,16 @@ export interface ProgressBarProps
|
|
|
49
36
|
style?: StyleOrFunction<ProgressBarRenderProps>;
|
|
50
37
|
}
|
|
51
38
|
|
|
52
|
-
// ============================================
|
|
53
|
-
// CONTEXT
|
|
54
|
-
// ============================================
|
|
55
|
-
|
|
56
39
|
export const ProgressBarContext = createContext<ProgressBarProps | null>(null);
|
|
57
40
|
|
|
58
|
-
// ============================================
|
|
59
|
-
// UTILITIES
|
|
60
|
-
// ============================================
|
|
61
|
-
|
|
62
41
|
function clamp(value: number, min: number, max: number): number {
|
|
63
42
|
return Math.min(Math.max(value, min), max);
|
|
64
43
|
}
|
|
65
44
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
45
|
+
function getSafeRange(min: number, max: number): number {
|
|
46
|
+
const range = max - min;
|
|
47
|
+
return Number.isFinite(range) && range > 0 ? range : 1;
|
|
48
|
+
}
|
|
69
49
|
|
|
70
50
|
/**
|
|
71
51
|
* Progress bars show either determinate or indeterminate progress of an operation
|
|
@@ -84,68 +64,83 @@ function clamp(value: number, min: number, max: number): number {
|
|
|
84
64
|
* </ProgressBar>
|
|
85
65
|
* ```
|
|
86
66
|
*/
|
|
87
|
-
export function ProgressBar(props:
|
|
88
|
-
const
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
'style',
|
|
92
|
-
'slot',
|
|
93
|
-
]);
|
|
67
|
+
export function ProgressBar(props: ProgressBarProps): JSX.Element {
|
|
68
|
+
const contextProps = useContext(ProgressBarContext);
|
|
69
|
+
const mergedProps = contextProps ? mergeProps(contextProps, props) : props;
|
|
70
|
+
const [local, ariaProps] = splitProps(mergedProps, ["children", "class", "style", "slot"]);
|
|
94
71
|
|
|
95
|
-
// Get values for calculations
|
|
96
72
|
const value = () => ariaProps.value ?? 0;
|
|
97
73
|
const minValue = () => ariaProps.minValue ?? 0;
|
|
98
74
|
const maxValue = () => ariaProps.maxValue ?? 100;
|
|
99
75
|
const isIndeterminate = () => ariaProps.isIndeterminate ?? false;
|
|
100
76
|
|
|
101
|
-
// Create progress bar aria props
|
|
102
77
|
const progressAria = createProgressBar({
|
|
103
|
-
get
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
get
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
get
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
get
|
|
113
|
-
|
|
78
|
+
get id() {
|
|
79
|
+
return ariaProps.id;
|
|
80
|
+
},
|
|
81
|
+
get value() {
|
|
82
|
+
return ariaProps.value;
|
|
83
|
+
},
|
|
84
|
+
get minValue() {
|
|
85
|
+
return ariaProps.minValue;
|
|
86
|
+
},
|
|
87
|
+
get maxValue() {
|
|
88
|
+
return ariaProps.maxValue;
|
|
89
|
+
},
|
|
90
|
+
get valueLabel() {
|
|
91
|
+
return ariaProps.valueLabel;
|
|
92
|
+
},
|
|
93
|
+
get isIndeterminate() {
|
|
94
|
+
return ariaProps.isIndeterminate;
|
|
95
|
+
},
|
|
96
|
+
get formatOptions() {
|
|
97
|
+
return ariaProps.formatOptions;
|
|
98
|
+
},
|
|
99
|
+
get label() {
|
|
100
|
+
return ariaProps.label;
|
|
101
|
+
},
|
|
102
|
+
get "aria-label"() {
|
|
103
|
+
return ariaProps["aria-label"];
|
|
104
|
+
},
|
|
105
|
+
get "aria-labelledby"() {
|
|
106
|
+
return ariaProps["aria-labelledby"];
|
|
107
|
+
},
|
|
108
|
+
get "aria-describedby"() {
|
|
109
|
+
return ariaProps["aria-describedby"];
|
|
110
|
+
},
|
|
111
|
+
get "aria-details"() {
|
|
112
|
+
return ariaProps["aria-details"];
|
|
113
|
+
},
|
|
114
114
|
});
|
|
115
115
|
|
|
116
|
-
// Calculate percentage
|
|
117
116
|
const percentage = createMemo(() => {
|
|
118
117
|
if (isIndeterminate()) {
|
|
119
118
|
return undefined;
|
|
120
119
|
}
|
|
121
120
|
const clampedValue = clamp(value(), minValue(), maxValue());
|
|
122
|
-
return ((clampedValue - minValue()) / (
|
|
121
|
+
return ((clampedValue - minValue()) / getSafeRange(minValue(), maxValue())) * 100;
|
|
123
122
|
});
|
|
124
123
|
|
|
125
|
-
// Get value text from aria props
|
|
126
124
|
const valueText = createMemo(() => {
|
|
127
|
-
return progressAria.progressBarProps[
|
|
125
|
+
return progressAria.progressBarProps["aria-valuetext"] as string | undefined;
|
|
128
126
|
});
|
|
129
127
|
|
|
130
|
-
// Render props values
|
|
131
128
|
const renderValues = createMemo<ProgressBarRenderProps>(() => ({
|
|
132
129
|
percentage: percentage(),
|
|
133
130
|
valueText: valueText(),
|
|
134
131
|
isIndeterminate: isIndeterminate(),
|
|
135
132
|
}));
|
|
136
133
|
|
|
137
|
-
// Resolve render props
|
|
138
134
|
const renderProps = useRenderProps(
|
|
139
135
|
{
|
|
140
136
|
children: props.children,
|
|
141
137
|
class: local.class,
|
|
142
138
|
style: local.style,
|
|
143
|
-
defaultClassName:
|
|
139
|
+
defaultClassName: "solidaria-ProgressBar",
|
|
144
140
|
},
|
|
145
|
-
renderValues
|
|
141
|
+
renderValues,
|
|
146
142
|
);
|
|
147
143
|
|
|
148
|
-
// Filter DOM props
|
|
149
144
|
const domProps = createMemo(() => filterDOMProps(ariaProps, { global: true }));
|
|
150
145
|
|
|
151
146
|
return (
|