@synopackageland/ui 0.20.11 → 0.20.13
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 +14 -0
- package/README.md +12 -1
- package/dist/components/app/app-layout/pageTitle.d.ts +8 -6
- package/dist/components/app/page-content/pageSticky.d.ts +5 -0
- package/dist/components/composite/file-picker/FilePicker.vue.d.ts +11 -0
- package/dist/grid/cells/types.d.ts +2 -2
- package/dist/grid.js +6 -6
- package/dist/index.d.ts +1 -1
- package/dist/index.js +12311 -12209
- package/dist/json-preview/preview.js +8023 -7958
- package/dist/lib/adaptiveLayout.d.ts +10 -0
- package/dist/lib/fileAccept.d.ts +17 -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/adaptive-layout.md +34 -0
- package/docs/mobile-native.md +20 -7
- package/package.json +2 -1
package/docs/adaptive-layout.md
CHANGED
|
@@ -146,6 +146,40 @@ this in Chromium at 390 and 768 with touch, with Android emulated by a
|
|
|
146
146
|
viewport resize and iOS by a stand-in visual viewport. A real-device pass on
|
|
147
147
|
iOS Safari and Android Chrome is still needed (spec D6).
|
|
148
148
|
|
|
149
|
+
## Short screens
|
|
150
|
+
|
|
151
|
+
A screen at most 480px tall (a phone in landscape: 753×279, 667×375,
|
|
152
|
+
844×390) is too short for a page header, a section strip, the settings rows and
|
|
153
|
+
an Apply footer stacked over each other. Outside the phone presentation,
|
|
154
|
+
`AppLayout` then switches to its short mode (`SHORT_VIEWPORT_QUERY`,
|
|
155
|
+
`(max-height: 480px)` of the viewport, so a DSM window on a desktop never gets
|
|
156
|
+
it). The root carries `data-ui-layout-short`, and `APP_SHORT_KEY` tells
|
|
157
|
+
components below it. Every App gets it; there is nothing to set.
|
|
158
|
+
|
|
159
|
+
- **The title is in the bar.** The page's title (AppLayout's `title`, else
|
|
160
|
+
its `PageHeader`'s) leads the bar above the page (`data-ui-layout-bar`),
|
|
161
|
+
in the row of the `toolbar` slot. A `PageHeader` with the same title keeps
|
|
162
|
+
its heading for screen readers only, and takes no room when it has nothing
|
|
163
|
+
else to show.
|
|
164
|
+
- **The page scrolls as one.** A page holding a `SettingsPage` or a
|
|
165
|
+
`SectionTabs fill` no longer squeezes the settings body between the bar,
|
|
166
|
+
the strip and the footer: in a layout with a height of its own (`height="fill"`,
|
|
167
|
+
or a content area the App clips or scrolls) the whole column scrolls, the
|
|
168
|
+
bar and the header scroll away, the section strip sticks at the top and
|
|
169
|
+
Reset / Apply at the bottom.
|
|
170
|
+
Other pages, such as a DataGrid that scrolls itself, keep their layout.
|
|
171
|
+
- **The header does not stick.** A `PageHeader` scrolls with the page, in a
|
|
172
|
+
tight row (8px above and below).
|
|
173
|
+
|
|
174
|
+
At any height, a `SectionTabs fill` strip (and a pushed section's Back header on a phone) sticks below a sticky `PageHeader`
|
|
175
|
+
in the same `PageContent` (`--ui-page-sticky-top`, the header's height)
|
|
176
|
+
instead of sliding under it.
|
|
177
|
+
|
|
178
|
+
A phone in portrait keeps the phone presentation unchanged. `node
|
|
179
|
+
scripts/check-short-viewport.mjs [out-dir]` (after `pnpm build`) checks the
|
|
180
|
+
three landscape sizes, 360×697 and 1280×800 for a shell that hides its title,
|
|
181
|
+
one that shows a `PageHeader` (filled or not) and a filled AppLayout.
|
|
182
|
+
|
|
149
183
|
## Web presentation sidebar
|
|
150
184
|
|
|
151
185
|
In `web`, the sidebar's 48px head row ends with a collapse button, and a
|
package/docs/mobile-native.md
CHANGED
|
@@ -62,13 +62,13 @@ control and grid sizes; it does not change the 16px field rule.
|
|
|
62
62
|
| `--ui-font-size-title` | 16 | 16 | **17** | header and dialog titles |
|
|
63
63
|
| `--ui-grid-font-size` (new) | 13 | 13 | **14** | grid cell text (not yet read by the canvas grid; see below) |
|
|
64
64
|
| `--ui-font-size-field` (new) | 16 | 16 | 16 | every field on a coarse pointer, to stop iOS focus zoom |
|
|
65
|
-
| `--ui-control-md` | 28 | **
|
|
65
|
+
| `--ui-control-md` | 28 | **44** | **44** | fields, selects, form and sheet buttons |
|
|
66
66
|
| `--ui-control-sm` | 24 | **32** | **36** | inline and toolbar buttons (the tap box comes from `--ui-hit-min`) |
|
|
67
67
|
| `--ui-hit-min` (new) | 0 | **44** | **44** | smallest tap box |
|
|
68
68
|
| `--ui-tap-gap` (new) | 0 | **8** | **8** | room between tap targets; `--ui-icon-button-gap` reads it on touch |
|
|
69
69
|
| `--ui-grid-row-height` / `-header-height` | 28 | **36** | **32** | canvas grid rows (docs/ux-grid.md) |
|
|
70
70
|
| `--ui-list-row-height` (new) | 32 | **44** | **48** | list rows |
|
|
71
|
-
| `--ui-menu-row-height` | 32 | **
|
|
71
|
+
| `--ui-menu-row-height` | 32 | **44** | **48** | menu, select and sheet list rows |
|
|
72
72
|
| `--ui-page-padding-x` / `-y` | 16 (narrow layout 12) | 16 | **16** | page gutter |
|
|
73
73
|
| `--ui-section-gap` | 12 | 12 | **20** | space between sections |
|
|
74
74
|
| `--ui-card-padding` | 20 (Card default) | 20 | **16** | card inset |
|
|
@@ -145,11 +145,24 @@ These controls get the hit area:
|
|
|
145
145
|
`[data-tag][role=button]` (a tappable Tag), `[data-tag-remove]`,
|
|
146
146
|
`[data-ui-password-toggle]`
|
|
147
147
|
|
|
148
|
-
A new tappable control can opt in by adding `data-ui-hit`.
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
tap
|
|
148
|
+
A new tappable control can opt in by adding `data-ui-hit`. Small standalone
|
|
149
|
+
controls already do: Link, close buttons (Dialog, Sheet, Toast, Notification,
|
|
150
|
+
Callout, RecordPanel, AsidePanel), PathDisplay copy, InfoTip, the Card and
|
|
151
|
+
ExpandableItem toggles, Pagination page numbers and the TreeView toggle (when
|
|
152
|
+
the tree has no checkboxes). When two tap boxes overlap, the later control
|
|
153
|
+
wins the overlap, so a cluster spaces its controls a box apart on touch
|
|
154
|
+
(`gap-[max(4px,calc(var(--ui-hit-min,0px)-<control size>))]`, as in Pagination
|
|
155
|
+
and the AsidePanel header). The rule sits in the base layer, so a component
|
|
156
|
+
that sets its own `position` or draws its own `::before` keeps it, and loses
|
|
157
|
+
the larger tap box; a component that keeps a desktop slop writes it under
|
|
158
|
+
`[@media(pointer:fine)]`. The box is a child of the control: `overflow:
|
|
159
|
+
hidden` (or `truncate`) on the control or a scroller around it cuts the box
|
|
160
|
+
off, so truncate the label inside instead and clip a row sideways only
|
|
161
|
+
(`overflow-x-clip`).
|
|
162
|
+
|
|
163
|
+
`check:mobile` exempts a link set in a sentence (inline, with text beside it
|
|
164
|
+
in the same parent): WCAG 2.5.8 lets the line of text decide its size. A link
|
|
165
|
+
alone on its line still needs 44px.
|
|
153
166
|
|
|
154
167
|
### Not done in this layer
|
|
155
168
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@synopackageland/ui",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.13",
|
|
4
4
|
"description": "Shared Vue 3 UI component library with a DSM 7 inspired application theme",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -92,6 +92,7 @@
|
|
|
92
92
|
"check:text-select": "node scripts/check-text-select.mjs",
|
|
93
93
|
"check:date-picker": "node scripts/check-date-picker.mjs",
|
|
94
94
|
"check:full-page": "node scripts/check-full-page.mjs",
|
|
95
|
+
"check:short-viewport": "node scripts/check-short-viewport.mjs",
|
|
95
96
|
"check:detail-surface": "node scripts/check-detail-surface.mjs",
|
|
96
97
|
"check:internal": "node --test scripts/check-internal-content.test.mjs scripts/check-npm-metadata.test.mjs && node scripts/check-internal-content.mjs --repo .",
|
|
97
98
|
"check:npm-metadata": "node scripts/check-npm-metadata.mjs",
|