sheer-ui 0.3.1 → 0.4.2
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/package.json +1 -1
- package/src/lib/components/accordion/components/accordion-item.svelte +3 -3
- package/src/lib/components/accordion/components/accordion.svelte +29 -13
- package/src/lib/components/accordion/types.ts +3 -3
- package/src/lib/components/checkbox/components/checkbox-group.svelte +7 -5
- package/src/lib/components/checkbox/components/checkbox.svelte +12 -8
- package/src/lib/components/combobox/components/combobox.svelte +2 -2
- package/src/lib/components/combobox/select/components/select.svelte +2 -2
- package/src/lib/components/context-menu/components/context-menu-trigger.svelte +1 -1
- package/src/lib/components/data-table/table-faceted-filter.svelte +2 -2
- package/src/lib/components/data-table/table-toolbar.svelte +5 -5
- package/src/lib/components/date-field/date-field.svelte.ts +2 -3
- package/src/lib/components/menu/components/menu-checkbox-group.svelte +6 -4
- package/src/lib/components/menu/components/menu-checkbox-item.svelte +11 -7
- package/src/lib/components/menu/menu.svelte.ts +9 -18
- package/src/lib/components/menubar/menubar.svelte.ts +7 -6
- package/src/lib/components/navigation-menu/components/navigation-menu-content.svelte +1 -1
- package/src/lib/components/navigation-menu/components/navigation-menu-indicator.svelte +2 -2
- package/src/lib/components/navigation-menu/components/navigation-menu-trigger.svelte +1 -1
- package/src/lib/components/navigation-menu/navigation-menu.svelte.ts +57 -60
- package/src/lib/components/pagination/components/pagination-next-button.svelte +12 -7
- package/src/lib/components/pagination/components/pagination-page.svelte +15 -8
- package/src/lib/components/pagination/components/pagination-prev-button.svelte +12 -7
- package/src/lib/components/pagination/components/pagination.svelte +31 -18
- package/src/lib/components/pagination/pagination.svelte.ts +48 -64
- package/src/lib/components/pin-input/pin-input.svelte.ts +7 -8
- package/src/lib/components/pin-input/usePasswordManager.svelte.ts +2 -2
- package/src/lib/components/scroll-area/scroll-area.svelte.ts +9 -10
- package/src/lib/components/slider/components/slider.svelte +2 -1
- package/src/lib/components/tabs/components/tabs-content.svelte +12 -7
- package/src/lib/components/tabs/components/tabs-list.svelte +9 -6
- package/src/lib/components/tabs/components/tabs-trigger.svelte +15 -8
- package/src/lib/components/tabs/components/tabs.svelte +28 -17
- package/src/lib/components/tabs/tabs.svelte.ts +51 -67
- package/src/lib/components/time-field/time-field.svelte.ts +2 -2
- package/src/lib/components/toggle-group/components/toggle-group-item.svelte +15 -8
- package/src/lib/components/toggle-group/components/toggle-group.svelte +28 -16
- package/src/lib/components/toggle-group/toggle-group.svelte.ts +33 -35
- package/src/lib/components/toolbar/components/toolbar-group-item.svelte +15 -8
- package/src/lib/components/toolbar/components/toolbar-group.svelte +19 -14
- package/src/lib/components/toolbar/toolbar.svelte.ts +28 -30
- package/src/lib/components/tooltip/tooltip.svelte.ts +6 -27
- package/src/lib/internal/dismissible-layer/use-dismissable-layer.svelte.ts +3 -4
- package/src/lib/internal/floating-layer/use-floating-layer.svelte.ts +26 -30
- package/src/lib/internal/{roving-focus-group.ts → roving-focus-group.svelte.ts} +17 -19
- package/src/lib/internal/roving-focus-item.svelte.ts +12 -17
- package/src/lib/internal/selection.svelte.ts +55 -41
- package/src/lib/internal/{state-machine.ts → state-machine.svelte.ts} +6 -8
- package/src/lib/internal/table/table.svelte.ts +23 -43
- package/src/lib/internal/timeout-fn.svelte.ts +6 -4
- package/src/lib/internal/tools/box.svelte.ts +5 -114
- package/src/lib/internal/tools/index.ts +1 -11
- package/src/lib/internal/tools/types.ts +0 -3
- package/src/lib/internal/typeahead.svelte.ts +9 -13
- package/src/lib/internal/types.ts +6 -0
- package/src/lib/internal/vaul/use-drawer-content.svelte.ts +2 -2
- package/src/lib/internal/vaul/use-drawer-root.svelte.ts +12 -7
- package/src/lib/components/accordion/accordion.svelte.ts +0 -43
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { ReadableBoxedValues, WritableBoxedValues } from '../tools/index.js';
|
|
2
2
|
import type { DrawerDirection } from './types.js';
|
|
3
3
|
import { useSnapPoints } from './use-snap-points.svelte.js';
|
|
4
4
|
import { isInput, usePreventScroll } from './use-prevent-scroll.svelte.js';
|
|
@@ -64,7 +64,7 @@ export function useDrawerRoot(opts: UseDrawerRootProps) {
|
|
|
64
64
|
let isAllowedToDrag = false;
|
|
65
65
|
let nestedTransitionCleanup: (() => void) | null = null;
|
|
66
66
|
let pointerStart = 0;
|
|
67
|
-
let keyboardIsOpen =
|
|
67
|
+
let keyboardIsOpen = $state.raw(false);
|
|
68
68
|
let shouldAnimate = $state(!opts.open.current);
|
|
69
69
|
let previousDiffFromInitial = 0;
|
|
70
70
|
let drawerHeight = 0;
|
|
@@ -307,7 +307,7 @@ export function useDrawerRoot(opts: UseDrawerRootProps) {
|
|
|
307
307
|
if (!drawerNode || !opts.repositionInputs.current) return;
|
|
308
308
|
|
|
309
309
|
const focusedElement = document.activeElement as HTMLElement;
|
|
310
|
-
if (isInput(focusedElement) || keyboardIsOpen
|
|
310
|
+
if (isInput(focusedElement) || keyboardIsOpen) {
|
|
311
311
|
const visualViewportHeight = window.visualViewport?.height || 0;
|
|
312
312
|
const totalHeight = window.innerHeight;
|
|
313
313
|
// This is the height of the keyboard
|
|
@@ -323,7 +323,7 @@ export function useDrawerRoot(opts: UseDrawerRootProps) {
|
|
|
323
323
|
|
|
324
324
|
// visualViewport height may change due to some subtle changes to the keyboard. Checking if the height changed by 60 or more will make sure that they keyboard really changed its open state.
|
|
325
325
|
if (Math.abs(previousDiffFromInitial - diffFromInitial) > 60) {
|
|
326
|
-
keyboardIsOpen
|
|
326
|
+
keyboardIsOpen = !keyboardIsOpen;
|
|
327
327
|
}
|
|
328
328
|
|
|
329
329
|
if (
|
|
@@ -337,7 +337,7 @@ export function useDrawerRoot(opts: UseDrawerRootProps) {
|
|
|
337
337
|
}
|
|
338
338
|
previousDiffFromInitial = diffFromInitial;
|
|
339
339
|
// We don't have to change the height if the input is in view, when we are here we are in the opened keyboard state so we can correctly check if the input is in view
|
|
340
|
-
if (drawerHeight > visualViewportHeight || keyboardIsOpen
|
|
340
|
+
if (drawerHeight > visualViewportHeight || keyboardIsOpen) {
|
|
341
341
|
const height = drawerNode.getBoundingClientRect().height;
|
|
342
342
|
let newDrawerHeight = height;
|
|
343
343
|
|
|
@@ -354,7 +354,7 @@ export function useDrawerRoot(opts: UseDrawerRootProps) {
|
|
|
354
354
|
drawerNode.style.height = `${initialDrawerHeight}px`;
|
|
355
355
|
}
|
|
356
356
|
|
|
357
|
-
if (opts.snapPoints.current && opts.snapPoints.current.length > 0 && !keyboardIsOpen
|
|
357
|
+
if (opts.snapPoints.current && opts.snapPoints.current.length > 0 && !keyboardIsOpen) {
|
|
358
358
|
drawerNode.style.bottom = `0px`;
|
|
359
359
|
} else {
|
|
360
360
|
// Negative bottom value would never make sense
|
|
@@ -653,7 +653,12 @@ export function useDrawerRoot(opts: UseDrawerRootProps) {
|
|
|
653
653
|
handleOnly: opts.handleOnly,
|
|
654
654
|
container: opts.container,
|
|
655
655
|
autoFocus: opts.autoFocus,
|
|
656
|
-
keyboardIsOpen
|
|
656
|
+
get keyboardIsOpen() {
|
|
657
|
+
return keyboardIsOpen;
|
|
658
|
+
},
|
|
659
|
+
set keyboardIsOpen(v: boolean) {
|
|
660
|
+
keyboardIsOpen = v;
|
|
661
|
+
},
|
|
657
662
|
setDrawerNode,
|
|
658
663
|
setOverlayNode,
|
|
659
664
|
onPress,
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { createContext } from 'svelte';
|
|
2
|
-
|
|
3
|
-
export type AccordionType = 'single' | 'multiple';
|
|
4
|
-
|
|
5
|
-
type AccordionStateProps = {
|
|
6
|
-
type: () => AccordionType;
|
|
7
|
-
value: () => string | string[];
|
|
8
|
-
setValue: (value: string | string[]) => void;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Each item is a `<details>`; this state owns the open set (bindable `value`) and
|
|
13
|
-
* single-type exclusivity — not the native `name` attribute, which would unrender a
|
|
14
|
-
* force-closed sibling before its closing transition can play. Items intercept summary
|
|
15
|
-
* clicks and report intent here; the grid-track animation lives in ui.css.
|
|
16
|
-
*/
|
|
17
|
-
export class AccordionState {
|
|
18
|
-
readonly props: AccordionStateProps;
|
|
19
|
-
|
|
20
|
-
constructor(props: AccordionStateProps) {
|
|
21
|
-
this.props = props;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
includes(item: string): boolean {
|
|
25
|
-
const value = this.props.value();
|
|
26
|
-
return Array.isArray(value) ? value.includes(item) : value === item;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/** Open/close intent from an item — intercepted summary clicks and native force-opens alike. */
|
|
30
|
-
report(item: string, open: boolean): void {
|
|
31
|
-
const value = this.props.value();
|
|
32
|
-
if (Array.isArray(value)) {
|
|
33
|
-
if (open && !value.includes(item)) this.props.setValue([...value, item]);
|
|
34
|
-
else if (!open && value.includes(item)) this.props.setValue(value.filter((v) => v !== item));
|
|
35
|
-
} else if (open) {
|
|
36
|
-
if (value !== item) this.props.setValue(item);
|
|
37
|
-
} else if (value === item) {
|
|
38
|
-
this.props.setValue('');
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export const [useAccordion, setAccordion] = createContext<AccordionState>();
|