@gjsify/adwaita-nativescript 0.47.0 → 0.49.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/_virtual/_rolldown/runtime.js +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/namespace/adw.js +1 -0
- package/lib/esm/namespace/gtk.js +1 -0
- package/lib/esm/widgets/adw-about-dialog.js +1 -1
- package/lib/esm/widgets/adw-action-row.js +1 -1
- package/lib/esm/widgets/adw-alert-dialog.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 -1
- package/lib/esm/widgets/adw-entry-row.js +1 -1
- 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-image-button.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-shortcut-label.js +1 -1
- package/lib/esm/widgets/adw-sidebar.js +1 -1
- package/lib/esm/widgets/adw-slider-row.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-toast-overlay.js +1 -1
- package/lib/esm/widgets/adw-toggle-group.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-view-switcher.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-view.js +1 -0
- package/lib/esm/widgets/box-layout.js +1 -0
- package/lib/esm/widgets/button-content.js +1 -1
- package/lib/esm/widgets/button-slot.js +1 -0
- package/lib/esm/widgets/construct-props.js +1 -0
- package/lib/esm/widgets/entry-row-view.js +1 -1
- package/lib/esm/widgets/gtk-align.js +1 -0
- package/lib/esm/widgets/gtk-box.js +1 -0
- package/lib/esm/widgets/gtk-button.js +1 -1
- package/lib/esm/widgets/gtk-drop-down.js +1 -1
- package/lib/esm/widgets/gtk-entry.js +1 -1
- package/lib/esm/widgets/gtk-image.js +1 -0
- package/lib/esm/widgets/gtk-label.js +1 -0
- package/lib/esm/widgets/gtk-menu-button.js +1 -1
- package/lib/esm/widgets/icon-theme.js +1 -0
- package/lib/esm/widgets/index.js +1 -1
- package/lib/esm/widgets/label-text.js +1 -0
- package/lib/esm/widgets/menu-sheet.js +1 -0
- package/lib/esm/widgets/signals.js +1 -0
- package/lib/esm/widgets/split-button.js +1 -1
- package/lib/esm/widgets/split-view-base.js +1 -1
- package/lib/esm/widgets/style-classes.js +1 -0
- package/lib/esm/widgets/view-switcher-base.js +1 -1
- package/lib/esm/widgets/view-switcher-model.js +1 -1
- package/lib/types/avatar.spec.d.ts +2 -0
- package/lib/types/box-layout.spec.d.ts +2 -0
- package/lib/types/button-slot.spec.d.ts +2 -0
- package/lib/types/construct-props.spec.d.ts +2 -0
- package/lib/types/icon-theme.spec.d.ts +2 -0
- package/lib/types/index.d.ts +4 -3
- package/lib/types/label-text.spec.d.ts +2 -0
- package/lib/types/namespace/adw.d.ts +38 -0
- package/lib/types/namespace/gtk.d.ts +7 -0
- package/lib/types/signals.spec.d.ts +2 -0
- package/lib/types/style-classes.spec.d.ts +2 -0
- package/lib/types/widgets/adw-about-dialog.d.ts +16 -3
- package/lib/types/widgets/adw-action-row.d.ts +38 -10
- package/lib/types/widgets/adw-alert-dialog.d.ts +30 -13
- package/lib/types/widgets/adw-avatar.d.ts +49 -3
- package/lib/types/widgets/adw-banner.d.ts +16 -3
- package/lib/types/widgets/adw-bottom-sheet.d.ts +32 -16
- package/lib/types/widgets/adw-button-content.d.ts +20 -6
- package/lib/types/widgets/adw-button-row.d.ts +10 -7
- package/lib/types/widgets/adw-carousel.d.ts +19 -7
- package/lib/types/widgets/adw-clamp.d.ts +17 -5
- package/lib/types/widgets/adw-combo-row.d.ts +8 -7
- package/lib/types/widgets/adw-data-grid.d.ts +17 -4
- package/lib/types/widgets/adw-entry-row.d.ts +16 -14
- package/lib/types/widgets/adw-expander-row.d.ts +21 -10
- package/lib/types/widgets/adw-header-bar.d.ts +39 -14
- package/lib/types/widgets/adw-image-button.d.ts +22 -5
- package/lib/types/widgets/adw-inline-view-switcher.d.ts +2 -1
- package/lib/types/widgets/adw-navigation-split-view.d.ts +2 -1
- package/lib/types/widgets/adw-navigation-view.d.ts +40 -21
- package/lib/types/widgets/adw-overlay-split-view.d.ts +3 -2
- package/lib/types/widgets/adw-password-entry-row.d.ts +2 -1
- package/lib/types/widgets/adw-preferences-dialog.d.ts +16 -3
- package/lib/types/widgets/adw-preferences-group.d.ts +19 -6
- package/lib/types/widgets/adw-preferences-page.d.ts +37 -8
- package/lib/types/widgets/adw-shortcut-label.d.ts +15 -2
- package/lib/types/widgets/adw-sidebar.d.ts +15 -2
- package/lib/types/widgets/adw-slider-row.d.ts +30 -19
- package/lib/types/widgets/adw-spin-row.d.ts +18 -14
- package/lib/types/widgets/adw-spinner.d.ts +14 -2
- package/lib/types/widgets/adw-split-button.d.ts +60 -12
- package/lib/types/widgets/adw-status-page.d.ts +22 -8
- package/lib/types/widgets/adw-switch-row.d.ts +2 -1
- package/lib/types/widgets/adw-tab-view.d.ts +34 -8
- package/lib/types/widgets/adw-toast-overlay.d.ts +19 -7
- package/lib/types/widgets/adw-toggle-group.d.ts +14 -2
- package/lib/types/widgets/adw-toolbar-view.d.ts +21 -8
- package/lib/types/widgets/adw-view-stack.d.ts +38 -5
- package/lib/types/widgets/adw-view-switcher-bar.d.ts +16 -3
- package/lib/types/widgets/adw-view-switcher.d.ts +2 -1
- package/lib/types/widgets/adw-window-title.d.ts +16 -3
- package/lib/types/widgets/adw-wrap-box.d.ts +21 -8
- package/lib/types/widgets/avatar-view.d.ts +57 -0
- package/lib/types/widgets/bottom-sheet-state.d.ts +1 -1
- package/lib/types/widgets/box-layout.d.ts +39 -0
- package/lib/types/widgets/button-content.d.ts +4 -4
- package/lib/types/widgets/button-slot.d.ts +16 -0
- package/lib/types/widgets/construct-props.d.ts +82 -0
- package/lib/types/widgets/entry-row-view.d.ts +9 -8
- package/lib/types/widgets/gtk-align.d.ts +59 -0
- package/lib/types/widgets/gtk-box.d.ts +75 -0
- package/lib/types/widgets/gtk-button.d.ts +110 -28
- package/lib/types/widgets/gtk-drop-down.d.ts +21 -8
- package/lib/types/widgets/gtk-entry.d.ts +15 -2
- package/lib/types/widgets/gtk-image.d.ts +42 -0
- package/lib/types/widgets/gtk-label.d.ts +82 -0
- package/lib/types/widgets/gtk-menu-button.d.ts +29 -18
- package/lib/types/widgets/icon-theme.d.ts +77 -0
- package/lib/types/widgets/icons.d.ts +3 -1
- package/lib/types/widgets/index.d.ts +18 -5
- package/lib/types/widgets/label-text.d.ts +13 -0
- package/lib/types/widgets/menu-sheet.d.ts +58 -0
- package/lib/types/widgets/row-state.d.ts +1 -1
- package/lib/types/widgets/signals.d.ts +40 -0
- package/lib/types/widgets/split-button.d.ts +2 -21
- package/lib/types/widgets/split-view-base.d.ts +18 -6
- package/lib/types/widgets/status-page-content.d.ts +1 -1
- package/lib/types/widgets/style-classes.d.ts +61 -0
- package/lib/types/widgets/view-switcher-base.d.ts +12 -1
- package/lib/types/widgets/view-switcher-model.d.ts +3 -12
- package/package.json +14 -10
- package/src/theme/adwaita.css +66 -8
- package/lib/esm/namespace.js +0 -1
- package/lib/esm/widgets/adw-icon.js +0 -1
- package/lib/types/namespace.d.ts +0 -92
- package/lib/types/widgets/adw-icon.d.ts +0 -25
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The string a `Gtk.Label` puts in `Label.text` for a given `label` and the two flags
|
|
3
|
+
* that transform it.
|
|
4
|
+
*
|
|
5
|
+
* ORDER MATTERS AND FOLLOWS THE C: markup is reduced first, the mnemonic marker second.
|
|
6
|
+
* `gtk_label_set_markup_with_mnemonic` parses the markup and then takes the underscore out
|
|
7
|
+
* of the resulting TEXT, so an `_` inside a tag's attributes is not a mnemonic. Doing it
|
|
8
|
+
* the other way round would let `<span font_desc="Sans">` lose its underscore and stop
|
|
9
|
+
* parsing.
|
|
10
|
+
*/
|
|
11
|
+
export declare function labelDisplayText(label: string, useMarkup: boolean, useUnderline: boolean): string;
|
|
12
|
+
/** Whether `label` carries markup this port could not reduce, so the raw string is shown. */
|
|
13
|
+
export declare function labelMarkupIsUnparseable(label: string, useMarkup: boolean): boolean;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { AdwMenuActions, AdwMenuModel, AdwMenuPath } from '@gjsify/adwaita-core';
|
|
2
|
+
/** Text of the sheet's dismiss button. */
|
|
3
|
+
export declare const MENU_CANCEL_LABEL = "Cancel";
|
|
4
|
+
/** One row of the sheet: the string presented, and where in the model it came from. */
|
|
5
|
+
export interface MenuSheetRow {
|
|
6
|
+
/** The string handed to `action()`, unique within the page. */
|
|
7
|
+
readonly action: string;
|
|
8
|
+
readonly path: AdwMenuPath;
|
|
9
|
+
/** Whether choosing it opens another sheet rather than activating an item. */
|
|
10
|
+
readonly submenu: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* The rows of ONE page — the model's root, or the submenu at `page`.
|
|
14
|
+
*
|
|
15
|
+
* `cancelLabel` seeds the uniqueness set, which is what makes a menu item literally
|
|
16
|
+
* called "Cancel" distinguishable from the reader dismissing the sheet.
|
|
17
|
+
*/
|
|
18
|
+
export declare function menuSheetRows(model: AdwMenuModel, page?: AdwMenuPath, actions?: AdwMenuActions, cancelLabel?: string): MenuSheetRow[];
|
|
19
|
+
/** Just the strings, in order — what `action()` takes. */
|
|
20
|
+
export declare const menuSheetActions: (rows: readonly MenuSheetRow[]) => string[];
|
|
21
|
+
/**
|
|
22
|
+
* The row the reader chose, or `null` when the sheet was dismissed. Feed it the SAME
|
|
23
|
+
* rows {@link menuSheetRows} produced, or the lookup is a guess.
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveMenuChoice(rows: readonly MenuSheetRow[], chosen: string | null | undefined): MenuSheetRow | null;
|
|
26
|
+
/** What a caller supplies so this module never imports `@nativescript/core`. */
|
|
27
|
+
export type MenuSheetPresenter = (options: {
|
|
28
|
+
title?: string;
|
|
29
|
+
cancelButtonText: string;
|
|
30
|
+
actions: string[];
|
|
31
|
+
}) => Promise<string | undefined>;
|
|
32
|
+
/**
|
|
33
|
+
* Present the menu, descending into submenus, and answer with the chosen item's PATH.
|
|
34
|
+
*
|
|
35
|
+
* The loop is what makes a submenu a real submenu on a surface that has only one list:
|
|
36
|
+
* choosing a submenu row presents that submenu's rows, with the submenu's own label as
|
|
37
|
+
* the sheet title so the reader can see where they are. A dismissal at any depth ends
|
|
38
|
+
* the interaction — there is no "back" button on a platform sheet, and inventing one as
|
|
39
|
+
* a row would be a menu entry the model does not have.
|
|
40
|
+
*/
|
|
41
|
+
export declare function presentMenuSheet(present: MenuSheetPresenter, model: AdwMenuModel, options?: {
|
|
42
|
+
title?: string;
|
|
43
|
+
actions?: AdwMenuActions;
|
|
44
|
+
cancelLabel?: string;
|
|
45
|
+
}): Promise<AdwMenuPath | null>;
|
|
46
|
+
/**
|
|
47
|
+
* Refuse a JSON STRING where a menu model belongs, loudly.
|
|
48
|
+
*
|
|
49
|
+
* NativeScript's `Builder` assigns an XML attribute straight onto the property, so a
|
|
50
|
+
* `menuModel="[…]"` in a view file lands here as a string. The model does not accept one
|
|
51
|
+
* — the gallery probe that would have to prove the XML door compares a read-back by
|
|
52
|
+
* IDENTITY, which no structured value satisfies — and left to `normalizeMenuModel` a
|
|
53
|
+
* string is simply "not an array", so the author would get an EMPTY menu and no
|
|
54
|
+
* diagnostic at all.
|
|
55
|
+
*
|
|
56
|
+
* A door that is shut may not also be silent. This is the sentence that says which.
|
|
57
|
+
*/
|
|
58
|
+
export declare function refuseMenuString(value: unknown, widget: string): void;
|
|
@@ -37,7 +37,7 @@ export interface NsButtonRowIconVisuals {
|
|
|
37
37
|
* title through a second state object would give one label two sources of truth.
|
|
38
38
|
* {@link rowLabelVisuals} paints it.
|
|
39
39
|
*
|
|
40
|
-
* The icon payload is the
|
|
40
|
+
* The icon payload is whatever the caller set — a name or the symbolic SVG source, because `GtkImage`
|
|
41
41
|
* renders SVG rather than resolving a name. `ButtonRowState` is indifferent: its rule
|
|
42
42
|
* is `string_is_not_empty`, which reads the first byte.
|
|
43
43
|
*/
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { EventData, Observable } from '@nativescript/core';
|
|
2
|
+
/** The two methods the mixin adds. Named so a consumer can annotate with it. */
|
|
3
|
+
export interface GObjectSignals {
|
|
4
|
+
/**
|
|
5
|
+
* Subscribe to `eventName` — a NativeScript event, or one of the `notify::<prop>`
|
|
6
|
+
* events this port's widgets emit — and get back the id that `disconnect` takes.
|
|
7
|
+
*
|
|
8
|
+
* The callback receives the emitting widget FIRST, as a GJS signal handler does,
|
|
9
|
+
* then the NativeScript payload.
|
|
10
|
+
*/
|
|
11
|
+
connect(eventName: string, callback: (self: this, data: EventData) => void): number;
|
|
12
|
+
/** Remove exactly the handler `connect` returned this id for. Throws on an id nothing holds. */
|
|
13
|
+
disconnect(handlerId: number): void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* A constructor the mixin can wrap: anything that is an `Observable`, abstract or not.
|
|
17
|
+
*
|
|
18
|
+
* `any[]` and not `unknown[]`: TypeScript accepts a mixin base only as a constructor with a
|
|
19
|
+
* single rest parameter of type `any[]` (TS2545), so the wider spelling is the one the
|
|
20
|
+
* language requires here rather than a shortcut.
|
|
21
|
+
*/
|
|
22
|
+
export type ObservableConstructor = abstract new (...args: any[]) => Observable;
|
|
23
|
+
/**
|
|
24
|
+
* Give a `@nativescript/core` base GJS's `connect` / `disconnect`.
|
|
25
|
+
*
|
|
26
|
+
* Applied ONCE per class that extends a platform base — `extends withSignals(GridLayout)`
|
|
27
|
+
* — and never on a class whose base is already a widget of this package, which inherits
|
|
28
|
+
* the two methods and would otherwise carry a second, identical copy one prototype up.
|
|
29
|
+
*/
|
|
30
|
+
export declare function withSignals<TBase extends ObservableConstructor>(Base: TBase): (abstract new (...args: any[]) => {
|
|
31
|
+
connect(eventName: string, callback: (self: /*elided*/ any, data: EventData) => void): number;
|
|
32
|
+
disconnect(handlerId: number): void;
|
|
33
|
+
_emit(eventName: string): void;
|
|
34
|
+
addEventListener(eventName: string, callback: (data: EventData) => void, thisArg?: unknown, once?: boolean): void;
|
|
35
|
+
removeEventListener(eventName: string, callback?: (data: EventData) => void, thisArg?: unknown): void;
|
|
36
|
+
notify<T extends EventData>(data: T): void;
|
|
37
|
+
notifyPropertyChange(name: string, value: unknown, oldValue?: unknown): void;
|
|
38
|
+
set(name: string, value: unknown): void;
|
|
39
|
+
get(name: string): unknown;
|
|
40
|
+
}) & TBase;
|
|
@@ -1,30 +1,11 @@
|
|
|
1
|
-
import type { AdwArrowIcon,
|
|
2
|
-
export type {
|
|
3
|
-
/** Text of the sheet's dismiss button. */
|
|
4
|
-
export declare const MENU_CANCEL_LABEL = "Cancel";
|
|
1
|
+
import type { AdwArrowIcon, SplitButtonDirection, SplitButtonState } from '@gjsify/adwaita-core';
|
|
2
|
+
export type { SplitButtonDirection };
|
|
5
3
|
/**
|
|
6
4
|
* The libadwaita arrow glyph names mapped to real Adwaita symbolic SVGs. Keyed by
|
|
7
5
|
* {@link AdwArrowIcon} and therefore TOTAL: which glyph a direction gets is decided in
|
|
8
6
|
* core, and a glyph with no SVG here is a compile error rather than a fallback arrow.
|
|
9
7
|
*/
|
|
10
8
|
export declare const ARROW_SVGS: Readonly<Record<AdwArrowIcon, string>>;
|
|
11
|
-
/**
|
|
12
|
-
* Normalise a menu assigned from XML or app code into entries. A bare `string[]` is
|
|
13
|
-
* accepted (the storybook passes one) and widens to the shared {@link AdwMenuEntry}.
|
|
14
|
-
*/
|
|
15
|
-
export declare function toMenuEntries(value: readonly (string | AdwMenuEntry)[] | null | undefined): AdwMenuEntry[];
|
|
16
|
-
/**
|
|
17
|
-
* The strings handed to `Dialogs.action()`, one per entry and each unique: a label
|
|
18
|
-
* that collides with another entry — or with the dismiss button — gets zero-width
|
|
19
|
-
* spaces appended until it is distinct, so {@link resolveMenuChoice} can tell them
|
|
20
|
-
* apart.
|
|
21
|
-
*/
|
|
22
|
-
export declare function menuSheetActions(entries: readonly AdwMenuEntry[], cancelLabel?: string): string[];
|
|
23
|
-
/**
|
|
24
|
-
* The position the user chose, or `-1` when the sheet was dismissed. Feed it the SAME
|
|
25
|
-
* array {@link menuSheetActions} produced, or the lookup is a guess.
|
|
26
|
-
*/
|
|
27
|
-
export declare function resolveMenuChoice(sheetActions: readonly string[], chosen: string | null | undefined): number;
|
|
28
9
|
/** The arrow SVG for a direction; the split button's `none` is the down caret, not a hamburger. */
|
|
29
10
|
export declare function splitButtonArrowSvg(direction: SplitButtonDirection): string;
|
|
30
11
|
/**
|
|
@@ -10,7 +10,18 @@ export interface NotifyShowSidebarEventData extends EventData {
|
|
|
10
10
|
/** Whether the view is in its collapsed (narrow) mode. */
|
|
11
11
|
collapsed: boolean;
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
declare const AdwSplitViewBase_base: (abstract new (...args: any[]) => {
|
|
14
|
+
connect(eventName: string, callback: (self: /*elided*/ any, data: EventData) => void): number;
|
|
15
|
+
disconnect(handlerId: number): void;
|
|
16
|
+
_emit(eventName: string): void;
|
|
17
|
+
addEventListener(eventName: string, callback: (data: EventData) => void, thisArg?: unknown, once?: boolean): void;
|
|
18
|
+
removeEventListener(eventName: string, callback?: (data: EventData) => void, thisArg?: unknown): void;
|
|
19
|
+
notify<T extends EventData>(data: T): void;
|
|
20
|
+
notifyPropertyChange(name: string, value: unknown, oldValue?: unknown): void;
|
|
21
|
+
set(name: string, value: unknown): void;
|
|
22
|
+
get(name: string): unknown;
|
|
23
|
+
}) & typeof GridLayout;
|
|
24
|
+
export declare abstract class AdwSplitViewBase<TState extends NsSplitViewState = NsSplitViewState> extends AdwSplitViewBase_base {
|
|
14
25
|
/** Which widget's width rule applies — they differ once a pane has a minimum. */
|
|
15
26
|
protected readonly _widthRule: SplitViewWidthRule;
|
|
16
27
|
/** The headless state machine this widget renders (`split-view-state.ts`). */
|
|
@@ -20,7 +31,7 @@ export declare abstract class AdwSplitViewBase<TState extends NsSplitViewState =
|
|
|
20
31
|
/** The three width PROPERTIES; the drawn width is derived from them. */
|
|
21
32
|
protected _widthProps: SidebarWidthProps;
|
|
22
33
|
/** The container width the sidebar was last sized against, in DIPs. */
|
|
23
|
-
protected
|
|
34
|
+
protected _splitWidth: number;
|
|
24
35
|
/** An explicit `sidebarWidth` assignment, which overrides the derivation. */
|
|
25
36
|
protected _sidebarWidthOverride: number | null;
|
|
26
37
|
constructor(rootClass: string,
|
|
@@ -74,10 +85,10 @@ export declare abstract class AdwSplitViewBase<TState extends NsSplitViewState =
|
|
|
74
85
|
protected _cancelPending(): void;
|
|
75
86
|
/** Whether `view` is currently a child of this layout. */
|
|
76
87
|
protected _isChild(view: View): boolean;
|
|
77
|
-
/** Set (or replace) the sidebar pane. */
|
|
78
|
-
|
|
79
|
-
/** Set (or replace) the content pane. */
|
|
80
|
-
|
|
88
|
+
/** Set (or replace) the sidebar pane — `set_sidebar` on both split views. */
|
|
89
|
+
set_sidebar(view: View | null): void;
|
|
90
|
+
/** Set (or replace) the content pane — `set_content` on both split views. */
|
|
91
|
+
set_content(view: View | null): void;
|
|
81
92
|
/**
|
|
82
93
|
* An XML child asks for `sidebar` or `content`, and a bare one is CONTENT.
|
|
83
94
|
*
|
|
@@ -135,3 +146,4 @@ export declare abstract class AdwSplitViewBase<TState extends NsSplitViewState =
|
|
|
135
146
|
/** The content pane, or `null`. */
|
|
136
147
|
get content(): View | null;
|
|
137
148
|
}
|
|
149
|
+
export {};
|
|
@@ -10,7 +10,7 @@ export declare function statusPageLabelVisibility(text: string | null | undefine
|
|
|
10
10
|
* `has_image`, bound to the image's `visible`.
|
|
11
11
|
*
|
|
12
12
|
* C is `paintable || (icon_name && icon_name[0])`; this port has no `paintable`
|
|
13
|
-
* counterpart (the icon is an SVG string handed to `
|
|
13
|
+
* counterpart (the icon is a name or an SVG string handed to `GtkImage`), so only the second
|
|
14
14
|
* half applies. Kept as its own predicate rather than folded into
|
|
15
15
|
* {@link statusPageLabelVisibility} because upstream really are two closures, and
|
|
16
16
|
* the missing half is a real gap rather than a simplification.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a `styleClasses` write means here.
|
|
3
|
+
*
|
|
4
|
+
* THE DOOR TAKES A STRING AND THE READ-BACK IS A LIST, which is the DOM's own
|
|
5
|
+
* `className`/`classList` split and not a compromise: the two places that WRITE this are a
|
|
6
|
+
* NativeScript XML attribute and `View.className`, and both are strings, while
|
|
7
|
+
* `GtkWidget:css-classes` holds a list and so does the getter. An array-taking door would
|
|
8
|
+
* need a fourth attribute kind in `check-generated-website-data` — it has `number`,
|
|
9
|
+
* `boolean` and `json`, and `json` there means "parses to a plain OBJECT", so not even
|
|
10
|
+
* `'["pill"]'` reaches it — and inventing one to offer a second spelling of a door that
|
|
11
|
+
* already works is the "second way to say what the table can already say" that gate's own
|
|
12
|
+
* header refuses.
|
|
13
|
+
*
|
|
14
|
+
* NO ARRAY ARM. It had one, "because the widget's internals rebuild the list through it";
|
|
15
|
+
* the internals are the two setters and both are typed `string | null | undefined`, so the
|
|
16
|
+
* arm was unreachable and its `String(name)` coercion guarded nothing.
|
|
17
|
+
*/
|
|
18
|
+
export type AdwStyleClassesInput = string | null | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* The class list a `styleClasses` write means: split on whitespace, trimmed,
|
|
21
|
+
* de-duplicated, order preserved.
|
|
22
|
+
*
|
|
23
|
+
* A STRING IS THE XML DOOR. NativeScript's `setPropertyValue` ends in `instance[name] =
|
|
24
|
+
* value`, so `<gtk:Button styleClasses="pill suggested-action">` hands the setter that
|
|
25
|
+
* whole string — the same fact `xmlNumber`/`xmlBoolean` exist for, one type over.
|
|
26
|
+
*/
|
|
27
|
+
export declare function normalizeStyleClasses(value: AdwStyleClassesInput): string[];
|
|
28
|
+
/**
|
|
29
|
+
* `className` for a widget whose own class is `base` and which carries `classes`.
|
|
30
|
+
*
|
|
31
|
+
* AN EMPTY `base` IS A WIDGET WITH NO CLASS OF ITS OWN, and two of them ship: `Gtk.Box`
|
|
32
|
+
* and `Gtk.Label` are transparent — there is no Adwaita fill, radius or typography to give
|
|
33
|
+
* a box or a bare label, so they carry only what a caller puts on them. The empties are
|
|
34
|
+
* filtered rather than joined, because `` `${''} ${'title-1'}` `` is a leading space and
|
|
35
|
+
* NativeScript's `className` splitter turns that into an empty class name.
|
|
36
|
+
*/
|
|
37
|
+
export declare function classNameWith(base: string, classes: readonly string[]): string;
|
|
38
|
+
/**
|
|
39
|
+
* The list after `gtk_widget_add_css_class(name)` — GTK's own method, and the door a GJS
|
|
40
|
+
* snippet reaches for.
|
|
41
|
+
*
|
|
42
|
+
* WHY THE METHODS EXIST BESIDE THE `styleClasses` PROPERTY. A NativeScript XML attribute
|
|
43
|
+
* can only carry a string, which is what `styleClasses` is for; a TypeScript caller ported
|
|
44
|
+
* off GJS writes `button.add_css_class('pill')`, and that line is in every Adwaita snippet
|
|
45
|
+
* that gives a button a look. The two doors hold the SAME list, so a widget that offers
|
|
46
|
+
* both cannot have them disagree — which is why the mutation is a pure function over the
|
|
47
|
+
* list rather than a second `className` rewrite per method.
|
|
48
|
+
*
|
|
49
|
+
* ADDS AT THE END, AND ONLY IF ABSENT. `gtk_widget_add_css_class` is a no-op for a class
|
|
50
|
+
* the widget already has (the quark is already in the list), so a second add does not move
|
|
51
|
+
* it — measured under gjs 1.88.1: `add_css_class('a'); add_css_class('b');
|
|
52
|
+
* add_css_class('a')` reads back two classes.
|
|
53
|
+
*
|
|
54
|
+
* ONE NAME, TRIMMED. GTK takes a single class name and would happily intern `'a b'` as one
|
|
55
|
+
* unmatchable class; here the string door already means "a whitespace-separated list", so a
|
|
56
|
+
* name with whitespace in it is the caller confusing the two doors. It is trimmed, and an
|
|
57
|
+
* empty name is dropped rather than added as a class nothing can be.
|
|
58
|
+
*/
|
|
59
|
+
export declare function withCssClass(classes: readonly string[], name: string): string[];
|
|
60
|
+
/** The list after `gtk_widget_remove_css_class(name)`. Absent is a no-op, as in C. */
|
|
61
|
+
export declare function withoutCssClass(classes: readonly string[], name: string): string[];
|
|
@@ -11,11 +11,22 @@ export declare const NOTIFY_SELECTED = "notify::selected";
|
|
|
11
11
|
*/
|
|
12
12
|
export interface NotifyViewSelectedEventData extends EventData, ViewSwitcherNotifyPayload {
|
|
13
13
|
}
|
|
14
|
+
declare const AdwViewSwitcherBase_base: (abstract new (...args: any[]) => {
|
|
15
|
+
connect(eventName: string, callback: (self: /*elided*/ any, data: EventData) => void): number;
|
|
16
|
+
disconnect(handlerId: number): void;
|
|
17
|
+
_emit(eventName: string): void;
|
|
18
|
+
addEventListener(eventName: string, callback: (data: EventData) => void, thisArg?: unknown, once?: boolean): void;
|
|
19
|
+
removeEventListener(eventName: string, callback?: (data: EventData) => void, thisArg?: unknown): void;
|
|
20
|
+
notify<T extends EventData>(data: T): void;
|
|
21
|
+
notifyPropertyChange(name: string, value: unknown, oldValue?: unknown): void;
|
|
22
|
+
set(name: string, value: unknown): void;
|
|
23
|
+
get(name: string): unknown;
|
|
24
|
+
}) & typeof GridLayout;
|
|
14
25
|
/**
|
|
15
26
|
* Shared base: a switcher bar (row 0) + a content area (row 1), one page visible.
|
|
16
27
|
* Subclasses set the bar/button CSS classes for their look.
|
|
17
28
|
*/
|
|
18
|
-
export declare abstract class AdwViewSwitcherBase extends
|
|
29
|
+
export declare abstract class AdwViewSwitcherBase extends AdwViewSwitcherBase_base {
|
|
19
30
|
/** The horizontal switcher bar holding the buttons. */
|
|
20
31
|
protected readonly _bar: GridLayout;
|
|
21
32
|
/** `Adw.ViewSwitcher:policy`, default NARROW as in C. */
|
|
@@ -8,9 +8,9 @@ import type { AdwViewSwitcherPageInit, ViewSwitcherStateChange } from '@gjsify/a
|
|
|
8
8
|
* `icon` are NULLABLE on purpose: a page with neither renders no button at all, and
|
|
9
9
|
* an absent title flattened to `''` makes that rule inexpressible.
|
|
10
10
|
*
|
|
11
|
-
* `icon` is an Adwaita symbolic SVG DOCUMENT here, not a GTK icon name: `
|
|
11
|
+
* `icon` is an Adwaita symbolic SVG DOCUMENT here, not a GTK icon name: `GtkImage`
|
|
12
12
|
* rasterises the path data natively. The core treats the field as an opaque
|
|
13
|
-
* handle and only ever interprets "absent or empty";
|
|
13
|
+
* handle and only ever interprets "absent or empty"; `icon-theme.ts` resolves
|
|
14
14
|
* the fallback sentinel it hands back.
|
|
15
15
|
*/
|
|
16
16
|
export interface AdwViewPage {
|
|
@@ -18,7 +18,7 @@ export interface AdwViewPage {
|
|
|
18
18
|
title?: string;
|
|
19
19
|
/** The page content view, shown when this page is selected. */
|
|
20
20
|
content: View;
|
|
21
|
-
/**
|
|
21
|
+
/** The icon shown on the switcher button — a NAME or SVG source; absent means none. */
|
|
22
22
|
icon?: string;
|
|
23
23
|
/** Stable id used by `visible-child-name`; defaults to the page's position. */
|
|
24
24
|
name?: string;
|
|
@@ -47,15 +47,6 @@ export declare function createViewSwitcherBarState(): ViewSwitcherBarState;
|
|
|
47
47
|
export declare function viewSwitcherPageSpec(page: AdwViewPage, index: number): AdwViewSwitcherPageInit;
|
|
48
48
|
/** {@link viewSwitcherPageSpec} over a whole page list. */
|
|
49
49
|
export declare function viewSwitcherPageSpecs(pages: readonly AdwViewPage[]): AdwViewSwitcherPageInit[];
|
|
50
|
-
/**
|
|
51
|
-
* Resolve the core's icon slot to something `AdwIcon` can rasterise.
|
|
52
|
-
*
|
|
53
|
-
* The core substitutes the NAME `image-missing` for an absent icon. On the browser
|
|
54
|
-
* side that name becomes a CSS mask class; here it has to become the actual
|
|
55
|
-
* symbolic document, so the sentinel is swapped for the vendored
|
|
56
|
-
* `image-missing-symbolic` SVG. Anything else is already an SVG and passes through.
|
|
57
|
-
*/
|
|
58
|
-
export declare function nsIconSvg(iconName: string): string;
|
|
59
50
|
/**
|
|
60
51
|
* The `visibility` each page's content view must carry for the current
|
|
61
52
|
* selection, in page order. Exactly one entry is `'visible'` — none when nothing
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gjsify/adwaita-nativescript",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.49.0",
|
|
4
4
|
"description": "Native Adwaita widgets for the NativeScript runtime — real NativeScript components (StackLayout/GridLayout/Switch/Label) styled like Libadwaita, not a webview",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"module": "lib/esm/index.js",
|
|
@@ -10,9 +10,13 @@
|
|
|
10
10
|
"types": "./lib/types/index.d.ts",
|
|
11
11
|
"default": "./lib/esm/index.js"
|
|
12
12
|
},
|
|
13
|
-
"./
|
|
14
|
-
"types": "./lib/types/
|
|
15
|
-
"default": "./lib/esm/
|
|
13
|
+
"./adw": {
|
|
14
|
+
"types": "./lib/types/namespace/adw.d.ts",
|
|
15
|
+
"default": "./lib/esm/namespace/adw.js"
|
|
16
|
+
},
|
|
17
|
+
"./gtk": {
|
|
18
|
+
"types": "./lib/types/namespace/gtk.d.ts",
|
|
19
|
+
"default": "./lib/esm/namespace/gtk.js"
|
|
16
20
|
},
|
|
17
21
|
"./theme/adwaita.css": "./src/theme/adwaita.css",
|
|
18
22
|
"./fonts": {
|
|
@@ -47,10 +51,10 @@
|
|
|
47
51
|
"design-system"
|
|
48
52
|
],
|
|
49
53
|
"dependencies": {
|
|
50
|
-
"@gjsify/adwaita-core": "^0.
|
|
51
|
-
"@gjsify/adwaita-fonts": "^0.
|
|
52
|
-
"@gjsify/adwaita-icons": "^0.
|
|
53
|
-
"@gjsify/native-platform": "^0.
|
|
54
|
+
"@gjsify/adwaita-core": "^0.49.0",
|
|
55
|
+
"@gjsify/adwaita-fonts": "^0.49.0",
|
|
56
|
+
"@gjsify/adwaita-icons": "^0.49.0",
|
|
57
|
+
"@gjsify/native-platform": "^0.49.0"
|
|
54
58
|
},
|
|
55
59
|
"peerDependencies": {
|
|
56
60
|
"@nativescript/core": "*"
|
|
@@ -61,8 +65,8 @@
|
|
|
61
65
|
}
|
|
62
66
|
},
|
|
63
67
|
"devDependencies": {
|
|
64
|
-
"@gjsify/cli": "^0.
|
|
65
|
-
"@gjsify/unit": "^0.
|
|
68
|
+
"@gjsify/cli": "^0.49.0",
|
|
69
|
+
"@gjsify/unit": "^0.49.0",
|
|
66
70
|
"@types/node": "^25.9.2",
|
|
67
71
|
"typescript": "^6.0.3"
|
|
68
72
|
},
|
package/src/theme/adwaita.css
CHANGED
|
@@ -264,7 +264,7 @@ Page.adw-window {
|
|
|
264
264
|
* Their 24×24 + 5 padding box (_lists.scss:194-198) is deliberately NOT
|
|
265
265
|
* reproduced. It is a hit/alignment box around a 16 glyph, and NS would read a
|
|
266
266
|
* `min-width` on an `Image` as room to SCALE the bitmap into — an icon half
|
|
267
|
-
* again too large rather than a roomier one. The glyph size is
|
|
267
|
+
* again too large rather than a roomier one. The glyph size is GtkImage's own. */
|
|
268
268
|
.adw-entry-indicator,
|
|
269
269
|
.adw-entry-edit {
|
|
270
270
|
margin: 0 0 0 6;
|
|
@@ -329,7 +329,7 @@ Page.adw-window {
|
|
|
329
329
|
}
|
|
330
330
|
|
|
331
331
|
.adw-combo-chevron {
|
|
332
|
-
/*
|
|
332
|
+
/* A GtkImage (Image) rendering `pan-down-symbolic`; size + dim colour are set
|
|
333
333
|
* on the widget. Only the gap to the value label is styled here. */
|
|
334
334
|
margin: 0 0 0 2;
|
|
335
335
|
vertical-align: middle;
|
|
@@ -362,7 +362,7 @@ Page.adw-window {
|
|
|
362
362
|
|
|
363
363
|
/* `dropdown > button > box { border-spacing: 6px }` (_dropdowns.scss:2-3) — the
|
|
364
364
|
* gap between label and arrow. The arrow's 16px size (_dropdowns.scss:10-13) is
|
|
365
|
-
* the
|
|
365
|
+
* the GtkImage default, and its colour follows the light/dark scheme, so neither
|
|
366
366
|
* is set anywhere. */
|
|
367
367
|
.adw-drop-down-chevron {
|
|
368
368
|
margin: 0 0 0 6;
|
|
@@ -448,7 +448,7 @@ Page.adw-window {
|
|
|
448
448
|
*
|
|
449
449
|
* The `width: 32` / `height: 32` that used to be here NEVER APPLIED. NativeScript
|
|
450
450
|
* ignores a CSS value for a property the widget has set as a LOCAL one
|
|
451
|
-
* (properties/index.js:585-598), and `
|
|
451
|
+
* (properties/index.js:585-598), and `GtkImage` assigns `width`/`height` in its
|
|
452
452
|
* constructor — so the chevron has always been the 16 `expander`'s own minimum
|
|
453
453
|
* asks for (_expanders.scss:2-3), which is right, while the stylesheet claimed
|
|
454
454
|
* a 32 tap target it never got. `color` and `font-size` were dead for the other
|
|
@@ -499,6 +499,49 @@ Page.adw-window {
|
|
|
499
499
|
padding: 10 32 10 32;
|
|
500
500
|
}
|
|
501
501
|
|
|
502
|
+
/* `%circular_button` — the explicit exception to the 9px rounded square: a full
|
|
503
|
+
* circle at 34×34 with no padding (_buttons.scss:312-317). It is the shape an
|
|
504
|
+
* icon-only button takes, which is why the rule arrives with the icon: while
|
|
505
|
+
* `Gtk.Button` was the platform's text-only `Button` the variant "had no counterpart
|
|
506
|
+
* at all", and a class with no rule would have drawn a rounded rectangle instead. The
|
|
507
|
+
* 34 is the same number `.adw-image-button` above carries, from the same line. */
|
|
508
|
+
.adw-button.circular {
|
|
509
|
+
width: 34;
|
|
510
|
+
height: 34;
|
|
511
|
+
border-radius: 9999;
|
|
512
|
+
padding: 0;
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
/* The button's OWN label, and it exists because the button is a `GridLayout`.
|
|
516
|
+
*
|
|
517
|
+
* `.adw-button` above declares `color` and `font-weight`; a `GridLayout` has no text,
|
|
518
|
+
* so neither reaches anything and the label would render at the platform default —
|
|
519
|
+
* silently, since a wrong font is not an error. `.adw-button-content-label` next to it
|
|
520
|
+
* had to exist for the same reason, and these are the same numbers: the 15pt / 700 of
|
|
521
|
+
* libadwaita's `button { font-weight: bold }` (_buttons.scss:1) over the label colour
|
|
522
|
+
* `.adw-button` carries.
|
|
523
|
+
*
|
|
524
|
+
* NOT MERGED WITH `.adw-button-content-label`: that class is `Adw.ButtonContent`'s and
|
|
525
|
+
* comes with the icon's 6 right-margin and the content's own padding rule; a plain
|
|
526
|
+
* text button has neither, and one selector for both would give every text button
|
|
527
|
+
* `image-text-button` spacing. */
|
|
528
|
+
.adw-button-label {
|
|
529
|
+
font-size: 15;
|
|
530
|
+
font-weight: 700;
|
|
531
|
+
color: rgba(0, 0, 0, 0.8);
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
/* On a suggested/destructive button the label takes the button's intent colour — the
|
|
535
|
+
* explicit label colour above would otherwise win over the inherited one, which is the
|
|
536
|
+
* same override `.adw-button-content-label` needs two blocks down. */
|
|
537
|
+
.adw-button.suggested-action .adw-button-label {
|
|
538
|
+
color: #ffffff;
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
.adw-button.destructive-action .adw-button-label {
|
|
542
|
+
color: #c01c28;
|
|
543
|
+
}
|
|
544
|
+
|
|
502
545
|
/* Pressed (`:highlighted`) — Adwaita darkens the button on press rather than
|
|
503
546
|
* showing a Material ripple. Mirrors adwaita-web's `:active` shades
|
|
504
547
|
* (`--button-active-color` / darker `--accent-color`). Pill inherits the base. */
|
|
@@ -911,7 +954,7 @@ Page.adw-window {
|
|
|
911
954
|
padding: 24 32 24 32;
|
|
912
955
|
}
|
|
913
956
|
|
|
914
|
-
/* The symbolic icon (
|
|
957
|
+
/* The symbolic icon (GtkImage) — only spacing; size/colour are baked by GtkImage. */
|
|
915
958
|
.adw-status-page-icon {
|
|
916
959
|
margin: 0 0 12 0;
|
|
917
960
|
}
|
|
@@ -961,7 +1004,7 @@ Page.adw-window {
|
|
|
961
1004
|
* three children with `border-spacing: 6px` (_lists.scss:458-462), which the NS
|
|
962
1005
|
* subset has no property for — so the 6 rides on the icons, mirrored.
|
|
963
1006
|
*
|
|
964
|
-
* MARGIN ONLY. Both are `
|
|
1007
|
+
* MARGIN ONLY. Both are `GtkImage`s, i.e. `Image`s showing a bitmap that was
|
|
965
1008
|
* rendered in its fill colour, so `color` here reaches nothing and `font-size`
|
|
966
1009
|
* has no text to size. They used to be declared anyway, which put a dead accent
|
|
967
1010
|
* declaration in the runtime-accent table as well; the colour now follows the
|
|
@@ -1012,7 +1055,7 @@ Page.adw-window {
|
|
|
1012
1055
|
|
|
1013
1056
|
/* On a suggested/destructive button the label must take the button's foreground
|
|
1014
1057
|
* (the explicit dark label colour above would otherwise win over the inherited
|
|
1015
|
-
* one). The matching ICON colour is pre-baked by the caller via
|
|
1058
|
+
* one). The matching ICON colour is pre-baked by the caller via GtkImage.iconColor. */
|
|
1016
1059
|
.adw-button.suggested-action .adw-button-content-label {
|
|
1017
1060
|
color: #ffffff;
|
|
1018
1061
|
}
|
|
@@ -1711,7 +1754,7 @@ Page.ns-dark.adw-window {
|
|
|
1711
1754
|
/* ===== Dark: expander row ===== */
|
|
1712
1755
|
|
|
1713
1756
|
/* No dark counterpart for the chevron: the 70% is an alpha over whatever the
|
|
1714
|
-
* bitmap was rendered in, and
|
|
1757
|
+
* bitmap was rendered in, and GtkImage re-renders that on a scheme change. The
|
|
1715
1758
|
* `color` this rule used to set reached an `Image` and did nothing. */
|
|
1716
1759
|
|
|
1717
1760
|
.ns-dark .adw-expander-disclosure {
|
|
@@ -1740,6 +1783,21 @@ Page.ns-dark.adw-window {
|
|
|
1740
1783
|
color: #ffffff;
|
|
1741
1784
|
}
|
|
1742
1785
|
|
|
1786
|
+
/* Dark: the button's own label. Same three colours the dark `.adw-button` rules
|
|
1787
|
+
* carry — near-white on the plain and flat button, white on suggested, the dark
|
|
1788
|
+
* destructive red. */
|
|
1789
|
+
.ns-dark .adw-button-label {
|
|
1790
|
+
color: #ffffff;
|
|
1791
|
+
}
|
|
1792
|
+
|
|
1793
|
+
.ns-dark .adw-button.suggested-action .adw-button-label {
|
|
1794
|
+
color: #ffffff;
|
|
1795
|
+
}
|
|
1796
|
+
|
|
1797
|
+
.ns-dark .adw-button.destructive-action .adw-button-label {
|
|
1798
|
+
color: #ff7b80;
|
|
1799
|
+
}
|
|
1800
|
+
|
|
1743
1801
|
/* Dark pressed (`:highlighted`) — Adwaita's lighter-overlay press shade. */
|
|
1744
1802
|
.ns-dark .adw-button:highlighted {
|
|
1745
1803
|
background-color: rgba(255, 255, 255, 0.22);
|
package/lib/esm/namespace.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{AdwPreferencesPage as e}from"./widgets/adw-preferences-page.js";import{AdwPreferencesGroup as t}from"./widgets/adw-preferences-group.js";import{AdwActionRow as n}from"./widgets/adw-action-row.js";import{AdwSwitchRow as r}from"./widgets/adw-switch-row.js";import{AdwIcon as i}from"./widgets/adw-icon.js";import{AdwEntryRow as a}from"./widgets/adw-entry-row.js";import{AdwPasswordEntryRow as o}from"./widgets/adw-password-entry-row.js";import{GtkEntry as s}from"./widgets/gtk-entry.js";import{AdwComboRow as c}from"./widgets/adw-combo-row.js";import{GtkDropDown as l}from"./widgets/gtk-drop-down.js";import{AdwSpinRow as u}from"./widgets/adw-spin-row.js";import{AdwExpanderRow as d}from"./widgets/adw-expander-row.js";import{GtkButton as f}from"./widgets/gtk-button.js";import{GtkMenuButton as p}from"./widgets/gtk-menu-button.js";import{AdwBanner as m}from"./widgets/adw-banner.js";import{AdwAvatar as h}from"./widgets/adw-avatar.js";import{AdwWindowTitle as g}from"./widgets/adw-window-title.js";import{AdwClamp as _}from"./widgets/adw-clamp.js";import{AdwHeaderBar as v}from"./widgets/adw-header-bar.js";import{AdwToolbarView as y}from"./widgets/adw-toolbar-view.js";import{AdwWrapBox as b}from"./widgets/adw-wrap-box.js";import{AdwSpinner as x}from"./widgets/adw-spinner.js";import{AdwStatusPage as S}from"./widgets/adw-status-page.js";import{AdwButtonRow as C}from"./widgets/adw-button-row.js";import{AdwButtonContent as w}from"./widgets/adw-button-content.js";import{AdwSplitButton as T}from"./widgets/adw-split-button.js";import{AdwToggleGroup as E}from"./widgets/adw-toggle-group.js";import{AdwShortcutLabel as D}from"./widgets/adw-shortcut-label.js";import{AdwViewStack as O}from"./widgets/adw-view-stack.js";import{AdwViewSwitcher as k}from"./widgets/adw-view-switcher.js";import{AdwViewSwitcherBar as A}from"./widgets/adw-view-switcher-bar.js";import{AdwInlineViewSwitcher as j}from"./widgets/adw-inline-view-switcher.js";import{AdwTabView as M}from"./widgets/adw-tab-view.js";import{AdwCarousel as N}from"./widgets/adw-carousel.js";import{AdwNavigationView as P}from"./widgets/adw-navigation-view.js";import{AdwNavigationSplitView as F}from"./widgets/adw-navigation-split-view.js";import{AdwOverlaySplitView as I}from"./widgets/adw-overlay-split-view.js";import{AdwSidebar as L}from"./widgets/adw-sidebar.js";import{AdwBottomSheet as R}from"./widgets/adw-bottom-sheet.js";import{AdwToastOverlay as z}from"./widgets/adw-toast-overlay.js";import{AdwAlertDialog as B}from"./widgets/adw-alert-dialog.js";import{AdwAboutDialog as V}from"./widgets/adw-about-dialog.js";import{AdwPreferencesDialog as H}from"./widgets/adw-preferences-dialog.js";const U={AboutDialog:V,ActionRow:n,AlertDialog:B,Avatar:h,Banner:m,BottomSheet:R,ButtonContent:w,ButtonRow:C,Carousel:N,Clamp:_,ComboRow:c,EntryRow:a,ExpanderRow:d,HeaderBar:v,InlineViewSwitcher:j,NavigationSplitView:F,NavigationView:P,OverlaySplitView:I,PasswordEntryRow:o,PreferencesDialog:H,PreferencesGroup:t,PreferencesPage:e,ShortcutLabel:D,Sidebar:L,Spinner:x,SpinRow:u,SplitButton:T,StatusPage:S,SwitchRow:r,TabView:M,ToastOverlay:z,ToggleGroup:E,ToolbarView:y,ViewStack:O,ViewSwitcher:k,ViewSwitcherBar:A,WindowTitle:g,WrapBox:b},W={Button:f,DropDown:l,Entry:s,Image:i,MenuButton:p};export{U as Adw,W as Gtk};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import"../_virtual/_rolldown/runtime.js";import{xmlNumber as e}from"./xml-values.js";import{onAdwaitaColorSchemeChanged as t,themeIconColor as n}from"./color-scheme.js";import{DEFAULT_ICON_COLOR as r}from"./icon-path.js";import{renderSymbolicIcon as i}from"./icons.js";import{Image as a}from"@nativescript/core";const o=16;var AdwIcon=class extends a{_iconSvg=``;_iconColor=n();_explicitColor=!1;_iconSize=16;_unsubScheme=null;constructor(){super(),this.className=`adw-icon`,this.stretch=`aspectFit`,this.width=this._iconSize,this.height=this._iconSize,this.addEventListener(`loaded`,()=>{this._syncThemeColor(),this._unsubScheme??=t(()=>this._syncThemeColor())}),this.addEventListener(`unloaded`,()=>{this._unsubScheme?.(),this._unsubScheme=null})}_syncThemeColor(){if(this._explicitColor)return;let e=n();e!==this._iconColor&&(this._iconColor=e,this._render())}_render(){if(!this._iconSvg)return;let e=i(this._iconSvg,{size:this._iconSize,color:this._iconColor});e&&(this.imageSource=e)}get iconName(){return this._iconSvg}set iconName(e){this._iconSvg=e??``,this._render()}get iconColor(){return this._iconColor}set iconColor(e){this._explicitColor=!0,this._iconColor=e||r,this._render()}get iconSize(){return this._iconSize}set iconSize(t){let n=e(t,this.iconSize);this._iconSize=Number.isFinite(n)&&n>0?n:16,this.width=this._iconSize,this.height=this._iconSize,this._render()}};export{AdwIcon,o as DEFAULT_ADW_ICON_SIZE};
|
package/lib/types/namespace.d.ts
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import { AdwAboutDialog } from './widgets/adw-about-dialog.js';
|
|
2
|
-
import { AdwActionRow } from './widgets/adw-action-row.js';
|
|
3
|
-
import { AdwAlertDialog } from './widgets/adw-alert-dialog.js';
|
|
4
|
-
import { AdwAvatar } from './widgets/adw-avatar.js';
|
|
5
|
-
import { AdwBanner } from './widgets/adw-banner.js';
|
|
6
|
-
import { AdwBottomSheet } from './widgets/adw-bottom-sheet.js';
|
|
7
|
-
import { AdwButtonContent } from './widgets/adw-button-content.js';
|
|
8
|
-
import { AdwButtonRow } from './widgets/adw-button-row.js';
|
|
9
|
-
import { AdwCarousel } from './widgets/adw-carousel.js';
|
|
10
|
-
import { AdwClamp } from './widgets/adw-clamp.js';
|
|
11
|
-
import { AdwComboRow } from './widgets/adw-combo-row.js';
|
|
12
|
-
import { AdwEntryRow } from './widgets/adw-entry-row.js';
|
|
13
|
-
import { AdwExpanderRow } from './widgets/adw-expander-row.js';
|
|
14
|
-
import { AdwHeaderBar } from './widgets/adw-header-bar.js';
|
|
15
|
-
import { AdwIcon } from './widgets/adw-icon.js';
|
|
16
|
-
import { AdwInlineViewSwitcher } from './widgets/adw-inline-view-switcher.js';
|
|
17
|
-
import { AdwNavigationSplitView } from './widgets/adw-navigation-split-view.js';
|
|
18
|
-
import { AdwNavigationView } from './widgets/adw-navigation-view.js';
|
|
19
|
-
import { AdwOverlaySplitView } from './widgets/adw-overlay-split-view.js';
|
|
20
|
-
import { AdwPasswordEntryRow } from './widgets/adw-password-entry-row.js';
|
|
21
|
-
import { AdwPreferencesDialog } from './widgets/adw-preferences-dialog.js';
|
|
22
|
-
import { AdwPreferencesGroup } from './widgets/adw-preferences-group.js';
|
|
23
|
-
import { AdwPreferencesPage } from './widgets/adw-preferences-page.js';
|
|
24
|
-
import { AdwShortcutLabel } from './widgets/adw-shortcut-label.js';
|
|
25
|
-
import { AdwSidebar } from './widgets/adw-sidebar.js';
|
|
26
|
-
import { AdwSpinRow } from './widgets/adw-spin-row.js';
|
|
27
|
-
import { AdwSpinner } from './widgets/adw-spinner.js';
|
|
28
|
-
import { AdwSplitButton } from './widgets/adw-split-button.js';
|
|
29
|
-
import { AdwStatusPage } from './widgets/adw-status-page.js';
|
|
30
|
-
import { AdwSwitchRow } from './widgets/adw-switch-row.js';
|
|
31
|
-
import { AdwTabView } from './widgets/adw-tab-view.js';
|
|
32
|
-
import { AdwToastOverlay } from './widgets/adw-toast-overlay.js';
|
|
33
|
-
import { AdwToggleGroup } from './widgets/adw-toggle-group.js';
|
|
34
|
-
import { AdwToolbarView } from './widgets/adw-toolbar-view.js';
|
|
35
|
-
import { AdwViewStack } from './widgets/adw-view-stack.js';
|
|
36
|
-
import { AdwViewSwitcherBar } from './widgets/adw-view-switcher-bar.js';
|
|
37
|
-
import { AdwViewSwitcher } from './widgets/adw-view-switcher.js';
|
|
38
|
-
import { AdwWindowTitle } from './widgets/adw-window-title.js';
|
|
39
|
-
import { AdwWrapBox } from './widgets/adw-wrap-box.js';
|
|
40
|
-
import { GtkButton } from './widgets/gtk-button.js';
|
|
41
|
-
import { GtkDropDown } from './widgets/gtk-drop-down.js';
|
|
42
|
-
import { GtkEntry } from './widgets/gtk-entry.js';
|
|
43
|
-
import { GtkMenuButton } from './widgets/gtk-menu-button.js';
|
|
44
|
-
/** The libadwaita half: every widget whose own spelling is an `adw-*` tag. */
|
|
45
|
-
export declare const Adw: {
|
|
46
|
-
AboutDialog: typeof AdwAboutDialog;
|
|
47
|
-
ActionRow: typeof AdwActionRow;
|
|
48
|
-
AlertDialog: typeof AdwAlertDialog;
|
|
49
|
-
Avatar: typeof AdwAvatar;
|
|
50
|
-
Banner: typeof AdwBanner;
|
|
51
|
-
BottomSheet: typeof AdwBottomSheet;
|
|
52
|
-
ButtonContent: typeof AdwButtonContent;
|
|
53
|
-
ButtonRow: typeof AdwButtonRow;
|
|
54
|
-
Carousel: typeof AdwCarousel;
|
|
55
|
-
Clamp: typeof AdwClamp;
|
|
56
|
-
ComboRow: typeof AdwComboRow;
|
|
57
|
-
EntryRow: typeof AdwEntryRow;
|
|
58
|
-
ExpanderRow: typeof AdwExpanderRow;
|
|
59
|
-
HeaderBar: typeof AdwHeaderBar;
|
|
60
|
-
InlineViewSwitcher: typeof AdwInlineViewSwitcher;
|
|
61
|
-
NavigationSplitView: typeof AdwNavigationSplitView;
|
|
62
|
-
NavigationView: typeof AdwNavigationView;
|
|
63
|
-
OverlaySplitView: typeof AdwOverlaySplitView;
|
|
64
|
-
PasswordEntryRow: typeof AdwPasswordEntryRow;
|
|
65
|
-
PreferencesDialog: typeof AdwPreferencesDialog;
|
|
66
|
-
PreferencesGroup: typeof AdwPreferencesGroup;
|
|
67
|
-
PreferencesPage: typeof AdwPreferencesPage;
|
|
68
|
-
ShortcutLabel: typeof AdwShortcutLabel;
|
|
69
|
-
Sidebar: typeof AdwSidebar;
|
|
70
|
-
Spinner: typeof AdwSpinner;
|
|
71
|
-
SpinRow: typeof AdwSpinRow;
|
|
72
|
-
SplitButton: typeof AdwSplitButton;
|
|
73
|
-
StatusPage: typeof AdwStatusPage;
|
|
74
|
-
SwitchRow: typeof AdwSwitchRow;
|
|
75
|
-
TabView: typeof AdwTabView;
|
|
76
|
-
ToastOverlay: typeof AdwToastOverlay;
|
|
77
|
-
ToggleGroup: typeof AdwToggleGroup;
|
|
78
|
-
ToolbarView: typeof AdwToolbarView;
|
|
79
|
-
ViewStack: typeof AdwViewStack;
|
|
80
|
-
ViewSwitcher: typeof AdwViewSwitcher;
|
|
81
|
-
ViewSwitcherBar: typeof AdwViewSwitcherBar;
|
|
82
|
-
WindowTitle: typeof AdwWindowTitle;
|
|
83
|
-
WrapBox: typeof AdwWrapBox;
|
|
84
|
-
};
|
|
85
|
-
/** The GTK half: the widgets `NS_WIDGET_ALIGNMENT` declares a `gir` alias of a GTK type. */
|
|
86
|
-
export declare const Gtk: {
|
|
87
|
-
Button: typeof GtkButton;
|
|
88
|
-
DropDown: typeof GtkDropDown;
|
|
89
|
-
Entry: typeof GtkEntry;
|
|
90
|
-
Image: typeof AdwIcon;
|
|
91
|
-
MenuButton: typeof GtkMenuButton;
|
|
92
|
-
};
|