@synopackageland/ui 0.25.8 → 0.25.9
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 +16 -0
- package/dist/components/primitives/dialog/dialogCover.d.ts +10 -0
- package/dist/composables/floatingHost.d.ts +8 -1
- package/dist/grid.js +1 -1
- package/dist/index.js +6922 -6880
- package/dist/json-preview/preview.js +6818 -6776
- package/dist/reka-runtime.json +1 -1
- package/docs/app-local-modal.md +9 -1
- package/package.json +1 -97
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
## 0.25.9 (2026-11-12)
|
|
6
|
+
|
|
7
|
+
### Dialog
|
|
8
|
+
|
|
9
|
+
- **A dialog opened from a floating dialog masks only the app window.** With `<AppRoot dialog-bounds="viewport">` (an app in a DSM window), a Dialog opened from a floating panel, such as WizardDialog's "Discard changes?" confirm, put its mask in the viewport-wide floating host, so it tinted the whole DSM desktop: icons, taskbar, widgets and notifications. The mask now goes in the app root's own portal host, inside the window, as the outer dialog's does. The floating parent sits above the window, so it draws the same mask over itself (`data-ui-dialog-cover`) while the child is open, as DSM masks a modal window under the message box it opens. Apps need no change. On a phone, where panels are not floating, and without `dialog-bounds="viewport"`, nothing changes. A Sheet opened from a floating Dialog still masks the viewport (docs/app-local-modal.md)
|
|
10
|
+
|
|
11
|
+
### Grid
|
|
12
|
+
|
|
13
|
+
- **An empty GridHost only header-tall no longer draws "No data" over its header.** The empty layer under the header is clipped (`overflow: hidden`), so with no room it shows nothing. Found in Studio Office, whose empty tables are header-tall with their own empty state under the grid
|
|
14
|
+
|
|
15
|
+
### Development
|
|
16
|
+
|
|
17
|
+
- `node scripts/check-wizard-confirm.mjs` (`tests/dsm-host/wizard-desktop.html`) opens a WizardDialog's confirm in an app window on a DSM-like desktop at 1280x800 and on a 390x844 touch phone: the desktop stays unmasked, the mask stays in the window, the wizard is masked and takes no presses, and Keep editing and Discard work. Before this change it had 4 failures
|
|
18
|
+
|
|
3
19
|
## 0.25.8 (2026-11-11)
|
|
4
20
|
|
|
5
21
|
On a phone (640px or narrower) a list is no longer a short inner scroller under the page's other content. Found in an App whose Explore page put a map above a DataGrid in a vertical SplitPane: at 360px the grid scrolled in a 385px box with a drag handle, and a pager count was cut to "38 ite…". The fix is in the SDK; Apps need no change and there is no new prop.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type DialogScrim = 'dim' | 'light' | 'none';
|
|
2
|
+
/**
|
|
3
|
+
* A dialog floating over the DSM desktop sits above its app window, so a
|
|
4
|
+
* dialog it opens masks the app window but not it. As DSM masks the window
|
|
5
|
+
* that owns a modal, the parent panel then draws the child's mask over
|
|
6
|
+
* itself: this returns the scrim to draw, or null.
|
|
7
|
+
*/
|
|
8
|
+
export declare function provideDialogCover(): import('vue').ComputedRef<DialogScrim | null>;
|
|
9
|
+
/** Asks the enclosing dialog for a mask while `active` holds. */
|
|
10
|
+
export declare function useParentDialogCover(active: () => boolean, scrim: () => DialogScrim): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Ref, ShallowRef } from 'vue';
|
|
1
|
+
import { InjectionKey, Ref, ShallowRef } from 'vue';
|
|
2
2
|
import { Box } from '../lib/floatingDialog';
|
|
3
3
|
export declare const FLOATING_HOST_KEY = "@synopkgland/floating-host";
|
|
4
4
|
export declare const FLOATING_HOST_ATTRIBUTE = "data-ui-floating";
|
|
@@ -13,6 +13,13 @@ export type FloatingHost = {
|
|
|
13
13
|
/** False on a narrow viewport or with a coarse pointer: panels become viewport sheets. */
|
|
14
14
|
draggable: Ref<boolean>;
|
|
15
15
|
};
|
|
16
|
+
/**
|
|
17
|
+
* The app root's own portal host (inside the app window). A Dialog opened from
|
|
18
|
+
* a floating panel puts its mask there, so the mask covers the app window and
|
|
19
|
+
* not the viewport-wide floating host.
|
|
20
|
+
*/
|
|
21
|
+
export declare const APP_PORTAL_KEY: InjectionKey<Readonly<Ref<HTMLElement | null>>>;
|
|
22
|
+
export declare function injectAppPortal(): Readonly<Ref<HTMLElement | null, HTMLElement | null>> | null;
|
|
16
23
|
export declare function injectFloatingHost(): FloatingHost | null;
|
|
17
24
|
/**
|
|
18
25
|
* A viewport-sized layer for dialogs that may leave the app window, as DSM's
|
package/dist/grid.js
CHANGED
|
@@ -3407,7 +3407,7 @@ const Ps = () => {
|
|
|
3407
3407
|
N.value ? (pe(), Ce("div", {
|
|
3408
3408
|
key: 0,
|
|
3409
3409
|
"data-ui-grid-empty": "",
|
|
3410
|
-
style: Be([{ top: `${P.value}px` }, { position: "absolute", left: "0", right: "0", bottom: "0", display: "flex", "align-items": "center", "justify-content": "center", color: "var(--ui-text-muted)", "font-size": "var(--ui-font-size)", "pointer-events": "none", "z-index": "1" }])
|
|
3410
|
+
style: Be([{ top: `${P.value}px` }, { position: "absolute", left: "0", right: "0", bottom: "0", display: "flex", "align-items": "center", "justify-content": "center", overflow: "hidden", color: "var(--ui-text-muted)", "font-size": "var(--ui-font-size)", "pointer-events": "none", "z-index": "1" }])
|
|
3411
3411
|
}, [
|
|
3412
3412
|
hn(d.$slots, "empty", {}, () => [
|
|
3413
3413
|
ti(we(J(a)("No data")), 1)
|