@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,223 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RouterProvider for solidaria-components
|
|
3
|
+
*
|
|
4
|
+
* A context provider for client-side router integration.
|
|
5
|
+
* SolidJS apps typically use TanStack Router or SolidRouter directly;
|
|
6
|
+
* this provides API compatibility with React Aria's RouterProvider.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { type JSX, createContext, useContext } from "solid-js";
|
|
10
|
+
|
|
11
|
+
export interface RouterClickModifiers {
|
|
12
|
+
metaKey?: boolean;
|
|
13
|
+
ctrlKey?: boolean;
|
|
14
|
+
altKey?: boolean;
|
|
15
|
+
shiftKey?: boolean;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface RouterContextValue {
|
|
19
|
+
/** Whether the router is a native browser router (no client-side navigation). */
|
|
20
|
+
isNative: boolean;
|
|
21
|
+
/** Navigate to a given href. */
|
|
22
|
+
navigate: (href: string, routerOptions?: RouterOptions) => void;
|
|
23
|
+
/** Open a link target with router-aware navigation behavior. */
|
|
24
|
+
open: (
|
|
25
|
+
target: Element,
|
|
26
|
+
modifiers: RouterClickModifiers,
|
|
27
|
+
href: string,
|
|
28
|
+
routerOptions?: RouterOptions,
|
|
29
|
+
) => void;
|
|
30
|
+
/** Transform an href for the router. */
|
|
31
|
+
useHref: (href: string) => string;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface RouterOptions {
|
|
35
|
+
/** Whether to replace the current history entry. */
|
|
36
|
+
replace?: boolean;
|
|
37
|
+
/** Additional router-specific options. */
|
|
38
|
+
[key: string]: unknown;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export interface RouterProviderProps {
|
|
42
|
+
/** A function that performs client-side navigation. */
|
|
43
|
+
navigate: (href: string, routerOptions?: RouterOptions) => void;
|
|
44
|
+
/** An optional function that transforms hrefs. */
|
|
45
|
+
useHref?: (href: string) => string;
|
|
46
|
+
/** Children to render. */
|
|
47
|
+
children: JSX.Element;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const defaultRouter: RouterContextValue = {
|
|
51
|
+
isNative: true,
|
|
52
|
+
navigate: () => {},
|
|
53
|
+
open: (target, modifiers) => {
|
|
54
|
+
openSyntheticLink(target, modifiers);
|
|
55
|
+
},
|
|
56
|
+
useHref: (href: string) => href,
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
export const RouterContext = createContext<RouterContextValue>(defaultRouter);
|
|
60
|
+
|
|
61
|
+
export interface LinkDOMProps {
|
|
62
|
+
href?: string;
|
|
63
|
+
target?: string;
|
|
64
|
+
rel?: string;
|
|
65
|
+
download?: string | boolean;
|
|
66
|
+
ping?: string;
|
|
67
|
+
referrerPolicy?:
|
|
68
|
+
| ""
|
|
69
|
+
| "no-referrer"
|
|
70
|
+
| "no-referrer-when-downgrade"
|
|
71
|
+
| "origin"
|
|
72
|
+
| "origin-when-cross-origin"
|
|
73
|
+
| "same-origin"
|
|
74
|
+
| "strict-origin"
|
|
75
|
+
| "strict-origin-when-cross-origin"
|
|
76
|
+
| "unsafe-url";
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export function shouldClientNavigate(
|
|
80
|
+
link: HTMLAnchorElement,
|
|
81
|
+
modifiers: RouterClickModifiers,
|
|
82
|
+
): boolean {
|
|
83
|
+
const target = link.getAttribute("target");
|
|
84
|
+
const sameOrigin = typeof location === "undefined" ? true : link.origin === location.origin;
|
|
85
|
+
return (
|
|
86
|
+
(!target || target === "_self") &&
|
|
87
|
+
sameOrigin &&
|
|
88
|
+
!link.hasAttribute("download") &&
|
|
89
|
+
!modifiers.metaKey &&
|
|
90
|
+
!modifiers.ctrlKey &&
|
|
91
|
+
!modifiers.altKey &&
|
|
92
|
+
!modifiers.shiftKey
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export function openLink(target: HTMLAnchorElement, modifiers: RouterClickModifiers): void {
|
|
97
|
+
const event = new MouseEvent("click", {
|
|
98
|
+
metaKey: modifiers.metaKey,
|
|
99
|
+
ctrlKey: modifiers.ctrlKey,
|
|
100
|
+
altKey: modifiers.altKey,
|
|
101
|
+
shiftKey: modifiers.shiftKey,
|
|
102
|
+
detail: 1,
|
|
103
|
+
bubbles: true,
|
|
104
|
+
cancelable: true,
|
|
105
|
+
});
|
|
106
|
+
target.dispatchEvent(event);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function getSyntheticLink(target: Element, open: (link: HTMLAnchorElement) => void): void {
|
|
110
|
+
if (target instanceof HTMLAnchorElement) {
|
|
111
|
+
open(target);
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
const href = target.getAttribute("data-href");
|
|
116
|
+
if (!href) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
const link = document.createElement("a");
|
|
121
|
+
link.href = href;
|
|
122
|
+
|
|
123
|
+
const targetValue = target.getAttribute("data-target");
|
|
124
|
+
if (targetValue) link.target = targetValue;
|
|
125
|
+
|
|
126
|
+
const rel = target.getAttribute("data-rel");
|
|
127
|
+
if (rel) link.rel = rel;
|
|
128
|
+
|
|
129
|
+
const download = target.getAttribute("data-download");
|
|
130
|
+
if (download) link.download = download;
|
|
131
|
+
|
|
132
|
+
const ping = target.getAttribute("data-ping");
|
|
133
|
+
if (ping) link.ping = ping;
|
|
134
|
+
|
|
135
|
+
const referrerPolicy = target.getAttribute("data-referrer-policy");
|
|
136
|
+
if (referrerPolicy) {
|
|
137
|
+
link.referrerPolicy = referrerPolicy;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
target.appendChild(link);
|
|
141
|
+
open(link);
|
|
142
|
+
target.removeChild(link);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
function openSyntheticLink(target: Element, modifiers: RouterClickModifiers): void {
|
|
146
|
+
getSyntheticLink(target, (link) => openLink(link, modifiers));
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
export function useLinkProps(props?: LinkDOMProps): LinkDOMProps {
|
|
150
|
+
const router = useRouter();
|
|
151
|
+
const href = props?.href ?? "";
|
|
152
|
+
return {
|
|
153
|
+
href: props?.href ? router.useHref(href) : undefined,
|
|
154
|
+
target: props?.target,
|
|
155
|
+
rel: props?.rel,
|
|
156
|
+
download: props?.download,
|
|
157
|
+
ping: props?.ping,
|
|
158
|
+
referrerPolicy: props?.referrerPolicy,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export function handleLinkClick(
|
|
163
|
+
event: MouseEvent,
|
|
164
|
+
router: RouterContextValue,
|
|
165
|
+
href: string | undefined,
|
|
166
|
+
routerOptions?: RouterOptions,
|
|
167
|
+
): void {
|
|
168
|
+
if (
|
|
169
|
+
!router.isNative &&
|
|
170
|
+
event.currentTarget instanceof HTMLAnchorElement &&
|
|
171
|
+
event.currentTarget.href &&
|
|
172
|
+
!event.defaultPrevented &&
|
|
173
|
+
href &&
|
|
174
|
+
shouldClientNavigate(event.currentTarget, event)
|
|
175
|
+
) {
|
|
176
|
+
event.preventDefault();
|
|
177
|
+
router.open(event.currentTarget, event, href, routerOptions);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* A RouterProvider accepts a `navigate` function from a client-side router,
|
|
183
|
+
* and provides it to all nested solidaria links to enable client-side navigation.
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* ```tsx
|
|
187
|
+
* import { useNavigate } from '@solidjs/router';
|
|
188
|
+
*
|
|
189
|
+
* function App() {
|
|
190
|
+
* const navigate = useNavigate();
|
|
191
|
+
* return (
|
|
192
|
+
* <RouterProvider navigate={navigate}>
|
|
193
|
+
* <Link href="/about">About</Link>
|
|
194
|
+
* </RouterProvider>
|
|
195
|
+
* );
|
|
196
|
+
* }
|
|
197
|
+
* ```
|
|
198
|
+
*/
|
|
199
|
+
export function RouterProvider(props: RouterProviderProps): JSX.Element {
|
|
200
|
+
const ctx: RouterContextValue = {
|
|
201
|
+
isNative: false,
|
|
202
|
+
navigate: props.navigate,
|
|
203
|
+
open: (target, modifiers, href, routerOptions) => {
|
|
204
|
+
getSyntheticLink(target, (link) => {
|
|
205
|
+
if (shouldClientNavigate(link, modifiers)) {
|
|
206
|
+
props.navigate(href, routerOptions);
|
|
207
|
+
} else {
|
|
208
|
+
openLink(link, modifiers);
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
},
|
|
212
|
+
useHref: props.useHref ?? ((href: string) => href),
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
return <RouterContext.Provider value={ctx}>{props.children}</RouterContext.Provider>;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Returns the current router context value.
|
|
220
|
+
*/
|
|
221
|
+
export function useRouter(): RouterContextValue {
|
|
222
|
+
return useContext(RouterContext);
|
|
223
|
+
}
|