@blotch/dolan 22.2.3 → 22.2.5
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/dist/commands/add.js +9 -1
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/add.test.js +38 -3
- package/dist/commands/add.test.js.map +1 -1
- package/dist/commands/doctor.js +258 -21
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/doctor.test.js +425 -11
- package/dist/commands/doctor.test.js.map +1 -1
- package/dist/commands/init.d.ts +2 -2
- package/dist/commands/init.js +38 -18
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/init.test.js +105 -2
- package/dist/commands/init.test.js.map +1 -1
- package/dist/commands/theme.js +1 -1
- package/dist/commands/theme.js.map +1 -1
- package/dist/commands/update.d.ts +7 -0
- package/dist/commands/update.js +194 -50
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/update.test.js +570 -3
- package/dist/commands/update.test.js.map +1 -1
- package/dist/lockfile.d.ts +17 -0
- package/dist/lockfile.js +56 -1
- package/dist/lockfile.js.map +1 -1
- package/dist/lockfile.test.d.ts +1 -0
- package/dist/lockfile.test.js +65 -0
- package/dist/lockfile.test.js.map +1 -0
- package/dist/registry.d.ts +6 -0
- package/dist/registry.js +119 -11
- package/dist/registry.js.map +1 -1
- package/dist/registry.test.js +61 -6
- package/dist/registry.test.js.map +1 -1
- package/dist/test-utils.d.ts +27 -0
- package/dist/test-utils.js +45 -1
- package/dist/test-utils.js.map +1 -1
- package/dist/testing/fire-lynx-event.d.ts +14 -0
- package/dist/testing/fire-lynx-event.js +19 -0
- package/dist/testing/fire-lynx-event.js.map +1 -0
- package/dist/testing/fire-lynx-event.test.d.ts +1 -0
- package/dist/testing/fire-lynx-event.test.js +44 -0
- package/dist/testing/fire-lynx-event.test.js.map +1 -0
- package/dist/testing/lynx-main-thread.d.ts +22 -0
- package/dist/testing/lynx-main-thread.js +11 -0
- package/dist/testing/lynx-main-thread.js.map +1 -0
- package/dist/testing/lynx-main-thread.test.d.ts +1 -0
- package/dist/testing/lynx-main-thread.test.js +24 -0
- package/dist/testing/lynx-main-thread.test.js.map +1 -0
- package/dist/testing/set-input-signal.d.ts +5 -4
- package/dist/testing/set-input-signal.js +5 -4
- package/dist/testing/set-input-signal.js.map +1 -1
- package/dist/ui/boolean-inputs.test.ts +76 -0
- package/dist/ui/components/accordion/accordion.test.ts +158 -144
- package/dist/ui/components/accordion/accordion.ts +19 -14
- package/dist/ui/components/action-sheet/action-sheet.test.ts +637 -183
- package/dist/ui/components/action-sheet/action-sheet.ts +339 -55
- package/dist/ui/components/action-sheet/index.ts +1 -0
- package/dist/ui/components/alert/alert.test.ts +67 -19
- package/dist/ui/components/alert/alert.ts +14 -16
- package/dist/ui/components/alert-dialog/alert-dialog.test.ts +740 -129
- package/dist/ui/components/alert-dialog/alert-dialog.ts +672 -58
- package/dist/ui/components/alert-dialog/index.ts +5 -0
- package/dist/ui/components/area-chart/area-chart.test.ts +81 -1
- package/dist/ui/components/area-chart/area-chart.ts +3 -2
- package/dist/ui/components/avatar/avatar.test.ts +89 -45
- package/dist/ui/components/badge/badge.test.ts +57 -23
- package/dist/ui/components/badge/badge.ts +14 -15
- package/dist/ui/components/bar-chart/bar-chart.test.ts +82 -1
- package/dist/ui/components/bottom-sheet/bottom-sheet.test.ts +1314 -273
- package/dist/ui/components/bottom-sheet/bottom-sheet.ts +1046 -119
- package/dist/ui/components/bottom-sheet/index.ts +7 -1
- package/dist/ui/components/button/button.test.ts +646 -2
- package/dist/ui/components/button/button.ts +443 -64
- package/dist/ui/components/button/index.ts +2 -0
- package/dist/ui/components/button-group/button-group.test.ts +528 -2
- package/dist/ui/components/button-group/button-group.ts +428 -70
- package/dist/ui/components/button-group/index.ts +3 -0
- package/dist/ui/components/candlestick-chart/candlestick-chart.test.ts +82 -1
- package/dist/ui/components/card/card.test.ts +97 -61
- package/dist/ui/components/card/card.ts +2 -1
- package/dist/ui/components/chart/chart-presets.test.ts +197 -1
- package/dist/ui/components/chart/chart-presets.ts +14 -7
- package/dist/ui/components/chart/chart-theme.ts +12 -0
- package/dist/ui/components/chart/chart.test.ts +1031 -0
- package/dist/ui/components/chart/chart.ts +66 -46
- package/dist/ui/components/checkbox/checkbox.test.ts +124 -42
- package/dist/ui/components/checkbox/checkbox.ts +25 -24
- package/dist/ui/components/collapsible/collapsible.test.ts +158 -81
- package/dist/ui/components/collapsible/collapsible.ts +21 -15
- package/dist/ui/components/context-menu/context-menu.test.ts +224 -0
- package/dist/ui/components/context-menu/context-menu.ts +110 -0
- package/dist/ui/components/context-menu/index.ts +1 -0
- package/dist/ui/components/dialog/dialog.test.ts +210 -152
- package/dist/ui/components/dialog/dialog.ts +35 -29
- package/dist/ui/components/dock/dock-scroll.test.ts +130 -0
- package/dist/ui/components/dock/dock-scroll.ts +142 -0
- package/dist/ui/components/dock/dock-search.test.ts +594 -0
- package/dist/ui/components/dock/dock.test.ts +752 -0
- package/dist/ui/components/dock/dock.ts +1438 -0
- package/dist/ui/components/dock/index.ts +2 -0
- package/dist/ui/components/dynamic-color/dynamic-color.test.ts +144 -0
- package/dist/ui/components/dynamic-color/dynamic-color.ts +146 -0
- package/dist/ui/components/dynamic-color/index.ts +5 -0
- package/dist/ui/components/empty-state/empty-state.test.ts +28 -39
- package/dist/ui/components/glass/concentric-radius.test.ts +13 -0
- package/dist/ui/components/glass/concentric-radius.ts +17 -0
- package/dist/ui/components/glass/glass-design.test.ts +78 -0
- package/dist/ui/components/glass/glass-design.ts +119 -0
- package/dist/ui/components/glass/glass.test.ts +376 -0
- package/dist/ui/components/glass/glass.ts +430 -0
- package/dist/ui/components/glass/index.ts +19 -0
- package/dist/ui/components/icon/icon-theme.test.ts +64 -0
- package/dist/ui/components/icon/icon-theme.ts +70 -16
- package/dist/ui/components/icon/icon.test.ts +52 -41
- package/dist/ui/components/input/input.test.ts +178 -101
- package/dist/ui/components/input/input.ts +17 -13
- package/dist/ui/components/label/label.test.ts +11 -24
- package/dist/ui/components/label/label.ts +8 -2
- package/dist/ui/components/line-chart/line-chart.test.ts +76 -1
- package/dist/ui/components/line-chart/line-chart.ts +3 -2
- package/dist/ui/components/list/list.test.ts +80 -49
- package/dist/ui/components/list/list.ts +5 -4
- package/dist/ui/components/menu/index.ts +25 -0
- package/dist/ui/components/menu/menu-placement.test.ts +153 -0
- package/dist/ui/components/menu/menu-placement.ts +159 -0
- package/dist/ui/components/menu/menu-popup.test.ts +636 -0
- package/dist/ui/components/menu/menu-popup.ts +565 -0
- package/dist/ui/components/menu/menu.test.ts +523 -0
- package/dist/ui/components/menu/menu.ts +455 -0
- package/dist/ui/components/nav-drawer/nav-drawer.test.ts +425 -260
- package/dist/ui/components/nav-drawer/nav-drawer.ts +75 -58
- package/dist/ui/components/navigation-bar/index.ts +1 -0
- package/dist/ui/components/navigation-bar/navigation-bar.test.ts +425 -0
- package/dist/ui/components/navigation-bar/navigation-bar.ts +411 -0
- package/dist/ui/components/pagination/pagination.test.ts +136 -86
- package/dist/ui/components/popover/index.ts +9 -0
- package/dist/ui/components/popover/popover-panel.test.ts +735 -0
- package/dist/ui/components/popover/popover-panel.ts +603 -0
- package/dist/ui/components/popover/popover.test.ts +286 -0
- package/dist/ui/components/popover/popover.ts +207 -0
- package/dist/ui/components/progress/progress.test.ts +102 -46
- package/dist/ui/components/progress/progress.ts +54 -55
- package/dist/ui/components/radio-group/radio-group.test.ts +128 -83
- package/dist/ui/components/radio-group/radio-group.ts +26 -25
- package/dist/ui/components/scatter-chart/scatter-chart.test.ts +74 -1
- package/dist/ui/components/scroll-area/scroll-area.test.ts +72 -36
- package/dist/ui/components/scroll-area/scroll-area.ts +4 -3
- package/dist/ui/components/search-field/index.ts +15 -0
- package/dist/ui/components/search-field/keyboard.test.ts +147 -0
- package/dist/ui/components/search-field/keyboard.ts +123 -0
- package/dist/ui/components/search-field/search-field.test.ts +549 -0
- package/dist/ui/components/search-field/search-field.ts +628 -0
- package/dist/ui/components/segmented-control/index.ts +8 -0
- package/dist/ui/components/segmented-control/segmented-control.test.ts +861 -0
- package/dist/ui/components/segmented-control/segmented-control.ts +884 -0
- package/dist/ui/components/select/select.test.ts +138 -78
- package/dist/ui/components/select/select.ts +19 -12
- package/dist/ui/components/separator/separator.test.ts +18 -17
- package/dist/ui/components/sheet/sheet.test.ts +151 -11
- package/dist/ui/components/sheet/sheet.ts +68 -5
- package/dist/ui/components/skeleton/skeleton.test.ts +24 -7
- package/dist/ui/components/skeleton/skeleton.ts +10 -16
- package/dist/ui/components/slider/index.ts +1 -0
- package/dist/ui/components/slider/slider.test.ts +695 -0
- package/dist/ui/components/slider/slider.ts +901 -0
- package/dist/ui/components/spinner/spinner.test.ts +64 -46
- package/dist/ui/components/spinner/spinner.ts +16 -19
- package/dist/ui/components/switch/index.ts +1 -1
- package/dist/ui/components/switch/switch.test.ts +534 -48
- package/dist/ui/components/switch/switch.ts +613 -48
- package/dist/ui/components/tab-bar/index.ts +1 -0
- package/dist/ui/components/tab-bar/tab-bar.test.ts +280 -0
- package/dist/ui/components/tab-bar/tab-bar.ts +230 -0
- package/dist/ui/components/tabs/index.ts +7 -1
- package/dist/ui/components/tabs/tabs.test.ts +484 -150
- package/dist/ui/components/tabs/tabs.ts +344 -149
- package/dist/ui/components/textarea/textarea.test.ts +206 -100
- package/dist/ui/components/textarea/textarea.ts +16 -13
- package/dist/ui/components/toast/toast.test.ts +434 -350
- package/dist/ui/components/toast/toast.ts +42 -51
- package/dist/ui/components/toggle/index.ts +1 -0
- package/dist/ui/components/toggle/toggle.test.ts +559 -146
- package/dist/ui/components/toggle/toggle.ts +241 -26
- package/dist/ui/components/toolbar/bar-scroll.test.ts +310 -0
- package/dist/ui/components/toolbar/bar-scroll.ts +372 -0
- package/dist/ui/components/toolbar/index.ts +12 -0
- package/dist/ui/components/toolbar/toolbar.test.ts +438 -0
- package/dist/ui/components/toolbar/toolbar.ts +535 -0
- package/dist/ui/theme/chart-colors.test.ts +8 -3
- package/dist/ui/theme/dark.css +38 -2
- package/dist/ui/theme/default.css +55 -7
- package/dist/ui/theme/icon-colors.test.ts +8 -3
- package/dist/ui/theme/rgb-channels.test.ts +84 -0
- package/dist/ui/theme/tailwind-build.test.ts +114 -0
- package/dist/ui/theme/tailwind-css.test.ts +83 -0
- package/dist/ui/theme/tailwind-plugin.test.ts +42 -2
- package/dist/ui/theme/tailwind-plugin.ts +93 -29
- package/dist/ui/theme/tailwind.css +113 -0
- package/dist/ui/utils/animate.test.ts +13 -1
- package/dist/utils/analyze.d.ts +19 -0
- package/dist/utils/analyze.js +16 -0
- package/dist/utils/analyze.js.map +1 -1
- package/dist/utils/analyze.test.js +14 -1
- package/dist/utils/analyze.test.js.map +1 -1
- package/dist/utils/installed.d.ts +25 -1
- package/dist/utils/installed.js +33 -0
- package/dist/utils/installed.js.map +1 -1
- package/dist/utils/installed.test.js +55 -1
- package/dist/utils/installed.test.js.map +1 -1
- package/dist/utils/resolve-paths.d.ts +4 -4
- package/dist/utils/resolve-paths.js +5 -7
- package/dist/utils/resolve-paths.js.map +1 -1
- package/dist/utils/resolve-paths.test.js +9 -5
- package/dist/utils/resolve-paths.test.js.map +1 -1
- package/dist/utils/tailwind.d.ts +45 -0
- package/dist/utils/tailwind.js +90 -0
- package/dist/utils/tailwind.js.map +1 -0
- package/dist/utils/tailwind.test.d.ts +1 -0
- package/dist/utils/tailwind.test.js +134 -0
- package/dist/utils/tailwind.test.js.map +1 -0
- package/package.json +9 -1
- package/dist/ui/components/area-chart/area-chart-render.test.ts +0 -63
- package/dist/ui/components/bar-chart/bar-chart-render.test.ts +0 -58
- package/dist/ui/components/button/button-render.test.ts +0 -132
- package/dist/ui/components/button-group/button-group-render.test.ts +0 -146
- package/dist/ui/components/candlestick-chart/candlestick-chart-render.test.ts +0 -59
- package/dist/ui/components/chart/chart-render.test.ts +0 -730
- package/dist/ui/components/line-chart/line-chart-render.test.ts +0 -83
- package/dist/ui/components/scatter-chart/scatter-chart-render.test.ts +0 -64
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DestroyRef,
|
|
3
|
+
Directive,
|
|
4
|
+
ElementRef,
|
|
5
|
+
Injectable,
|
|
6
|
+
Renderer2,
|
|
7
|
+
inject,
|
|
8
|
+
signal,
|
|
9
|
+
} from '@angular/core';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Whether the dock is minimized, shared by the dock and the scroll views that
|
|
13
|
+
* minimize it. A service rather than an input, because the two sit in
|
|
14
|
+
* different parts of the app: the dock beside the `<router-outlet>`, and the
|
|
15
|
+
* scroll views inside the routed screens, which can't reach it.
|
|
16
|
+
*
|
|
17
|
+
* ```ts
|
|
18
|
+
* // Bring the dock back from code, after a search, for example.
|
|
19
|
+
* inject(UiDockState).minimized.set(false);
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* This is what the app asks for. Whether the dock is minimized now is the
|
|
23
|
+
* dock's own `minimized()`: it stays whole where its design doesn't minimize.
|
|
24
|
+
*/
|
|
25
|
+
@Injectable({ providedIn: 'root' })
|
|
26
|
+
export class UiDockState {
|
|
27
|
+
/**
|
|
28
|
+
* Whether the dock should be minimized: on iOS 26 and later and the web,
|
|
29
|
+
* the bar shrinks to the selected item's icon, and on Android's Material
|
|
30
|
+
* design it slides away. The frosted design of iOS 15 to 25 doesn't
|
|
31
|
+
* minimize, as Apple's tab bars didn't, so there it stays expanded whatever
|
|
32
|
+
* this says.
|
|
33
|
+
*/
|
|
34
|
+
readonly minimized = signal(false);
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Whether the dock's search field is open, for a `<ui-dock-action>` without
|
|
38
|
+
* a route: pressing the action opens it, and the bar's button, Cancel or
|
|
39
|
+
* leaving the search closes it. Set it to open or close the search from
|
|
40
|
+
* code. With a route, the search is open while the route is active, and
|
|
41
|
+
* this isn't needed.
|
|
42
|
+
*/
|
|
43
|
+
readonly searching = signal(false);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* How far content scrolls the same way before the dock follows, in px: a
|
|
48
|
+
* longer way down than up, as iOS's tab bar does, so a small drag doesn't
|
|
49
|
+
* hide it, but a glance back up brings it back.
|
|
50
|
+
*/
|
|
51
|
+
const MINIMIZE_AFTER = 24;
|
|
52
|
+
const EXPAND_AFTER = 12;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Near enough to the top that the dock expands, in px: content scrolled back
|
|
56
|
+
* to its start always shows the whole dock.
|
|
57
|
+
*/
|
|
58
|
+
const TOP = 8;
|
|
59
|
+
|
|
60
|
+
/** What Lynx sends with `scroll` and `layoutchange`, as far as this reads. */
|
|
61
|
+
type ScrollDetail = { scrollTop: number; scrollHeight: number };
|
|
62
|
+
type LayoutDetail = { height: number };
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Minimizes the dock while this scroll view scrolls down, and expands it when
|
|
66
|
+
* it scrolls up or back to the top, as iOS 26 minimizes its tab bar
|
|
67
|
+
* (`tabBarMinimizeBehavior(.onScrollDown)`). Put it on each screen's
|
|
68
|
+
* `<scroll-view>` (or `<list>`) that should minimize the dock:
|
|
69
|
+
*
|
|
70
|
+
* ```html
|
|
71
|
+
* <scroll-view ui-dock-scroll scroll-orientation="vertical" class="h-full">
|
|
72
|
+
* …
|
|
73
|
+
* </scroll-view>
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
* It listens to the scroll view's `scroll` events itself, outside Angular's
|
|
77
|
+
* templates: a template listener would run change detection for every event,
|
|
78
|
+
* many times a second while content moves, where this updates the dock only
|
|
79
|
+
* when it should change. AngularLynx already runs it on Lynx's main thread,
|
|
80
|
+
* beside the native scroll, so it needs no main-thread script.
|
|
81
|
+
*
|
|
82
|
+
* Leaving the screen expands the dock again, so the next screen starts with
|
|
83
|
+
* it whole.
|
|
84
|
+
*/
|
|
85
|
+
@Directive({ selector: 'scroll-view[ui-dock-scroll], list[ui-dock-scroll]' })
|
|
86
|
+
export class UiDockScroll {
|
|
87
|
+
readonly #state = inject(UiDockState);
|
|
88
|
+
readonly #renderer = inject(Renderer2);
|
|
89
|
+
readonly #element = inject(ElementRef).nativeElement;
|
|
90
|
+
|
|
91
|
+
/** The last scroll position, to tell which way content moved. */
|
|
92
|
+
#lastTop = 0;
|
|
93
|
+
/** How far content has moved the same way, negative upward. */
|
|
94
|
+
#travel = 0;
|
|
95
|
+
/** The scroll view's own height, once Lynx has laid it out. */
|
|
96
|
+
#viewport = 0;
|
|
97
|
+
|
|
98
|
+
protected readonly listeners = [
|
|
99
|
+
this.#renderer.listen(
|
|
100
|
+
this.#element,
|
|
101
|
+
'bindscroll',
|
|
102
|
+
(event: { detail: ScrollDetail }) => this.#scrolled(event.detail),
|
|
103
|
+
),
|
|
104
|
+
this.#renderer.listen(
|
|
105
|
+
this.#element,
|
|
106
|
+
'bindlayoutchange',
|
|
107
|
+
(event: { detail: LayoutDetail }) => {
|
|
108
|
+
this.#viewport = event.detail.height;
|
|
109
|
+
},
|
|
110
|
+
),
|
|
111
|
+
];
|
|
112
|
+
|
|
113
|
+
protected readonly cleanup = inject(DestroyRef).onDestroy(() => {
|
|
114
|
+
for (const remove of this.listeners) remove();
|
|
115
|
+
this.#state.minimized.set(false);
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
#scrolled({ scrollTop, scrollHeight }: ScrollDetail): void {
|
|
119
|
+
const delta = scrollTop - this.#lastTop;
|
|
120
|
+
this.#lastTop = scrollTop;
|
|
121
|
+
|
|
122
|
+
// At the top, including iOS's bounce above it, the dock is whole.
|
|
123
|
+
if (scrollTop <= TOP) {
|
|
124
|
+
this.#travel = 0;
|
|
125
|
+
this.#state.minimized.set(false);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
// iOS bounces past the end and back, which reads as scrolling up. The
|
|
129
|
+
// user didn't, so the dock stays as it is.
|
|
130
|
+
if (this.#viewport > 0 && scrollTop > scrollHeight - this.#viewport) {
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Count the distance moved one way, starting again when content turns.
|
|
135
|
+
this.#travel = delta * this.#travel >= 0 ? this.#travel + delta : delta;
|
|
136
|
+
if (this.#travel >= MINIMIZE_AFTER) {
|
|
137
|
+
this.#state.minimized.set(true);
|
|
138
|
+
} else if (this.#travel <= -EXPAND_AFTER) {
|
|
139
|
+
this.#state.minimized.set(false);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|