@gjsify/adwaita-web 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/adwaita-web.css +8070 -3037
- package/dist/adwaita-web.css.map +1 -1
- package/lib/types/adw-application-window.spec.d.ts +1 -0
- package/lib/types/adw-bin.spec.d.ts +1 -0
- package/lib/types/adw-breakpoint-bin.spec.d.ts +1 -0
- package/lib/types/adw-clamp-scrollable.spec.d.ts +1 -0
- package/lib/types/adw-multi-layout-view.spec.d.ts +1 -0
- package/lib/types/adw-preferences-row.spec.d.ts +1 -0
- package/lib/types/adw-shortcuts.spec.d.ts +1 -0
- package/lib/types/adw-tab-bar.spec.d.ts +1 -0
- package/lib/types/adw-tab-button.spec.d.ts +1 -0
- package/lib/types/adw-tab-overview.spec.d.ts +1 -0
- package/lib/types/adw-view-switcher-sidebar.spec.d.ts +1 -0
- package/lib/types/adw-window.spec.d.ts +1 -0
- package/lib/types/breakpoints.d.ts +14 -3
- package/lib/types/construct-vectors.spec.d.ts +1 -0
- package/lib/types/elements/adw-application-window.d.ts +27 -0
- package/lib/types/elements/adw-bin.d.ts +17 -0
- package/lib/types/elements/adw-breakpoint-bin.d.ts +67 -0
- package/lib/types/elements/adw-clamp-scrollable.d.ts +38 -0
- package/lib/types/elements/adw-dialog.d.ts +10 -0
- package/lib/types/elements/adw-layout-slot.d.ts +19 -0
- package/lib/types/elements/adw-multi-layout-view.d.ts +101 -0
- package/lib/types/elements/adw-preferences-row.d.ts +31 -0
- package/lib/types/elements/adw-shortcuts-dialog.d.ts +13 -0
- package/lib/types/elements/adw-shortcuts-item.d.ts +36 -0
- package/lib/types/elements/adw-shortcuts-section.d.ts +14 -0
- package/lib/types/elements/adw-sidebar.d.ts +5 -0
- package/lib/types/elements/adw-switch-row.d.ts +3 -0
- package/lib/types/elements/adw-tab-bar.d.ts +108 -0
- package/lib/types/elements/adw-tab-button.d.ts +32 -0
- package/lib/types/elements/adw-tab-overview.d.ts +199 -0
- package/lib/types/elements/adw-tab-view.d.ts +19 -23
- package/lib/types/elements/adw-view-switcher-sidebar.d.ts +84 -0
- package/lib/types/elements/adw-window.d.ts +40 -0
- package/lib/types/elements/gtk-about-dialog.d.ts +146 -0
- package/lib/types/elements/gtk-application-window.d.ts +34 -0
- package/lib/types/elements/gtk-aspect-frame.d.ts +27 -0
- package/lib/types/elements/gtk-button.d.ts +9 -0
- package/lib/types/elements/gtk-calendar.d.ts +159 -0
- package/lib/types/elements/gtk-center-box.d.ts +39 -0
- package/lib/types/elements/gtk-color-dialog-button.d.ts +69 -0
- package/lib/types/elements/gtk-column-view.d.ts +50 -0
- package/lib/types/elements/gtk-drag-icon.d.ts +78 -0
- package/lib/types/elements/gtk-drawing-area.d.ts +95 -0
- package/lib/types/elements/gtk-editable-label.d.ts +33 -0
- package/lib/types/elements/gtk-emoji-chooser.d.ts +84 -0
- package/lib/types/elements/gtk-entry.d.ts +20 -1
- package/lib/types/elements/gtk-expander.d.ts +49 -0
- package/lib/types/elements/gtk-fixed.d.ts +13 -0
- package/lib/types/elements/gtk-flow-box-child.d.ts +14 -0
- package/lib/types/elements/gtk-flow-box.d.ts +87 -0
- package/lib/types/elements/gtk-font-dialog-button.d.ts +83 -0
- package/lib/types/elements/gtk-frame.d.ts +24 -0
- package/lib/types/elements/gtk-gl-area.d.ts +136 -0
- package/lib/types/elements/gtk-graphics-offload.d.ts +24 -0
- package/lib/types/elements/gtk-grid-view.d.ts +39 -0
- package/lib/types/elements/gtk-grid.d.ts +27 -0
- package/lib/types/elements/gtk-header-bar.d.ts +60 -0
- package/lib/types/elements/gtk-inscription.d.ts +64 -0
- package/lib/types/elements/gtk-label.d.ts +3 -0
- package/lib/types/elements/gtk-level-bar.d.ts +59 -0
- package/lib/types/elements/gtk-link-button.d.ts +29 -0
- package/lib/types/elements/gtk-list-box-row.d.ts +54 -0
- package/lib/types/elements/gtk-list-box.d.ts +100 -0
- package/lib/types/elements/gtk-list-view.d.ts +73 -0
- package/lib/types/elements/gtk-media-controls.d.ts +142 -0
- package/lib/types/elements/gtk-notebook.d.ts +148 -0
- package/lib/types/elements/gtk-overlay.d.ts +22 -0
- package/lib/types/elements/gtk-page-setup-unix-dialog.d.ts +87 -0
- package/lib/types/elements/gtk-paned.d.ts +121 -0
- package/lib/types/elements/gtk-password-entry.d.ts +27 -0
- package/lib/types/elements/gtk-picture.d.ts +66 -0
- package/lib/types/elements/gtk-popover-bin.d.ts +82 -0
- package/lib/types/elements/gtk-popover-menu-bar.d.ts +66 -0
- package/lib/types/elements/gtk-popover-menu.d.ts +83 -0
- package/lib/types/elements/gtk-popover.d.ts +28 -3
- package/lib/types/elements/gtk-print-unix-dialog.d.ts +167 -0
- package/lib/types/elements/gtk-revealer.d.ts +55 -0
- package/lib/types/elements/gtk-scale-button.d.ts +59 -0
- package/lib/types/elements/gtk-scale.d.ts +98 -0
- package/lib/types/elements/gtk-scrollbar.d.ts +124 -0
- package/lib/types/elements/gtk-scrolled-window.d.ts +121 -0
- package/lib/types/elements/gtk-search-bar.d.ts +39 -0
- package/lib/types/elements/gtk-search-entry.d.ts +27 -0
- package/lib/types/elements/gtk-separator.d.ts +10 -0
- package/lib/types/elements/gtk-spin-button.d.ts +94 -0
- package/lib/types/elements/gtk-spinner.d.ts +14 -0
- package/lib/types/elements/gtk-stack-sidebar.d.ts +43 -0
- package/lib/types/elements/gtk-stack-switcher.d.ts +58 -0
- package/lib/types/elements/gtk-stack.d.ts +154 -0
- package/lib/types/elements/gtk-switch.d.ts +4 -1
- package/lib/types/elements/gtk-text-view.d.ts +62 -0
- package/lib/types/elements/gtk-text.d.ts +45 -0
- package/lib/types/elements/gtk-toggle-button.d.ts +45 -0
- package/lib/types/elements/gtk-tree-expander.d.ts +38 -0
- package/lib/types/elements/gtk-video.d.ts +97 -0
- package/lib/types/elements/gtk-viewport.d.ts +84 -0
- package/lib/types/elements/gtk-window-controls.d.ts +80 -0
- package/lib/types/elements/gtk-window-handle.d.ts +39 -0
- package/lib/types/elements/gtk-window.d.ts +97 -0
- package/lib/types/elements/justification.d.ts +2 -0
- package/lib/types/elements/popover-menu.d.ts +18 -0
- package/lib/types/elements/roving-focus.d.ts +29 -1
- package/lib/types/emoji-data.d.ts +38 -0
- package/lib/types/font-description.d.ts +96 -0
- package/lib/types/gtk-about-dialog.spec.d.ts +1 -0
- package/lib/types/gtk-action-bar.spec.d.ts +1 -0
- package/lib/types/gtk-application-window.spec.d.ts +1 -0
- package/lib/types/gtk-aspect-frame.spec.d.ts +1 -0
- package/lib/types/gtk-calendar.spec.d.ts +1 -0
- package/lib/types/gtk-center-box.spec.d.ts +1 -0
- package/lib/types/gtk-color-dialog-button.spec.d.ts +1 -0
- package/lib/types/gtk-column-view.spec.d.ts +1 -0
- package/lib/types/gtk-drag-icon.spec.d.ts +1 -0
- package/lib/types/gtk-drawing-area.spec.d.ts +1 -0
- package/lib/types/gtk-editable-label.spec.d.ts +1 -0
- package/lib/types/gtk-emoji-chooser.spec.d.ts +1 -0
- package/lib/types/gtk-expander.spec.d.ts +1 -0
- package/lib/types/gtk-fixed.spec.d.ts +1 -0
- package/lib/types/gtk-flow-box.spec.d.ts +1 -0
- package/lib/types/gtk-font-dialog-button.spec.d.ts +1 -0
- package/lib/types/gtk-frame.spec.d.ts +1 -0
- package/lib/types/gtk-gl-area.spec.d.ts +1 -0
- package/lib/types/gtk-graphics-offload.spec.d.ts +1 -0
- package/lib/types/gtk-grid-view.spec.d.ts +1 -0
- package/lib/types/gtk-grid.spec.d.ts +1 -0
- package/lib/types/gtk-header-bar.spec.d.ts +1 -0
- package/lib/types/gtk-inscription.spec.d.ts +1 -0
- package/lib/types/gtk-level-bar.spec.d.ts +1 -0
- package/lib/types/gtk-link-button.spec.d.ts +1 -0
- package/lib/types/gtk-list-box.spec.d.ts +1 -0
- package/lib/types/gtk-list-view.spec.d.ts +1 -0
- package/lib/types/gtk-media-controls.spec.d.ts +1 -0
- package/lib/types/gtk-notebook.spec.d.ts +1 -0
- package/lib/types/gtk-overlay.spec.d.ts +1 -0
- package/lib/types/gtk-paned.spec.d.ts +1 -0
- package/lib/types/gtk-password-entry.spec.d.ts +1 -0
- package/lib/types/gtk-picture.spec.d.ts +1 -0
- package/lib/types/gtk-popover-bin.spec.d.ts +1 -0
- package/lib/types/gtk-popover-menu-bar.spec.d.ts +1 -0
- package/lib/types/gtk-popover-menu.spec.d.ts +1 -0
- package/lib/types/gtk-popover-role.spec.d.ts +1 -0
- package/lib/types/gtk-popover.spec.d.ts +1 -0
- package/lib/types/gtk-print-dialogs.spec.d.ts +1 -0
- package/lib/types/gtk-revealer.spec.d.ts +1 -0
- package/lib/types/gtk-scale-button.spec.d.ts +1 -0
- package/lib/types/gtk-scale.spec.d.ts +1 -0
- package/lib/types/gtk-scrollbar.spec.d.ts +1 -0
- package/lib/types/gtk-scrolled-window.spec.d.ts +1 -0
- package/lib/types/gtk-search-bar.spec.d.ts +1 -0
- package/lib/types/gtk-search-entry.spec.d.ts +1 -0
- package/lib/types/gtk-separator.spec.d.ts +1 -0
- package/lib/types/gtk-spin-button.spec.d.ts +1 -0
- package/lib/types/gtk-spinner.spec.d.ts +1 -0
- package/lib/types/gtk-stack-sidebar.spec.d.ts +1 -0
- package/lib/types/gtk-stack-switcher.spec.d.ts +1 -0
- package/lib/types/gtk-stack.spec.d.ts +1 -0
- package/lib/types/gtk-text-view.spec.d.ts +1 -0
- package/lib/types/gtk-text.spec.d.ts +1 -0
- package/lib/types/gtk-toggle-button.spec.d.ts +1 -0
- package/lib/types/gtk-tree-expander.spec.d.ts +1 -0
- package/lib/types/gtk-video.spec.d.ts +1 -0
- package/lib/types/gtk-viewport.spec.d.ts +1 -0
- package/lib/types/gtk-window-controls.spec.d.ts +1 -0
- package/lib/types/gtk-window-handle.spec.d.ts +1 -0
- package/lib/types/gtk-window.spec.d.ts +1 -0
- package/lib/types/index.d.ts +4 -1
- package/lib/types/list-view-dom.d.ts +44 -0
- package/lib/types/namespace/adw.d.ts +12 -0
- package/lib/types/namespace/gtk.d.ts +61 -0
- package/lib/types/page-setup.d.ts +100 -0
- package/lib/types/scroll-shading.d.ts +15 -1
- package/lib/types/shared-tree-builder.d.ts +30 -2
- package/lib/types/signals.d.ts +4 -0
- package/lib/types/styles.generated.d.ts +1 -1
- package/lib/types/tab-chip.d.ts +73 -0
- package/lib/types/template-classes.d.ts +11 -0
- package/package.json +12 -8
- package/scss/_action_row.scss +2 -2
- package/scss/_application_window.scss +26 -0
- package/scss/_aspect_frame.scss +25 -0
- package/scss/_bin.scss +26 -0
- package/scss/_button.scss +45 -0
- package/scss/_calendar.scss +176 -0
- package/scss/_center_box.scss +25 -0
- package/scss/_checks.scss +6 -1
- package/scss/_clamp_scrollable.scss +28 -0
- package/scss/_color_button.scss +67 -0
- package/scss/_column_view.scss +126 -0
- package/scss/_drag_icon.scss +55 -0
- package/scss/_drawing.scss +85 -0
- package/scss/_emoji_chooser.scss +213 -0
- package/scss/_entry.scss +13 -5
- package/scss/_entry_row.scss +1 -1
- package/scss/_expander.scss +113 -0
- package/scss/_fixed.scss +29 -0
- package/scss/_flow_box.scss +94 -0
- package/scss/_font_button.scss +63 -0
- package/scss/_frame.scss +41 -0
- package/scss/_grid.scss +19 -0
- package/scss/_grid_view.scss +46 -0
- package/scss/_gtk_about_dialog.scss +186 -0
- package/scss/_headerbar.scss +132 -0
- package/scss/_icons.generated.scss +186 -0
- package/scss/_inscription.scss +125 -0
- package/scss/_level_bar.scss +190 -0
- package/scss/_link.scss +82 -0
- package/scss/_list_box.scss +88 -0
- package/scss/_list_view.scss +96 -0
- package/scss/_media_controls.scss +139 -0
- package/scss/_overlay.scss +68 -0
- package/scss/_paned.scss +130 -0
- package/scss/_password_entry.scss +83 -0
- package/scss/_picture.scss +80 -0
- package/scss/_popover_bin.scss +53 -0
- package/scss/_popover_menu_bar.scss +104 -0
- package/scss/_preferences_row.scss +51 -0
- package/scss/_print_dialogs.scss +328 -0
- package/scss/_reset.scss +21 -19
- package/scss/_revealer.scss +37 -0
- package/scss/_row.scss +20 -5
- package/scss/_scale.scss +298 -0
- package/scss/_scale_button.scss +167 -0
- package/scss/_scrollbar.scss +230 -0
- package/scss/_scrolled_window.scss +131 -0
- package/scss/_search_bar.scss +118 -0
- package/scss/_search_entry.scss +86 -0
- package/scss/_separator.scss +44 -0
- package/scss/_shortcuts_dialog.scss +100 -0
- package/scss/_spin_button.scss +172 -0
- package/scss/_spin_row.scss +56 -8
- package/scss/_spinner.scss +85 -4
- package/scss/_stack.scss +729 -0
- package/scss/_switch.scss +13 -5
- package/scss/_switch_row.scss +10 -0
- package/scss/_tab_bar.scss +317 -0
- package/scss/_tab_button.scss +98 -0
- package/scss/_tab_overview.scss +483 -0
- package/scss/_text.scss +182 -0
- package/scss/_theme.scss +1 -1
- package/scss/_tree_expander.scss +62 -0
- package/scss/_variables.scss +43 -21
- package/scss/_video.scss +146 -0
- package/scss/_view_switcher_sidebar.scss +112 -0
- package/scss/_viewport.scss +50 -0
- package/scss/_window.scss +118 -1
- package/scss/_window_handle.scss +20 -0
- package/scss/adwaita-skin.scss +109 -0
- package/src/adw-action-rows.spec.ts +76 -0
- package/src/adw-application-window.spec.ts +118 -0
- package/src/adw-bin.spec.ts +75 -0
- package/src/adw-breakpoint-bin.spec.ts +324 -0
- package/src/adw-clamp-scrollable.spec.ts +189 -0
- package/src/adw-multi-layout-view.spec.ts +243 -0
- package/src/adw-preferences-row.spec.ts +164 -0
- package/src/adw-row-state.spec.ts +142 -0
- package/src/adw-shortcuts.spec.ts +155 -0
- package/src/adw-tab-bar.spec.ts +287 -0
- package/src/adw-tab-button.spec.ts +101 -0
- package/src/adw-tab-overview.spec.ts +443 -0
- package/src/adw-view-switcher-sidebar.spec.ts +281 -0
- package/src/adw-window.spec.ts +129 -0
- package/src/breakpoints.ts +25 -8
- package/src/capabilities.d.mts +3 -0
- package/src/capabilities.mjs +18 -0
- package/src/connect-lifecycle.spec.ts +12 -0
- package/src/construct-vectors.spec.ts +175 -0
- package/src/elements/adw-application-window.ts +154 -0
- package/src/elements/adw-bin.ts +101 -0
- package/src/elements/adw-breakpoint-bin.ts +287 -0
- package/src/elements/adw-clamp-scrollable.ts +207 -0
- package/src/elements/adw-dialog.ts +19 -0
- package/src/elements/adw-layout-slot.ts +95 -0
- package/src/elements/adw-multi-layout-view.ts +326 -0
- package/src/elements/adw-preferences-row.ts +150 -0
- package/src/elements/adw-shortcuts-dialog.ts +52 -0
- package/src/elements/adw-shortcuts-item.ts +171 -0
- package/src/elements/adw-shortcuts-section.ts +86 -0
- package/src/elements/adw-sidebar.ts +42 -3
- package/src/elements/adw-switch-row.ts +28 -1
- package/src/elements/adw-tab-bar.ts +529 -0
- package/src/elements/adw-tab-button.ts +194 -0
- package/src/elements/adw-tab-overview.ts +1011 -0
- package/src/elements/adw-tab-view.ts +66 -145
- package/src/elements/adw-toggle-group.ts +20 -5
- package/src/elements/adw-view-stack.ts +18 -0
- package/src/elements/adw-view-switcher-sidebar.ts +332 -0
- package/src/elements/adw-window.ts +185 -11
- package/src/elements/checks.ts +35 -8
- package/src/elements/gtk-about-dialog.ts +811 -0
- package/src/elements/gtk-application-window.ts +108 -0
- package/src/elements/gtk-aspect-frame.ts +160 -0
- package/src/elements/gtk-button.ts +12 -0
- package/src/elements/gtk-calendar.ts +757 -0
- package/src/elements/gtk-center-box.ts +184 -0
- package/src/elements/gtk-color-dialog-button.ts +278 -0
- package/src/elements/gtk-column-view.ts +320 -0
- package/src/elements/gtk-drag-icon.ts +257 -0
- package/src/elements/gtk-drawing-area.ts +303 -0
- package/src/elements/gtk-editable-label.ts +204 -0
- package/src/elements/gtk-emoji-chooser.ts +542 -0
- package/src/elements/gtk-entry.ts +39 -5
- package/src/elements/gtk-expander.ts +301 -0
- package/src/elements/gtk-fixed.ts +99 -0
- package/src/elements/gtk-flow-box-child.ts +68 -0
- package/src/elements/gtk-flow-box.ts +480 -0
- package/src/elements/gtk-font-dialog-button.ts +432 -0
- package/src/elements/gtk-frame.ts +174 -0
- package/src/elements/gtk-gl-area.ts +476 -0
- package/src/elements/gtk-graphics-offload.ts +130 -0
- package/src/elements/gtk-grid-view.ts +168 -0
- package/src/elements/gtk-grid.ts +127 -0
- package/src/elements/gtk-header-bar.ts +273 -0
- package/src/elements/gtk-inscription.ts +387 -0
- package/src/elements/gtk-label.ts +19 -11
- package/src/elements/gtk-level-bar.ts +323 -0
- package/src/elements/gtk-link-button.ts +138 -0
- package/src/elements/gtk-list-box-row.ts +195 -0
- package/src/elements/gtk-list-box.ts +413 -0
- package/src/elements/gtk-list-view.ts +370 -0
- package/src/elements/gtk-media-controls.ts +509 -0
- package/src/elements/gtk-notebook.ts +664 -0
- package/src/elements/gtk-overlay.ts +149 -0
- package/src/elements/gtk-page-setup-unix-dialog.ts +420 -0
- package/src/elements/gtk-paned.ts +597 -0
- package/src/elements/gtk-password-entry.ts +170 -0
- package/src/elements/gtk-picture.ts +254 -0
- package/src/elements/gtk-popover-bin.ts +332 -0
- package/src/elements/gtk-popover-menu-bar.ts +355 -0
- package/src/elements/gtk-popover-menu.ts +339 -0
- package/src/elements/gtk-popover.ts +92 -10
- package/src/elements/gtk-print-unix-dialog.ts +989 -0
- package/src/elements/gtk-progress-bar.ts +24 -11
- package/src/elements/gtk-revealer.ts +406 -0
- package/src/elements/gtk-scale-button.ts +358 -0
- package/src/elements/gtk-scale.ts +492 -0
- package/src/elements/gtk-scrollbar.ts +528 -0
- package/src/elements/gtk-scrolled-window.ts +642 -0
- package/src/elements/gtk-search-bar.ts +200 -0
- package/src/elements/gtk-search-entry.ts +172 -0
- package/src/elements/gtk-separator.ts +52 -0
- package/src/elements/gtk-spin-button.ts +475 -0
- package/src/elements/gtk-spinner.ts +126 -0
- package/src/elements/gtk-stack-sidebar.ts +212 -0
- package/src/elements/gtk-stack-switcher.ts +279 -0
- package/src/elements/gtk-stack.ts +748 -0
- package/src/elements/gtk-switch.ts +52 -19
- package/src/elements/gtk-text-view.ts +290 -0
- package/src/elements/gtk-text.ts +219 -0
- package/src/elements/gtk-toggle-button.ts +239 -0
- package/src/elements/gtk-tree-expander.ts +243 -0
- package/src/elements/gtk-video.ts +423 -0
- package/src/elements/gtk-viewport.ts +277 -0
- package/src/elements/gtk-window-controls.ts +341 -0
- package/src/elements/gtk-window-handle.ts +221 -0
- package/src/elements/gtk-window.ts +366 -0
- package/src/elements/justification.ts +24 -0
- package/src/elements/popover-menu.ts +24 -0
- package/src/elements/roving-focus.ts +53 -21
- package/src/emoji-data.ts +577 -0
- package/src/entry-rows.spec.ts +31 -0
- package/src/font-description.ts +238 -0
- package/src/gtk-about-dialog.spec.ts +250 -0
- package/src/gtk-action-bar.spec.ts +89 -0
- package/src/gtk-application-window.spec.ts +107 -0
- package/src/gtk-aspect-frame.spec.ts +114 -0
- package/src/gtk-calendar.spec.ts +589 -0
- package/src/gtk-center-box.spec.ts +125 -0
- package/src/gtk-color-dialog-button.spec.ts +141 -0
- package/src/gtk-column-view.spec.ts +154 -0
- package/src/gtk-drag-icon.spec.ts +190 -0
- package/src/gtk-drawing-area.spec.ts +211 -0
- package/src/gtk-editable-label.spec.ts +190 -0
- package/src/gtk-emoji-chooser.spec.ts +173 -0
- package/src/gtk-entry.spec.ts +23 -0
- package/src/gtk-expander.spec.ts +170 -0
- package/src/gtk-fixed.spec.ts +97 -0
- package/src/gtk-flow-box.spec.ts +289 -0
- package/src/gtk-font-dialog-button.spec.ts +166 -0
- package/src/gtk-frame.spec.ts +119 -0
- package/src/gtk-gl-area.spec.ts +361 -0
- package/src/gtk-graphics-offload.spec.ts +119 -0
- package/src/gtk-grid-view.spec.ts +106 -0
- package/src/gtk-grid.spec.ts +122 -0
- package/src/gtk-header-bar.spec.ts +202 -0
- package/src/gtk-inscription.spec.ts +235 -0
- package/src/gtk-level-bar.spec.ts +199 -0
- package/src/gtk-link-button.spec.ts +117 -0
- package/src/gtk-list-box.spec.ts +422 -0
- package/src/gtk-list-view.spec.ts +203 -0
- package/src/gtk-media-controls.spec.ts +295 -0
- package/src/gtk-notebook.spec.ts +546 -0
- package/src/gtk-overlay.spec.ts +141 -0
- package/src/gtk-paned.spec.ts +267 -0
- package/src/gtk-password-entry.spec.ts +150 -0
- package/src/gtk-picture.spec.ts +172 -0
- package/src/gtk-popover-bin.spec.ts +229 -0
- package/src/gtk-popover-menu-bar.spec.ts +296 -0
- package/src/gtk-popover-menu.spec.ts +261 -0
- package/src/gtk-popover-role.spec.ts +138 -0
- package/src/gtk-popover.spec.ts +264 -0
- package/src/gtk-print-dialogs.spec.ts +251 -0
- package/src/gtk-revealer.spec.ts +164 -0
- package/src/gtk-scale-button.spec.ts +218 -0
- package/src/gtk-scale.spec.ts +213 -0
- package/src/gtk-scrollbar.spec.ts +244 -0
- package/src/gtk-scrolled-window.spec.ts +262 -0
- package/src/gtk-search-bar.spec.ts +179 -0
- package/src/gtk-search-entry.spec.ts +142 -0
- package/src/gtk-separator.spec.ts +74 -0
- package/src/gtk-spin-button.spec.ts +186 -0
- package/src/gtk-spinner.spec.ts +130 -0
- package/src/gtk-stack-sidebar.spec.ts +217 -0
- package/src/gtk-stack-switcher.spec.ts +249 -0
- package/src/gtk-stack.spec.ts +432 -0
- package/src/gtk-text-view.spec.ts +189 -0
- package/src/gtk-text.spec.ts +163 -0
- package/src/gtk-toggle-button.spec.ts +186 -0
- package/src/gtk-tree-expander.spec.ts +201 -0
- package/src/gtk-video.spec.ts +240 -0
- package/src/gtk-viewport.spec.ts +140 -0
- package/src/gtk-window-controls.spec.ts +232 -0
- package/src/gtk-window-handle.spec.ts +158 -0
- package/src/gtk-window.spec.ts +190 -0
- package/src/index.ts +9 -1
- package/src/keyboard-operable.spec.ts +33 -1
- package/src/list-view-dom.ts +121 -0
- package/src/namespace/adw.ts +12 -0
- package/src/namespace/gtk.ts +61 -0
- package/src/page-setup.ts +222 -0
- package/src/scroll-shading.ts +18 -1
- package/src/shared-tree-builder.ts +263 -21
- package/src/signals.ts +15 -0
- package/src/source-view/theme.ts +11 -5
- package/src/style-classes.spec.ts +9 -8
- package/src/styles.generated.ts +1 -1
- package/src/tab-chip.ts +200 -0
- package/src/template-classes.ts +45 -0
- package/src/test.browser.mts +152 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
// <adw-shortcuts-item> â one shortcut row: a title, an optional subtitle and an
|
|
2
|
+
// accelerator, drawn as keycaps. The browser counterpart of `AdwShortcutsItem`,
|
|
3
|
+
// which upstream is a plain `GObject` (adw-shortcuts-item.c:39) holding four
|
|
4
|
+
// strings and a text direction, and is a row rather than a widget â hence a tag
|
|
5
|
+
// here, the same shape `<adw-sidebar-item>` and `<adw-toggle>` are.
|
|
6
|
+
//
|
|
7
|
+
// THE ACCELERATOR IS `<adw-shortcut-label>`'s to draw. The C validates the string
|
|
8
|
+
// against `AdwShortcutLabel`'s own grammar (adw-shortcuts-item.c:19-24) and this
|
|
9
|
+
// element hands the very same attribute to the very same element, so the parse is
|
|
10
|
+
// core's `parseShortcutLabel` once rather than a second grammar that drifts from it.
|
|
11
|
+
//
|
|
12
|
+
// `action-name` is the OTHER half and the port has nothing to resolve it with: an
|
|
13
|
+
// accelerator for an action comes from `Gtk.Application.set_accels_for_action`, and a
|
|
14
|
+
// document has no application to ask. So it is kept as an attribute â a reader can
|
|
15
|
+
// still see which action a row stands for â and the accelerator beside it is what is
|
|
16
|
+
// DRAWN. That is the fallback the class itself documents ("If both are specified, the
|
|
17
|
+
// accelerator will be used if the action couldn't be found", adw-shortcuts-item.c:19-23).
|
|
18
|
+
//
|
|
19
|
+
// `direction` is honoured the way the class means it: a row for a direction the
|
|
20
|
+
// document is not in is hidden, which is how one dialog lists both an LTR and an RTL
|
|
21
|
+
// accelerator for the same action (adw-shortcuts-item.c:25-28).
|
|
22
|
+
//
|
|
23
|
+
// Attributes:
|
|
24
|
+
// title (AdwShortcutsItem:title â the row's name)
|
|
25
|
+
// subtitle (AdwShortcutsItem:subtitle â the line under it, drawn dimmed and
|
|
26
|
+
// caption-sized, the `.title-box > .subtitle` rule at _shortcuts-dialog.scss:23-26)
|
|
27
|
+
// accelerator (AdwShortcutsItem:accelerator â `<Control>C`, `<Shift>A Home`; the
|
|
28
|
+
// `<adw-shortcut-label>` grammar)
|
|
29
|
+
// action-name (AdwShortcutsItem:action-name â resolved on GTK, kept here)
|
|
30
|
+
// direction (AdwShortcutsItem:direction â `ltr` | `rtl` | `none`; a row for the
|
|
31
|
+
// other direction is hidden)
|
|
32
|
+
//
|
|
33
|
+
// Properties: `itemType` â whether an accelerator was given, `hasAccelerator`.
|
|
34
|
+
//
|
|
35
|
+
// Reference: refs/libadwaita/src/adw-shortcuts-item.c
|
|
36
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_shortcuts-dialog.scss:16-27
|
|
37
|
+
// Copyright (c) 2025 GNOME Foundation Inc. (libadwaita). LGPLv2.1+
|
|
38
|
+
// Modifications: Implemented as a Web Component for @gjsify/adwaita-web.
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* `AdwShortcutsItem:direction` is a `GtkTextDirection`, so it carries `none` beside the
|
|
42
|
+
* two directions â and `none` is the default, meaning "show this row either way".
|
|
43
|
+
*
|
|
44
|
+
* NOT `AdwTextDirection` from core: that one is the split views' pair (`'ltr' | 'rtl'`,
|
|
45
|
+
* split-view.ts:41), which cannot hold the value the C defaults this property to.
|
|
46
|
+
*/
|
|
47
|
+
export type AdwShortcutsItemDirection = 'ltr' | 'rtl' | 'none';
|
|
48
|
+
|
|
49
|
+
const DIRECTIONS: readonly AdwShortcutsItemDirection[] = ['ltr', 'rtl', 'none'];
|
|
50
|
+
|
|
51
|
+
export class AdwShortcutsItem extends HTMLElement {
|
|
52
|
+
private _initialized = false;
|
|
53
|
+
private _titleEl!: HTMLSpanElement;
|
|
54
|
+
private _subtitleEl!: HTMLSpanElement;
|
|
55
|
+
private _labelEl!: HTMLElement;
|
|
56
|
+
|
|
57
|
+
static get observedAttributes() {
|
|
58
|
+
return ['title', 'subtitle', 'accelerator', 'action-name', 'direction'];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** The row's title (AdwShortcutsItem:title). */
|
|
62
|
+
get title(): string {
|
|
63
|
+
return this.getAttribute('title') ?? '';
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
set title(value: string) {
|
|
67
|
+
this.setAttribute('title', value);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** The row's subtitle (AdwShortcutsItem:subtitle). */
|
|
71
|
+
get subtitle(): string {
|
|
72
|
+
return this.getAttribute('subtitle') ?? '';
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
set subtitle(value: string) {
|
|
76
|
+
this.setAttribute('subtitle', value);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** The accelerator, in `<adw-shortcut-label>`'s grammar (AdwShortcutsItem:accelerator). */
|
|
80
|
+
get accelerator(): string {
|
|
81
|
+
return this.getAttribute('accelerator') ?? '';
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
set accelerator(value: string) {
|
|
85
|
+
if (value) this.setAttribute('accelerator', value);
|
|
86
|
+
else this.removeAttribute('accelerator');
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/** The action this row stands for; resolved by a GtkApplication on GTK. */
|
|
90
|
+
get actionName(): string {
|
|
91
|
+
return this.getAttribute('action-name') ?? '';
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
set actionName(value: string) {
|
|
95
|
+
if (value) this.setAttribute('action-name', value);
|
|
96
|
+
else this.removeAttribute('action-name');
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/** The text direction this row belongs to (AdwShortcutsItem:direction). */
|
|
100
|
+
get direction(): AdwShortcutsItemDirection {
|
|
101
|
+
const value = this.getAttribute('direction') as AdwShortcutsItemDirection | null;
|
|
102
|
+
return value && DIRECTIONS.includes(value) ? value : 'none';
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
set direction(value: AdwShortcutsItemDirection) {
|
|
106
|
+
this.setAttribute('direction', value);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** Whether a row carries an accelerator or stands for an action alone. */
|
|
110
|
+
get hasAccelerator(): boolean {
|
|
111
|
+
return this.accelerator.length > 0;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
connectedCallback() {
|
|
115
|
+
if (this._initialized) return;
|
|
116
|
+
this._initialized = true;
|
|
117
|
+
|
|
118
|
+
// `GTK_ACCESSIBLE_ROLE_LIST_ITEM` in spirit: a row in a list of shortcuts, and
|
|
119
|
+
// the accelerator beside it is already `role="img"` with its own name.
|
|
120
|
+
this.setAttribute('role', 'listitem');
|
|
121
|
+
|
|
122
|
+
this._titleEl = document.createElement('span');
|
|
123
|
+
this._titleEl.className = 'adw-shortcuts-item-title';
|
|
124
|
+
|
|
125
|
+
this._subtitleEl = document.createElement('span');
|
|
126
|
+
this._subtitleEl.className = 'adw-shortcuts-item-subtitle';
|
|
127
|
+
|
|
128
|
+
// The keycaps: the one element that owns the accelerator grammar.
|
|
129
|
+
this._labelEl = document.createElement('adw-shortcut-label');
|
|
130
|
+
this._labelEl.className = 'adw-shortcuts-item-label';
|
|
131
|
+
|
|
132
|
+
this.replaceChildren(this._titleEl, this._subtitleEl, this._labelEl);
|
|
133
|
+
this._render();
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
attributeChangedCallback(name: string) {
|
|
137
|
+
if (!this._initialized) return;
|
|
138
|
+
if (name === 'direction' || name === 'accelerator' || name === 'action-name') this._render();
|
|
139
|
+
else if (name === 'title') this._titleEl.textContent = this.title;
|
|
140
|
+
else if (name === 'subtitle') this._renderSubtitle();
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
private _render(): void {
|
|
144
|
+
this._titleEl.textContent = this.title;
|
|
145
|
+
this._renderSubtitle();
|
|
146
|
+
this._labelEl.setAttribute('accelerator', this.accelerator);
|
|
147
|
+
|
|
148
|
+
// A row that stands for an action alone has nothing to draw on the trailing
|
|
149
|
+
// side â `AdwShortcutLabel` shows its `disabled-text` placeholder for an empty
|
|
150
|
+
// accelerator, which is the wrong picture for a row that never had one.
|
|
151
|
+
this._labelEl.hidden = !this.hasAccelerator;
|
|
152
|
+
|
|
153
|
+
// The class's own rule (adw-shortcuts-item.c:25-28): a direction-specific row
|
|
154
|
+
// is shown only in that direction, so one dialog can carry both.
|
|
155
|
+
const direction = this.direction;
|
|
156
|
+
if (direction !== 'none') {
|
|
157
|
+
const ours = getComputedStyle(this).direction;
|
|
158
|
+
this.hidden = ours !== direction;
|
|
159
|
+
} else {
|
|
160
|
+
this.hidden = false;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
private _renderSubtitle(): void {
|
|
165
|
+
const subtitle = this.subtitle;
|
|
166
|
+
this._subtitleEl.textContent = subtitle;
|
|
167
|
+
this._subtitleEl.hidden = subtitle.length === 0;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
customElements.define('adw-shortcuts-item', AdwShortcutsItem);
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// <adw-shortcuts-section> â one titled group of shortcuts inside an
|
|
2
|
+
// <adw-shortcuts-dialog>: the browser counterpart of `AdwShortcutsSection`, which
|
|
3
|
+
// upstream is a plain `GObject` (`G_DEFINE_FINAL_TYPE_WITH_CODE (âŚ, G_TYPE_OBJECT)`
|
|
4
|
+
// in adw-shortcuts-section.c:44) implementing `GtkBuildable` and `Gio.ListModel`.
|
|
5
|
+
// It has no look of its own â libadwaita draws it as a preferences GROUP inside the
|
|
6
|
+
// dialog's page, and every row is a `AdwShortcutsItem` (`.shortcut-row`, styled at
|
|
7
|
+
// _shortcuts-dialog.scss:16-27).
|
|
8
|
+
//
|
|
9
|
+
// A tag anyway, and that is the same shape `<adw-sidebar-item>` and `<adw-toggle>`
|
|
10
|
+
// are: a GObject that is not a GtkWidget has no tag in a table of concrete widgets,
|
|
11
|
+
// and the mark-up form of `GtkBuildable`'s add-child is the only way a document can
|
|
12
|
+
// declare one. `scripts/check-vocabulary-alignment.mjs` records that in
|
|
13
|
+
// `WEB_ELEMENT_ALIGNMENT`.
|
|
14
|
+
//
|
|
15
|
+
// Children are `<adw-shortcuts-item>` elements, and they stay LIVE: a shortcut added
|
|
16
|
+
// after connect lands in the section (`bindSlottedChildren`).
|
|
17
|
+
//
|
|
18
|
+
// Attributes:
|
|
19
|
+
// title (AdwShortcutsSection:title â the heading; an untitled section is the
|
|
20
|
+
// "subdivide a section into groups" case the class documents)
|
|
21
|
+
//
|
|
22
|
+
// Properties: `items` (the section's shortcuts, in document order).
|
|
23
|
+
//
|
|
24
|
+
// Reference: refs/libadwaita/src/adw-shortcuts-section.c
|
|
25
|
+
// Reference: refs/libadwaita/src/stylesheet/widgets/_shortcuts-dialog.scss:1-14
|
|
26
|
+
// Copyright (c) 2025 GNOME Foundation Inc. (libadwaita). LGPLv2.1+
|
|
27
|
+
// Modifications: Implemented as a Web Component for @gjsify/adwaita-web.
|
|
28
|
+
|
|
29
|
+
import { bindSlottedChildren } from '../slotted-children.js';
|
|
30
|
+
|
|
31
|
+
export class AdwShortcutsSection extends HTMLElement {
|
|
32
|
+
private _initialized = false;
|
|
33
|
+
private _bodyEl!: HTMLDivElement;
|
|
34
|
+
private _titleEl!: HTMLElement;
|
|
35
|
+
|
|
36
|
+
static get observedAttributes() {
|
|
37
|
+
return ['title'];
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** The section title (AdwShortcutsSection:title). */
|
|
41
|
+
get title(): string {
|
|
42
|
+
return this.getAttribute('title') ?? '';
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
set title(value: string) {
|
|
46
|
+
this.setAttribute('title', value);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** The shortcuts in this section, in document order (AdwShortcutsSection:n-items' list). */
|
|
50
|
+
get items(): readonly HTMLElement[] {
|
|
51
|
+
return [...this._bodyEl.children] as HTMLElement[];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
connectedCallback() {
|
|
55
|
+
if (this._initialized) return;
|
|
56
|
+
this._initialized = true;
|
|
57
|
+
|
|
58
|
+
this._titleEl = document.createElement('div');
|
|
59
|
+
this._titleEl.className = 'adw-shortcuts-section-title';
|
|
60
|
+
|
|
61
|
+
this._bodyEl = document.createElement('div');
|
|
62
|
+
this._bodyEl.className = 'adw-shortcuts-section-body';
|
|
63
|
+
|
|
64
|
+
// A `Gio.ListModel` the section can also be read as, so the row list is a
|
|
65
|
+
// container with a name rather than bare children.
|
|
66
|
+
this.setAttribute('role', 'group');
|
|
67
|
+
bindSlottedChildren(this, [{ into: this._bodyEl }]).install(this._titleEl, this._bodyEl);
|
|
68
|
+
|
|
69
|
+
this._render();
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
attributeChangedCallback(name: string) {
|
|
73
|
+
if (!this._initialized) return;
|
|
74
|
+
if (name === 'title') this._render();
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
private _render(): void {
|
|
78
|
+
const title = this.title;
|
|
79
|
+
// An untitled section is a legal thing to write: the class documents it as the
|
|
80
|
+
// way to subdivide a section into groups, and libadwaita draws no heading for it.
|
|
81
|
+
this._titleEl.textContent = title;
|
|
82
|
+
this._titleEl.hidden = title.length === 0;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
customElements.define('adw-shortcuts-section', AdwShortcutsSection);
|
|
@@ -22,9 +22,14 @@
|
|
|
22
22
|
// <adw-sidebar-section title="âŚ"> â a titled group of items. An untitled
|
|
23
23
|
// section renders a separator before its rows (first section: nothing),
|
|
24
24
|
// mirroring AdwSidebar's stack header (title vs separator child).
|
|
25
|
-
// <adw-sidebar-item title="âŚ" subtitle="âŚ" icon-name="âŚ" disabled hidden
|
|
25
|
+
// <adw-sidebar-item title="âŚ" subtitle="âŚ" icon-name="âŚ" disabled hidden
|
|
26
|
+
// needs-attention badge-number="3"> â
|
|
26
27
|
// one row. `disabled` is AdwSidebarItem:enabled=false (bound to the row's
|
|
27
|
-
// `sensitive`), `hidden` is AdwSidebarItem:visible=false
|
|
28
|
+
// `sensitive`), `hidden` is AdwSidebarItem:visible=false, and the last two are the
|
|
29
|
+
// INDICATOR `AdwViewSwitcherSidebar` puts in `AdwSidebarItem:suffix`
|
|
30
|
+
// (`update_badge`, adw-view-switcher-sidebar.c:133-181): a bare dot for
|
|
31
|
+
// `needs-attention` with no count, a `999+`-capped label once there is one, and
|
|
32
|
+
// `.needs-attention` on the bin when attention is asked for either way.
|
|
28
33
|
// Attributes (on <adw-sidebar>):
|
|
29
34
|
// mode (sidebar | page, default sidebar) â mirrors Adw.Sidebar:mode.
|
|
30
35
|
// selected (zero-based flat item index; anything that is not a valid position
|
|
@@ -45,6 +50,7 @@
|
|
|
45
50
|
// Modifications: Implemented as a Web Component for @gjsify/adwaita-web; the
|
|
46
51
|
// icon nodes are <gtk-image>.
|
|
47
52
|
|
|
53
|
+
import { viewSwitcherBadgeLabel } from '@gjsify/adwaita-core';
|
|
48
54
|
import {
|
|
49
55
|
ADW_SIDEBAR_NO_SELECTION,
|
|
50
56
|
SidebarState,
|
|
@@ -69,7 +75,7 @@ const sectionBindings = new WeakMap<AdwSidebarSection, { sidebar: AdwSidebar; sp
|
|
|
69
75
|
/** A single sidebar item. Child of <adw-sidebar-section>; consumed at connect time. */
|
|
70
76
|
export class AdwSidebarItem extends HTMLElement {
|
|
71
77
|
static get observedAttributes() {
|
|
72
|
-
return ['title', 'subtitle', 'icon-name', 'disabled', 'hidden'];
|
|
78
|
+
return ['title', 'subtitle', 'icon-name', 'disabled', 'hidden', 'needs-attention', 'badge-number'];
|
|
73
79
|
}
|
|
74
80
|
|
|
75
81
|
/**
|
|
@@ -104,6 +110,8 @@ export class AdwSidebarItem extends HTMLElement {
|
|
|
104
110
|
else if (name === 'icon-name') binding.spec.iconName = value;
|
|
105
111
|
else if (name === 'disabled') binding.spec.enabled = newValue === null;
|
|
106
112
|
else if (name === 'hidden') binding.spec.visible = newValue === null;
|
|
113
|
+
else if (name === 'needs-attention') binding.spec.needsAttention = newValue === null;
|
|
114
|
+
else if (name === 'badge-number') binding.spec.badgeNumber = Number.parseInt(value, 10) || 0;
|
|
107
115
|
|
|
108
116
|
binding.sidebar.refresh();
|
|
109
117
|
}
|
|
@@ -257,6 +265,8 @@ export class AdwSidebar extends HTMLElement {
|
|
|
257
265
|
iconName: itemEl.getAttribute('icon-name') ?? '',
|
|
258
266
|
enabled: !itemEl.hasAttribute('disabled'),
|
|
259
267
|
visible: !itemEl.hasAttribute('hidden'),
|
|
268
|
+
badgeNumber: Number.parseInt(itemEl.getAttribute('badge-number') ?? '0', 10) || 0,
|
|
269
|
+
needsAttention: itemEl.hasAttribute('needs-attention'),
|
|
260
270
|
};
|
|
261
271
|
itemBindings.set(itemEl, { sidebar: this, spec: item });
|
|
262
272
|
items.push(item);
|
|
@@ -391,6 +401,12 @@ export class AdwSidebar extends HTMLElement {
|
|
|
391
401
|
|
|
392
402
|
row.appendChild(textEl);
|
|
393
403
|
|
|
404
|
+
// `update_badge` (adw-view-switcher-sidebar.c:133-181): no attention and no count
|
|
405
|
+
// means NO bin at all, a count means the bin loses `.dot` and gains the label, and
|
|
406
|
+
// a drop back to zero takes the label away and puts `.dot` back. The cap is
|
|
407
|
+
// `> 999`, which is `viewSwitcherBadgeLabel`'s rule, so 999 itself prints.
|
|
408
|
+
row.appendChild(this._createIndicator(item));
|
|
409
|
+
|
|
394
410
|
// Page mode adds a trailing chevron on every row, the way the boxed-list
|
|
395
411
|
// AdwActionRow carries a `go-next-symbolic` arrow.
|
|
396
412
|
row.appendChild(createGtkImage('go-next', 'adw-sidebar-item-arrow'));
|
|
@@ -400,6 +416,29 @@ export class AdwSidebar extends HTMLElement {
|
|
|
400
416
|
return row;
|
|
401
417
|
}
|
|
402
418
|
|
|
419
|
+
/**
|
|
420
|
+
* The item's INDICATOR bin â C's `AdwBin` with `.indicator`, `.dot` and the
|
|
421
|
+
* optional `.needs-attention`, holding an `AdwFadingLabel`'s worth of text.
|
|
422
|
+
*/
|
|
423
|
+
private _createIndicator(item: AdwSidebarItemSpec): HTMLElement {
|
|
424
|
+
const badge = item.badgeNumber ?? 0;
|
|
425
|
+
const attention = item.needsAttention === true;
|
|
426
|
+
const bin = document.createElement('span');
|
|
427
|
+
bin.className = 'indicator';
|
|
428
|
+
// Hidden, not absent: `set_suffix (item, NULL)` in C REMOVES the bin, and the
|
|
429
|
+
// difference is only observable through the suffix property.
|
|
430
|
+
bin.hidden = !attention && badge === 0;
|
|
431
|
+
bin.classList.toggle('dot', badge === 0);
|
|
432
|
+
bin.classList.toggle('needs-attention', attention);
|
|
433
|
+
if (badge > 0) {
|
|
434
|
+
const label = document.createElement('span');
|
|
435
|
+
label.className = 'numeric';
|
|
436
|
+
label.textContent = viewSwitcherBadgeLabel(badge);
|
|
437
|
+
bin.appendChild(label);
|
|
438
|
+
}
|
|
439
|
+
return bin;
|
|
440
|
+
}
|
|
441
|
+
|
|
403
442
|
private _applyMode(): void {
|
|
404
443
|
const page = this._state.mode === 'page';
|
|
405
444
|
this.classList.toggle('page', page);
|
|
@@ -10,6 +10,10 @@
|
|
|
10
10
|
// - clicking the ROW toggles: `adw_switch_row_init` points the activatable-widget at the
|
|
11
11
|
// slider, so the title is part of the control, not just the handle.
|
|
12
12
|
//
|
|
13
|
+
// Slots: `slot="prefix"` holds a leading icon/widget, exactly as on
|
|
14
|
+
// `<adw-action-row>` â libadwaita's AdwSwitchRow IS an AdwActionRow
|
|
15
|
+
// (adw-switch-row.c:50), so `add_prefix` is inherited, not invented here.
|
|
16
|
+
//
|
|
13
17
|
// Adapted from Adwaita Web UI Framework (https://github.com/mclellac/adwaita-web).
|
|
14
18
|
// Copyright (c) 2025 csm. MIT License.
|
|
15
19
|
// Modifications: Reimplemented as Web Component for @gjsify/adwaita-web;
|
|
@@ -18,6 +22,9 @@
|
|
|
18
22
|
|
|
19
23
|
import { SwitchRowState, deriveRowLabels } from '@gjsify/adwaita-core';
|
|
20
24
|
|
|
25
|
+
import { bindEmptySections } from '../empty-sections.js';
|
|
26
|
+
import { bindSlottedChildren } from '../slotted-children.js';
|
|
27
|
+
|
|
21
28
|
// SIDE-EFFECT import, deliberately separate from the type import below: it guarantees
|
|
22
29
|
// `gtk-switch` is defined before this module's `customElements.define` can upgrade a
|
|
23
30
|
// server-rendered `<adw-switch-row>` and build one. A combined `import { GtkSwitch }`
|
|
@@ -30,6 +37,7 @@ import type { GtkSwitch } from './gtk-switch.js';
|
|
|
30
37
|
|
|
31
38
|
export class AdwSwitchRow extends HTMLElement {
|
|
32
39
|
private _switchEl!: GtkSwitch;
|
|
40
|
+
private _prefixEl!: HTMLDivElement;
|
|
33
41
|
private _titleEl!: HTMLSpanElement;
|
|
34
42
|
private _subtitleEl!: HTMLSpanElement;
|
|
35
43
|
/** The headless active flag + its notify rule (ADR 0004). */
|
|
@@ -40,6 +48,11 @@ export class AdwSwitchRow extends HTMLElement {
|
|
|
40
48
|
return ['title', 'subtitle', 'active'];
|
|
41
49
|
}
|
|
42
50
|
|
|
51
|
+
/** The start (prefix) section â append icons/widgets here imperatively. */
|
|
52
|
+
get prefixSection(): HTMLDivElement {
|
|
53
|
+
return this._prefixEl;
|
|
54
|
+
}
|
|
55
|
+
|
|
43
56
|
get active(): boolean {
|
|
44
57
|
return this._initialized ? this._state.active : this.hasAttribute('active');
|
|
45
58
|
}
|
|
@@ -62,11 +75,25 @@ export class AdwSwitchRow extends HTMLElement {
|
|
|
62
75
|
this._subtitleEl.className = 'adw-row-subtitle';
|
|
63
76
|
text.append(this._titleEl, this._subtitleEl);
|
|
64
77
|
|
|
78
|
+
this._prefixEl = document.createElement('div');
|
|
79
|
+
this._prefixEl.className = 'adw-switch-row-prefix';
|
|
80
|
+
|
|
65
81
|
this._switchEl = document.createElement('gtk-switch') as GtkSwitch;
|
|
66
82
|
// adw-switch-row.c:159 â the slider is not a focus target; the ROW is.
|
|
67
83
|
this._switchEl.unfocusable = true;
|
|
68
84
|
|
|
69
|
-
|
|
85
|
+
// The prefix stays LIVE, as on every other slotted row: an icon appended with
|
|
86
|
+
// `slot="prefix"` after connect has to land where the declared one does.
|
|
87
|
+
// `src/slotted-children.ts` carries the incident.
|
|
88
|
+
bindSlottedChildren(this, [{ name: 'prefix', into: this._prefixEl }]).install(
|
|
89
|
+
this._prefixEl,
|
|
90
|
+
text,
|
|
91
|
+
this._switchEl,
|
|
92
|
+
);
|
|
93
|
+
// Same reason as the action row's: an icon appended into `prefixSection` is a
|
|
94
|
+
// childList change no attribute callback hears, so the section would stay hidden
|
|
95
|
+
// and the icon measure 0x0. AFTER the routing â it derives once synchronously.
|
|
96
|
+
bindEmptySections(this._prefixEl);
|
|
70
97
|
|
|
71
98
|
this._state.setActive(this.hasAttribute('active'));
|
|
72
99
|
this._switchEl.active = this._state.active;
|