@synopackageland/ui 0.14.5 → 0.14.7
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/README.md +2 -1
- package/dist/ButtonPolicyDemo.vue.d.ts +3 -0
- package/dist/components/composite/settings-section/SettingsSection.vue.d.ts +2 -2
- package/dist/components/containers/card/Card.vue.d.ts +2 -2
- package/dist/components/primitives/button/Button.vue.d.ts +4 -3
- package/dist/composables/buttonKind.d.ts +12 -4
- package/dist/index.js +2081 -2077
- package/dist/json-ai-prompt.md +1 -1
- package/dist/json-catalog.schema.json +1 -1
- package/dist/json-preview/preview.js +3386 -3385
- package/dist/json.js +22 -22
- package/dist/lib/adaptiveLayout.d.ts +1 -1
- 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/adaptive-layout.md +8 -5
- package/docs/button-policy.md +62 -0
- package/docs/layout-rules.md +2 -1
- package/package.json +2 -1
package/docs/adaptive-layout.md
CHANGED
|
@@ -5,12 +5,12 @@ The same AppRoot + AppLayout supports three presentations:
|
|
|
5
5
|
|
|
6
6
|
| AppLayout container width | Presentation | Layout |
|
|
7
7
|
| --- | --- | --- |
|
|
8
|
-
| 1–
|
|
9
|
-
|
|
|
8
|
+
| 1–640px | `mobile` | Slide-out accessible navigation, tight page gutters, wrapped header actions, narrow-table cards |
|
|
9
|
+
| 641–1199px | `window` | Original dense DSM window interior, same as before |
|
|
10
10
|
| 1200px or wider, with `wide-layout="web"` | `web` | Full page: collapsible and resizable sidebar, heavier dividers, page content flush beside the sidebar at DSM window padding (no page card), lifted cards on flat pages |
|
|
11
11
|
|
|
12
12
|
A maximized DSM window is still a DSM window: without `wide-layout="web"`,
|
|
13
|
-
AppLayout stays in `window` mode at any width above
|
|
13
|
+
AppLayout stays in `window` mode at any width above 640px. Only a full-page
|
|
14
14
|
Portal (or standalone web page) should opt into `web`.
|
|
15
15
|
|
|
16
16
|
The thresholds are based on **actual AppLayout width**, not the browser viewport.
|
|
@@ -142,10 +142,13 @@ import {
|
|
|
142
142
|
- `DataTable` defaults to `mobile-view="auto"`, switching to accessible labeled
|
|
143
143
|
cards in the **App's mobile presentation**. A narrow table within an ordinary
|
|
144
144
|
700px/800px DSM Window stays a table, even if its content area is below
|
|
145
|
-
|
|
146
|
-
back to its own width (
|
|
145
|
+
640px. When no AppRoot/AppLayout provides a presentation, DataTable falls
|
|
146
|
+
back to its own width (640px or less). It preserves *all* columns,
|
|
147
147
|
custom `cell-*` slots and actions. `mobile-view="table"` retains horizontal
|
|
148
148
|
scrolling for dense/interactive data; `cards` forces cards at every size.
|
|
149
|
+
Explicit column `width` values (CSS pixels or percentages) use fixed table
|
|
150
|
+
tracks; columns without a width share the remaining space. Long text wraps
|
|
151
|
+
inside those tracks. Tables without widths retain automatic sizing.
|
|
149
152
|
- `DataGrid` retains its desktop semantics (sorting, editing, selection,
|
|
150
153
|
keyboard navigation, reorder) and horizontally scrolls at narrow widths.
|
|
151
154
|
Avoid silently removing columns or disabling actions. Use a mobile alternative
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# Button policy
|
|
2
|
+
|
|
3
|
+
DSM 7 draws two button shapes. A **capsule** belongs to the bar that closes a
|
|
4
|
+
window, dialog or form: OK / Cancel, Apply / Reset, a wizard's Next, a
|
|
5
|
+
confirmation's Delete. Every other button is a **tool button** with the 3px
|
|
6
|
+
control radius: toolbars, page headers, sections, rows, fields. The components
|
|
7
|
+
pick the shape from where a button sits; an App chooses only the variant.
|
|
8
|
+
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
Measured on DSM 7.4 (Control Panel, Package Center, File Station): every button
|
|
12
|
+
is 28px high. A footer capsule is at least 80px wide, 120px for the blue or red
|
|
13
|
+
one; a tool button sizes to its label with 13px each side. Colours and states
|
|
14
|
+
are in [dsm-native-metrics.md](dsm-native-metrics.md).
|
|
15
|
+
|
|
16
|
+
## Where each button goes
|
|
17
|
+
|
|
18
|
+
| Place | Component | Shape | Variants |
|
|
19
|
+
| --- | --- | --- | --- |
|
|
20
|
+
| Dialog, sheet or wizard footer | `Dialog`, `Sheet`, `Wizard` `#footer` | capsule | Cancel `secondary`, then OK `primary` |
|
|
21
|
+
| Confirmation of a destructive action | `Dialog` `#footer` | capsule | Cancel `secondary`, then Delete `danger` |
|
|
22
|
+
| Form or window footer | `FormActions`, `AppActionBar`, `Footbar`, `Panel` `#fbar` | capsule | Reset `secondary`, then Apply `primary` |
|
|
23
|
+
| Notification | `Notification` `confirm` / `cancel` | capsule | Cancel `secondary`, then the action `primary` |
|
|
24
|
+
| Toolbar | `AppToolbar`, a row above a list | tool | `secondary`; `SplitButton` for Create and its variants |
|
|
25
|
+
| Page header | `PageHeader` `#actions` | tool | one refresh `IconButton` per page |
|
|
26
|
+
| Section or card | `SettingsSection` / `Card` body, `#actions`, `#footer` | tool | `secondary`; a Save / Cancel row there goes in `FormActions` |
|
|
27
|
+
| Beside a field | `InputGroup` | tool | `secondary` (Open, Copy, Test) |
|
|
28
|
+
| Row of a list or grid | `ListItem` `#actions`, an `actions` column | tool | `IconButton` with a `label` |
|
|
29
|
+
| Navigation, help, external page | `Link` | text link | not a button |
|
|
30
|
+
|
|
31
|
+
## Rules
|
|
32
|
+
|
|
33
|
+
1. A capsule only ends something: it closes a dialog, applies a form or moves a
|
|
34
|
+
wizard. An action that stays on the page, such as Disable this connection,
|
|
35
|
+
Open or Check again, is a tool button even in a section footer.
|
|
36
|
+
2. One main action per footer: one `primary`, or one `danger` for a
|
|
37
|
+
destructive confirmation. The others are `secondary`.
|
|
38
|
+
3. The main action goes last, at the right edge: Cancel then OK, Reset then
|
|
39
|
+
Apply. A footer is right-aligned, except `FormActions` in a page form, which
|
|
40
|
+
starts at the field edge.
|
|
41
|
+
4. Toolbar and row actions are grey, Delete too. Red appears in the dialog that
|
|
42
|
+
confirms the deletion, not on the button that opens it.
|
|
43
|
+
5. Inside a page, use `primary` only for the one step that unblocks the page,
|
|
44
|
+
such as Sign in in a callout; at most one per section.
|
|
45
|
+
6. Keep the default size. `sm` and `lg` exist for dense rows and touch layouts;
|
|
46
|
+
neighbouring buttons share one size.
|
|
47
|
+
7. A disabled button keeps its shape and place. Say why next to it.
|
|
48
|
+
8. An icon-only action is an `IconButton` with a `label`; it shows as its
|
|
49
|
+
tooltip and names the button for screen readers.
|
|
50
|
+
9. Labels are verbs, without a closing period: Apply, Disable this connection.
|
|
51
|
+
|
|
52
|
+
## What the components do
|
|
53
|
+
|
|
54
|
+
- A Button takes its shape from the closest footer: inside `Dialog`, `Sheet`
|
|
55
|
+
and `Wizard` footers, `FormActions`, `AppActionBar`, `Footbar`, a `Panel`
|
|
56
|
+
`#fbar` or a `Notification` it is a capsule, everywhere else a tool button.
|
|
57
|
+
Set `kind="tool"` on one footer button to keep it a tool button (Help, say).
|
|
58
|
+
- In development, a Button warns in the console when `kind="action"` is set
|
|
59
|
+
outside a footer, when a footer has two main actions, or when the main action
|
|
60
|
+
is not last. Production builds do not check.
|
|
61
|
+
|
|
62
|
+

|
package/docs/layout-rules.md
CHANGED
|
@@ -15,8 +15,9 @@ These rules keep pages built from `@synopackageland/ui` consistent. The componen
|
|
|
15
15
|
|
|
16
16
|
## Actions
|
|
17
17
|
|
|
18
|
+
- [Button policy](button-policy.md) says which button goes where: its shape, variant and order.
|
|
18
19
|
- Buttons that belong together sit in one row with an 8px gap: `FormActions` in a form, the `#footer` slot in a section or card.
|
|
19
|
-
-
|
|
20
|
+
- Only the bar that closes a dialog or form draws capsule `action` buttons, without a `kind`: `FormActions`, `Footbar`, `AppActionBar`, a `Notification`'s actions, and the footers of `Dialog`, `Wizard`, `Sheet` and `Panel` (`#fbar`), with the main action last. `kind="tool"` opts one button out. A `SettingsSection` or `Card` footer, header actions and content stay `tool` buttons; put a section's Save / Cancel in `FormActions`.
|
|
20
21
|
- On a settings form longer than the window, `FormActions sticky` keeps Apply in view at the bottom over a divider. Do not write your own sticky footer.
|
|
21
22
|
- Each page has one refresh, in the page header. Panels expose `refresh()` for it instead of their own button.
|
|
22
23
|
- A disabled primary button keeps readable text. Put the reason next to it, such as "Enter the password to confirm."
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synopackageland/ui",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.7",
|
|
4
4
|
"description": "Shared Vue 3 UI component library with a DSM 7 inspired application theme",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"README.md",
|
|
16
16
|
"docs/adaptive-layout.md",
|
|
17
17
|
"docs/app-local-modal.md",
|
|
18
|
+
"docs/button-policy.md",
|
|
18
19
|
"docs/color-system.md",
|
|
19
20
|
"docs/component-defaults-0.5.7.md",
|
|
20
21
|
"docs/json-ui.md",
|