ngwr 9.0.0 → 9.1.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 CHANGED
@@ -10,7 +10,7 @@
10
10
  zoneless-ready, responsive, modular SCSS, fully tree-shakable. Built on top of
11
11
  `@angular/cdk` for overlay, portal, and a11y primitives.
12
12
 
13
- > **Status:** active development. v8 is the current major line (Angular 22 peer).
13
+ > **Status:** active development. v9 is the current major line (Angular 22 peer).
14
14
  > Public API is stable across patch releases and still evolving between majors.
15
15
  > [Open an issue](https://github.com/thekhegay/ngwr/issues/new)
16
16
  > if something breaks or feels wrong.
@@ -27,6 +27,30 @@
27
27
  }
28
28
  }
29
29
 
30
+ .wr-date-range-picker {
31
+ display: inline-block;
32
+
33
+ // Each end shares the group's width so the pair reads as one control.
34
+ &__input {
35
+ flex: 1 1 0;
36
+ min-width: 0;
37
+ }
38
+
39
+ &__separator {
40
+ display: inline-flex;
41
+ align-items: center;
42
+ padding: 0 0.25rem;
43
+ color: var(--wr-color-on-surface-muted);
44
+ user-select: none;
45
+ }
46
+
47
+ &--disabled {
48
+ .wr-date-range-picker__separator {
49
+ opacity: 0.5;
50
+ }
51
+ }
52
+ }
53
+
30
54
  // Overlay pane — z-index isolation only. <wr-calendar> + the time panel
31
55
  // bring their own chrome.
32
56
  .wr-date-picker-overlay {
@@ -201,3 +225,41 @@
201
225
  border-radius: 0 0 var(--wr-border-radius-base) var(--wr-border-radius-base);
202
226
  }
203
227
  }
228
+
229
+ // Range calendar + one time stepper per end, joined to the calendar the same
230
+ // way the single datetime panel is.
231
+ .wr-date-range-panel {
232
+ display: inline-flex;
233
+ flex-direction: column;
234
+ gap: 0;
235
+
236
+ > .wr-calendar {
237
+ border-bottom: 0;
238
+ border-bottom-left-radius: 0;
239
+ border-bottom-right-radius: 0;
240
+ }
241
+
242
+ &__times {
243
+ display: flex;
244
+ flex-wrap: wrap;
245
+ justify-content: center;
246
+ gap: 0.75rem 1.25rem;
247
+ padding: 0.75rem;
248
+ background: var(--wr-color-surface);
249
+ border: 1px solid var(--wr-color-outline);
250
+ border-top: 0;
251
+ border-radius: 0 0 var(--wr-border-radius-base) var(--wr-border-radius-base);
252
+ }
253
+
254
+ &__time {
255
+ display: inline-flex;
256
+ flex-direction: column;
257
+ gap: 0.25rem;
258
+ }
259
+
260
+ &__time-label {
261
+ color: var(--wr-color-on-surface-muted);
262
+ font-size: var(--wr-text-xs);
263
+ font-weight: 600;
264
+ }
265
+ }
@@ -18,6 +18,29 @@
18
18
  height: 100dvh;
19
19
  }
20
20
 
21
+ // `WrDrawerManager.open()` attaches the content component straight into the
22
+ // overlay pane, so both class sets land on the same element and the panel's
23
+ // `height: 100%` would otherwise win over the rule above.
24
+ .wr-drawer-overlay--left.wr-drawer__panel,
25
+ .wr-drawer-overlay--right.wr-drawer__panel {
26
+ height: 100vh;
27
+ height: 100dvh;
28
+ }
29
+
30
+ // …and that same flattening puts the content component's own host element
31
+ // between the panel and the title / content / footer slots, so the panel's
32
+ // column layout stops one level short: the footer wouldn't pin to the bottom
33
+ // and the body wouldn't scroll. Pass the layout through the interposed host.
34
+ .wr-drawer-overlay.wr-drawer__panel > * {
35
+ display: flex;
36
+ flex: 1 1 auto;
37
+ flex-direction: column;
38
+ width: 100%;
39
+ // Let `wr-drawer__content`'s `overflow: auto` actually clip: a flex item
40
+ // defaults to `min-height: auto`, which refuses to shrink below its content.
41
+ min-height: 0;
42
+ }
43
+
21
44
  .wr-drawer__panel {
22
45
  --wr-drawer-bg: var(--wr-color-surface);
23
46
  --wr-drawer-shadow: var(--wr-shadow-modal);