@gjsify/adwaita-nativescript 0.31.0 → 0.33.0
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/lib/esm/index.js +1 -1
- package/lib/esm/widgets/adw-action-row.js +1 -1
- package/lib/esm/widgets/adw-avatar.js +1 -1
- package/lib/esm/widgets/adw-banner.js +1 -1
- package/lib/esm/widgets/adw-bottom-sheet.js +1 -1
- package/lib/esm/widgets/adw-button-content.js +1 -1
- package/lib/esm/widgets/adw-button-row.js +1 -1
- package/lib/esm/widgets/adw-carousel.js +1 -1
- package/lib/esm/widgets/adw-clamp.js +1 -1
- package/lib/esm/widgets/adw-combo-row.js +1 -1
- package/lib/esm/widgets/adw-data-grid.js +1 -0
- package/lib/esm/widgets/adw-drop-down.js +1 -0
- package/lib/esm/widgets/adw-entry-row.js +1 -1
- package/lib/esm/widgets/adw-entry.js +1 -0
- package/lib/esm/widgets/adw-expander-row.js +1 -1
- package/lib/esm/widgets/adw-header-bar.js +1 -1
- package/lib/esm/widgets/adw-inline-view-switcher.js +1 -1
- package/lib/esm/widgets/adw-navigation-split-view.js +1 -1
- package/lib/esm/widgets/adw-navigation-view.js +1 -1
- package/lib/esm/widgets/adw-overlay-split-view.js +1 -1
- package/lib/esm/widgets/adw-password-entry-row.js +1 -1
- package/lib/esm/widgets/adw-preferences-dialog.js +1 -1
- package/lib/esm/widgets/adw-preferences-group.js +1 -1
- package/lib/esm/widgets/adw-preferences-page.js +1 -1
- package/lib/esm/widgets/adw-sidebar.js +1 -1
- package/lib/esm/widgets/adw-spin-row.js +1 -1
- package/lib/esm/widgets/adw-spinner.js +1 -1
- package/lib/esm/widgets/adw-split-button.js +1 -1
- package/lib/esm/widgets/adw-status-page.js +1 -1
- package/lib/esm/widgets/adw-switch-row.js +1 -1
- package/lib/esm/widgets/adw-tab-view.js +1 -1
- package/lib/esm/widgets/adw-toolbar-view.js +1 -1
- package/lib/esm/widgets/adw-view-stack.js +1 -1
- package/lib/esm/widgets/adw-view-switcher-bar.js +1 -1
- package/lib/esm/widgets/adw-window-title.js +1 -1
- package/lib/esm/widgets/adw-wrap-box.js +1 -1
- package/lib/esm/widgets/avatar-color.js +1 -0
- package/lib/esm/widgets/bottom-sheet-state.js +1 -0
- package/lib/esm/widgets/button-content.js +1 -0
- package/lib/esm/widgets/carousel-state.js +1 -0
- package/lib/esm/widgets/chrome.js +1 -0
- package/lib/esm/widgets/data-grid-model.js +1 -0
- package/lib/esm/widgets/entry-row-view.js +1 -0
- package/lib/esm/widgets/icon-path.js +2 -2
- package/lib/esm/widgets/icons.ios.js +1 -0
- package/lib/esm/widgets/index.js +1 -1
- package/lib/esm/widgets/navigation-stack.js +1 -0
- package/lib/esm/widgets/preferences-group-state.js +1 -0
- package/lib/esm/widgets/preferences-search.js +1 -0
- package/lib/esm/widgets/row-state.js +1 -0
- package/lib/esm/widgets/sidebar-model.js +1 -0
- package/lib/esm/widgets/split-button.js +1 -0
- package/lib/esm/widgets/split-view-base.js +1 -1
- package/lib/esm/widgets/split-view-state.js +1 -0
- package/lib/esm/widgets/split-view-width.js +1 -0
- package/lib/esm/widgets/status-page-content.js +1 -0
- package/lib/esm/widgets/svg-path.js +2 -0
- package/lib/esm/widgets/tab-view-state.js +1 -0
- package/lib/esm/widgets/view-stack-state.js +1 -0
- package/lib/esm/widgets/view-switcher-base.js +1 -1
- package/lib/esm/widgets/view-switcher-model.js +1 -0
- package/lib/esm/widgets/wrap-box-layout.js +1 -0
- package/lib/types/banner.spec.d.ts +2 -0
- package/lib/types/bottom-sheet.spec.d.ts +2 -0
- package/lib/types/button-content.spec.d.ts +2 -0
- package/lib/types/carousel.spec.d.ts +1 -0
- package/lib/types/chrome.spec.d.ts +2 -0
- package/lib/types/data-grid.spec.d.ts +2 -0
- package/lib/types/drop-down.spec.d.ts +2 -0
- package/lib/types/entry-rows.spec.d.ts +2 -0
- package/lib/types/entry.spec.d.ts +2 -0
- package/lib/types/index.d.ts +2 -2
- package/lib/types/navigation-view.spec.d.ts +2 -0
- package/lib/types/preferences.spec.d.ts +2 -0
- package/lib/types/row-state.spec.d.ts +2 -0
- package/lib/types/sidebar.spec.d.ts +1 -0
- package/lib/types/split-button.spec.d.ts +1 -0
- package/lib/types/split-view-state.spec.d.ts +2 -0
- package/lib/types/split-view-width.spec.d.ts +2 -0
- package/lib/types/status-page.spec.d.ts +2 -0
- package/lib/types/svg-path.spec.d.ts +2 -0
- package/lib/types/tab-view.spec.d.ts +2 -0
- package/lib/types/view-stack.spec.d.ts +2 -0
- package/lib/types/view-switcher.spec.d.ts +1 -0
- package/lib/types/widgets/adw-action-row.d.ts +63 -7
- package/lib/types/widgets/adw-avatar.d.ts +2 -7
- package/lib/types/widgets/adw-banner.d.ts +26 -7
- package/lib/types/widgets/adw-bottom-sheet.d.ts +29 -11
- package/lib/types/widgets/adw-button-content.d.ts +41 -6
- package/lib/types/widgets/adw-button-row.d.ts +31 -9
- package/lib/types/widgets/adw-carousel.d.ts +70 -15
- package/lib/types/widgets/adw-clamp.d.ts +21 -4
- package/lib/types/widgets/adw-combo-row.d.ts +9 -0
- package/lib/types/widgets/adw-data-grid.d.ts +73 -0
- package/lib/types/widgets/adw-drop-down.d.ts +45 -0
- package/lib/types/widgets/adw-entry-row.d.ts +98 -2
- package/lib/types/widgets/adw-entry.d.ts +43 -0
- package/lib/types/widgets/adw-expander-row.d.ts +3 -0
- package/lib/types/widgets/adw-header-bar.d.ts +11 -2
- package/lib/types/widgets/adw-inline-view-switcher.d.ts +26 -0
- package/lib/types/widgets/adw-navigation-split-view.d.ts +23 -1
- package/lib/types/widgets/adw-navigation-view.d.ts +71 -16
- package/lib/types/widgets/adw-overlay-split-view.d.ts +29 -2
- package/lib/types/widgets/adw-password-entry-row.d.ts +33 -3
- package/lib/types/widgets/adw-preferences-dialog.d.ts +18 -0
- package/lib/types/widgets/adw-preferences-group.d.ts +56 -8
- package/lib/types/widgets/adw-preferences-page.d.ts +32 -1
- package/lib/types/widgets/adw-sidebar.d.ts +49 -7
- package/lib/types/widgets/adw-spinner.d.ts +22 -6
- package/lib/types/widgets/adw-split-button.d.ts +48 -13
- package/lib/types/widgets/adw-status-page.d.ts +5 -10
- package/lib/types/widgets/adw-switch-row.d.ts +21 -1
- package/lib/types/widgets/adw-tab-view.d.ts +129 -15
- package/lib/types/widgets/adw-toolbar-view.d.ts +39 -0
- package/lib/types/widgets/adw-view-stack.d.ts +30 -27
- package/lib/types/widgets/adw-view-switcher-bar.d.ts +22 -10
- package/lib/types/widgets/adw-window-title.d.ts +12 -8
- package/lib/types/widgets/adw-wrap-box.d.ts +93 -7
- package/lib/types/widgets/avatar-color.d.ts +14 -0
- package/lib/types/widgets/bottom-sheet-state.d.ts +73 -0
- package/lib/types/widgets/button-content.d.ts +43 -0
- package/lib/types/widgets/carousel-state.d.ts +85 -0
- package/lib/types/widgets/chrome.d.ts +161 -0
- package/lib/types/widgets/data-grid-model.d.ts +104 -0
- package/lib/types/widgets/entry-row-view.d.ts +88 -0
- package/lib/types/widgets/icon-path.d.ts +20 -0
- package/lib/types/widgets/icons.ios.d.ts +13 -0
- package/lib/types/widgets/index.d.ts +20 -5
- package/lib/types/widgets/navigation-stack.d.ts +153 -0
- package/lib/types/widgets/preferences-group-state.d.ts +52 -0
- package/lib/types/widgets/preferences-search.d.ts +68 -0
- package/lib/types/widgets/row-state.d.ts +71 -0
- package/lib/types/widgets/sidebar-model.d.ts +18 -0
- package/lib/types/widgets/split-button.d.ts +55 -0
- package/lib/types/widgets/split-view-base.d.ts +72 -12
- package/lib/types/widgets/split-view-state.d.ts +228 -0
- package/lib/types/widgets/split-view-width.d.ts +76 -0
- package/lib/types/widgets/status-page-content.d.ts +23 -0
- package/lib/types/widgets/svg-path.d.ts +28 -0
- package/lib/types/widgets/tab-view-state.d.ts +74 -0
- package/lib/types/widgets/view-stack-state.d.ts +35 -0
- package/lib/types/widgets/view-switcher-base.d.ts +75 -33
- package/lib/types/widgets/view-switcher-model.d.ts +114 -0
- package/lib/types/widgets/wrap-box-layout.d.ts +97 -0
- package/lib/types/wrap-box.spec.d.ts +2 -0
- package/package.json +7 -7
- package/src/theme/adwaita.css +413 -8
|
@@ -10,8 +10,28 @@ export interface NotifyActiveEventData extends EventData {
|
|
|
10
10
|
export declare class AdwSwitchRow extends AdwActionRow {
|
|
11
11
|
/** The suffix Switch control. */
|
|
12
12
|
protected readonly _switch: Switch;
|
|
13
|
+
/** The headless active flag + its notify rule (ADR 0004). */
|
|
14
|
+
private readonly _switchState;
|
|
13
15
|
constructor();
|
|
14
|
-
/** Whether the switch is on.
|
|
16
|
+
/** Whether the switch is on. */
|
|
15
17
|
get active(): boolean;
|
|
16
18
|
set active(value: boolean);
|
|
19
|
+
/**
|
|
20
|
+
* The row was tapped — invert the state, then emit `activated` like any
|
|
21
|
+
* other action row (adw-switch-row.c:23-27 via the activatable widget).
|
|
22
|
+
*
|
|
23
|
+
* UNVERIFIED OFF-DEVICE: this assumes a tap that lands on the `Switch`
|
|
24
|
+
* itself is consumed by it and does NOT also reach the row's tap gesture. If
|
|
25
|
+
* a platform were to bubble it, the handle would toggle twice. Both Android
|
|
26
|
+
* (a clickable native widget consumes the touch) and iOS (a `UISwitch` claims
|
|
27
|
+
* the gesture) are expected to consume it, but only a device run can confirm
|
|
28
|
+
* that — `row-press.ts` reasons about the same propagation for its highlight.
|
|
29
|
+
*/
|
|
30
|
+
activate(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Push a state transition out to the Switch and emit `notify::active` — only
|
|
33
|
+
* when something actually changed, which is the `g_object_notify` gate
|
|
34
|
+
* libadwaita puts on the same transition (C:224-225 → :76).
|
|
35
|
+
*/
|
|
36
|
+
private _apply;
|
|
17
37
|
}
|
|
@@ -1,20 +1,134 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { GridLayout, type EventData, type View } from '@nativescript/core';
|
|
2
|
+
import type { AdwTabPageSpec, TabViewPagesChange } from '@gjsify/adwaita-core';
|
|
3
|
+
import { type AdwTabPage, type TabViewNotifyPayload } from './tab-view-state.js';
|
|
4
|
+
import type { AdwViewPage } from './view-switcher-base.js';
|
|
5
|
+
export type { AdwTabPage };
|
|
6
|
+
/** Event name emitted when the selected page changes. Mirrors `notify::selected-page`. */
|
|
7
|
+
export declare const NOTIFY_SELECTED_PAGE = "notify::selected-page";
|
|
8
|
+
/** Event name emitted for every page-list change (attach / detach / reorder / pin / update). */
|
|
9
|
+
export declare const PAGES_CHANGED = "pages-changed";
|
|
10
|
+
/** Event name emitted for every close ATTEMPT, before the verdict is applied. */
|
|
11
|
+
export declare const CLOSE_PAGE = "close-page";
|
|
12
|
+
/** Payload of {@link NOTIFY_SELECTED_PAGE}. */
|
|
13
|
+
export interface NotifySelectedPageEventData extends EventData, TabViewNotifyPayload {
|
|
14
|
+
}
|
|
15
|
+
/** Payload of {@link PAGES_CHANGED} — the core's page-list change, verbatim. */
|
|
16
|
+
export interface PagesChangedEventData extends EventData, TabViewPagesChange {
|
|
17
|
+
}
|
|
18
|
+
/** Payload of {@link CLOSE_PAGE}. */
|
|
19
|
+
export interface ClosePageEventData extends EventData {
|
|
20
|
+
/** The page being asked about. */
|
|
21
|
+
id: string;
|
|
22
|
+
/** Its index while it is still in the view. */
|
|
23
|
+
index: number;
|
|
24
|
+
}
|
|
25
|
+
export declare class AdwTabView extends GridLayout {
|
|
26
|
+
private readonly _state;
|
|
27
|
+
private readonly _bar;
|
|
28
|
+
private readonly _contentArea;
|
|
29
|
+
/** Tab chips keyed by page id — the bar is edited in place, never rebuilt. */
|
|
30
|
+
private readonly _chips;
|
|
31
|
+
private _autohide;
|
|
32
|
+
private _defaultIcon;
|
|
33
|
+
private _generatedIds;
|
|
34
|
+
/**
|
|
35
|
+
* The `close-page` decision seam. Return `true` to confirm, `false` to deny,
|
|
36
|
+
* `'defer'` to hold the page until {@link closePageFinish} — which is how an
|
|
37
|
+
* app shows a "save before closing?" dialog. Unset takes libadwaita's own
|
|
38
|
+
* default, `!page.pinned` (adw-tab-view.c:1990-1991).
|
|
39
|
+
*
|
|
40
|
+
* A PROPERTY rather than an event return value because NS events cannot
|
|
41
|
+
* carry one; {@link CLOSE_PAGE} still fires for every attempt, so observing
|
|
42
|
+
* and deciding stay separable.
|
|
43
|
+
*/
|
|
44
|
+
closeHandler: ((page: AdwTabPage) => boolean | 'defer') | null;
|
|
6
45
|
constructor();
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
/**
|
|
46
|
+
/** All pages in order. */
|
|
47
|
+
get pages(): readonly AdwTabPage[];
|
|
48
|
+
/** Number of pages. */
|
|
49
|
+
get nPages(): number;
|
|
50
|
+
/** Length of the pinned prefix. */
|
|
51
|
+
get nPinnedPages(): number;
|
|
52
|
+
/** Id of the selected page, `null` when the view is empty. */
|
|
53
|
+
get selectedId(): string | null;
|
|
54
|
+
/** Index of the selected page, `-1` when the view is empty — never 0 for an empty view. */
|
|
55
|
+
get selectedIndex(): number;
|
|
56
|
+
/** The selected page index. Setting it IGNORES a non-integer or out-of-range value. */
|
|
57
|
+
get selected(): number;
|
|
58
|
+
set selected(value: number);
|
|
59
|
+
isClosing(id: string): boolean;
|
|
60
|
+
setSelectedPage(id: string | null): boolean;
|
|
61
|
+
selectNthPage(n: number): boolean;
|
|
62
|
+
selectPreviousPage(): boolean;
|
|
63
|
+
selectNextPage(): boolean;
|
|
64
|
+
selectFirstPage(): boolean;
|
|
65
|
+
selectLastPage(): boolean;
|
|
66
|
+
/** The next page, WRAPPING to the first (Ctrl+Tab). */
|
|
67
|
+
cycleNextPage(): boolean;
|
|
68
|
+
/** The previous page, WRAPPING to the last (Ctrl+Shift+Tab). */
|
|
69
|
+
cyclePreviousPage(): boolean;
|
|
70
|
+
/** Add a page opened FROM `parentId`, deriving its position (Adw.TabView.add_page). */
|
|
71
|
+
addPage(spec: AdwTabPageSpec<View>, parentId?: string | null): number;
|
|
72
|
+
insertPage(spec: AdwTabPageSpec<View>, position: number): number;
|
|
73
|
+
prependPage(spec: AdwTabPageSpec<View>): number;
|
|
74
|
+
appendPage(spec: AdwTabPageSpec<View>): number;
|
|
75
|
+
insertPinnedPage(spec: AdwTabPageSpec<View>, position: number): number;
|
|
76
|
+
prependPinnedPage(spec: AdwTabPageSpec<View>): number;
|
|
77
|
+
appendPinnedPage(spec: AdwTabPageSpec<View>): number;
|
|
78
|
+
/** Pin or unpin a page, re-ordering it in the same step. Returns its new position. */
|
|
79
|
+
setPagePinned(id: string, pinned: boolean): number;
|
|
80
|
+
/** Request a close. Fires {@link CLOSE_PAGE}, then applies {@link closeHandler}'s verdict. */
|
|
81
|
+
closePage(id: string): boolean;
|
|
82
|
+
closePageFinish(id: string, confirm: boolean): boolean;
|
|
83
|
+
closeOtherPages(id: string): void;
|
|
84
|
+
closePagesBefore(id: string): void;
|
|
85
|
+
closePagesAfter(id: string): void;
|
|
86
|
+
/** Remove a page unconditionally, running the successor rule first. */
|
|
87
|
+
detachPage(id: string): AdwTabPage | null;
|
|
88
|
+
reorderPage(id: string, position: number): boolean;
|
|
89
|
+
reorderBackward(id: string): boolean;
|
|
90
|
+
reorderForward(id: string): boolean;
|
|
91
|
+
reorderFirst(id: string): boolean;
|
|
92
|
+
reorderLast(id: string): boolean;
|
|
93
|
+
setPageTitle(id: string, title: string | null): boolean;
|
|
94
|
+
setPageIcon(id: string, icon: string | null): boolean;
|
|
95
|
+
setPageLoading(id: string, loading: boolean): boolean;
|
|
96
|
+
setPageNeedsAttention(id: string, needsAttention: boolean): boolean;
|
|
97
|
+
/** Every precondition the model refused, as C would have warned about it. */
|
|
98
|
+
get diagnostics(): readonly string[];
|
|
99
|
+
/**
|
|
100
|
+
* Whether the tab bar hides itself when it has nothing to show
|
|
101
|
+
* (`Adw.TabBar:autohide`, adw-tab-bar.c:142-164). Defaults to `false` rather
|
|
102
|
+
* than to the platform's `DEFAULT_TAB_AUTOHIDE`, so a bar that was always
|
|
103
|
+
* visible before this lift stays visible unless asked otherwise.
|
|
104
|
+
*/
|
|
105
|
+
get autohide(): boolean;
|
|
106
|
+
set autohide(value: boolean);
|
|
107
|
+
/** `Adw.TabView:default-icon` — what a PINNED page with no icon of its own shows. */
|
|
108
|
+
get defaultIcon(): string | null;
|
|
109
|
+
set defaultIcon(value: string | null);
|
|
110
|
+
/**
|
|
111
|
+
* Replace every page from a plain `{ title, content, icon? }` list.
|
|
112
|
+
*
|
|
113
|
+
* Kept because that was this widget's only API before the lift, when it
|
|
114
|
+
* derived from `AdwViewSwitcherBase` and rebuilt the whole bar on every
|
|
115
|
+
* change. It now goes through the model — each entry becomes an appended page
|
|
116
|
+
* with a generated id — so the incremental bar, the close protocol and the
|
|
117
|
+
* selection rules apply to it too.
|
|
118
|
+
*/
|
|
16
119
|
setViews(pages: AdwViewPage[]): void;
|
|
17
|
-
/** The
|
|
120
|
+
/** The pages as a plain list — the shape {@link setViews} takes. */
|
|
121
|
+
get views(): AdwViewPage[];
|
|
122
|
+
set views(pages: AdwViewPage[]);
|
|
123
|
+
/** Alias of {@link views}, matching the widget's own vocabulary. */
|
|
18
124
|
get tabs(): AdwViewPage[];
|
|
19
125
|
set tabs(pages: AdwViewPage[]);
|
|
126
|
+
private _onPagesChange;
|
|
127
|
+
private _insertChip;
|
|
128
|
+
private _refreshChip;
|
|
129
|
+
/** Show only the selected page, mark its chip active, gate the close buttons. */
|
|
130
|
+
private _applySelection;
|
|
131
|
+
private _applyBarVisibility;
|
|
132
|
+
private _requestClose;
|
|
133
|
+
private _nextId;
|
|
20
134
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { GridLayout, StackLayout, View } from '@nativescript/core';
|
|
2
|
+
import { type AdwToolbarStyle } from './chrome.js';
|
|
2
3
|
export declare class AdwToolbarView extends GridLayout {
|
|
3
4
|
/** The top-bar slot (row 0) — stack of header bars / toolbars. */
|
|
4
5
|
protected readonly _topBox: StackLayout;
|
|
@@ -6,6 +7,7 @@ export declare class AdwToolbarView extends GridLayout {
|
|
|
6
7
|
protected readonly _bottomBox: StackLayout;
|
|
7
8
|
/** The currently-installed content view (row 1), if any. */
|
|
8
9
|
private _content;
|
|
10
|
+
private _props;
|
|
9
11
|
constructor();
|
|
10
12
|
/** Append a widget (e.g. an {@link AdwHeaderBar}) to the top-bar slot. */
|
|
11
13
|
addTopBar(view: View): void;
|
|
@@ -19,4 +21,41 @@ export declare class AdwToolbarView extends GridLayout {
|
|
|
19
21
|
get topBar(): StackLayout;
|
|
20
22
|
/** The bottom-bar slot container. */
|
|
21
23
|
get bottomBar(): StackLayout;
|
|
24
|
+
/** `Adw.ToolbarView:top-bar-style` — `flat` (default), `raised` or `raised-border`. */
|
|
25
|
+
get topBarStyle(): AdwToolbarStyle;
|
|
26
|
+
set topBarStyle(value: AdwToolbarStyle);
|
|
27
|
+
/** `Adw.ToolbarView:bottom-bar-style` — `flat` (default), `raised` or `raised-border`. */
|
|
28
|
+
get bottomBarStyle(): AdwToolbarStyle;
|
|
29
|
+
set bottomBarStyle(value: AdwToolbarStyle);
|
|
30
|
+
/** `Adw.ToolbarView:extend-content-to-top-edge` — draw the top bar OVER the content. */
|
|
31
|
+
get extendContentToTopEdge(): boolean;
|
|
32
|
+
set extendContentToTopEdge(value: boolean);
|
|
33
|
+
/** `Adw.ToolbarView:extend-content-to-bottom-edge` — draw the bottom bar OVER the content. */
|
|
34
|
+
get extendContentToBottomEdge(): boolean;
|
|
35
|
+
set extendContentToBottomEdge(value: boolean);
|
|
36
|
+
/**
|
|
37
|
+
* Put each bar box in its own row, or — when the content extends under it —
|
|
38
|
+
* in the CONTENT row pinned to that edge, which is how an NS `GridLayout`
|
|
39
|
+
* spells "the content spans the full height and the bar overlays it".
|
|
40
|
+
*/
|
|
41
|
+
private _applyBarPlacement;
|
|
42
|
+
/**
|
|
43
|
+
* Re-append the bar boxes so they sit ON TOP of the content.
|
|
44
|
+
*
|
|
45
|
+
* NativeScript paints siblings in add order, and an extended bar shares a
|
|
46
|
+
* grid cell with the content — which is added later, so without this the
|
|
47
|
+
* content would cover the very bar it is supposed to scroll under. A no-op
|
|
48
|
+
* while neither edge is extended, since the boxes then have their own rows.
|
|
49
|
+
*/
|
|
50
|
+
private _restackBars;
|
|
51
|
+
/**
|
|
52
|
+
* Re-derive the four libadwaita style classes from the current state.
|
|
53
|
+
*
|
|
54
|
+
* Composed against the CURRENT class names rather than the base ones, so a
|
|
55
|
+
* class a consumer appended survives (the storybook appends
|
|
56
|
+
* `sb-sidebar-pane` to one of these). Each assignment is guarded on a real
|
|
57
|
+
* change: this runs from `layoutChanged`, and re-styling a view can schedule
|
|
58
|
+
* another layout pass.
|
|
59
|
+
*/
|
|
60
|
+
private _syncClasses;
|
|
22
61
|
}
|
|
@@ -1,46 +1,49 @@
|
|
|
1
1
|
import { GridLayout, View, type EventData } from '@nativescript/core';
|
|
2
|
+
import { type AdwViewStackPage, type ViewStackNotifyPayload } from './view-stack-state.js';
|
|
3
|
+
export type { AdwViewStackPage };
|
|
2
4
|
/** Event name emitted when the visible child changes. Mirrors GObject `notify::visible-child`. */
|
|
3
5
|
export declare const NOTIFY_VISIBLE_CHILD = "notify::visible-child";
|
|
4
|
-
/**
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
/** The newly-visible page's title. */
|
|
11
|
-
title: string;
|
|
12
|
-
}
|
|
13
|
-
/** One page registered with an {@link AdwViewStack}. */
|
|
14
|
-
export interface AdwViewStackPage {
|
|
15
|
-
/** Stable identifier used by `visibleChildName` / switcher binding. */
|
|
16
|
-
name: string;
|
|
17
|
-
/** Human-facing title shown in a bound switcher button. */
|
|
18
|
-
title: string;
|
|
19
|
-
/** Optional Adwaita symbolic SVG shown in a bound switcher button. */
|
|
20
|
-
icon?: string;
|
|
21
|
-
/** The page content view, shown when this page is selected. */
|
|
22
|
-
content: View;
|
|
6
|
+
/**
|
|
7
|
+
* Payload of the {@link NOTIFY_VISIBLE_CHILD} event. `index` is `-1` and
|
|
8
|
+
* `name`/`title` are `''` when nothing is selected — the state an empty stack, a
|
|
9
|
+
* fully-hidden stack and a removed visible page all land in.
|
|
10
|
+
*/
|
|
11
|
+
export interface NotifyVisibleChildEventData extends EventData, ViewStackNotifyPayload {
|
|
23
12
|
}
|
|
24
13
|
export declare class AdwViewStack extends GridLayout {
|
|
25
|
-
private readonly
|
|
26
|
-
private _visibleIndex;
|
|
14
|
+
private readonly _state;
|
|
27
15
|
constructor();
|
|
28
16
|
/**
|
|
29
|
-
* Register a page.
|
|
30
|
-
*
|
|
17
|
+
* Register a page. It becomes visible when nothing is selected yet — and,
|
|
18
|
+
* unlike before, that auto-pick NOTIFIES, so a bound switcher highlights the
|
|
19
|
+
* initial page without a manual `refresh()` (`add_page`,
|
|
20
|
+
* adw-view-stack.c:1149-1151 → the notify at :1038-1039). Returns the page handle.
|
|
31
21
|
*/
|
|
32
22
|
add(content: View, name: string, title?: string, icon?: string): AdwViewStackPage;
|
|
33
23
|
/** Convenience alias matching `Adw.ViewStack.add_titled`. */
|
|
34
24
|
addTitled(content: View, name: string, title: string): AdwViewStackPage;
|
|
25
|
+
/**
|
|
26
|
+
* Remove the first page named `name` and detach its content view. Returns
|
|
27
|
+
* whether anything was removed. When the removed page was the visible one the
|
|
28
|
+
* stack ends up showing NOTHING and emits no event — `stack_remove` clears
|
|
29
|
+
* `visible_child` without re-picking (adw-view-stack.c:1202-1203).
|
|
30
|
+
*/
|
|
31
|
+
removePage(name: string): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Show or hide a page (`AdwViewStackPage:visible`). Returns whether the
|
|
34
|
+
* SELECTION moved: hiding the visible page falls back to the next visible one
|
|
35
|
+
* and making a page visible while nothing is selected selects it
|
|
36
|
+
* (`update_child_visible`, adw-view-stack.c:1061-1082).
|
|
37
|
+
*/
|
|
38
|
+
setPageVisible(name: string, visible: boolean): boolean;
|
|
35
39
|
/** All registered pages, in add order (a bound switcher reads this). */
|
|
36
40
|
get pages(): readonly AdwViewStackPage[];
|
|
37
|
-
/** The visible page index. Swaps the visible page + emits
|
|
41
|
+
/** The visible page index, `-1` when nothing is selected. Swaps the visible page + emits. */
|
|
38
42
|
get visibleChildIndex(): number;
|
|
39
43
|
set visibleChildIndex(value: number);
|
|
40
|
-
/** The visible page name (`Adw.ViewStack.visible-child-name`). */
|
|
44
|
+
/** The visible page name (`Adw.ViewStack.visible-child-name`), `''` for none. */
|
|
41
45
|
get visibleChildName(): string;
|
|
42
|
-
set visibleChildName(name: string);
|
|
46
|
+
set visibleChildName(name: string | null | undefined);
|
|
43
47
|
/** The visible page content view, or `null`. */
|
|
44
48
|
get visibleChild(): View | null;
|
|
45
|
-
private _apply;
|
|
46
49
|
}
|
|
@@ -3,11 +3,10 @@ import { AdwViewStack } from './adw-view-stack.js';
|
|
|
3
3
|
export declare class AdwViewSwitcherBar extends GridLayout {
|
|
4
4
|
/** The horizontal (homogeneous) row of buttons. */
|
|
5
5
|
private readonly _bar;
|
|
6
|
-
|
|
7
|
-
private readonly _buttons;
|
|
6
|
+
private _nodes;
|
|
8
7
|
private _stack;
|
|
9
8
|
private _stackListener;
|
|
10
|
-
private
|
|
9
|
+
private readonly _barState;
|
|
11
10
|
constructor();
|
|
12
11
|
/** Bind to an {@link AdwViewStack}: build buttons from its pages + two-way sync. */
|
|
13
12
|
setStack(stack: AdwViewStack | null): void;
|
|
@@ -15,15 +14,28 @@ export declare class AdwViewSwitcherBar extends GridLayout {
|
|
|
15
14
|
get stack(): AdwViewStack | null;
|
|
16
15
|
set stack(value: AdwViewStack | null);
|
|
17
16
|
/**
|
|
18
|
-
* Whether the bar
|
|
19
|
-
* sets
|
|
20
|
-
* `AdwViewSwitcher` takes over
|
|
17
|
+
* Whether the layout asked for the bar — `Adw.ViewSwitcherBar:reveal`. An
|
|
18
|
+
* adaptive layout sets it `true` on narrow screens and `false` on wide ones,
|
|
19
|
+
* where a header-bar `AdwViewSwitcher` takes over.
|
|
20
|
+
*/
|
|
21
|
+
get reveal(): boolean;
|
|
22
|
+
set reveal(value: boolean);
|
|
23
|
+
/**
|
|
24
|
+
* Whether the bar is actually shown. READ-ONLY: a one-page stack keeps it
|
|
25
|
+
* collapsed however loudly the layout asks (adw-view-switcher-bar.c:125).
|
|
26
|
+
* Write {@link reveal} to make the request.
|
|
21
27
|
*/
|
|
22
28
|
get revealed(): boolean;
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Rebuild the button row from the bound stack's pages — needed after pages
|
|
31
|
+
* were added without changing the stack's selection. libadwaita rebuilds on
|
|
32
|
+
* the pages model's `items-changed` (adw-view-switcher.c:258-263), which the
|
|
33
|
+
* NS stack has no counterpart for.
|
|
34
|
+
*/
|
|
25
35
|
refresh(): void;
|
|
36
|
+
private _bindStack;
|
|
37
|
+
private _unbindStack;
|
|
26
38
|
private _rebuild;
|
|
27
|
-
|
|
28
|
-
private
|
|
39
|
+
private _buildButton;
|
|
40
|
+
private _applyRevealed;
|
|
29
41
|
}
|
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
import { Label, StackLayout } from '@nativescript/core';
|
|
2
|
+
/** Event name emitted when {@link AdwWindowTitle.title} changes. */
|
|
3
|
+
export declare const NOTIFY_TITLE = "notify::title";
|
|
4
|
+
/** Event name emitted when {@link AdwWindowTitle.subtitle} changes. */
|
|
5
|
+
export declare const NOTIFY_SUBTITLE = "notify::subtitle";
|
|
2
6
|
export declare class AdwWindowTitle extends StackLayout {
|
|
3
7
|
/** The bold title label. */
|
|
4
8
|
protected readonly _titleLabel: Label;
|
|
5
|
-
/** The dim subtitle label
|
|
9
|
+
/** The dim subtitle label. */
|
|
6
10
|
protected readonly _subtitleLabel: Label;
|
|
7
|
-
|
|
11
|
+
/** The headless title/subtitle pair + change detection (ADR 0004). */
|
|
12
|
+
private readonly _state;
|
|
8
13
|
constructor();
|
|
9
|
-
/** The window title (bold, top line). */
|
|
14
|
+
/** The window title (bold, top line). Empty collapses its label. */
|
|
10
15
|
get title(): string;
|
|
11
16
|
set title(value: string);
|
|
12
|
-
/**
|
|
13
|
-
* The subtitle (dim second line). Setting a non-empty value adds the subtitle
|
|
14
|
-
* label; setting empty removes it — so an empty subtitle leaves no blank gap,
|
|
15
|
-
* matching `Adw.WindowTitle`.
|
|
16
|
-
*/
|
|
17
|
+
/** The subtitle (dim second line). Empty collapses its label. */
|
|
17
18
|
get subtitle(): string;
|
|
18
19
|
set subtitle(value: string);
|
|
20
|
+
/** Push the derived text + visibility onto the two `Label`s. */
|
|
21
|
+
private _apply;
|
|
22
|
+
private _notify;
|
|
19
23
|
}
|
|
@@ -1,17 +1,103 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { FlexboxLayout, type View } from '@nativescript/core';
|
|
2
|
+
import { type AdwLengthUnit, type AdwWrapBoxJustify, type AdwWrapBoxOrientation, type AdwWrapBoxPackDirection, type AdwWrapPolicy } from '@gjsify/adwaita-core';
|
|
3
|
+
/** Every `notify::` an `Adw.WrapBox` emits (adw-wrap-box.c:284-497). */
|
|
4
|
+
export type AdwWrapBoxProperty = 'child-spacing' | 'child-spacing-unit' | 'pack-direction' | 'align' | 'justify' | 'justify-last-line' | 'line-spacing' | 'line-spacing-unit' | 'line-homogeneous' | 'natural-line-length' | 'natural-line-length-unit' | 'wrap-reverse' | 'wrap-policy' | 'orientation';
|
|
5
|
+
export declare class AdwWrapBox extends FlexboxLayout {
|
|
3
6
|
private _childSpacing;
|
|
4
7
|
private _lineSpacing;
|
|
8
|
+
private _childSpacingUnit;
|
|
9
|
+
private _lineSpacingUnit;
|
|
10
|
+
private _align;
|
|
11
|
+
private _justify;
|
|
12
|
+
private _justifyLastLine;
|
|
13
|
+
private _lineHomogeneous;
|
|
14
|
+
private _wrapReverse;
|
|
15
|
+
private _wrapPolicy;
|
|
16
|
+
private _packDirection;
|
|
17
|
+
private _orientation;
|
|
18
|
+
private _naturalLineLength;
|
|
19
|
+
private _naturalLineLengthUnit;
|
|
5
20
|
constructor();
|
|
6
|
-
/** Append a child
|
|
21
|
+
/** Append a child — `adw_wrap_box_append` (adw-wrap-box.c:1344-1352). */
|
|
7
22
|
add(view: View): void;
|
|
8
|
-
/** Remove a previously-added child. */
|
|
23
|
+
/** Remove a previously-added child — `adw_wrap_box_remove` (:1387-1395). */
|
|
9
24
|
remove(view: View): void;
|
|
10
|
-
|
|
11
|
-
|
|
25
|
+
/** `adw_wrap_box_remove_all` (:1406-1414). */
|
|
26
|
+
removeAll(): void;
|
|
27
|
+
/**
|
|
28
|
+
* Every path a child can enter by — `add()`, a direct `addChild()`, and XML
|
|
29
|
+
* inflation via `_addChildFromBuilder` — ends here, which is why the spacing
|
|
30
|
+
* is applied here and not in `add()`. It used to be applied in `add()` only,
|
|
31
|
+
* so a child declared in markup got no spacing at all; C routes GtkBuildable's
|
|
32
|
+
* `add_child` through the same append for the same reason.
|
|
33
|
+
*/
|
|
34
|
+
addChild(view: View): void;
|
|
35
|
+
/**
|
|
36
|
+
* `adw_wrap_box_insert_child_after` (:1283-1300).
|
|
37
|
+
*
|
|
38
|
+
* A NULL/absent `sibling` inserts at the FIRST position, not the last —
|
|
39
|
+
* `gtk_widget_insert_after`'s documented rule, pinned by
|
|
40
|
+
* `WRAP_BOX_CHILD_ORDER_VECTORS`. Returns whether the insert happened; a
|
|
41
|
+
* refusal is where C would have hit a `g_return_if_fail`.
|
|
42
|
+
*/
|
|
43
|
+
insertChildAfter(view: View, sibling?: View | null): boolean;
|
|
44
|
+
/** `adw_wrap_box_reorder_child_after` (:1315-1332). Same NULL rule. */
|
|
45
|
+
reorderChildAfter(view: View, sibling?: View | null): boolean;
|
|
46
|
+
private _childViews;
|
|
47
|
+
private _applyOrder;
|
|
48
|
+
/** Gap between items in a line, in {@link childSpacingUnit}. Defaults to 0, as in C. */
|
|
12
49
|
get childSpacing(): number;
|
|
13
50
|
set childSpacing(value: number);
|
|
14
|
-
/**
|
|
51
|
+
/** The unit {@link childSpacing} is written in. Defaults to `px`, as in C. */
|
|
52
|
+
get childSpacingUnit(): AdwLengthUnit;
|
|
53
|
+
set childSpacingUnit(value: AdwLengthUnit);
|
|
54
|
+
/** Gap between wrapped lines, in {@link lineSpacingUnit}. Defaults to 0, as in C. */
|
|
15
55
|
get lineSpacing(): number;
|
|
16
56
|
set lineSpacing(value: number);
|
|
57
|
+
/** The unit {@link lineSpacing} is written in. Defaults to `px`, as in C. */
|
|
58
|
+
get lineSpacingUnit(): AdwLengthUnit;
|
|
59
|
+
set lineSpacingUnit(value: AdwLengthUnit);
|
|
60
|
+
/** Where the children sit ALONG the line (main axis): 0 start, 0.5 middle, 1 end. */
|
|
61
|
+
get align(): number;
|
|
62
|
+
set align(value: number);
|
|
63
|
+
/** Whether and how each line is stretched to fill the widget. */
|
|
64
|
+
get justify(): AdwWrapBoxJustify;
|
|
65
|
+
set justify(value: AdwWrapBoxJustify);
|
|
66
|
+
/** Whether the FINAL line is justified too. Default false, as in C. */
|
|
67
|
+
get justifyLastLine(): boolean;
|
|
68
|
+
set justifyLastLine(value: boolean);
|
|
69
|
+
/** Whether every line takes the same amount of space. */
|
|
70
|
+
get lineHomogeneous(): boolean;
|
|
71
|
+
set lineHomogeneous(value: boolean);
|
|
72
|
+
/** Whether lines wrap upwards (horizontal) / towards the start (vertical). */
|
|
73
|
+
get wrapReverse(): boolean;
|
|
74
|
+
set wrapReverse(value: boolean);
|
|
75
|
+
/** Whether an overflowing line squeezes its children or lets them spill. */
|
|
76
|
+
get wrapPolicy(): AdwWrapPolicy;
|
|
77
|
+
set wrapPolicy(value: AdwWrapPolicy);
|
|
78
|
+
/** The direction children are packed in each line. */
|
|
79
|
+
get packDirection(): AdwWrapBoxPackDirection;
|
|
80
|
+
set packDirection(value: AdwWrapBoxPackDirection);
|
|
81
|
+
/** The axis children are packed along. */
|
|
82
|
+
get orientation(): AdwWrapBoxOrientation;
|
|
83
|
+
set orientation(value: AdwWrapBoxOrientation);
|
|
84
|
+
/**
|
|
85
|
+
* The natural line length in {@link naturalLineLengthUnit}, or `-1` unset.
|
|
86
|
+
*
|
|
87
|
+
* CARRIED, NOT APPLIED — see the header: NativeScript's `Style` has no
|
|
88
|
+
* maximum-size property to cap a line with.
|
|
89
|
+
*/
|
|
90
|
+
get naturalLineLength(): number;
|
|
91
|
+
set naturalLineLength(value: number);
|
|
92
|
+
/** The unit {@link naturalLineLength} is written in. Defaults to `px`, as in C. */
|
|
93
|
+
get naturalLineLengthUnit(): AdwLengthUnit;
|
|
94
|
+
set naturalLineLengthUnit(value: AdwLengthUnit);
|
|
95
|
+
/** {@link naturalLineLength} resolved through its unit, `-1` when unset. */
|
|
96
|
+
get naturalLineLengthPx(): number;
|
|
97
|
+
/** Re-emit `notify::<property>`, as GObject does on a real change. */
|
|
98
|
+
private _notify;
|
|
99
|
+
/** The widget's properties, as the pure resolvers take them. */
|
|
100
|
+
private _flexInput;
|
|
101
|
+
private _applyLayout;
|
|
102
|
+
private _applyChildren;
|
|
17
103
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { avatarInitials } from '@gjsify/adwaita-core';
|
|
2
|
+
export { avatarInitials };
|
|
3
|
+
/** A flat avatar fill plus the light initials colour that goes on top of it. */
|
|
4
|
+
export interface NsAvatarColor {
|
|
5
|
+
/** The gradient collapsed to a single `#rrggbb` background. */
|
|
6
|
+
fill: string;
|
|
7
|
+
/** The palette's light `fg`, for the initials label. */
|
|
8
|
+
fg: string;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* The fill + initials colour `Adw.Avatar` would paint for `text`, flattened for
|
|
12
|
+
* the NativeScript CSS subset.
|
|
13
|
+
*/
|
|
14
|
+
export declare function avatarColor(text: string): NsAvatarColor;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { EventData, View } from '@nativescript/core';
|
|
2
|
+
import { BottomSheetPresentation } from '@gjsify/adwaita-core';
|
|
3
|
+
import type { BottomSheetCloseOutcome, BottomSheetCloseSource } from '@gjsify/adwaita-core';
|
|
4
|
+
/** Event name emitted when the sheet's open state changes. Mirrors GObject `notify::open`. */
|
|
5
|
+
export declare const NOTIFY_OPEN = "notify::open";
|
|
6
|
+
/**
|
|
7
|
+
* Event name emitted when a dismissal is refused. Mirrors the
|
|
8
|
+
* `AdwBottomSheet::close-attempt` signal (adw-bottom-sheet.c:1010-1026).
|
|
9
|
+
*/
|
|
10
|
+
export declare const CLOSE_ATTEMPT = "close-attempt";
|
|
11
|
+
/**
|
|
12
|
+
* Event name emitted when the `sheet.close` action is used on an ALREADY-closed
|
|
13
|
+
* sheet, so the host can forward it to an enclosing sheet/dialog — the NS
|
|
14
|
+
* equivalent of `gtk_widget_activate_action (parent, "sheet.close")`
|
|
15
|
+
* (adw-bottom-sheet.c:382-385).
|
|
16
|
+
*/
|
|
17
|
+
export declare const SHEET_CLOSE = "sheet.close";
|
|
18
|
+
/** Payload of the `notify::open` event. */
|
|
19
|
+
export interface NotifyOpenEventData extends EventData {
|
|
20
|
+
/** Whether the sheet is now open. */
|
|
21
|
+
open: boolean;
|
|
22
|
+
}
|
|
23
|
+
/** The two `View.visibility` values the sheet panel ever takes. */
|
|
24
|
+
export type NsSheetVisibility = 'visible' | 'collapse';
|
|
25
|
+
/** The open/can-close model an `AdwBottomSheet` delegates to. */
|
|
26
|
+
export declare function createBottomSheetPresentation(): BottomSheetPresentation;
|
|
27
|
+
/**
|
|
28
|
+
* The `visibility` the sheet panel must carry for the current open state. NS has
|
|
29
|
+
* no transform transition in its CSS subset, so the reveal is instant — the
|
|
30
|
+
* spring animation and its intermediate `progress` are not modelled here.
|
|
31
|
+
*/
|
|
32
|
+
export declare function sheetVisibility(open: boolean): NsSheetVisibility;
|
|
33
|
+
/** Push {@link sheetVisibility} onto the real panel view. */
|
|
34
|
+
export declare function applySheetVisibility(panel: View, open: boolean): void;
|
|
35
|
+
/**
|
|
36
|
+
* Which event a gate verdict makes the widget emit, or `null` when it emits
|
|
37
|
+
* nothing.
|
|
38
|
+
*
|
|
39
|
+
* `'close'` is absent on purpose: the state applies it, and the resulting
|
|
40
|
+
* `notify::open` IS the notification. `'ignored'` is the genuinely silent one —
|
|
41
|
+
* a locked sheet swallowing a swipe, or a tap on the decorative drag handle.
|
|
42
|
+
*/
|
|
43
|
+
export declare function bottomSheetCloseEvent(outcome: BottomSheetCloseOutcome): string | null;
|
|
44
|
+
/** What a dismissal request produced: the verdict plus the event to emit, if any. */
|
|
45
|
+
export interface BottomSheetCloseResult {
|
|
46
|
+
/** The gate's verdict, already applied to the state. */
|
|
47
|
+
outcome: BottomSheetCloseOutcome;
|
|
48
|
+
/** Event name for `notify()`, or `null` when the gate is silent. */
|
|
49
|
+
eventName: string | null;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The whole of `AdwBottomSheet.requestClose` except the `notify()` call.
|
|
53
|
+
*
|
|
54
|
+
* It lives HERE rather than inside the `extends GridLayout` module so the spec
|
|
55
|
+
* can drive the real path: a spec that re-assembled `state.requestClose()` and
|
|
56
|
+
* `bottomSheetCloseEvent()` itself would be transcribing the code under test and
|
|
57
|
+
* could not detect the drift it exists to catch.
|
|
58
|
+
*/
|
|
59
|
+
export declare function requestBottomSheetClose(state: BottomSheetPresentation, source: BottomSheetCloseSource): BottomSheetCloseResult;
|
|
60
|
+
/**
|
|
61
|
+
* Add a marker class to a view's `className` exactly once.
|
|
62
|
+
*
|
|
63
|
+
* libadwaita never writes to the child's own style classes — the marker lives on
|
|
64
|
+
* the internal bin (`adw_bottom_sheet_set_content`, adw-bottom-sheet.c:1497-1510).
|
|
65
|
+
* This port does write it, and used to do so with a bare string concat, so
|
|
66
|
+
* `setContent(v)` twice left `'adw-bottom-sheet-content adw-bottom-sheet-content'`.
|
|
67
|
+
*/
|
|
68
|
+
export declare function addMarkerClass(className: string | null | undefined, marker: string): string;
|
|
69
|
+
/**
|
|
70
|
+
* Drop a marker class again — a view replaced by another must not keep the
|
|
71
|
+
* marker of the slot it no longer occupies.
|
|
72
|
+
*/
|
|
73
|
+
export declare function removeMarkerClass(className: string | null | undefined, marker: string): string;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { BUTTON_CONTENT_STYLE_CLASS, buttonContentEllipsize, buttonContentLabelText, buttonContentLabelVisible } from '@gjsify/adwaita-core';
|
|
2
|
+
import type { ButtonContentEllipsize } from '@gjsify/adwaita-core';
|
|
3
|
+
export { BUTTON_CONTENT_STYLE_CLASS, buttonContentEllipsize, buttonContentLabelText, buttonContentLabelVisible };
|
|
4
|
+
export type { ButtonContentEllipsize };
|
|
5
|
+
/** The class the content carries while `can-shrink` is set, for the theme to key off. */
|
|
6
|
+
export declare const BUTTON_CONTENT_CAN_SHRINK_CLASS = "can-shrink";
|
|
7
|
+
/**
|
|
8
|
+
* The SVG the icon view is given: the app's, or the `image-missing` asset for an
|
|
9
|
+
* empty slot.
|
|
10
|
+
*
|
|
11
|
+
* That fallback is `gtk_image_set_from_icon_name (icon, "image-missing")`
|
|
12
|
+
* (adw-button-content.c:355-356), applied by `init` too while `icon_name` is
|
|
13
|
+
* still `""` (:284, :294). The widget NEVER hides the image — only the label
|
|
14
|
+
* (:300, :398) — so this port keeps the icon view parented at all times and
|
|
15
|
+
* swaps its source, which is the same shape as the C. The doc comments at :228
|
|
16
|
+
* and :343 claim the icon is hidden instead; the code disagrees with them and
|
|
17
|
+
* this follows the code (see the conformance vector's `rule`).
|
|
18
|
+
*/
|
|
19
|
+
export declare function buttonContentIconSvg(svg: string): string;
|
|
20
|
+
/** Whether the icon shown is the empty-slot fallback rather than an app asset. */
|
|
21
|
+
export declare function buttonContentIconIsFallback(svg: string): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* The parent button's `className` with `image-text-button` added — the root-time
|
|
24
|
+
* half of `adw_button_content_root` (:115).
|
|
25
|
+
*
|
|
26
|
+
* Adds rather than rewrites, so the `adw-button suggested-action pill` a caller
|
|
27
|
+
* composed survives; and it is idempotent, so a re-parent cannot double the
|
|
28
|
+
* token.
|
|
29
|
+
*/
|
|
30
|
+
export declare function buttonContentRootedParentClassName(current: string): string;
|
|
31
|
+
/**
|
|
32
|
+
* The parent button's `className` with `image-text-button` removed — the unroot
|
|
33
|
+
* half (:126).
|
|
34
|
+
*
|
|
35
|
+
* The C removes it on unroot rather than leaving it behind, so a button that
|
|
36
|
+
* loses its content goes back to plain-button padding. A port that only ever
|
|
37
|
+
* added the class would leave the 9px on a button that is now text-only.
|
|
38
|
+
*/
|
|
39
|
+
export declare function buttonContentUnrootedParentClassName(current: string): string;
|
|
40
|
+
/** The label view's `visibility` — NS's spelling of `gtk_widget_set_visible` (:398). */
|
|
41
|
+
export declare function buttonContentLabelVisibility(label: string): 'visible' | 'collapse';
|
|
42
|
+
/** The content's own `className` for a `can-shrink` value, other tokens untouched. */
|
|
43
|
+
export declare function buttonContentClassName(current: string, canShrink: boolean): string;
|