@synopackageland/ui 0.25.14 → 0.25.16

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.
@@ -141,16 +141,46 @@ state keys are copied through). The Android back button or the iOS edge swipe
141
141
  calls `close` for the top surface only; closing by code removes the entry.
142
142
  Pass `enabled: false` where the surface is a popover or inside a DSM window.
143
143
 
144
- Inside the Package Land phone app, a root page also gets Back to the App list.
145
- The app's bridge (`window.SynoPkgNative`, protocol 1) lists `close` in its
146
- `features`; AppLayout then leads the phone bar with the shared back arrow, and
147
- a tap posts `{ v: 1, type: 'close' }`, which the app honors only right after a
148
- tap. A browser, a sub-page (which has its own Back) and anything wider than a
149
- phone never show it. When the page hides the bar (`phone-bar-title="none"`
150
- without a menu), the first `PageToolbar` or `SectionTabs` row on the page holds
151
- the button at its start, so it costs no row; with no such row the bar is drawn
152
- for it. The arrow is `app-layout/back-arrow.json`, a byte copy of the phone
153
- app's drawing; `tests/ShellBack.test.ts` pins its SHA-256, as the phone app
144
+ Inside the Package Land launcher, every page leads with Home, sub-pages
145
+ included: Home goes back to the launcher's home, as the launcher's own bars do.
146
+ Stepping back is the system Back's job (Android's back button, the browser's
147
+ back or swipe). The page finds the launcher in one of two ways:
148
+
149
+ - **Phone app.** Its bridge (`window.SynoPkgNative`, protocol 1) lists `close`
150
+ in its `features`. A tap posts `{ v: 1, type: 'close' }` through the bridge.
151
+ - **Browser launcher.** It opens the App in a same-origin frame named
152
+ `synopkg-shell:1:close` (`SHELL_FRAME_PREFIX` followed by its features,
153
+ comma-separated). A tap posts the same message to the parent window, at the
154
+ page's own origin.
155
+
156
+ Either launcher honors the request only right after a tap. A plain browser
157
+ tab, a DSM window and anything wider than a phone never show Home; there a
158
+ sub-page keeps its Back arrow.
159
+
160
+ In the launcher, a sub-page has no Back button, so each one is a history entry
161
+ of the App (`useBackDismiss`):
162
+ - the layout's `back`, or a `PageHeader` with `back`, takes one entry while it
163
+ is shown;
164
+ - a `PushTransition` page already owns one.
165
+
166
+ The system Back pops that entry and runs the sub-page's back (`back`, or
167
+ `pop`). The launcher goes through an App's own entries before it leaves the
168
+ App: in the browser, the frame's entries come first in the tab's history; on
169
+ Android, the WebView's history comes first. A sub-page the App closes itself
170
+ takes its entry back off.
171
+
172
+ An App whose sub-pages are router addresses still works: the Back pops the
173
+ layout's entry, and the App's back handler then goes back through the
174
+ router.
175
+
176
+ AppLayout leads the phone bar with a 44px home icon; on a sub-page it comes
177
+ before the sub-page's title. When a root page hides the
178
+ bar (`phone-bar-title="none"` without a menu), the first `PageToolbar` or
179
+ `SectionTabs` row on the page holds the button at its start, so it costs no
180
+ row. With no such row the bar is drawn for it.
181
+
182
+ A sub-page's Back draws `app-layout/back-arrow.json`, a byte copy of the phone
183
+ app's drawing. `tests/ShellBack.test.ts` pins its SHA-256, as the phone app
154
184
  does, so change both copies together.
155
185
 
156
186
  `node scripts/check-keyboard.mjs [out-dir]` (after `pnpm build`) checks all of
@@ -21,6 +21,8 @@ placeholders; all nine dictionaries contain the same keys and placeholders.
21
21
  | ToastProvider | Close action, Reka announcement prefix and viewport hotkey hint; new optional `announcementLabel`/`viewportLabel` overrides; existing forwarded `label` still overrides the viewport |
22
22
  | Spinner, LoadingIndicator, LoadingArea, LoadingMask | Accessible loading state |
23
23
  | RepeatRow, Tag | Remove action |
24
+ | TagPicker, TagPickerList | Choose tags / Choose a tag / Add tag placeholders and name, tag search placeholder, create row, no-match and loading text, the max message, clear and remove actions |
25
+ | ExpandAllButtons | Expand all / Collapse all tooltips and names |
24
26
  | CopyCutField | Copy/cut actions |
25
27
  | SplitButton, OverflowToolbar | More/options actions, including hidden measurement text |
26
28
  | Card, Breadcrumb | Content toggle and show-full-path controls |
@@ -132,6 +132,9 @@ own browser tab) may follow `prefers-color-scheme` (see [Dark theme](color-syste
132
132
  | `data-ui-facet-panel` | `FacetPanel` (`data-presentation` `panel`, `sheet`) | present |
133
133
  | `data-ui-facet-group` (`data-key`), `-group-toggle`, `data-ui-facet-value` (`aria-pressed`), `data-ui-facet-count`, `data-ui-facet-panel-clear`, `-trigger`, `-count` | `FacetPanel` parts | present |
134
134
  | `data-ui-tag-editor` (`data-editing`), `-read`, `-field`, `-input`, `-list`, `-option` (`data-kind` `option`, `create`) | `TagEditor` parts | present |
135
+ | `data-ui-tag-picker` (`data-ui-tag-picker-inline` for the inline variant), `-more`, `-add`, `-placeholder`, `-count` | `TagPicker` trigger and its parts | present |
136
+ | `data-ui-tag-picker-list`, `-panel`, `-search`, `-status`, `-full`, `-clear`, `-options`, `-empty`, `data-ui-tag-option` (value), `data-ui-tag-create` (name) | `TagPickerList` (in the TagPicker dropdown or sheet, or on its own) | present |
137
+ | `data-ui-expand-all` (buttons `data-action` `expand-all`, `collapse-all`) | `ExpandAllButtons` | present |
135
138
  | `data-ui-fieldset` | `Fieldset` | present |
136
139
  | `data-fieldset-description` | `Fieldset` description under the title | present |
137
140
  | `data-ui-form-group` | `FormGroup` (`data-disabled` while disabled) | present |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@synopackageland/ui",
3
- "version": "0.25.14",
3
+ "version": "0.25.16",
4
4
  "description": "Shared Vue 3 UI component library with a DSM 7 inspired application theme",
5
5
  "license": "MIT",
6
6
  "type": "module",