@synopackageland/ui 0.17.1 → 0.17.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 +13 -0
- package/README.md +52 -0
- package/dist/components/primitives/refresh-bar/RefreshBar.vue.d.ts +24 -0
- package/dist/i18n/text.d.ts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1442 -1373
- package/dist/json-preview/preview.js +9 -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/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.17.3 (2026-10-27)
|
|
4
|
+
|
|
5
|
+
Additive only: existing props, defaults and DOM stay as they were.
|
|
6
|
+
|
|
7
|
+
- Add `RefreshBar`: a 2px moving bar along the top of content that is being refreshed in the background, while the content stays visible and usable. It appears only after `delay` (300ms) and stays at least `minDuration` (400ms), so a quick read does not flash it, and takes no layout space (give the host `position: relative`). `stale` shows a "Could not refresh. Showing previous data" hint with a Retry button (`@retry`, disabled while `busy`) until you clear it; `stale-label` and `retry-label` replace the words, an empty `retry-label` hides the button. With reduced motion the bar is a still line. (#65)
|
|
8
|
+
- New string in all nine built-in languages: "Could not refresh. Showing previous data".
|
|
9
|
+
- The `DatePicker` calendar is named by the field's `aria-label`, or "Select date" in the UI language, instead of Reka's English "Event Date". (#66)
|
|
10
|
+
- A dense `ConnectionTopology` lane that does not fit keeps its words at 12px (`--ui-font-size-sm`), DSM's smallest text tier, instead of shrinking them to 11px; words that still do not fit end with an ellipsis and a tooltip as before.
|
|
11
|
+
|
|
12
|
+
## 0.17.2 (2026-10-26)
|
|
13
|
+
|
|
14
|
+
- A dense `ConnectionTopology` (a compact lane under 240px, such as a card in a row of three) keeps every node word on one line: a lane that does not fit takes a smaller word, then ends the longest words with an ellipsis and a tooltip, instead of wrapping them onto two lines. Its two links share the room between the nodes equally, at least 12px each (8px when the words are cut).
|
|
15
|
+
|
|
3
16
|
## 0.17.1 (2026-10-26)
|
|
4
17
|
|
|
5
18
|
- `WizardDialog` is sized like DSM's wizard windows: 75% of the app's width (560px to 860px) and its height less 48px (600px at most), so the app shows around it; it was DSM's widest dialog (860px) and 600px high, nearly the whole of a 960x600 window. `width`, `height` and `size` still set your own.
|
package/README.md
CHANGED
|
@@ -676,6 +676,58 @@ phone; use `DataGrid` for anything a user searches or arranges.
|
|
|
676
676
|
|
|
677
677
|
`Spinner` is the DSM ring (`size` is the box in px, default 24). `LoadingMask` wraps content and covers it with a white 60% mask and a centred message box while `loading` (`delay` in ms holds the mask back so a quick load never flashes it; the region is `aria-busy` at once, so disable the actions it gates yourself); `LoadingArea` fills its container (give the parent a height) and centres the indicator, for whole-page or whole-panel waits. `Button loading` shows the 16px ring inline. Do not place a bare `Spinner` in a block container and expect it to be centred: use `LoadingArea`.
|
|
678
678
|
|
|
679
|
+
### Background refresh
|
|
680
|
+
|
|
681
|
+
`RefreshBar` overlays a 2px indeterminate bar at the top of existing content.
|
|
682
|
+
It waits 300ms before appearing and stays at least 400ms from its appearance,
|
|
683
|
+
so fast reads do not flash. Content remains visible and usable. The bar and
|
|
684
|
+
optional failure hint are absolutely positioned and take no layout space.
|
|
685
|
+
Give the host `position: relative` and set its `aria-busy` from the actual
|
|
686
|
+
request state, independently of the visual delay:
|
|
687
|
+
|
|
688
|
+
```vue
|
|
689
|
+
<script setup lang="ts">
|
|
690
|
+
import { RefreshBar } from '@synopackageland/ui'
|
|
691
|
+
defineProps<{ refreshing: boolean; stale: string }>()
|
|
692
|
+
const emit = defineEmits<{ retry: [] }>()
|
|
693
|
+
</script>
|
|
694
|
+
|
|
695
|
+
<template>
|
|
696
|
+
<section class="results" :aria-busy="refreshing">
|
|
697
|
+
<RefreshBar :busy="refreshing" :stale="stale" @retry="emit('retry')" />
|
|
698
|
+
<slot />
|
|
699
|
+
</section>
|
|
700
|
+
</template>
|
|
701
|
+
|
|
702
|
+
<style scoped>
|
|
703
|
+
.results { position: relative; }
|
|
704
|
+
</style>
|
|
705
|
+
```
|
|
706
|
+
|
|
707
|
+
| Prop / event | Default | Meaning |
|
|
708
|
+
| --- | --- | --- |
|
|
709
|
+
| `busy` | `false` | A background request is pending |
|
|
710
|
+
| `delay` | `300` | Milliseconds before showing the bar; `0` shows immediately |
|
|
711
|
+
| `minDuration` | `400` | Minimum visible time in milliseconds; `0` hides immediately when idle |
|
|
712
|
+
| `stale` | `''` | Failure detail for the hint's title; empty hides the hint |
|
|
713
|
+
| `staleLabel` | Localized “Could not refresh. Showing previous data” | Visible failure message |
|
|
714
|
+
| `retryLabel` | Localized “Retry” | Retry action label; empty hides the action |
|
|
715
|
+
| `@retry` | — | Requests another read; has no payload |
|
|
716
|
+
|
|
717
|
+
The hint stays until the caller clears `stale`. Retry is disabled while `busy`;
|
|
718
|
+
the caller owns the request and its result. Explicit labels are preserved,
|
|
719
|
+
including empty strings; defaults follow the provider locale. A refresh that
|
|
720
|
+
starts during the minimum stay keeps the same bar. Timing prop changes apply
|
|
721
|
+
against elapsed time in the current interval; negative times count as zero.
|
|
722
|
+
Reduced motion shows a static full-width line. The bar is decorative and the
|
|
723
|
+
hint creates no live region; provide any required accessible error detail in
|
|
724
|
+
your content. Only the failure hint accepts pointer events. A scrollable host
|
|
725
|
+
scrolls the overlay with its content; place it in a stationary relative wrapper
|
|
726
|
+
to keep feedback at the viewport's edge.
|
|
727
|
+
|
|
728
|
+
See **Primitives / RefreshBar** in Histoire for interactive, continuous and
|
|
729
|
+
failure examples.
|
|
730
|
+
|
|
679
731
|
### Toolbar
|
|
680
732
|
|
|
681
733
|
`SplitButton` (button + menu arrow) and `SearchField variant="filter"` (the DSM funnel filter box) join `Button`, whose default look is the flat grey DSM toolbar button.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
busy?: boolean;
|
|
3
|
+
/** Failure detail shown in the hint's title. Empty hides the hint. */
|
|
4
|
+
stale?: string;
|
|
5
|
+
/** Milliseconds before a pending refresh is shown. */
|
|
6
|
+
delay?: number;
|
|
7
|
+
/** Milliseconds a shown bar stays visible, measured from its appearance. */
|
|
8
|
+
minDuration?: number;
|
|
9
|
+
staleLabel?: string;
|
|
10
|
+
/** An empty label hides the retry action. */
|
|
11
|
+
retryLabel?: string;
|
|
12
|
+
};
|
|
13
|
+
declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
14
|
+
retry: () => any;
|
|
15
|
+
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
16
|
+
onRetry?: (() => any) | undefined;
|
|
17
|
+
}>, {
|
|
18
|
+
busy: boolean;
|
|
19
|
+
delay: number;
|
|
20
|
+
stale: string;
|
|
21
|
+
minDuration: number;
|
|
22
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
23
|
+
declare const _default: typeof __VLS_export;
|
|
24
|
+
export default _default;
|
package/dist/i18n/text.d.ts
CHANGED
|
@@ -105,6 +105,7 @@ export declare const englishUiText: {
|
|
|
105
105
|
readonly "Beta version {version} is available.": "Beta version {version} is available.";
|
|
106
106
|
readonly "Could not check for updates.": "Could not check for updates.";
|
|
107
107
|
readonly "You have the latest version.": "You have the latest version.";
|
|
108
|
+
readonly "Could not refresh. Showing previous data": "Could not refresh. Showing previous data";
|
|
108
109
|
readonly Retry: "Retry";
|
|
109
110
|
readonly "Release notes": "Release notes";
|
|
110
111
|
readonly "Terms of Service": "Terms of Service";
|
package/dist/index.d.ts
CHANGED
|
@@ -30,6 +30,7 @@ export { default as LoadingMask } from './components/primitives/loading/LoadingM
|
|
|
30
30
|
export { default as LoadingArea } from './components/primitives/loading/LoadingArea.vue';
|
|
31
31
|
export { default as LoadingIndicator } from './components/primitives/loading/LoadingIndicator.vue';
|
|
32
32
|
export { default as Progress } from './components/primitives/progress/Progress.vue';
|
|
33
|
+
export { default as RefreshBar } from './components/primitives/refresh-bar/RefreshBar.vue';
|
|
33
34
|
export { default as SizeBar } from './components/primitives/size-bar/SizeBar.vue';
|
|
34
35
|
export { default as Skeleton } from './components/primitives/skeleton/Skeleton.vue';
|
|
35
36
|
export { default as SectionSkeleton } from './components/primitives/skeleton/SectionSkeleton.vue';
|