@gjsify/example-gtk-adwaita-storybook 0.53.0 → 0.55.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/dist/browser-main.js +8093 -3042
- package/dist/gjs.js +15 -10
- package/dist/gjs.node.mjs +10 -5
- package/package.json +5 -5
- package/src/browser/buttons/color-dialog-button.web.ts +42 -0
- package/src/browser/buttons/font-dialog-button.web.ts +42 -0
- package/src/browser/buttons/link-button.web.ts +37 -0
- package/src/browser/buttons/scale-button.web.ts +36 -0
- package/src/browser/buttons/toggle-button.web.ts +35 -0
- package/src/browser/controls/check-button.web.ts +38 -0
- package/src/browser/controls/gtk-spinner.web.ts +39 -0
- package/src/browser/controls/level-bar.web.ts +43 -0
- package/src/browser/controls/password-entry.web.ts +36 -0
- package/src/browser/controls/progress-bar.web.ts +39 -0
- package/src/browser/controls/scale.web.ts +44 -0
- package/src/browser/controls/search-entry.web.ts +49 -0
- package/src/browser/controls/spin-button.web.ts +40 -0
- package/src/browser/controls/switch.web.ts +38 -0
- package/src/browser/drawing/drag-icon.web.ts +112 -0
- package/src/browser/drawing/drawing-area.web.ts +66 -0
- package/src/browser/drawing/gl-area.web.ts +162 -0
- package/src/browser/drawing/graphics-offload.web.ts +74 -0
- package/src/browser/feedback/dialog.web.ts +76 -0
- package/src/browser/feedback/emoji-chooser.web.ts +93 -0
- package/src/browser/feedback/gtk-about-dialog.web.ts +105 -0
- package/src/browser/feedback/page-setup-unix-dialog.web.ts +93 -0
- package/src/browser/feedback/print-unix-dialog.web.ts +111 -0
- package/src/browser/feedback/shortcuts-dialog.web.ts +90 -0
- package/src/browser/layout/application-window.web.ts +94 -0
- package/src/browser/layout/aspect-frame.web.ts +49 -0
- package/src/browser/layout/bin.web.ts +41 -0
- package/src/browser/layout/breakpoint-bin.web.ts +61 -0
- package/src/browser/layout/center-box.web.ts +45 -0
- package/src/browser/layout/clamp-scrollable.web.ts +47 -0
- package/src/browser/layout/expander.web.ts +52 -0
- package/src/browser/layout/fixed.web.ts +51 -0
- package/src/browser/layout/frame.web.ts +40 -0
- package/src/browser/layout/grid.web.ts +46 -0
- package/src/browser/layout/layout-slot.web.ts +60 -0
- package/src/browser/layout/multi-layout-view.web.ts +94 -0
- package/src/browser/layout/overlay.web.ts +57 -0
- package/src/browser/layout/paned.web.ts +69 -0
- package/src/browser/layout/popover-bin.web.ts +54 -0
- package/src/browser/layout/popover-menu.web.ts +48 -0
- package/src/browser/layout/popover.web.ts +61 -0
- package/src/browser/layout/revealer.web.ts +53 -0
- package/src/browser/layout/scrollbar.web.ts +54 -0
- package/src/browser/layout/scrolled-window.web.ts +52 -0
- package/src/browser/layout/separator.web.ts +47 -0
- package/src/browser/layout/viewport.web.ts +51 -0
- package/src/browser/layout/window.web.ts +60 -0
- package/src/browser/media/image.web.ts +39 -0
- package/src/browser/media/inscription.web.ts +52 -0
- package/src/browser/media/media-controls.web.ts +65 -0
- package/src/browser/media/picture.web.ts +56 -0
- package/src/browser/media/video.web.ts +56 -0
- package/src/browser/navigation/popover-menu-bar.web.ts +40 -0
- package/src/browser/presentation/calendar.web.ts +49 -0
- package/src/browser/presentation/column-view.web.ts +45 -0
- package/src/browser/presentation/flow-box.web.ts +52 -0
- package/src/browser/presentation/grid-view.web.ts +37 -0
- package/src/browser/presentation/list-box.web.ts +48 -0
- package/src/browser/presentation/list-view.web.ts +36 -0
- package/src/browser/presentation/tree-expander.web.ts +68 -0
- package/src/browser/presentation/window-handle.web.ts +42 -0
- package/src/browser/rows/preferences-row.web.ts +43 -0
- package/src/browser/stories.ts +158 -0
- package/src/browser/text/editable-label.web.ts +45 -0
- package/src/browser/text/search-bar.web.ts +45 -0
- package/src/browser/text/text-view.web.ts +54 -0
- package/src/browser/text/text.web.ts +48 -0
- package/src/browser/view-switching/notebook.web.ts +67 -0
- package/src/browser/view-switching/stack-sidebar.web.ts +68 -0
- package/src/browser/view-switching/stack-switcher.web.ts +70 -0
- package/src/browser/view-switching/stack.web.ts +72 -0
- package/src/browser/view-switching/tab-bar.web.ts +105 -0
- package/src/browser/view-switching/tab-button.web.ts +52 -0
- package/src/browser/view-switching/tab-overview.web.ts +87 -0
- package/src/browser/view-switching/view-switcher-sidebar.web.ts +77 -0
- package/src/browser/windows/action-bar.web.ts +66 -0
- package/src/browser/windows/gtk-application-window.web.ts +67 -0
- package/src/browser/windows/gtk-header-bar.web.ts +61 -0
- package/src/browser/windows/gtk-window.web.ts +58 -0
- package/src/browser/windows/window-controls.web.ts +54 -0
- package/src/buttons/color-dialog-button.meta.ts +16 -0
- package/src/buttons/color-dialog-button.story.ts +49 -0
- package/src/buttons/font-dialog-button.meta.ts +29 -0
- package/src/buttons/font-dialog-button.story.ts +52 -0
- package/src/buttons/link-button.meta.ts +18 -0
- package/src/buttons/link-button.story.ts +48 -0
- package/src/buttons/scale-button.meta.ts +34 -0
- package/src/buttons/scale-button.story.ts +50 -0
- package/src/buttons/toggle-button.meta.ts +17 -0
- package/src/buttons/toggle-button.story.ts +46 -0
- package/src/controls/check-button.meta.ts +19 -0
- package/src/controls/check-button.story.ts +56 -0
- package/src/controls/gtk-spinner.meta.ts +24 -0
- package/src/controls/gtk-spinner.story.ts +53 -0
- package/src/controls/level-bar.meta.ts +39 -0
- package/src/controls/level-bar.story.ts +58 -0
- package/src/controls/password-entry.meta.ts +18 -0
- package/src/controls/password-entry.story.ts +54 -0
- package/src/controls/progress-bar.meta.ts +20 -0
- package/src/controls/progress-bar.story.ts +53 -0
- package/src/controls/scale.meta.ts +47 -0
- package/src/controls/scale.story.ts +66 -0
- package/src/controls/search-entry.meta.ts +18 -0
- package/src/controls/search-entry.story.ts +57 -0
- package/src/controls/spin-button.meta.ts +40 -0
- package/src/controls/spin-button.story.ts +55 -0
- package/src/controls/switch.meta.ts +18 -0
- package/src/controls/switch.story.ts +50 -0
- package/src/drawing/drag-icon.meta.ts +39 -0
- package/src/drawing/drag-icon.story.ts +117 -0
- package/src/drawing/drawing-area.meta.ts +45 -0
- package/src/drawing/drawing-area.story.ts +78 -0
- package/src/drawing/gl-area.meta.ts +30 -0
- package/src/drawing/gl-area.story.ts +113 -0
- package/src/drawing/graphics-offload.meta.ts +39 -0
- package/src/drawing/graphics-offload.story.ts +73 -0
- package/src/feedback/dialog.meta.ts +25 -0
- package/src/feedback/dialog.story.ts +78 -0
- package/src/feedback/emoji-chooser.meta.ts +10 -0
- package/src/feedback/emoji-chooser.story.ts +98 -0
- package/src/feedback/gtk-about-dialog.meta.ts +29 -0
- package/src/feedback/gtk-about-dialog.story.ts +90 -0
- package/src/feedback/page-setup-unix-dialog.meta.ts +37 -0
- package/src/feedback/page-setup-unix-dialog.story.ts +70 -0
- package/src/feedback/print-unix-dialog.meta.ts +30 -0
- package/src/feedback/print-unix-dialog.story.ts +93 -0
- package/src/feedback/shortcuts-dialog.meta.ts +12 -0
- package/src/feedback/shortcuts-dialog.story.ts +79 -0
- package/src/layout/application-window.meta.ts +16 -0
- package/src/layout/application-window.story.ts +97 -0
- package/src/layout/aspect-frame.meta.ts +19 -0
- package/src/layout/aspect-frame.story.ts +62 -0
- package/src/layout/bin.meta.ts +15 -0
- package/src/layout/bin.story.ts +56 -0
- package/src/layout/breakpoint-bin.meta.ts +38 -0
- package/src/layout/breakpoint-bin.story.ts +62 -0
- package/src/layout/center-box.meta.ts +26 -0
- package/src/layout/center-box.story.ts +54 -0
- package/src/layout/clamp-scrollable.meta.ts +30 -0
- package/src/layout/clamp-scrollable.story.ts +51 -0
- package/src/layout/expander.meta.ts +30 -0
- package/src/layout/expander.story.ts +62 -0
- package/src/layout/fixed.meta.ts +16 -0
- package/src/layout/fixed.story.ts +54 -0
- package/src/layout/frame.meta.ts +24 -0
- package/src/layout/frame.story.ts +51 -0
- package/src/layout/grid.meta.ts +45 -0
- package/src/layout/grid.story.ts +80 -0
- package/src/layout/layout-slot.meta.ts +22 -0
- package/src/layout/layout-slot.story.ts +68 -0
- package/src/layout/multi-layout-view.meta.ts +31 -0
- package/src/layout/multi-layout-view.story.ts +101 -0
- package/src/layout/overlay.meta.ts +42 -0
- package/src/layout/overlay.story.ts +72 -0
- package/src/layout/paned.meta.ts +45 -0
- package/src/layout/paned.story.ts +70 -0
- package/src/layout/popover-bin.meta.ts +29 -0
- package/src/layout/popover-bin.story.ts +66 -0
- package/src/layout/popover-menu.meta.ts +54 -0
- package/src/layout/popover-menu.story.ts +119 -0
- package/src/layout/popover.meta.ts +38 -0
- package/src/layout/popover.story.ts +66 -0
- package/src/layout/revealer.meta.ts +44 -0
- package/src/layout/revealer.story.ts +79 -0
- package/src/layout/scrollbar.meta.ts +33 -0
- package/src/layout/scrollbar.story.ts +61 -0
- package/src/layout/scrolled-window.meta.ts +57 -0
- package/src/layout/scrolled-window.story.ts +74 -0
- package/src/layout/separator.meta.ts +25 -0
- package/src/layout/separator.story.ts +53 -0
- package/src/layout/viewport.meta.ts +19 -0
- package/src/layout/viewport.story.ts +53 -0
- package/src/layout/window.meta.ts +13 -0
- package/src/layout/window.story.ts +66 -0
- package/src/media/image.meta.ts +24 -0
- package/src/media/image.story.ts +48 -0
- package/src/media/inscription.meta.ts +45 -0
- package/src/media/inscription.story.ts +64 -0
- package/src/media/media-controls.meta.ts +30 -0
- package/src/media/media-controls.story.ts +58 -0
- package/src/media/picture.meta.ts +42 -0
- package/src/media/picture.story.ts +81 -0
- package/src/media/video.meta.ts +32 -0
- package/src/media/video.story.ts +57 -0
- package/src/metas.ts +79 -0
- package/src/navigation/popover-menu-bar.meta.ts +51 -0
- package/src/navigation/popover-menu-bar.story.ts +72 -0
- package/src/presentation/calendar.meta.ts +28 -0
- package/src/presentation/calendar.story.ts +64 -0
- package/src/presentation/column-view.meta.ts +30 -0
- package/src/presentation/column-view.story.ts +73 -0
- package/src/presentation/flow-box.meta.ts +51 -0
- package/src/presentation/flow-box.story.ts +72 -0
- package/src/presentation/grid-view.meta.ts +28 -0
- package/src/presentation/grid-view.story.ts +64 -0
- package/src/presentation/list-box.meta.ts +55 -0
- package/src/presentation/list-box.story.ts +68 -0
- package/src/presentation/list-view.meta.ts +38 -0
- package/src/presentation/list-view.story.ts +73 -0
- package/src/presentation/tree-expander.meta.ts +24 -0
- package/src/presentation/tree-expander.story.ts +105 -0
- package/src/presentation/window-handle.meta.ts +27 -0
- package/src/presentation/window-handle.story.ts +53 -0
- package/src/rows/preferences-row.meta.ts +15 -0
- package/src/rows/preferences-row.story.ts +50 -0
- package/src/text/editable-label.meta.ts +17 -0
- package/src/text/editable-label.story.ts +47 -0
- package/src/text/search-bar.meta.ts +17 -0
- package/src/text/search-bar.story.ts +48 -0
- package/src/text/text-view.meta.ts +49 -0
- package/src/text/text-view.story.ts +69 -0
- package/src/text/text.meta.ts +21 -0
- package/src/text/text.story.ts +50 -0
- package/src/view-switching/notebook.meta.ts +44 -0
- package/src/view-switching/notebook.story.ts +77 -0
- package/src/view-switching/stack-sidebar.meta.ts +50 -0
- package/src/view-switching/stack-sidebar.story.ts +85 -0
- package/src/view-switching/stack-switcher.meta.ts +53 -0
- package/src/view-switching/stack-switcher.story.ts +95 -0
- package/src/view-switching/stack.meta.ts +53 -0
- package/src/view-switching/stack.story.ts +95 -0
- package/src/view-switching/tab-bar.meta.ts +22 -0
- package/src/view-switching/tab-bar.story.ts +85 -0
- package/src/view-switching/tab-button.meta.ts +14 -0
- package/src/view-switching/tab-button.story.ts +52 -0
- package/src/view-switching/tab-overview.meta.ts +21 -0
- package/src/view-switching/tab-overview.story.ts +86 -0
- package/src/view-switching/view-switcher-sidebar.meta.ts +42 -0
- package/src/view-switching/view-switcher-sidebar.story.ts +73 -0
- package/src/windows/action-bar.meta.ts +27 -0
- package/src/windows/action-bar.story.ts +65 -0
- package/src/windows/gtk-application-window.meta.ts +27 -0
- package/src/windows/gtk-application-window.story.ts +89 -0
- package/src/windows/gtk-header-bar.meta.ts +39 -0
- package/src/windows/gtk-header-bar.story.ts +76 -0
- package/src/windows/gtk-window.meta.ts +30 -0
- package/src/windows/gtk-window.story.ts +64 -0
- package/src/windows/window-controls.meta.ts +42 -0
- package/src/windows/window-controls.story.ts +61 -0
package/src/browser/stories.ts
CHANGED
|
@@ -19,9 +19,17 @@ import type { WebStoryModule } from '@gjsify/adwaita-storybook';
|
|
|
19
19
|
import { OverviewWidgetsWebStories } from './overview/widgets.web.js';
|
|
20
20
|
import { AvatarWebStories } from './presentation/avatar.web.js';
|
|
21
21
|
import { BannerWebStories } from './presentation/banner.web.js';
|
|
22
|
+
import { CalendarWebStories } from './presentation/calendar.web.js';
|
|
23
|
+
import { ColumnViewWebStories } from './presentation/column-view.web.js';
|
|
24
|
+
import { FlowBoxWebStories } from './presentation/flow-box.web.js';
|
|
25
|
+
import { GridViewWebStories } from './presentation/grid-view.web.js';
|
|
26
|
+
import { ListBoxWebStories } from './presentation/list-box.web.js';
|
|
27
|
+
import { ListViewWebStories } from './presentation/list-view.web.js';
|
|
22
28
|
import { ShortcutLabelWebStories } from './presentation/shortcut-label.web.js';
|
|
23
29
|
import { SpinnerWebStories } from './presentation/spinner.web.js';
|
|
24
30
|
import { StatusPageWebStories } from './presentation/status-page.web.js';
|
|
31
|
+
import { TreeExpanderWebStories } from './presentation/tree-expander.web.js';
|
|
32
|
+
import { WindowHandleWebStories } from './presentation/window-handle.web.js';
|
|
25
33
|
import { WindowTitleWebStories } from './presentation/window-title.web.js';
|
|
26
34
|
import { ActionRowWebStories } from './rows/action-row.web.js';
|
|
27
35
|
import { ButtonRowWebStories } from './rows/button-row.web.js';
|
|
@@ -30,21 +38,75 @@ import { EntryRowWebStories } from './rows/entry-row.web.js';
|
|
|
30
38
|
import { ExpanderRowWebStories } from './rows/expander-row.web.js';
|
|
31
39
|
import { PasswordEntryRowWebStories } from './rows/password-entry-row.web.js';
|
|
32
40
|
import { PreferencesGroupWebStories } from './rows/preferences-group.web.js';
|
|
41
|
+
import { PreferencesRowWebStories } from './rows/preferences-row.web.js';
|
|
33
42
|
import { SpinRowWebStories } from './rows/spin-row.web.js';
|
|
34
43
|
import { SwitchRowWebStories } from './rows/switch-row.web.js';
|
|
44
|
+
import { DragIconWebStories } from './drawing/drag-icon.web.js';
|
|
45
|
+
import { DrawingAreaWebStories } from './drawing/drawing-area.web.js';
|
|
46
|
+
import { GLAreaWebStories } from './drawing/gl-area.web.js';
|
|
47
|
+
import { GraphicsOffloadWebStories } from './drawing/graphics-offload.web.js';
|
|
48
|
+
import { CheckButtonWebStories } from './controls/check-button.web.js';
|
|
35
49
|
import { DropDownWebStories } from './controls/drop-down.web.js';
|
|
36
50
|
import { EntryWebStories } from './controls/entry.web.js';
|
|
51
|
+
import { GtkSpinnerWebStories } from './controls/gtk-spinner.web.js';
|
|
52
|
+
import { LevelBarWebStories } from './controls/level-bar.web.js';
|
|
53
|
+
import { PasswordEntryWebStories } from './controls/password-entry.web.js';
|
|
54
|
+
import { ProgressBarWebStories } from './controls/progress-bar.web.js';
|
|
55
|
+
import { ScaleWebStories } from './controls/scale.web.js';
|
|
56
|
+
import { SearchEntryWebStories } from './controls/search-entry.web.js';
|
|
57
|
+
import { SpinButtonWebStories } from './controls/spin-button.web.js';
|
|
58
|
+
import { SwitchWebStories } from './controls/switch.web.js';
|
|
59
|
+
import { ExpanderWebStories } from './layout/expander.web.js';
|
|
60
|
+
import { OverlayWebStories } from './layout/overlay.web.js';
|
|
61
|
+
import { PanedWebStories } from './layout/paned.web.js';
|
|
62
|
+
import { RevealerWebStories } from './layout/revealer.web.js';
|
|
63
|
+
import { ScrollbarWebStories } from './layout/scrollbar.web.js';
|
|
64
|
+
import { ScrolledWindowWebStories } from './layout/scrolled-window.web.js';
|
|
65
|
+
import { SeparatorWebStories } from './layout/separator.web.js';
|
|
66
|
+
import { BreakpointBinWebStories } from './layout/breakpoint-bin.web.js';
|
|
67
|
+
import { LayoutSlotWebStories } from './layout/layout-slot.web.js';
|
|
68
|
+
import { MultiLayoutViewWebStories } from './layout/multi-layout-view.web.js';
|
|
69
|
+
import { EditableLabelWebStories } from './text/editable-label.web.js';
|
|
70
|
+
import { SearchBarWebStories } from './text/search-bar.web.js';
|
|
71
|
+
import { TextViewWebStories } from './text/text-view.web.js';
|
|
72
|
+
import { TextWebStories } from './text/text.web.js';
|
|
73
|
+
import { AspectFrameWebStories } from './layout/aspect-frame.web.js';
|
|
74
|
+
import { CenterBoxWebStories } from './layout/center-box.web.js';
|
|
75
|
+
import { FixedWebStories } from './layout/fixed.web.js';
|
|
76
|
+
import { FrameWebStories } from './layout/frame.web.js';
|
|
77
|
+
import { GridWebStories } from './layout/grid.web.js';
|
|
78
|
+
import { ToggleButtonWebStories } from './buttons/toggle-button.web.js';
|
|
79
|
+
import { ColorDialogButtonWebStories } from './buttons/color-dialog-button.web.js';
|
|
80
|
+
import { FontDialogButtonWebStories } from './buttons/font-dialog-button.web.js';
|
|
81
|
+
import { LinkButtonWebStories } from './buttons/link-button.web.js';
|
|
82
|
+
import { ScaleButtonWebStories } from './buttons/scale-button.web.js';
|
|
37
83
|
import { ButtonContentWebStories } from './buttons/button-content.web.js';
|
|
38
84
|
import { ButtonStylesWebStories } from './buttons/button-styles.web.js';
|
|
39
85
|
import { MenuButtonWebStories } from './buttons/menu-button.web.js';
|
|
40
86
|
import { SplitButtonWebStories } from './buttons/split-button.web.js';
|
|
41
87
|
import { ToggleGroupWebStories } from './buttons/toggle-group.web.js';
|
|
88
|
+
import { BinWebStories } from './layout/bin.web.js';
|
|
89
|
+
import { ClampScrollableWebStories } from './layout/clamp-scrollable.web.js';
|
|
42
90
|
import { ClampWebStories } from './layout/clamp.web.js';
|
|
43
91
|
import { HeaderBarWebStories } from './layout/header-bar.web.js';
|
|
92
|
+
import { PopoverBinWebStories } from './layout/popover-bin.web.js';
|
|
93
|
+
import { PopoverMenuWebStories } from './layout/popover-menu.web.js';
|
|
94
|
+
import { PopoverWebStories } from './layout/popover.web.js';
|
|
44
95
|
import { ToolbarViewWebStories } from './layout/toolbar-view.web.js';
|
|
96
|
+
import { ViewportWebStories } from './layout/viewport.web.js';
|
|
97
|
+
import { ApplicationWindowWebStories } from './layout/application-window.web.js';
|
|
98
|
+
import { WindowWebStories } from './layout/window.web.js';
|
|
45
99
|
import { WrapBoxWebStories } from './layout/wrap-box.web.js';
|
|
46
100
|
import { CarouselWebStories } from './view-switching/carousel.web.js';
|
|
47
101
|
import { InlineViewSwitcherWebStories } from './view-switching/inline-view-switcher.web.js';
|
|
102
|
+
import { NotebookWebStories } from './view-switching/notebook.web.js';
|
|
103
|
+
import { StackSidebarWebStories } from './view-switching/stack-sidebar.web.js';
|
|
104
|
+
import { StackSwitcherWebStories } from './view-switching/stack-switcher.web.js';
|
|
105
|
+
import { StackWebStories } from './view-switching/stack.web.js';
|
|
106
|
+
import { TabBarWebStories } from './view-switching/tab-bar.web.js';
|
|
107
|
+
import { TabButtonWebStories } from './view-switching/tab-button.web.js';
|
|
108
|
+
import { TabOverviewWebStories } from './view-switching/tab-overview.web.js';
|
|
109
|
+
import { ViewSwitcherSidebarWebStories } from './view-switching/view-switcher-sidebar.web.js';
|
|
48
110
|
import { TabViewWebStories } from './view-switching/tab-view.web.js';
|
|
49
111
|
import { ViewSwitcherWebStories } from './view-switching/view-switcher.web.js';
|
|
50
112
|
import { ViewSwitcherBarWebStories } from './view-switching/view-switcher-bar.web.js';
|
|
@@ -52,19 +114,43 @@ import { BottomSheetWebStories } from './navigation/bottom-sheet.web.js';
|
|
|
52
114
|
import { NavigationSplitViewWebStories } from './navigation/navigation-split-view.web.js';
|
|
53
115
|
import { NavigationViewWebStories } from './navigation/navigation-view.web.js';
|
|
54
116
|
import { OverlaySplitViewWebStories } from './navigation/overlay-split-view.web.js';
|
|
117
|
+
import { PopoverMenuBarWebStories } from './navigation/popover-menu-bar.web.js';
|
|
118
|
+
import { ImageWebStories } from './media/image.web.js';
|
|
119
|
+
import { InscriptionWebStories } from './media/inscription.web.js';
|
|
120
|
+
import { MediaControlsWebStories } from './media/media-controls.web.js';
|
|
121
|
+
import { PictureWebStories } from './media/picture.web.js';
|
|
122
|
+
import { VideoWebStories } from './media/video.web.js';
|
|
55
123
|
import { SidebarWebStories } from './navigation/sidebar.web.js';
|
|
56
124
|
import { AboutDialogWebStories } from './feedback/about-dialog.web.js';
|
|
57
125
|
import { AlertDialogWebStories } from './feedback/alert-dialog.web.js';
|
|
126
|
+
import { DialogWebStories } from './feedback/dialog.web.js';
|
|
127
|
+
import { EmojiChooserWebStories } from './feedback/emoji-chooser.web.js';
|
|
128
|
+
import { GtkAboutDialogWebStories } from './feedback/gtk-about-dialog.web.js';
|
|
129
|
+
import { PageSetupUnixDialogWebStories } from './feedback/page-setup-unix-dialog.web.js';
|
|
130
|
+
import { PrintUnixDialogWebStories } from './feedback/print-unix-dialog.web.js';
|
|
58
131
|
import { PreferencesDialogWebStories } from './feedback/preferences-dialog.web.js';
|
|
132
|
+
import { ShortcutsDialogWebStories } from './feedback/shortcuts-dialog.web.js';
|
|
59
133
|
import { ToastWebStories } from './feedback/toast.web.js';
|
|
134
|
+
import { ActionBarWebStories } from './windows/action-bar.web.js';
|
|
135
|
+
import { GtkApplicationWindowWebStories } from './windows/gtk-application-window.web.js';
|
|
136
|
+
import { GtkHeaderBarWebStories } from './windows/gtk-header-bar.web.js';
|
|
137
|
+
import { GtkWindowWebStories } from './windows/gtk-window.web.js';
|
|
138
|
+
import { WindowControlsWebStories } from './windows/window-controls.web.js';
|
|
60
139
|
|
|
61
140
|
export const stories: WebStoryModule[] = [
|
|
62
141
|
OverviewWidgetsWebStories,
|
|
63
142
|
AvatarWebStories,
|
|
64
143
|
BannerWebStories,
|
|
144
|
+
CalendarWebStories,
|
|
145
|
+
ColumnViewWebStories,
|
|
146
|
+
FlowBoxWebStories,
|
|
147
|
+
GridViewWebStories,
|
|
148
|
+
ListBoxWebStories,
|
|
149
|
+
ListViewWebStories,
|
|
65
150
|
ShortcutLabelWebStories,
|
|
66
151
|
SpinnerWebStories,
|
|
67
152
|
StatusPageWebStories,
|
|
153
|
+
TreeExpanderWebStories,
|
|
68
154
|
WindowTitleWebStories,
|
|
69
155
|
ActionRowWebStories,
|
|
70
156
|
ButtonRowWebStories,
|
|
@@ -73,21 +159,75 @@ export const stories: WebStoryModule[] = [
|
|
|
73
159
|
ExpanderRowWebStories,
|
|
74
160
|
PasswordEntryRowWebStories,
|
|
75
161
|
PreferencesGroupWebStories,
|
|
162
|
+
PreferencesRowWebStories,
|
|
76
163
|
SpinRowWebStories,
|
|
77
164
|
SwitchRowWebStories,
|
|
78
165
|
EntryWebStories,
|
|
79
166
|
DropDownWebStories,
|
|
167
|
+
ScaleWebStories,
|
|
168
|
+
SpinButtonWebStories,
|
|
169
|
+
PasswordEntryWebStories,
|
|
170
|
+
SearchEntryWebStories,
|
|
171
|
+
CheckButtonWebStories,
|
|
172
|
+
SwitchWebStories,
|
|
173
|
+
ProgressBarWebStories,
|
|
174
|
+
LevelBarWebStories,
|
|
175
|
+
GtkSpinnerWebStories,
|
|
176
|
+
DragIconWebStories,
|
|
177
|
+
DrawingAreaWebStories,
|
|
178
|
+
GLAreaWebStories,
|
|
179
|
+
GraphicsOffloadWebStories,
|
|
80
180
|
ButtonContentWebStories,
|
|
81
181
|
ButtonStylesWebStories,
|
|
82
182
|
MenuButtonWebStories,
|
|
83
183
|
SplitButtonWebStories,
|
|
184
|
+
ToggleButtonWebStories,
|
|
185
|
+
ColorDialogButtonWebStories,
|
|
186
|
+
FontDialogButtonWebStories,
|
|
187
|
+
LinkButtonWebStories,
|
|
188
|
+
ScaleButtonWebStories,
|
|
84
189
|
ToggleGroupWebStories,
|
|
190
|
+
BinWebStories,
|
|
191
|
+
ClampScrollableWebStories,
|
|
85
192
|
ClampWebStories,
|
|
86
193
|
HeaderBarWebStories,
|
|
194
|
+
ExpanderWebStories,
|
|
195
|
+
OverlayWebStories,
|
|
196
|
+
PanedWebStories,
|
|
197
|
+
PopoverWebStories,
|
|
198
|
+
PopoverMenuWebStories,
|
|
199
|
+
PopoverBinWebStories,
|
|
200
|
+
RevealerWebStories,
|
|
201
|
+
ScrollbarWebStories,
|
|
202
|
+
ScrolledWindowWebStories,
|
|
203
|
+
SeparatorWebStories,
|
|
204
|
+
BreakpointBinWebStories,
|
|
205
|
+
LayoutSlotWebStories,
|
|
206
|
+
MultiLayoutViewWebStories,
|
|
207
|
+
EditableLabelWebStories,
|
|
208
|
+
TextWebStories,
|
|
209
|
+
TextViewWebStories,
|
|
210
|
+
SearchBarWebStories,
|
|
211
|
+
FrameWebStories,
|
|
212
|
+
AspectFrameWebStories,
|
|
213
|
+
CenterBoxWebStories,
|
|
214
|
+
GridWebStories,
|
|
215
|
+
FixedWebStories,
|
|
87
216
|
ToolbarViewWebStories,
|
|
217
|
+
ViewportWebStories,
|
|
218
|
+
ApplicationWindowWebStories,
|
|
219
|
+
WindowWebStories,
|
|
88
220
|
WrapBoxWebStories,
|
|
89
221
|
CarouselWebStories,
|
|
90
222
|
InlineViewSwitcherWebStories,
|
|
223
|
+
StackWebStories,
|
|
224
|
+
StackSwitcherWebStories,
|
|
225
|
+
StackSidebarWebStories,
|
|
226
|
+
NotebookWebStories,
|
|
227
|
+
TabBarWebStories,
|
|
228
|
+
TabButtonWebStories,
|
|
229
|
+
TabOverviewWebStories,
|
|
230
|
+
ViewSwitcherSidebarWebStories,
|
|
91
231
|
TabViewWebStories,
|
|
92
232
|
ViewSwitcherWebStories,
|
|
93
233
|
ViewSwitcherBarWebStories,
|
|
@@ -95,9 +235,27 @@ export const stories: WebStoryModule[] = [
|
|
|
95
235
|
NavigationSplitViewWebStories,
|
|
96
236
|
NavigationViewWebStories,
|
|
97
237
|
OverlaySplitViewWebStories,
|
|
238
|
+
PopoverMenuBarWebStories,
|
|
98
239
|
SidebarWebStories,
|
|
240
|
+
ImageWebStories,
|
|
241
|
+
InscriptionWebStories,
|
|
242
|
+
PictureWebStories,
|
|
243
|
+
VideoWebStories,
|
|
244
|
+
MediaControlsWebStories,
|
|
99
245
|
AboutDialogWebStories,
|
|
100
246
|
AlertDialogWebStories,
|
|
247
|
+
DialogWebStories,
|
|
248
|
+
EmojiChooserWebStories,
|
|
249
|
+
GtkAboutDialogWebStories,
|
|
250
|
+
PageSetupUnixDialogWebStories,
|
|
101
251
|
PreferencesDialogWebStories,
|
|
252
|
+
PrintUnixDialogWebStories,
|
|
253
|
+
ShortcutsDialogWebStories,
|
|
102
254
|
ToastWebStories,
|
|
255
|
+
GtkHeaderBarWebStories,
|
|
256
|
+
WindowControlsWebStories,
|
|
257
|
+
ActionBarWebStories,
|
|
258
|
+
GtkWindowWebStories,
|
|
259
|
+
GtkApplicationWindowWebStories,
|
|
260
|
+
WindowHandleWebStories,
|
|
103
261
|
];
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// Browser port of the Editable Label story. Shares metadata with editable-label.story.ts.
|
|
2
|
+
|
|
3
|
+
import { StoryElement, type StoryArgs, type StoryMeta, type WebStoryModule } from '@gjsify/adwaita-storybook';
|
|
4
|
+
import { editableLabelMeta } from '../../text/editable-label.meta.js';
|
|
5
|
+
|
|
6
|
+
/** The properties the story drives, as `<gtk-editable-label>` spells them. */
|
|
7
|
+
interface EditableLabelControls {
|
|
8
|
+
text: string;
|
|
9
|
+
editable: boolean;
|
|
10
|
+
editing: boolean;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export class EditableLabelWebStory extends StoryElement {
|
|
14
|
+
private _label: (HTMLElement & EditableLabelControls) | null = null;
|
|
15
|
+
|
|
16
|
+
constructor() {
|
|
17
|
+
super(EditableLabelWebStory.getMetadata(), 'Default');
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static getMetadata(): StoryMeta {
|
|
21
|
+
return editableLabelMeta;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
initialize(): void {
|
|
25
|
+
this._label = document.createElement('gtk-editable-label') as HTMLElement & EditableLabelControls;
|
|
26
|
+
this._label.text = this.args.text as string;
|
|
27
|
+
this._apply();
|
|
28
|
+
this.addContent(this._label);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
updateArgs(_args: StoryArgs): void {
|
|
32
|
+
this._apply();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
private _apply(): void {
|
|
36
|
+
if (!this._label) return;
|
|
37
|
+
// The draft lives in the entry, so `text` is written only while nothing is being
|
|
38
|
+
// edited — the order the C keeps them in (gtkeditablelabel.c:237-248).
|
|
39
|
+
if (!this._label.editing) this._label.text = this.args.text as string;
|
|
40
|
+
this._label.editable = this.args.editable as boolean;
|
|
41
|
+
this._label.editing = this.args.editing as boolean;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export const EditableLabelWebStories: WebStoryModule = { stories: [EditableLabelWebStory] };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// Browser port of the Search Bar story. Shares metadata with search-bar.story.ts.
|
|
2
|
+
|
|
3
|
+
import { StoryElement, type StoryArgs, type StoryMeta, type WebStoryModule } from '@gjsify/adwaita-storybook';
|
|
4
|
+
import { searchBarMeta } from '../../text/search-bar.meta.js';
|
|
5
|
+
|
|
6
|
+
/** The properties the story drives, as `<gtk-search-bar>` spells them. */
|
|
7
|
+
interface SearchBarControls {
|
|
8
|
+
searchModeEnabled: boolean;
|
|
9
|
+
showCloseButton: boolean;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export class SearchBarWebStory extends StoryElement {
|
|
13
|
+
private _bar: (HTMLElement & SearchBarControls) | null = null;
|
|
14
|
+
|
|
15
|
+
constructor() {
|
|
16
|
+
super(SearchBarWebStory.getMetadata(), 'Default');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
static getMetadata(): StoryMeta {
|
|
20
|
+
return searchBarMeta;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
initialize(): void {
|
|
24
|
+
this._bar = document.createElement('gtk-search-bar') as HTMLElement & SearchBarControls;
|
|
25
|
+
// Any `GtkEditable` is a legal child (gtksearchbar.c:611-625), and a plain entry is
|
|
26
|
+
// the case `reveal_child_changed_cb` has a branch of its own for (:186-191).
|
|
27
|
+
const field = document.createElement('gtk-entry');
|
|
28
|
+
field.setAttribute('placeholder-text', 'Search');
|
|
29
|
+
this._bar.appendChild(field);
|
|
30
|
+
this._apply();
|
|
31
|
+
this.addContent(this._bar);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
updateArgs(_args: StoryArgs): void {
|
|
35
|
+
this._apply();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
private _apply(): void {
|
|
39
|
+
if (!this._bar) return;
|
|
40
|
+
this._bar.searchModeEnabled = this.args.searchModeEnabled as boolean;
|
|
41
|
+
this._bar.showCloseButton = this.args.showCloseButton as boolean;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export const SearchBarWebStories: WebStoryModule = { stories: [SearchBarWebStory] };
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// Browser port of the Text View story. Shares metadata with text-view.story.ts.
|
|
2
|
+
|
|
3
|
+
import { StoryElement, type StoryArgs, type StoryMeta, type WebStoryModule } from '@gjsify/adwaita-storybook';
|
|
4
|
+
import { textViewMeta } from '../../text/text-view.meta.js';
|
|
5
|
+
|
|
6
|
+
/** The properties the story drives, as `<gtk-text-view>` spells them. */
|
|
7
|
+
interface TextViewControls {
|
|
8
|
+
text: string;
|
|
9
|
+
wrapMode: string;
|
|
10
|
+
justification: string;
|
|
11
|
+
monospace: boolean;
|
|
12
|
+
acceptsTab: boolean;
|
|
13
|
+
cursorVisible: boolean;
|
|
14
|
+
topMargin: number;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export class TextViewWebStory extends StoryElement {
|
|
18
|
+
private _view: (HTMLElement & TextViewControls) | null = null;
|
|
19
|
+
|
|
20
|
+
constructor() {
|
|
21
|
+
super(TextViewWebStory.getMetadata(), 'Default');
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
static getMetadata(): StoryMeta {
|
|
25
|
+
return textViewMeta;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
initialize(): void {
|
|
29
|
+
this._view = document.createElement('gtk-text-view') as HTMLElement & TextViewControls;
|
|
30
|
+
// The text is set BEFORE the element is connected, so it arrives as the attribute the
|
|
31
|
+
// element's light-DOM seed reads — the same door the GTK story's buffer text takes.
|
|
32
|
+
this._view.text = this.args.text as string;
|
|
33
|
+
this._apply();
|
|
34
|
+
this.addContent(this._view);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
updateArgs(_args: StoryArgs): void {
|
|
38
|
+
this._apply();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
private _apply(): void {
|
|
42
|
+
if (!this._view) return;
|
|
43
|
+
this._view.wrapMode = this.args.wrapMode as string;
|
|
44
|
+
this._view.justification = this.args.justification as string;
|
|
45
|
+
this._view.monospace = this.args.monospace as boolean;
|
|
46
|
+
// `accepts-tab` and `cursor-visible` both default TRUE, so the element reads a VALUE
|
|
47
|
+
// and the property is what writes it.
|
|
48
|
+
this._view.acceptsTab = this.args.acceptsTab as boolean;
|
|
49
|
+
this._view.cursorVisible = this.args.cursorVisible as boolean;
|
|
50
|
+
this._view.topMargin = Number(this.args.topMargin ?? 0);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
export const TextViewWebStories: WebStoryModule = { stories: [TextViewWebStory] };
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// Browser port of the Text story. Shares metadata with text.story.ts.
|
|
2
|
+
|
|
3
|
+
import { StoryElement, type StoryArgs, type StoryMeta, type WebStoryModule } from '@gjsify/adwaita-storybook';
|
|
4
|
+
import { textMeta } from '../../text/text.meta.js';
|
|
5
|
+
|
|
6
|
+
export class TextWebStory extends StoryElement {
|
|
7
|
+
private _text: HTMLElement | null = null;
|
|
8
|
+
|
|
9
|
+
constructor() {
|
|
10
|
+
super(TextWebStory.getMetadata(), 'Default');
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
static getMetadata(): StoryMeta {
|
|
14
|
+
return textMeta;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
initialize(): void {
|
|
18
|
+
this._text = document.createElement('gtk-text');
|
|
19
|
+
this._apply();
|
|
20
|
+
this.addContent(this._text);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
updateArgs(_args: StoryArgs): void {
|
|
24
|
+
this._apply();
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
private _apply(): void {
|
|
28
|
+
if (!this._text) return;
|
|
29
|
+
const text = this._text as HTMLElement & {
|
|
30
|
+
text: string;
|
|
31
|
+
placeholderText: string;
|
|
32
|
+
editable: boolean;
|
|
33
|
+
visibility: boolean;
|
|
34
|
+
maxLength: number;
|
|
35
|
+
propagateTextWidth: boolean;
|
|
36
|
+
};
|
|
37
|
+
text.text = this.args.text as string;
|
|
38
|
+
text.placeholderText = this.args.placeholderText as string;
|
|
39
|
+
// `editable` and `visibility` default TRUE in GTK, so the element reads them from a
|
|
40
|
+
// VALUE — written here through the property so the story never has to spell `false`.
|
|
41
|
+
text.editable = this.args.editable as boolean;
|
|
42
|
+
text.visibility = this.args.visibility as boolean;
|
|
43
|
+
text.maxLength = Number(this.args.maxLength ?? 0);
|
|
44
|
+
text.propagateTextWidth = this.args.propagateTextWidth as boolean;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export const TextWebStories: WebStoryModule = { stories: [TextWebStory] };
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// Browser port of the Notebook story. Shares metadata with notebook.story.ts.
|
|
2
|
+
|
|
3
|
+
import { StoryElement, type StoryArgs, type StoryMeta, type WebStoryModule } from '@gjsify/adwaita-storybook';
|
|
4
|
+
// TYPE-ONLY: the pages are declared in markup and driven through attributes, so nothing
|
|
5
|
+
// here needs the element's own API surface — and a hand-written structural type would be a
|
|
6
|
+
// second copy of it that nothing keeps in step. The import erases.
|
|
7
|
+
import type { Gtk } from '@gjsify/adwaita-web';
|
|
8
|
+
import { NOTEBOOK_PAGES, notebookMeta } from '../../view-switching/notebook.meta.js';
|
|
9
|
+
|
|
10
|
+
export class NotebookWebStory extends StoryElement {
|
|
11
|
+
private _notebook: Gtk.Notebook | null = null;
|
|
12
|
+
|
|
13
|
+
constructor() {
|
|
14
|
+
super(NotebookWebStory.getMetadata(), 'Default');
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
static getMetadata(): StoryMeta {
|
|
18
|
+
return notebookMeta;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
initialize(): void {
|
|
22
|
+
const notebook = document.createElement('gtk-notebook') as Gtk.Notebook;
|
|
23
|
+
notebook.style.cssText = 'width:480px;height:320px;';
|
|
24
|
+
|
|
25
|
+
// A GtkNotebookPage is a GObject, not a widget: its properties are ATTRIBUTES on
|
|
26
|
+
// the page element. The third page carries no tab-label on purpose — that is the
|
|
27
|
+
// page the element labels "Page 3" from `gtk_notebook_update_labels`
|
|
28
|
+
// (gtknotebook.c:4353-4373).
|
|
29
|
+
for (const page of NOTEBOOK_PAGES) {
|
|
30
|
+
const child = document.createElement('div');
|
|
31
|
+
if (page.label) child.setAttribute('tab-label', page.label);
|
|
32
|
+
child.setAttribute('menu-label', page.label || page.name);
|
|
33
|
+
child.style.cssText =
|
|
34
|
+
'display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;';
|
|
35
|
+
const heading = document.createElement('div');
|
|
36
|
+
heading.setAttribute('data-gtk-notebook-story', 'heading');
|
|
37
|
+
heading.textContent = page.label || page.name;
|
|
38
|
+
const body = document.createElement('div');
|
|
39
|
+
body.setAttribute('data-gtk-notebook-story', 'body');
|
|
40
|
+
body.textContent = page.body;
|
|
41
|
+
child.append(heading, body);
|
|
42
|
+
notebook.appendChild(child);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
this.addContent(notebook);
|
|
46
|
+
this._notebook = notebook;
|
|
47
|
+
this._apply();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
updateArgs(_args: StoryArgs): void {
|
|
51
|
+
this._apply();
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
private _apply(): void {
|
|
55
|
+
if (!this._notebook) return;
|
|
56
|
+
// The ORDER is the element's own: `tab-pos` decides the edge the layout is read at,
|
|
57
|
+
// so it goes first, and `show-border` — the `.frame` class in C — last.
|
|
58
|
+
this._notebook.setAttribute('tab-pos', this.args.tabPos as string);
|
|
59
|
+
// `show-tabs` and `show-border` both default TRUE (gtknotebook.c:1124, :1134), so
|
|
60
|
+
// the false case has to be spelled: an absent attribute already reads as true.
|
|
61
|
+
this._notebook.setAttribute('show-tabs', (this.args.showTabs as boolean) ? '' : 'false');
|
|
62
|
+
this._notebook.setAttribute('show-border', (this.args.showBorder as boolean) ? '' : 'false');
|
|
63
|
+
this._notebook.toggleAttribute('enable-popup', this.args.enablePopup as boolean);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
export const NotebookWebStories: WebStoryModule = { stories: [NotebookWebStory] };
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// Browser port of the Stack Sidebar story. Shares metadata with stack-sidebar.story.ts.
|
|
2
|
+
|
|
3
|
+
import { StoryElement, type StoryArgs, type StoryMeta, type WebStoryModule } from '@gjsify/adwaita-storybook';
|
|
4
|
+
// TYPE-ONLY: the sidebar is bound by id attribute and the pages are declared in
|
|
5
|
+
// markup, so nothing here needs the element's API — and a hand-written structural type
|
|
6
|
+
// would be a second copy of it that nothing keeps in step. The import erases.
|
|
7
|
+
import type { Gtk } from '@gjsify/adwaita-web';
|
|
8
|
+
import { STACK_SIDEBAR_PAGES, stackSidebarMeta } from '../../view-switching/stack-sidebar.meta.js';
|
|
9
|
+
|
|
10
|
+
export class StackSidebarWebStory extends StoryElement {
|
|
11
|
+
private _stack: Gtk.Stack | null = null;
|
|
12
|
+
|
|
13
|
+
constructor() {
|
|
14
|
+
super(StackSidebarWebStory.getMetadata(), 'Default');
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
static getMetadata(): StoryMeta {
|
|
18
|
+
return stackSidebarMeta;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
initialize(): void {
|
|
22
|
+
const stack = document.createElement('gtk-stack') as Gtk.Stack;
|
|
23
|
+
stack.id = 'stack-sidebar-demo';
|
|
24
|
+
stack.style.flex = '1';
|
|
25
|
+
|
|
26
|
+
// A GtkStackPage is a GObject, not a widget: its properties are ATTRIBUTES on the
|
|
27
|
+
// page element. The last page here has an icon and NO title on purpose — that is
|
|
28
|
+
// the page a sidebar row cannot represent (gtkstacksidebar.c:186).
|
|
29
|
+
for (const page of STACK_SIDEBAR_PAGES) {
|
|
30
|
+
const child = document.createElement('div');
|
|
31
|
+
child.setAttribute('name', page.name);
|
|
32
|
+
if (page.title) child.setAttribute('title', page.title);
|
|
33
|
+
if (page.icon) child.setAttribute('icon-name', page.icon);
|
|
34
|
+
if (page.attn) child.setAttribute('needs-attention', '');
|
|
35
|
+
child.style.cssText =
|
|
36
|
+
'display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;';
|
|
37
|
+
const body = document.createElement('div');
|
|
38
|
+
body.textContent = page.body;
|
|
39
|
+
child.appendChild(body);
|
|
40
|
+
stack.appendChild(child);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const sidebar = document.createElement('gtk-stack-sidebar') as Gtk.StackSidebar;
|
|
44
|
+
// The `stack` property takes a Gtk.Widget, which no attribute can carry, so it is
|
|
45
|
+
// spelled as an id reference — the same convention `<adw-view-switcher-bar>` uses.
|
|
46
|
+
sidebar.setAttribute('stack', stack.id);
|
|
47
|
+
sidebar.style.width = '180px';
|
|
48
|
+
|
|
49
|
+
const root = document.createElement('div');
|
|
50
|
+
root.style.cssText = 'display:flex;flex-direction:row;gap:12px;width:480px;height:320px;';
|
|
51
|
+
root.append(sidebar, stack);
|
|
52
|
+
this.addContent(root);
|
|
53
|
+
|
|
54
|
+
this._stack = stack;
|
|
55
|
+
this._apply();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
updateArgs(_args: StoryArgs): void {
|
|
59
|
+
this._apply();
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
private _apply(): void {
|
|
63
|
+
if (!this._stack) return;
|
|
64
|
+
this._stack.setAttribute('transition-type', this.args.transitionType as string);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export const StackSidebarWebStories: WebStoryModule = { stories: [StackSidebarWebStory] };
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// Browser port of the Stack Switcher story. Shares metadata with stack-switcher.story.ts.
|
|
2
|
+
|
|
3
|
+
import { StoryElement, type StoryArgs, type StoryMeta, type WebStoryModule } from '@gjsify/adwaita-storybook';
|
|
4
|
+
// TYPE-ONLY: the switcher is bound by id attribute and the pages are declared in
|
|
5
|
+
// markup, so nothing here needs the element's API — and a hand-written structural type
|
|
6
|
+
// would be a second copy of it that nothing keeps in step. The import erases.
|
|
7
|
+
import type { Gtk } from '@gjsify/adwaita-web';
|
|
8
|
+
import { STACK_SWITCHER_PAGES, stackSwitcherMeta } from '../../view-switching/stack-switcher.meta.js';
|
|
9
|
+
|
|
10
|
+
export class StackSwitcherWebStory extends StoryElement {
|
|
11
|
+
private _switcher: Gtk.StackSwitcher | null = null;
|
|
12
|
+
|
|
13
|
+
constructor() {
|
|
14
|
+
super(StackSwitcherWebStory.getMetadata(), 'Default');
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
static getMetadata(): StoryMeta {
|
|
18
|
+
return stackSwitcherMeta;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
initialize(): void {
|
|
22
|
+
const stack = document.createElement('gtk-stack') as Gtk.Stack;
|
|
23
|
+
stack.id = 'stack-switcher-demo';
|
|
24
|
+
stack.style.flex = '1';
|
|
25
|
+
|
|
26
|
+
// A GtkStackPage is a GObject, not a widget: its properties are ATTRIBUTES on the
|
|
27
|
+
// page element. An absent title stays ABSENT, because `rebuild_child` builds no
|
|
28
|
+
// label for a page with neither title nor icon (gtkstackswitcher.c:158-176).
|
|
29
|
+
for (const page of STACK_SWITCHER_PAGES) {
|
|
30
|
+
const child = document.createElement('div');
|
|
31
|
+
child.setAttribute('name', page.name);
|
|
32
|
+
if (page.title) child.setAttribute('title', page.title);
|
|
33
|
+
if (page.icon) child.setAttribute('icon-name', page.icon);
|
|
34
|
+
child.setAttribute('use-underline', '');
|
|
35
|
+
if (page.attn) child.setAttribute('needs-attention', '');
|
|
36
|
+
child.style.cssText =
|
|
37
|
+
'display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;';
|
|
38
|
+
const body = document.createElement('div');
|
|
39
|
+
body.textContent = page.body;
|
|
40
|
+
child.appendChild(body);
|
|
41
|
+
stack.appendChild(child);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const switcher = document.createElement('gtk-stack-switcher') as Gtk.StackSwitcher;
|
|
45
|
+
// The `stack` property takes a Gtk.Widget, which no attribute can carry, so it is
|
|
46
|
+
// spelled as an id reference — the same convention `<adw-view-switcher-bar>` uses.
|
|
47
|
+
switcher.setAttribute('stack', stack.id);
|
|
48
|
+
|
|
49
|
+
const root = document.createElement('div');
|
|
50
|
+
root.style.cssText = 'display:flex;flex-direction:column;gap:12px;width:480px;height:320px;';
|
|
51
|
+
root.append(switcher, stack);
|
|
52
|
+
this.addContent(root);
|
|
53
|
+
|
|
54
|
+
this._switcher = switcher;
|
|
55
|
+
this._apply();
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
updateArgs(_args: StoryArgs): void {
|
|
59
|
+
this._apply();
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
private _apply(): void {
|
|
63
|
+
if (!this._switcher) return;
|
|
64
|
+
this._switcher.setAttribute('orientation', this.args.orientation as string);
|
|
65
|
+
const stack = document.getElementById('stack-switcher-demo');
|
|
66
|
+
if (stack) stack.setAttribute('transition-type', this.args.transitionType as string);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export const StackSwitcherWebStories: WebStoryModule = { stories: [StackSwitcherWebStory] };
|