@gjsify/adwaita-web 0.21.0 → 0.23.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/README.md +48 -0
- package/dist/adwaita-web.css +364 -0
- package/dist/adwaita-web.css.map +1 -1
- package/lib/types/adw-row-state.spec.d.ts +1 -0
- package/lib/types/adw-toast-overlay.spec.d.ts +1 -0
- package/lib/types/adw-view-switcher-bar.spec.d.ts +1 -0
- package/lib/types/elements/adw-alert-dialog.d.ts +6 -5
- package/lib/types/elements/adw-combo-row.d.ts +2 -1
- package/lib/types/elements/adw-expander-row.d.ts +4 -1
- package/lib/types/elements/adw-spin-row.d.ts +6 -4
- package/lib/types/elements/adw-toast-overlay.d.ts +42 -1
- package/lib/types/elements/adw-toggle-group.d.ts +2 -1
- package/lib/types/style-isolation.spec.d.ts +1 -0
- package/lib/types/styles.generated.d.ts +1 -1
- package/package.json +6 -5
- package/scss/_reset.scss +69 -0
- package/scss/_toast.scss +5 -2
- package/scss/_view_switcher_bar.scss +10 -0
- package/scss/adwaita-skin.scss +3 -0
- package/src/adw-row-state.spec.ts +217 -0
- package/src/adw-toast-overlay.spec.ts +172 -0
- package/src/adw-view-switcher-bar.spec.ts +31 -0
- package/src/elements/adw-alert-dialog.ts +88 -57
- package/src/elements/adw-combo-row.ts +42 -15
- package/src/elements/adw-expander-row.ts +46 -10
- package/src/elements/adw-spin-row.ts +56 -32
- package/src/elements/adw-toast-overlay.ts +151 -39
- package/src/elements/adw-toggle-group.ts +30 -14
- package/src/style-isolation.spec.ts +36 -0
- package/src/styles.generated.ts +1 -1
- package/src/test.browser.mts +15 -1
package/README.md
CHANGED
|
@@ -41,6 +41,54 @@ Vite preset (or any Vite/bundler setup). Type declarations are shipped
|
|
|
41
41
|
pre-built at `lib/types/index.d.ts`, so `gjsify tsc` consumers resolve the
|
|
42
42
|
package's types without compiling its source.
|
|
43
43
|
|
|
44
|
+
## Shared behaviour (`@gjsify/adwaita-core`)
|
|
45
|
+
|
|
46
|
+
The widget *behaviour* — as opposed to the DOM rendering — comes from
|
|
47
|
+
[`@gjsify/adwaita-core`](../adwaita-core), the headless Adwaita layer defined by
|
|
48
|
+
[ADR 0004](../../../docs/adr/0004-headless-adwaita-core.md). It is pure TypeScript
|
|
49
|
+
with no platform imports, and `@gjsify/adwaita-nativescript` composes the exact
|
|
50
|
+
same state machines, so a behaviour fix lands once and both ports pick it up.
|
|
51
|
+
|
|
52
|
+
| Element | Core state machine | What core owns |
|
|
53
|
+
| --- | --- | --- |
|
|
54
|
+
| `<adw-toast-overlay>` | `AdwToastQueue` + `AdwToast` | one toast at a time, FIFO ordering, auto-dismiss lifecycle |
|
|
55
|
+
| `<adw-combo-row>` | `ComboState` | options list, index↔value mapping, out-of-range guards, programmatic-vs-user split |
|
|
56
|
+
| `<adw-spin-row>` | `SpinState` | value/min/max/step with clamping on every mutation |
|
|
57
|
+
| `<adw-toggle-group>` | `ToggleGroupState` | segment list, guarded active index |
|
|
58
|
+
| `<adw-expander-row>` | `ExpanderState` | expanded/collapsed disclosure |
|
|
59
|
+
| `<adw-alert-dialog>` | `AdwAlertResponses` | response registry, default/close response, resolve-to-chosen-id |
|
|
60
|
+
|
|
61
|
+
Each element keeps only the DOM half: the markup, the CSS classes and the
|
|
62
|
+
`notify::*` / `response` `CustomEvent`s. The public element API is unchanged —
|
|
63
|
+
the composition is an implementation detail.
|
|
64
|
+
|
|
65
|
+
### Toasts are queued, one at a time
|
|
66
|
+
|
|
67
|
+
`<adw-toast-overlay>` follows `Adw.ToastOverlay`: it shows **exactly one** toast
|
|
68
|
+
and queues the rest FIFO. Each queued toast is shown only after the visible one
|
|
69
|
+
is dismissed — by its timeout, by its close button, by its action button, or by
|
|
70
|
+
`dismiss()`.
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
const overlay = document.querySelector('adw-toast-overlay');
|
|
74
|
+
|
|
75
|
+
overlay.addToast('File moved to Trash', { timeout: 3, buttonLabel: 'Undo', onAction: undo });
|
|
76
|
+
overlay.addToast('Second file moved'); // waits its turn — not shown yet
|
|
77
|
+
|
|
78
|
+
overlay.currentToast?.title; // 'File moved to Trash'
|
|
79
|
+
overlay.pendingToasts; // 1
|
|
80
|
+
|
|
81
|
+
overlay.dismiss(); // show the next queued toast now
|
|
82
|
+
overlay.clearToasts(); // dismiss the visible one and drop the queue
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
`addToast()`'s `timeout` is in **seconds** (mirroring `Adw.Toast:timeout`); `0`
|
|
86
|
+
keeps the toast until it is dismissed and holds the queue behind it. The
|
|
87
|
+
auto-dismiss runs on the browser's timers by default; assign
|
|
88
|
+
`overlay.scheduler` a custom `ToastScheduler` (the seam `@gjsify/adwaita-core`
|
|
89
|
+
defines) to drive toast lifetimes from your own clock — that is how the
|
|
90
|
+
package's own regression tests advance time without real timers.
|
|
91
|
+
|
|
44
92
|
## Theming a page without `<adw-window>`
|
|
45
93
|
|
|
46
94
|
The components read their colours from the `--window-*` CSS custom properties,
|
package/dist/adwaita-web.css
CHANGED
|
@@ -334,6 +334,365 @@
|
|
|
334
334
|
font-size: var(--font-size-base);
|
|
335
335
|
}
|
|
336
336
|
|
|
337
|
+
adw-about-dialog, adw-action-row, adw-alert-dialog, adw-alert-response, adw-avatar, adw-banner, adw-bottom-sheet, adw-bottom-sheet-content, adw-bottom-sheet-sheet, adw-button, adw-button-content, adw-button-row, adw-card, adw-carousel, adw-carousel-indicator-dots, adw-carousel-indicator-lines, adw-clamp, adw-combo-row, adw-data-grid, adw-dialog, adw-drop-down, adw-entry, adw-entry-row, adw-expander-row, adw-header-bar, adw-inline-view-switcher, adw-menu-button, adw-navigation-page, adw-navigation-split-view, adw-navigation-view, adw-overlay-split-view, adw-password-entry-row, adw-preferences-dialog, adw-preferences-group, adw-preferences-page, adw-sidebar, adw-sidebar-item, adw-sidebar-section, adw-spinner, adw-spin-row, adw-split-button, adw-status-page, adw-switch-row, adw-tab-page, adw-tab-view, adw-toast-overlay, adw-toggle, adw-toggle-group, adw-toolbar-view, adw-view-stack, adw-view-stack-page, adw-view-switcher, adw-view-switcher-bar, adw-view-switcher-page, adw-window, adw-window-title, adw-wrap-box {
|
|
338
|
+
box-sizing: border-box;
|
|
339
|
+
color: var(--window-fg-color);
|
|
340
|
+
font-family: var(--font-family);
|
|
341
|
+
font-size: var(--font-size-base);
|
|
342
|
+
font-weight: 400;
|
|
343
|
+
font-style: normal;
|
|
344
|
+
font-variant: normal;
|
|
345
|
+
line-height: normal;
|
|
346
|
+
letter-spacing: normal;
|
|
347
|
+
word-spacing: normal;
|
|
348
|
+
text-align: start;
|
|
349
|
+
text-indent: 0;
|
|
350
|
+
text-transform: none;
|
|
351
|
+
text-shadow: none;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
adw-about-dialog *,
|
|
355
|
+
adw-about-dialog *::before,
|
|
356
|
+
adw-about-dialog *::after {
|
|
357
|
+
box-sizing: border-box;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
adw-action-row *,
|
|
361
|
+
adw-action-row *::before,
|
|
362
|
+
adw-action-row *::after {
|
|
363
|
+
box-sizing: border-box;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
adw-alert-dialog *,
|
|
367
|
+
adw-alert-dialog *::before,
|
|
368
|
+
adw-alert-dialog *::after {
|
|
369
|
+
box-sizing: border-box;
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
adw-alert-response *,
|
|
373
|
+
adw-alert-response *::before,
|
|
374
|
+
adw-alert-response *::after {
|
|
375
|
+
box-sizing: border-box;
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
adw-avatar *,
|
|
379
|
+
adw-avatar *::before,
|
|
380
|
+
adw-avatar *::after {
|
|
381
|
+
box-sizing: border-box;
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
adw-banner *,
|
|
385
|
+
adw-banner *::before,
|
|
386
|
+
adw-banner *::after {
|
|
387
|
+
box-sizing: border-box;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
adw-bottom-sheet *,
|
|
391
|
+
adw-bottom-sheet *::before,
|
|
392
|
+
adw-bottom-sheet *::after {
|
|
393
|
+
box-sizing: border-box;
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
adw-bottom-sheet-content *,
|
|
397
|
+
adw-bottom-sheet-content *::before,
|
|
398
|
+
adw-bottom-sheet-content *::after {
|
|
399
|
+
box-sizing: border-box;
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
adw-bottom-sheet-sheet *,
|
|
403
|
+
adw-bottom-sheet-sheet *::before,
|
|
404
|
+
adw-bottom-sheet-sheet *::after {
|
|
405
|
+
box-sizing: border-box;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
adw-button *,
|
|
409
|
+
adw-button *::before,
|
|
410
|
+
adw-button *::after {
|
|
411
|
+
box-sizing: border-box;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
adw-button-content *,
|
|
415
|
+
adw-button-content *::before,
|
|
416
|
+
adw-button-content *::after {
|
|
417
|
+
box-sizing: border-box;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
adw-button-row *,
|
|
421
|
+
adw-button-row *::before,
|
|
422
|
+
adw-button-row *::after {
|
|
423
|
+
box-sizing: border-box;
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
adw-card *,
|
|
427
|
+
adw-card *::before,
|
|
428
|
+
adw-card *::after {
|
|
429
|
+
box-sizing: border-box;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
adw-carousel *,
|
|
433
|
+
adw-carousel *::before,
|
|
434
|
+
adw-carousel *::after {
|
|
435
|
+
box-sizing: border-box;
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
adw-carousel-indicator-dots *,
|
|
439
|
+
adw-carousel-indicator-dots *::before,
|
|
440
|
+
adw-carousel-indicator-dots *::after {
|
|
441
|
+
box-sizing: border-box;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
adw-carousel-indicator-lines *,
|
|
445
|
+
adw-carousel-indicator-lines *::before,
|
|
446
|
+
adw-carousel-indicator-lines *::after {
|
|
447
|
+
box-sizing: border-box;
|
|
448
|
+
}
|
|
449
|
+
|
|
450
|
+
adw-clamp *,
|
|
451
|
+
adw-clamp *::before,
|
|
452
|
+
adw-clamp *::after {
|
|
453
|
+
box-sizing: border-box;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
adw-combo-row *,
|
|
457
|
+
adw-combo-row *::before,
|
|
458
|
+
adw-combo-row *::after {
|
|
459
|
+
box-sizing: border-box;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
adw-data-grid *,
|
|
463
|
+
adw-data-grid *::before,
|
|
464
|
+
adw-data-grid *::after {
|
|
465
|
+
box-sizing: border-box;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
adw-dialog *,
|
|
469
|
+
adw-dialog *::before,
|
|
470
|
+
adw-dialog *::after {
|
|
471
|
+
box-sizing: border-box;
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
adw-drop-down *,
|
|
475
|
+
adw-drop-down *::before,
|
|
476
|
+
adw-drop-down *::after {
|
|
477
|
+
box-sizing: border-box;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
adw-entry *,
|
|
481
|
+
adw-entry *::before,
|
|
482
|
+
adw-entry *::after {
|
|
483
|
+
box-sizing: border-box;
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
adw-entry-row *,
|
|
487
|
+
adw-entry-row *::before,
|
|
488
|
+
adw-entry-row *::after {
|
|
489
|
+
box-sizing: border-box;
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
adw-expander-row *,
|
|
493
|
+
adw-expander-row *::before,
|
|
494
|
+
adw-expander-row *::after {
|
|
495
|
+
box-sizing: border-box;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
adw-header-bar *,
|
|
499
|
+
adw-header-bar *::before,
|
|
500
|
+
adw-header-bar *::after {
|
|
501
|
+
box-sizing: border-box;
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
adw-inline-view-switcher *,
|
|
505
|
+
adw-inline-view-switcher *::before,
|
|
506
|
+
adw-inline-view-switcher *::after {
|
|
507
|
+
box-sizing: border-box;
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
adw-menu-button *,
|
|
511
|
+
adw-menu-button *::before,
|
|
512
|
+
adw-menu-button *::after {
|
|
513
|
+
box-sizing: border-box;
|
|
514
|
+
}
|
|
515
|
+
|
|
516
|
+
adw-navigation-page *,
|
|
517
|
+
adw-navigation-page *::before,
|
|
518
|
+
adw-navigation-page *::after {
|
|
519
|
+
box-sizing: border-box;
|
|
520
|
+
}
|
|
521
|
+
|
|
522
|
+
adw-navigation-split-view *,
|
|
523
|
+
adw-navigation-split-view *::before,
|
|
524
|
+
adw-navigation-split-view *::after {
|
|
525
|
+
box-sizing: border-box;
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
adw-navigation-view *,
|
|
529
|
+
adw-navigation-view *::before,
|
|
530
|
+
adw-navigation-view *::after {
|
|
531
|
+
box-sizing: border-box;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
adw-overlay-split-view *,
|
|
535
|
+
adw-overlay-split-view *::before,
|
|
536
|
+
adw-overlay-split-view *::after {
|
|
537
|
+
box-sizing: border-box;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
adw-password-entry-row *,
|
|
541
|
+
adw-password-entry-row *::before,
|
|
542
|
+
adw-password-entry-row *::after {
|
|
543
|
+
box-sizing: border-box;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
adw-preferences-dialog *,
|
|
547
|
+
adw-preferences-dialog *::before,
|
|
548
|
+
adw-preferences-dialog *::after {
|
|
549
|
+
box-sizing: border-box;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
adw-preferences-group *,
|
|
553
|
+
adw-preferences-group *::before,
|
|
554
|
+
adw-preferences-group *::after {
|
|
555
|
+
box-sizing: border-box;
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
adw-preferences-page *,
|
|
559
|
+
adw-preferences-page *::before,
|
|
560
|
+
adw-preferences-page *::after {
|
|
561
|
+
box-sizing: border-box;
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
adw-sidebar *,
|
|
565
|
+
adw-sidebar *::before,
|
|
566
|
+
adw-sidebar *::after {
|
|
567
|
+
box-sizing: border-box;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
adw-sidebar-item *,
|
|
571
|
+
adw-sidebar-item *::before,
|
|
572
|
+
adw-sidebar-item *::after {
|
|
573
|
+
box-sizing: border-box;
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
adw-sidebar-section *,
|
|
577
|
+
adw-sidebar-section *::before,
|
|
578
|
+
adw-sidebar-section *::after {
|
|
579
|
+
box-sizing: border-box;
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
adw-spinner *,
|
|
583
|
+
adw-spinner *::before,
|
|
584
|
+
adw-spinner *::after {
|
|
585
|
+
box-sizing: border-box;
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
adw-spin-row *,
|
|
589
|
+
adw-spin-row *::before,
|
|
590
|
+
adw-spin-row *::after {
|
|
591
|
+
box-sizing: border-box;
|
|
592
|
+
}
|
|
593
|
+
|
|
594
|
+
adw-split-button *,
|
|
595
|
+
adw-split-button *::before,
|
|
596
|
+
adw-split-button *::after {
|
|
597
|
+
box-sizing: border-box;
|
|
598
|
+
}
|
|
599
|
+
|
|
600
|
+
adw-status-page *,
|
|
601
|
+
adw-status-page *::before,
|
|
602
|
+
adw-status-page *::after {
|
|
603
|
+
box-sizing: border-box;
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
adw-switch-row *,
|
|
607
|
+
adw-switch-row *::before,
|
|
608
|
+
adw-switch-row *::after {
|
|
609
|
+
box-sizing: border-box;
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
adw-tab-page *,
|
|
613
|
+
adw-tab-page *::before,
|
|
614
|
+
adw-tab-page *::after {
|
|
615
|
+
box-sizing: border-box;
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
adw-tab-view *,
|
|
619
|
+
adw-tab-view *::before,
|
|
620
|
+
adw-tab-view *::after {
|
|
621
|
+
box-sizing: border-box;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
adw-toast-overlay *,
|
|
625
|
+
adw-toast-overlay *::before,
|
|
626
|
+
adw-toast-overlay *::after {
|
|
627
|
+
box-sizing: border-box;
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
adw-toggle *,
|
|
631
|
+
adw-toggle *::before,
|
|
632
|
+
adw-toggle *::after {
|
|
633
|
+
box-sizing: border-box;
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
adw-toggle-group *,
|
|
637
|
+
adw-toggle-group *::before,
|
|
638
|
+
adw-toggle-group *::after {
|
|
639
|
+
box-sizing: border-box;
|
|
640
|
+
}
|
|
641
|
+
|
|
642
|
+
adw-toolbar-view *,
|
|
643
|
+
adw-toolbar-view *::before,
|
|
644
|
+
adw-toolbar-view *::after {
|
|
645
|
+
box-sizing: border-box;
|
|
646
|
+
}
|
|
647
|
+
|
|
648
|
+
adw-view-stack *,
|
|
649
|
+
adw-view-stack *::before,
|
|
650
|
+
adw-view-stack *::after {
|
|
651
|
+
box-sizing: border-box;
|
|
652
|
+
}
|
|
653
|
+
|
|
654
|
+
adw-view-stack-page *,
|
|
655
|
+
adw-view-stack-page *::before,
|
|
656
|
+
adw-view-stack-page *::after {
|
|
657
|
+
box-sizing: border-box;
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
adw-view-switcher *,
|
|
661
|
+
adw-view-switcher *::before,
|
|
662
|
+
adw-view-switcher *::after {
|
|
663
|
+
box-sizing: border-box;
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
adw-view-switcher-bar *,
|
|
667
|
+
adw-view-switcher-bar *::before,
|
|
668
|
+
adw-view-switcher-bar *::after {
|
|
669
|
+
box-sizing: border-box;
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
adw-view-switcher-page *,
|
|
673
|
+
adw-view-switcher-page *::before,
|
|
674
|
+
adw-view-switcher-page *::after {
|
|
675
|
+
box-sizing: border-box;
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
adw-window *,
|
|
679
|
+
adw-window *::before,
|
|
680
|
+
adw-window *::after {
|
|
681
|
+
box-sizing: border-box;
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
adw-window-title *,
|
|
685
|
+
adw-window-title *::before,
|
|
686
|
+
adw-window-title *::after {
|
|
687
|
+
box-sizing: border-box;
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
adw-wrap-box *,
|
|
691
|
+
adw-wrap-box *::before,
|
|
692
|
+
adw-wrap-box *::after {
|
|
693
|
+
box-sizing: border-box;
|
|
694
|
+
}
|
|
695
|
+
|
|
337
696
|
adw-window {
|
|
338
697
|
display: flex;
|
|
339
698
|
flex-direction: column;
|
|
@@ -2695,6 +3054,11 @@ adw-view-stack .adw-view-stack-child.active-view {
|
|
|
2695
3054
|
|
|
2696
3055
|
adw-view-switcher-bar {
|
|
2697
3056
|
display: block;
|
|
3057
|
+
}
|
|
3058
|
+
adw-view-switcher-bar[hidden] {
|
|
3059
|
+
display: none;
|
|
3060
|
+
}
|
|
3061
|
+
adw-view-switcher-bar {
|
|
2698
3062
|
box-sizing: border-box;
|
|
2699
3063
|
background-color: var(--headerbar-bg-color);
|
|
2700
3064
|
border-top: 1px solid var(--separator-color);
|