@synopackageland/ui 0.12.1 → 0.12.3
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 +17 -2
- package/dist/components/composite/data-grid/DataGrid.vue.d.ts +8 -0
- package/dist/components/composite/tree-view/TreeView.vue.d.ts +2 -2
- package/dist/components/feedback/notification/Notification.vue.d.ts +2 -2
- package/dist/components/primitives/tooltip/OverflowTooltip.vue.d.ts +30 -0
- package/dist/components/primitives/tooltip/tooltipStyle.d.ts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +7587 -7355
- package/dist/json-preview/preview.js +5502 -5315
- package/dist/lib/truncation.d.ts +33 -0
- package/dist/reka-runtime.json +1 -1
- package/dist/theme.css +1 -1
- package/dist/themes/dsm7-embedded-theme.css +1 -1
- package/dist/themes/dsm7-embedded.css +1 -1
- package/dist/themes/dsm7.css +1 -1
- package/docs/layout-rules.md +4 -3
- package/package.json +70 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.12.3 (2026-10-19)
|
|
4
|
+
|
|
5
|
+
- Cut text shows its whole text in the UI tooltip, and only when it is cut. A `DataGrid` cell or header that ends in "…" opens a tooltip after the hover delay, or at once on keyboard focus, measured at that moment (`scrollWidth > clientWidth`), so a resized column is right and a large grid adds no observer per cell. It finds the cut text inside rich cells too: a `CellText` link, a `PathDisplay` folder (icon and name), a `CellStatus` label. A cell that fits shows nothing. The native `title` on grid cells, headers, `CellText`, `CellStatus` and `PathDisplay` is gone, so one tooltip shows, not two.
|
|
6
|
+
- New `DataGridColumn.tooltip`: `false` turns the cell tooltip off for a column, a function `(row) => string` names the whole text itself. `headerTooltip: false` does the same for the header. An element in a cell can set `data-ui-tooltip-text` (its whole text), `data-ui-tooltip-hint` (a tooltip it shows even when not cut) or `data-ui-tooltip-off`; an element with its own `title` keeps it.
|
|
7
|
+
- New `OverflowTooltip` (exported): the same behaviour for an app's own list or region; wrap it, or point `target` at its element.
|
|
8
|
+
- `CellText` with `openLabel` shows the action in the UI tooltip, after the whole name when the name is cut. `PathDisplay display="name"` still names the whole path on hover; the framed path only when it is cut.
|
|
9
|
+
- `MultipleSelect` and `SuperboxSelect` lists: every row has a checkbox at the left, checked when chosen; the row under the pointer or keyboard gets a neutral grey tint (`--ui-neutral-soft`) and keeps its text colour, no more blue text on blue. "+N" is a quiet count chip whose tooltip names the hidden values, one per line; a cut tag names itself. `Select` and the single `Combobox`: the chosen row keeps its check and the selected tint, the active row the same grey tint, never blue text.
|
|
10
|
+
- New browser check `pnpm check:truncation` (before/after screenshots in en and zh-TW).
|
|
11
|
+
- Visible changes for apps: tooltips on cut cells and headers; the select lists described above. An app that set its own `title` on a cell slot keeps it; it can drop it now.
|
|
12
|
+
|
|
13
|
+
## 0.12.2 (2026-10-19)
|
|
14
|
+
|
|
15
|
+
- Remove environment-specific release notes and source comments from distributed content.
|
|
16
|
+
- Prepare npm releases from a clean package directory without local archive references.
|
|
17
|
+
|
|
3
18
|
## 0.12.1 (2026-10-19)
|
|
4
19
|
|
|
5
20
|
- Fix the development/workbench Reka patch loader reading Vite version query strings as part of a filename.
|
|
@@ -369,8 +384,8 @@ Two behavior changes: a Dialog without `width` is 520px wide inside `AppRoot`, a
|
|
|
369
384
|
|
|
370
385
|
## 0.9.0 (2026-10-11)
|
|
371
386
|
|
|
372
|
-
- **Breaking change:**
|
|
373
|
-
- **破壞性變更:**
|
|
387
|
+
- **Breaking change:** use `@synopackageland/ui` from npmjs for the package and imports, including `@synopackageland/ui/theme.css`. The repository is https://github.com/synopackageland/syno-pkg-land-ui. The CLI and CSS names are unchanged.
|
|
388
|
+
- **破壞性變更:** 套件與 import 改用 npmjs 上的 `@synopackageland/ui`,包含 `@synopackageland/ui/theme.css`。原始碼位於 https://github.com/synopackageland/syno-pkg-land-ui;CLI 與 CSS 名稱不變。
|
|
374
389
|
- Fix: the npm package ships `CHANGELOG.md` again, so installed consumers can read release notes offline (npm 11 no longer packs it implicitly). `pnpm check:package` now fails when the package lacks it.
|
|
375
390
|
- 修正:npm 包重新附上 `CHANGELOG.md`,安裝後可離線閱讀版本紀錄(npm 11 不再自動打包)。套件缺少它時,`pnpm check:package` 會失敗。
|
|
376
391
|
|
|
@@ -15,6 +15,14 @@ export type DataGridColumn = {
|
|
|
15
15
|
flex?: number;
|
|
16
16
|
/** Wraps the cell text instead of cutting it to one line with an ellipsis. */
|
|
17
17
|
wrap?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* A cell cut with an ellipsis shows its whole text in a tooltip on hover or
|
|
20
|
+
* keyboard focus. `false` turns that off for this column's cells; a function
|
|
21
|
+
* names the whole text itself (a link or a rich cell).
|
|
22
|
+
*/
|
|
23
|
+
tooltip?: boolean | ((row: Record<string, unknown>) => string | undefined);
|
|
24
|
+
/** `false` keeps a cut header label from naming itself in a tooltip. */
|
|
25
|
+
headerTooltip?: boolean;
|
|
18
26
|
/** `false` keeps the column shown: the column chooser cannot hide it. */
|
|
19
27
|
hideable?: boolean;
|
|
20
28
|
/** Starts hidden; the user can show it from the column chooser. */
|
|
@@ -42,11 +42,11 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
|
|
|
42
42
|
}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
43
43
|
select: (node: TreeNode) => any;
|
|
44
44
|
"update:modelValue": (value: string | string[] | undefined) => any;
|
|
45
|
-
"update:checkedKeys": (value: string[]) => any;
|
|
46
45
|
load: (payload: {
|
|
47
46
|
node: TreeNode;
|
|
48
47
|
children: TreeNode[];
|
|
49
48
|
}) => any;
|
|
49
|
+
"update:checkedKeys": (value: string[]) => any;
|
|
50
50
|
reorder: (payload: {
|
|
51
51
|
node: TreeNode;
|
|
52
52
|
target: TreeNode;
|
|
@@ -61,11 +61,11 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {
|
|
|
61
61
|
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
62
62
|
onSelect?: ((node: TreeNode) => any) | undefined;
|
|
63
63
|
"onUpdate:modelValue"?: ((value: string | string[] | undefined) => any) | undefined;
|
|
64
|
-
"onUpdate:checkedKeys"?: ((value: string[]) => any) | undefined;
|
|
65
64
|
onLoad?: ((payload: {
|
|
66
65
|
node: TreeNode;
|
|
67
66
|
children: TreeNode[];
|
|
68
67
|
}) => any) | undefined;
|
|
68
|
+
"onUpdate:checkedKeys"?: ((value: string[]) => any) | undefined;
|
|
69
69
|
onReorder?: ((payload: {
|
|
70
70
|
node: TreeNode;
|
|
71
71
|
target: TreeNode;
|
|
@@ -32,9 +32,9 @@ declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {},
|
|
|
32
32
|
}>, {
|
|
33
33
|
title: string | false;
|
|
34
34
|
open: boolean;
|
|
35
|
-
tone: NotificationTone;
|
|
36
|
-
content: string | false;
|
|
37
35
|
cancel: NotificationAction;
|
|
36
|
+
content: string | false;
|
|
37
|
+
tone: NotificationTone;
|
|
38
38
|
duration: number | false;
|
|
39
39
|
confirm: NotificationAction;
|
|
40
40
|
paused: boolean;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { CutText } from '../../../lib/truncation';
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
/** The region's element; without it the tooltip wraps its slot. */
|
|
4
|
+
target?: HTMLElement | null;
|
|
5
|
+
side?: 'top' | 'right' | 'bottom' | 'left';
|
|
6
|
+
/** `start` lines the tooltip up with the start of the cut text it completes. */
|
|
7
|
+
align?: 'start' | 'center' | 'end';
|
|
8
|
+
delay?: number;
|
|
9
|
+
/** Replaces the whole text of a cut element; `false` shows nothing for it. */
|
|
10
|
+
resolve?: (found: CutText) => string | false | undefined;
|
|
11
|
+
};
|
|
12
|
+
declare var __VLS_1: {};
|
|
13
|
+
type __VLS_Slots = {} & {
|
|
14
|
+
default?: (props: typeof __VLS_1) => any;
|
|
15
|
+
};
|
|
16
|
+
declare const __VLS_base: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
17
|
+
target: HTMLElement | null;
|
|
18
|
+
side: "top" | "right" | "bottom" | "left";
|
|
19
|
+
align: "start" | "center" | "end";
|
|
20
|
+
delay: number;
|
|
21
|
+
resolve: (found: CutText) => string | false | undefined;
|
|
22
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
23
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
24
|
+
declare const _default: typeof __VLS_export;
|
|
25
|
+
export default _default;
|
|
26
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
27
|
+
new (): {
|
|
28
|
+
$slots: S;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const TOOLTIP_CONTENT_CLASS = "z-[1100] max-w-72 rounded-[var(--ui-radius-sm)] bg-[var(--ui-tooltip-bg)] px-2.5 py-1.5 text-[12px] leading-4 text-[var(--ui-tooltip-fg)] whitespace-pre-line shadow-[var(--ui-shadow-menu)] [overflow-wrap:anywhere] animate-[ui-fade-in_var(--ui-motion-fast)_var(--ui-motion-ease)]";
|
package/dist/index.d.ts
CHANGED
|
@@ -34,6 +34,7 @@ export { default as Skeleton } from './components/primitives/skeleton/Skeleton.v
|
|
|
34
34
|
export { default as SectionSkeleton } from './components/primitives/skeleton/SectionSkeleton.vue';
|
|
35
35
|
export { default as Surface } from './components/primitives/surface/Surface.vue';
|
|
36
36
|
export { default as Tooltip } from './components/primitives/tooltip/Tooltip.vue';
|
|
37
|
+
export { default as OverflowTooltip } from './components/primitives/tooltip/OverflowTooltip.vue';
|
|
37
38
|
export { default as Popover } from './components/primitives/popover/Popover.vue';
|
|
38
39
|
export { default as DropdownMenu } from './components/primitives/dropdown-menu/DropdownMenu.vue';
|
|
39
40
|
export type { DropdownMenuEntry } from './components/primitives/dropdown-menu/DropdownMenu.vue';
|