@nldd/design-system 0.8.65 → 0.8.67
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/components/actions/toolbar/toolbar.d.ts +4 -2
- package/dist/components/actions/toolbar/toolbar.d.ts.map +1 -1
- package/dist/components/actions/toolbar/toolbar.js +4 -2
- package/dist/components/actions/toolbar/toolbar.js.map +1 -1
- package/dist/components/actions/toolbar/toolbar.styles.d.ts.map +1 -1
- package/dist/components/actions/toolbar/toolbar.styles.js +32 -8
- package/dist/components/actions/toolbar/toolbar.styles.js.map +1 -1
- package/dist/components/actions/toolbar/toolbar.template.d.ts.map +1 -1
- package/dist/components/actions/toolbar/toolbar.template.js +5 -2
- package/dist/components/actions/toolbar/toolbar.template.js.map +1 -1
- package/dist/components/components.js +1 -1
- package/dist/components/content/icon/icon-aliases.d.ts.map +1 -1
- package/dist/components/content/icon/icon-aliases.js +21 -7
- package/dist/components/content/icon/icon-aliases.js.map +1 -1
- package/dist/components/content/icon/icon-registry.d.ts.map +1 -1
- package/dist/components/content/icon/icon-registry.js +16 -4
- package/dist/components/content/icon/icon-registry.js.map +1 -1
- package/dist/components/{index-D3NSlPL5.js → index-Bfw_pYWB.js} +1 -1
- package/dist/components/{index-BlMqctke.js → index-Bqf6o41r.js} +1 -1
- package/dist/components/{index-BseMFLNF.js → index-CKnwqp_9.js} +1 -1
- package/dist/components/{index-D7B3n3QJ.js → index-CXT1jMFt.js} +1 -1
- package/dist/components/{index-ChjtFo6I.js → index-DO7aT0MT.js} +1 -1
- package/dist/components/{index-BcdqzZql.js → index-DWwviobk.js} +1 -1
- package/dist/components/{index-BI4lrehT.js → index-DjsXjoZJ.js} +629 -81
- package/dist/components/inputs/text-editor/text-editor.commands.d.ts +7 -0
- package/dist/components/inputs/text-editor/text-editor.commands.d.ts.map +1 -1
- package/dist/components/inputs/text-editor/text-editor.commands.js +44 -0
- package/dist/components/inputs/text-editor/text-editor.commands.js.map +1 -1
- package/dist/components/inputs/text-editor/text-editor.d.ts +1 -1
- package/dist/components/inputs/text-editor/text-editor.d.ts.map +1 -1
- package/dist/components/inputs/text-editor/text-editor.js +5 -7
- package/dist/components/inputs/text-editor/text-editor.js.map +1 -1
- package/dist/components/inputs/text-editor/text-editor.ordered-list.d.ts.map +1 -1
- package/dist/components/inputs/text-editor/text-editor.ordered-list.js +32 -11
- package/dist/components/inputs/text-editor/text-editor.ordered-list.js.map +1 -1
- package/dist/components/inputs/token-field/token-field.d.ts +3 -3
- package/dist/components/inputs/token-field/token-field.d.ts.map +1 -1
- package/dist/components/inputs/token-field/token-field.js +17 -5
- package/dist/components/inputs/token-field/token-field.js.map +1 -1
- package/dist/components/layout/app-view/app-view.d.ts +26 -6
- package/dist/components/layout/app-view/app-view.d.ts.map +1 -1
- package/dist/components/layout/app-view/app-view.js +101 -11
- package/dist/components/layout/app-view/app-view.js.map +1 -1
- package/dist/components/layout/app-view/app-view.styles.d.ts.map +1 -1
- package/dist/components/layout/app-view/app-view.styles.js +25 -0
- package/dist/components/layout/app-view/app-view.styles.js.map +1 -1
- package/dist/components/layout/page/page.d.ts +31 -1
- package/dist/components/layout/page/page.d.ts.map +1 -1
- package/dist/components/layout/page/page.js +112 -26
- package/dist/components/layout/page/page.js.map +1 -1
- package/dist/components/layout/page/page.styles.d.ts.map +1 -1
- package/dist/components/layout/page/page.styles.js +48 -0
- package/dist/components/layout/page/page.styles.js.map +1 -1
- package/dist/components/layout/sheet/sheet.d.ts +4 -0
- package/dist/components/layout/sheet/sheet.d.ts.map +1 -1
- package/dist/components/layout/sheet/sheet.js +4 -0
- package/dist/components/layout/sheet/sheet.js.map +1 -1
- package/dist/components/layout/split-views/bar-split-view/bar-split-view.d.ts +3 -0
- package/dist/components/layout/split-views/bar-split-view/bar-split-view.d.ts.map +1 -1
- package/dist/components/layout/split-views/bar-split-view/bar-split-view.js +49 -0
- package/dist/components/layout/split-views/bar-split-view/bar-split-view.js.map +1 -1
- package/dist/components/layout/split-views/bar-split-view/bar-split-view.styles.d.ts.map +1 -1
- package/dist/components/layout/split-views/bar-split-view/bar-split-view.styles.js +55 -0
- package/dist/components/layout/split-views/bar-split-view/bar-split-view.styles.js.map +1 -1
- package/dist/components/layout/split-views/bar-split-view/bar-split-view.template.d.ts.map +1 -1
- package/dist/components/layout/split-views/bar-split-view/bar-split-view.template.js +18 -9
- package/dist/components/layout/split-views/bar-split-view/bar-split-view.template.js.map +1 -1
- package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.d.ts +8 -0
- package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.d.ts.map +1 -1
- package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.js +21 -0
- package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.js.map +1 -1
- package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.styles.d.ts.map +1 -1
- package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.styles.js +34 -0
- package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.styles.js.map +1 -1
- package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.template.d.ts.map +1 -1
- package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.template.js +17 -7
- package/dist/components/layout/split-views/navigation-split-view/navigation-split-view.template.js.map +1 -1
- package/dist/components/layout/split-views/side-by-side-split-view/side-by-side-split-view.d.ts +6 -0
- package/dist/components/layout/split-views/side-by-side-split-view/side-by-side-split-view.d.ts.map +1 -1
- package/dist/components/layout/split-views/side-by-side-split-view/side-by-side-split-view.js +17 -0
- package/dist/components/layout/split-views/side-by-side-split-view/side-by-side-split-view.js.map +1 -1
- package/dist/components/layout/split-views/split-view-pane/split-view-pane.d.ts +10 -0
- package/dist/components/layout/split-views/split-view-pane/split-view-pane.d.ts.map +1 -1
- package/dist/components/layout/split-views/split-view-pane/split-view-pane.js +13 -0
- package/dist/components/layout/split-views/split-view-pane/split-view-pane.js.map +1 -1
- package/dist/components/layout/split-views/split-view-pane/split-view-pane.styles.d.ts.map +1 -1
- package/dist/components/layout/split-views/split-view-pane/split-view-pane.styles.js +19 -0
- package/dist/components/layout/split-views/split-view-pane/split-view-pane.styles.js.map +1 -1
- package/dist/components/navigation/top-title-bar/top-title-bar.d.ts +6 -1
- package/dist/components/navigation/top-title-bar/top-title-bar.d.ts.map +1 -1
- package/dist/components/navigation/top-title-bar/top-title-bar.js +42 -6
- package/dist/components/navigation/top-title-bar/top-title-bar.js.map +1 -1
- package/dist/utilities/scroll-mode-controller.d.ts +69 -0
- package/dist/utilities/scroll-mode-controller.d.ts.map +1 -0
- package/dist/utilities/scroll-mode-controller.js +101 -0
- package/dist/utilities/scroll-mode-controller.js.map +1 -0
- package/package.json +1 -1
|
@@ -13,6 +13,12 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
13
13
|
* .page__scroll takes over scrolling. A ResizeObserver on the header
|
|
14
14
|
* sets padding-top on the scroll wrapper (only when not scrolled).
|
|
15
15
|
*
|
|
16
|
+
* In root-scroll mode (--context-scroll-mode: root, derived upstream by
|
|
17
|
+
* nldd-app-view) the page stops owning a scroller: the document scrolls and the
|
|
18
|
+
* sticky header/footer become position:sticky layers offset by
|
|
19
|
+
* --context-layer-top/bottom. The mode is read on connect/resize and reflected
|
|
20
|
+
* to [data-scroll] so the CSS can branch.
|
|
21
|
+
*
|
|
16
22
|
* @element nldd-page
|
|
17
23
|
*
|
|
18
24
|
* @attr {boolean} sticky-header - Sticky header
|
|
@@ -25,6 +31,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
25
31
|
*/
|
|
26
32
|
import { LitElement } from 'lit';
|
|
27
33
|
import { customElement, property, state } from 'lit/decorators.js';
|
|
34
|
+
import { findScrollModeProvider } from '../../../utilities/scroll-mode-controller.js';
|
|
28
35
|
import { pageStyles } from './page.styles.js';
|
|
29
36
|
import { pageTemplate } from './page.template.js';
|
|
30
37
|
let NLDDPage = class NLDDPage extends LitElement {
|
|
@@ -34,12 +41,25 @@ let NLDDPage = class NLDDPage extends LitElement {
|
|
|
34
41
|
this.stickyFooter = false;
|
|
35
42
|
this.background = 'inherit';
|
|
36
43
|
this._scrolled = false;
|
|
44
|
+
this._scrollMode = 'nested';
|
|
37
45
|
this._scrollTarget = null;
|
|
46
|
+
this._scrollProvider = null;
|
|
38
47
|
this._headerObserver = null;
|
|
39
48
|
this._mainSlot = null;
|
|
49
|
+
this._resizeRaf = 0;
|
|
50
|
+
this._onResize = () => {
|
|
51
|
+
if (this._resizeRaf)
|
|
52
|
+
return;
|
|
53
|
+
this._resizeRaf = requestAnimationFrame(() => {
|
|
54
|
+
this._resizeRaf = 0;
|
|
55
|
+
if (this._readScrollMode())
|
|
56
|
+
this._configureScroll();
|
|
57
|
+
});
|
|
58
|
+
};
|
|
40
59
|
this._onScroll = () => {
|
|
41
|
-
|
|
42
|
-
|
|
60
|
+
this._scrolled = this._isRoot
|
|
61
|
+
? window.scrollY > 0
|
|
62
|
+
: ((this.stickyHeader ? this._scrollEl : this)?.scrollTop ?? 0) > 0;
|
|
43
63
|
};
|
|
44
64
|
this._updateMainItems = () => {
|
|
45
65
|
const slot = this._mainSlot;
|
|
@@ -51,8 +71,28 @@ let NLDDPage = class NLDDPage extends LitElement {
|
|
|
51
71
|
items.forEach(el => el.classList.toggle('is-last', el === last));
|
|
52
72
|
};
|
|
53
73
|
}
|
|
74
|
+
get _isRoot() {
|
|
75
|
+
return this._scrollMode === 'root';
|
|
76
|
+
}
|
|
54
77
|
get scrollTarget() {
|
|
55
|
-
|
|
78
|
+
if (this._isRoot)
|
|
79
|
+
return (document.scrollingElement ?? document.documentElement);
|
|
80
|
+
return this.stickyHeader ? (this._scrollEl ?? this) : this;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* The target to attach scroll LISTENERS to for this page's scrolling. In root
|
|
84
|
+
* mode the document is the scroller and its scroll event fires on `window` —
|
|
85
|
+
* a listener on `document.scrollingElement` would never fire — so this differs
|
|
86
|
+
* from `scrollTarget` (which is for reading scrollTop). In nested mode the two
|
|
87
|
+
* are the same. Components that react to this page's scroll (e.g.
|
|
88
|
+
* nldd-top-title-bar's collapse-anchor) must listen here and measure position
|
|
89
|
+
* against the viewport.
|
|
90
|
+
* @internal
|
|
91
|
+
*/
|
|
92
|
+
get scrollEventTarget() {
|
|
93
|
+
if (this._isRoot)
|
|
94
|
+
return window;
|
|
95
|
+
return this.stickyHeader ? (this._scrollEl ?? this) : this;
|
|
56
96
|
}
|
|
57
97
|
get _headerEl() {
|
|
58
98
|
return this.shadowRoot?.querySelector('.page__header') ?? null;
|
|
@@ -69,43 +109,89 @@ let NLDDPage = class NLDDPage extends LitElement {
|
|
|
69
109
|
// light-DOM host avoids it entirely.
|
|
70
110
|
this.style.containerType = 'inline-size';
|
|
71
111
|
this.style.containerName = 'layout-container';
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
112
|
+
this._scrollProvider = findScrollModeProvider(this);
|
|
113
|
+
if (this._scrollProvider) {
|
|
114
|
+
// Push-driven inside an app-view: it pushes the authoritative mode on
|
|
115
|
+
// register (and on every change), so the page never self-reads the var.
|
|
116
|
+
// A stale getComputedStyle read while re-mounting on navigation
|
|
117
|
+
// otherwise stuck the page in nested mode (clipped, footer not sticky
|
|
118
|
+
// against the viewport) until a resize.
|
|
119
|
+
this._scrollProvider.registerScrollConsumer(this);
|
|
120
|
+
if (this.hasUpdated)
|
|
121
|
+
this._configureScroll();
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
// Stand-alone (docs): the scroll mode flips at a media-query breakpoint,
|
|
125
|
+
// so read the inherited var and re-read on resize.
|
|
126
|
+
window.addEventListener('resize', this._onResize, { passive: true });
|
|
127
|
+
if (this.hasUpdated) {
|
|
128
|
+
this._readScrollMode();
|
|
129
|
+
this._configureScroll();
|
|
130
|
+
}
|
|
76
131
|
}
|
|
77
132
|
}
|
|
78
133
|
disconnectedCallback() {
|
|
79
134
|
super.disconnectedCallback();
|
|
135
|
+
window.removeEventListener('resize', this._onResize);
|
|
136
|
+
this._scrollProvider?.unregisterScrollConsumer(this);
|
|
137
|
+
this._scrollProvider = null;
|
|
138
|
+
if (this._resizeRaf)
|
|
139
|
+
cancelAnimationFrame(this._resizeRaf);
|
|
80
140
|
this._teardownScrollListener();
|
|
81
141
|
this._teardownHeaderObserver();
|
|
82
142
|
this._teardownMainSlotListener();
|
|
83
143
|
}
|
|
84
144
|
firstUpdated() {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
145
|
+
// With a provider the mode was already pushed on register (see
|
|
146
|
+
// connectedCallback); only a stand-alone page self-reads the inherited var.
|
|
147
|
+
if (!this._scrollProvider)
|
|
148
|
+
this._readScrollMode();
|
|
149
|
+
this._configureScroll();
|
|
88
150
|
this._setupMainSlotListener();
|
|
89
151
|
}
|
|
90
152
|
updated(changed) {
|
|
91
|
-
if (changed.has('stickyHeader'))
|
|
92
|
-
this.
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
153
|
+
if (changed.has('stickyHeader'))
|
|
154
|
+
this._configureScroll();
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* ScrollModeConsumer — nldd-app-view pushes the derived mode here; called with
|
|
158
|
+
* no argument (resize / no app-view) it re-reads the inherited var. @internal
|
|
159
|
+
*/
|
|
160
|
+
readScrollMode(mode) {
|
|
161
|
+
if (this._readScrollMode(mode))
|
|
162
|
+
this._configureScroll();
|
|
163
|
+
}
|
|
164
|
+
// Apply the scroll mode; returns true when it changed so callers can
|
|
165
|
+
// reconfigure. With an explicit mode (app-view's push) it is applied directly
|
|
166
|
+
// — race-free, unlike a getComputedStyle read mid-propagation. Otherwise the
|
|
167
|
+
// inherited --context-scroll-mode is read (anything but 'root' means nested).
|
|
168
|
+
_readScrollMode(mode) {
|
|
169
|
+
const next = mode
|
|
170
|
+
?? (getComputedStyle(this).getPropertyValue('--context-scroll-mode').trim() === 'root' ? 'root' : 'nested');
|
|
171
|
+
if (next === this._scrollMode)
|
|
172
|
+
return false;
|
|
173
|
+
this._scrollMode = next;
|
|
174
|
+
this.dataset.scroll = next;
|
|
175
|
+
return true;
|
|
176
|
+
}
|
|
177
|
+
// (Re)wire the scroll listener + header observer for the current mode.
|
|
178
|
+
_configureScroll() {
|
|
179
|
+
this._teardownScrollListener();
|
|
180
|
+
this._teardownHeaderObserver();
|
|
181
|
+
if (this._scrollEl)
|
|
182
|
+
this._scrollEl.style.paddingTop = '';
|
|
183
|
+
this._setupScrollListener();
|
|
184
|
+
// The absolute-header padding hack is nested-mode only; a root-mode
|
|
185
|
+
// sticky header sits in flow and reserves its own space.
|
|
186
|
+
if (this.stickyHeader && !this._isRoot)
|
|
187
|
+
this._setupHeaderObserver();
|
|
188
|
+
this._onScroll();
|
|
103
189
|
}
|
|
104
190
|
_setupScrollListener() {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
target.addEventListener('scroll', this._onScroll);
|
|
191
|
+
// Root mode scrolls the document (listen on window); nested mode scrolls
|
|
192
|
+
// the host, or .page__scroll with a sticky header. See scrollEventTarget.
|
|
193
|
+
const target = this.scrollEventTarget;
|
|
194
|
+
target.addEventListener('scroll', this._onScroll, { passive: true });
|
|
109
195
|
this._scrollTarget = target;
|
|
110
196
|
}
|
|
111
197
|
_teardownScrollListener() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../../src/components/layout/page/page.ts"],"names":[],"mappings":";;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../../src/components/layout/page/page.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/page/page.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"page.styles.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/page/page.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,UAAU,yBAmLtB,CAAC"}
|
|
@@ -45,6 +45,24 @@ export const pageStyles = css `
|
|
|
45
45
|
overflow: hidden;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
/* Root-scroll mode: the DOCUMENT scrolls (see nldd-app-view), not the page.
|
|
49
|
+
The page stops owning an inner scroll container and its sticky-header/footer
|
|
50
|
+
become real position:sticky layers against the document, offset by the
|
|
51
|
+
cumulative layer heights above/below (--context-layer-top/bottom, published
|
|
52
|
+
by any bars sitting outside the page). The mode is derived upstream and
|
|
53
|
+
delivered as --context-scroll-mode; nldd-page reflects it to [data-scroll]
|
|
54
|
+
so these (higher-specificity, later) rules win over the nested ones. */
|
|
55
|
+
:host([data-scroll="root"]) {
|
|
56
|
+
height: auto;
|
|
57
|
+
overflow: visible;
|
|
58
|
+
overscroll-behavior: auto;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* Undo the nested-mode clip — the document is the scroller now. */
|
|
62
|
+
:host([data-scroll="root"][sticky-header]) {
|
|
63
|
+
overflow: visible;
|
|
64
|
+
}
|
|
65
|
+
|
|
48
66
|
|
|
49
67
|
/* # Block */
|
|
50
68
|
|
|
@@ -55,6 +73,14 @@ export const pageStyles = css `
|
|
|
55
73
|
flex-grow: 1;
|
|
56
74
|
}
|
|
57
75
|
|
|
76
|
+
/* Root-scroll mode: no inner scroller; content-sized (flex-shrink:0) so the
|
|
77
|
+
sticky header/footer's containing block spans the whole document rather
|
|
78
|
+
than being squeezed to a definite ancestor height. */
|
|
79
|
+
:host([data-scroll="root"]) .page {
|
|
80
|
+
overflow: visible;
|
|
81
|
+
flex-shrink: 0;
|
|
82
|
+
}
|
|
83
|
+
|
|
58
84
|
|
|
59
85
|
/* # Elements */
|
|
60
86
|
|
|
@@ -89,6 +115,17 @@ export const pageStyles = css `
|
|
|
89
115
|
opacity: 1;
|
|
90
116
|
}
|
|
91
117
|
|
|
118
|
+
/* Root-scroll mode: sticky against the document instead of absolute-over-a-
|
|
119
|
+
nested-scroller. Being in normal flow it reserves its own space, so no
|
|
120
|
+
ResizeObserver padding is needed. left/right revert to auto: those insets
|
|
121
|
+
only mattered for the absolute overlay. */
|
|
122
|
+
:host([data-scroll="root"][sticky-header]) .page__header {
|
|
123
|
+
position: sticky;
|
|
124
|
+
top: var(--context-layer-top, 0px);
|
|
125
|
+
left: auto;
|
|
126
|
+
right: auto;
|
|
127
|
+
}
|
|
128
|
+
|
|
92
129
|
.page__scroll {
|
|
93
130
|
display: flex;
|
|
94
131
|
min-height: 0;
|
|
@@ -102,6 +139,12 @@ export const pageStyles = css `
|
|
|
102
139
|
overscroll-behavior: contain;
|
|
103
140
|
}
|
|
104
141
|
|
|
142
|
+
/* Root-scroll mode: content-sized, no inner scroller (see the .page rule). */
|
|
143
|
+
:host([data-scroll="root"]) .page__scroll {
|
|
144
|
+
overflow: visible;
|
|
145
|
+
flex-shrink: 0;
|
|
146
|
+
}
|
|
147
|
+
|
|
105
148
|
.page__main {
|
|
106
149
|
display: flex;
|
|
107
150
|
flex-direction: column;
|
|
@@ -130,5 +173,10 @@ export const pageStyles = css `
|
|
|
130
173
|
pointer-events: none;
|
|
131
174
|
height: var(--primitives-space-32);
|
|
132
175
|
}
|
|
176
|
+
|
|
177
|
+
/* Root-scroll mode: footer sticks to the document bottom, above any bottom bars. */
|
|
178
|
+
:host([data-scroll="root"][sticky-footer]) .page__footer {
|
|
179
|
+
bottom: var(--context-layer-bottom, 0px);
|
|
180
|
+
}
|
|
133
181
|
`;
|
|
134
182
|
//# sourceMappingURL=page.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page.styles.js","sourceRoot":"","sources":["../../../../src/components/layout/page/page.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"page.styles.js","sourceRoot":"","sources":["../../../../src/components/layout/page/page.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmL5B,CAAC"}
|
|
@@ -8,6 +8,10 @@
|
|
|
8
8
|
* On small (sm) viewports the sheet always renders as a bottom sheet,
|
|
9
9
|
* regardless of the configured placement.
|
|
10
10
|
*
|
|
11
|
+
* Render the sheet at the document root (teleport/portal it to `document.body`),
|
|
12
|
+
* never inside a split view's content flow: as a slotted flex child it would steal
|
|
13
|
+
* pane height (see `nldd-split-view-pane`).
|
|
14
|
+
*
|
|
11
15
|
* @element nldd-sheet
|
|
12
16
|
*
|
|
13
17
|
* @attr {string} placement - Sheet position: 'left' | 'right' | 'bottom' (default: 'right')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/sheet/sheet.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../../../src/components/layout/sheet/sheet.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAQjC,KAAK,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE7C,qBACa,SAAU,SAAQ,UAAU;IACxC,OAAgB,MAAM,0BAAe;IAGrC,SAAS,EAAE,SAAS,CAAW;IAE/B;;;;;;OAMG;IAEH,MAAM,SAAM;IAGZ,QAAQ,UAAS;IAEjB,sFAAsF;IAEtF,eAAe,SAAa;IAE5B;;;;OAIG;IAEH,KAAK,SAAM;IAEF,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IA8B9C,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,gBAAgB,CAAS;IAEjC,OAAO,CAAC,QAAQ,CAAS;IAEzB,OAAO,KAAK,OAAO,GAElB;IAEQ,iBAAiB,IAAI,IAAI;IAQzB,oBAAoB,IAAI,IAAI;IAKrC,IAAI,IAAI,IAAI;IAmBZ,OAAO,CAAC,YAAY;IAWpB,IAAI,IAAI,IAAI;IAyBZ,kBAAkB,CAAC,CAAC,EAAE,UAAU,GAAG,IAAI;IAOvC,aAAa,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI;IAM7B,OAAO,CAAC,cAAc,CAUpB;IAEO,MAAM;CAGf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,YAAY,EAAE,SAAS,CAAC;KACxB;CACD"}
|
|
@@ -8,6 +8,10 @@
|
|
|
8
8
|
* On small (sm) viewports the sheet always renders as a bottom sheet,
|
|
9
9
|
* regardless of the configured placement.
|
|
10
10
|
*
|
|
11
|
+
* Render the sheet at the document root (teleport/portal it to `document.body`),
|
|
12
|
+
* never inside a split view's content flow: as a slotted flex child it would steal
|
|
13
|
+
* pane height (see `nldd-split-view-pane`).
|
|
14
|
+
*
|
|
11
15
|
* @element nldd-sheet
|
|
12
16
|
*
|
|
13
17
|
* @attr {string} placement - Sheet position: 'left' | 'right' | 'bottom' (default: 'right')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../../../src/components/layout/sheet/sheet.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../../../src/components/layout/sheet/sheet.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,7 @@ export type Breakpoint = 'sm' | 'md' | 'lg';
|
|
|
36
36
|
type BreakpointOrUnmeasured = Breakpoint | null;
|
|
37
37
|
export declare class NLDDBarSplitView extends LitElement {
|
|
38
38
|
static styles: import("lit").CSSResult;
|
|
39
|
+
private _scrollMode;
|
|
39
40
|
background: 'inherit' | 'base' | 'tinted';
|
|
40
41
|
_currentBreakpoint: BreakpointOrUnmeasured;
|
|
41
42
|
private _observer;
|
|
@@ -45,6 +46,8 @@ export declare class NLDDBarSplitView extends LitElement {
|
|
|
45
46
|
private _getBreakpoint;
|
|
46
47
|
private _isChildVisible;
|
|
47
48
|
_getSortedChildren(): Element[];
|
|
49
|
+
updated(): void;
|
|
50
|
+
private _updateLayerOffsets;
|
|
48
51
|
render(): import("lit-html").TemplateResult;
|
|
49
52
|
}
|
|
50
53
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar-split-view.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/split-views/bar-split-view/bar-split-view.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"bar-split-view.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/split-views/bar-split-view/bar-split-view.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAUjC,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC5C,KAAK,sBAAsB,GAAG,UAAU,GAAG,IAAI,CAAC;AAEhD,qBACa,gBAAiB,SAAQ,UAAU;IAC/C,OAAgB,MAAM,0BAAsB;IAI5C,OAAO,CAAC,WAAW,CAAoE;IAGvF,UAAU,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAa;IAMtD,kBAAkB,EAAE,sBAAsB,CAAQ;IAElD,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,eAAe,CAA+B;IAE7C,iBAAiB;IAqBjB,oBAAoB;IAQ7B,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,eAAe;IAkBvB,kBAAkB,IAAI,OAAO,EAAE;IAmBtB,OAAO,IAAI,IAAI;IAUxB,OAAO,CAAC,mBAAmB,CAkCzB;IAEO,MAAM;CAGf;AAED,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,qBAAqB;QAC9B,qBAAqB,EAAE,gBAAgB,CAAC;KACxC;CACD"}
|
|
@@ -42,11 +42,15 @@ import { customElement, property, state } from 'lit/decorators.js';
|
|
|
42
42
|
import { barSplitViewStyles } from './bar-split-view.styles.js';
|
|
43
43
|
import { barSplitViewTemplate } from './bar-split-view.template.js';
|
|
44
44
|
import { breakpoints } from '../../../../assets/styles/breakpoints.js';
|
|
45
|
+
import { ScrollModeController } from '../../../../utilities/scroll-mode-controller.js';
|
|
45
46
|
const smMaxPx = parseInt(breakpoints.smMax);
|
|
46
47
|
const mdMaxPx = parseInt(breakpoints.mdMax);
|
|
47
48
|
let NLDDBarSplitView = class NLDDBarSplitView extends LitElement {
|
|
48
49
|
constructor() {
|
|
49
50
|
super(...arguments);
|
|
51
|
+
// Reflects --context-scroll-mode to [data-scroll]; on change, re-computes the
|
|
52
|
+
// sticky-bar offsets below.
|
|
53
|
+
this._scrollMode = new ScrollModeController(this, () => this._updateLayerOffsets());
|
|
50
54
|
this.background = 'inherit';
|
|
51
55
|
// null until connectedCallback measures the viewport. Before measurement the
|
|
52
56
|
// template falls back to DOM order with dividers — no breakpoint-specific
|
|
@@ -54,6 +58,43 @@ let NLDDBarSplitView = class NLDDBarSplitView extends LitElement {
|
|
|
54
58
|
this._currentBreakpoint = null;
|
|
55
59
|
this._observer = null;
|
|
56
60
|
this._resizeObserver = null;
|
|
61
|
+
// In root-scroll mode, stack the bars as sticky layers: each top bar sticks
|
|
62
|
+
// below the ones above it, each bottom bar above the ones below it, and the
|
|
63
|
+
// cumulative heights are published as --context-layer-top/bottom on the main
|
|
64
|
+
// so a descendant nldd-page's sticky header/footer stack against them.
|
|
65
|
+
this._updateLayerOffsets = () => {
|
|
66
|
+
const block = this.shadowRoot?.querySelector('.bar-split-view') ?? null;
|
|
67
|
+
const main = block?.querySelector('.bar-split-view__main') ?? null;
|
|
68
|
+
if (!block || !main)
|
|
69
|
+
return;
|
|
70
|
+
const children = Array.from(block.children);
|
|
71
|
+
const mainIndex = children.indexOf(main);
|
|
72
|
+
if (this._scrollMode.mode !== 'root') {
|
|
73
|
+
children.forEach(el => { el.style.top = ''; el.style.bottom = ''; });
|
|
74
|
+
main.style.removeProperty('--context-layer-top');
|
|
75
|
+
main.style.removeProperty('--context-layer-bottom');
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
// Everything above main sticks to the top and stacks; everything below
|
|
79
|
+
// sticks to the bottom. Dividers are included, so they ride with their bar
|
|
80
|
+
// and count toward the offset. Base offsets are inherited from any
|
|
81
|
+
// bars/app-view above this one (px values, so nested bars compose).
|
|
82
|
+
const cs = getComputedStyle(this);
|
|
83
|
+
let top = parseFloat(cs.getPropertyValue('--context-layer-top')) || 0;
|
|
84
|
+
for (let i = 0; i < mainIndex; i++) {
|
|
85
|
+
children[i].style.top = `${top}px`;
|
|
86
|
+
children[i].style.bottom = '';
|
|
87
|
+
top += children[i].offsetHeight;
|
|
88
|
+
}
|
|
89
|
+
main.style.setProperty('--context-layer-top', `${top}px`);
|
|
90
|
+
let bottom = parseFloat(cs.getPropertyValue('--context-layer-bottom')) || 0;
|
|
91
|
+
for (let i = children.length - 1; i > mainIndex; i--) {
|
|
92
|
+
children[i].style.bottom = `${bottom}px`;
|
|
93
|
+
children[i].style.top = '';
|
|
94
|
+
bottom += children[i].offsetHeight;
|
|
95
|
+
}
|
|
96
|
+
main.style.setProperty('--context-layer-bottom', `${bottom}px`);
|
|
97
|
+
};
|
|
57
98
|
}
|
|
58
99
|
connectedCallback() {
|
|
59
100
|
super.connectedCallback();
|
|
@@ -66,6 +107,9 @@ let NLDDBarSplitView = class NLDDBarSplitView extends LitElement {
|
|
|
66
107
|
this._currentBreakpoint = bp;
|
|
67
108
|
this.requestUpdate();
|
|
68
109
|
}
|
|
110
|
+
// Bar heights (and thus the published layer offsets) can change on any
|
|
111
|
+
// resize; in root mode the flowing host resizes with them.
|
|
112
|
+
this._updateLayerOffsets();
|
|
69
113
|
});
|
|
70
114
|
this._resizeObserver.observe(this);
|
|
71
115
|
}
|
|
@@ -119,6 +163,11 @@ let NLDDBarSplitView = class NLDDBarSplitView extends LitElement {
|
|
|
119
163
|
return aVal - bVal;
|
|
120
164
|
});
|
|
121
165
|
}
|
|
166
|
+
updated() {
|
|
167
|
+
// Re-apply after every render — the bar wrappers are re-created, so their
|
|
168
|
+
// inline sticky insets would otherwise be lost.
|
|
169
|
+
this._updateLayerOffsets();
|
|
170
|
+
}
|
|
122
171
|
render() {
|
|
123
172
|
return barSplitViewTemplate(this);
|
|
124
173
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar-split-view.js","sourceRoot":"","sources":["../../../../../src/components/layout/split-views/bar-split-view/bar-split-view.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"bar-split-view.js","sourceRoot":"","sources":["../../../../../src/components/layout/split-views/bar-split-view/bar-split-view.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar-split-view.styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/split-views/bar-split-view/bar-split-view.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"bar-split-view.styles.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/split-views/bar-split-view/bar-split-view.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,yBA0I9B,CAAC"}
|
|
@@ -31,6 +31,16 @@ export const barSplitViewStyles = css `
|
|
|
31
31
|
--_background-color: var(--context-parent-background-color);
|
|
32
32
|
}
|
|
33
33
|
|
|
34
|
+
/* Root-scroll mode: the document scrolls (ScrollModeController /
|
|
35
|
+
--context-scroll-mode). Bars become sticky layers that stay put while the
|
|
36
|
+
main content scrolls under them; their measured heights are published into
|
|
37
|
+
--context-layer-top/bottom (see bar-split-view.ts) so a descendant
|
|
38
|
+
nldd-page's sticky header/footer stack below/above them. The sticky insets
|
|
39
|
+
and those offsets are set by JS; bars paint above the content. */
|
|
40
|
+
:host([data-scroll="root"]) {
|
|
41
|
+
height: auto;
|
|
42
|
+
}
|
|
43
|
+
|
|
34
44
|
|
|
35
45
|
/* # Block */
|
|
36
46
|
|
|
@@ -44,6 +54,15 @@ export const barSplitViewStyles = css `
|
|
|
44
54
|
flex-basis: 0;
|
|
45
55
|
}
|
|
46
56
|
|
|
57
|
+
/* Root-scroll mode: flow wrappers must be content-sized (not flex-basis:0) so
|
|
58
|
+
their border box spans the whole document. Otherwise a sticky bar's
|
|
59
|
+
containing block is only as tall as the initial viewport fill and the bar
|
|
60
|
+
un-sticks partway down. */
|
|
61
|
+
:host([data-scroll="root"]) .bar-split-view {
|
|
62
|
+
flex-basis: auto;
|
|
63
|
+
flex-shrink: 0;
|
|
64
|
+
}
|
|
65
|
+
|
|
47
66
|
|
|
48
67
|
/* # Elements */
|
|
49
68
|
|
|
@@ -55,10 +74,31 @@ export const barSplitViewStyles = css `
|
|
|
55
74
|
flex-shrink: 0;
|
|
56
75
|
}
|
|
57
76
|
|
|
77
|
+
:host([data-scroll="root"]) .bar-split-view__bar {
|
|
78
|
+
overflow: visible;
|
|
79
|
+
/* Sticky bars sit over the scrolling document, so they need an opaque
|
|
80
|
+
background to occlude the content passing beneath them. */
|
|
81
|
+
background-color: var(--_background-color);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* Root-scroll mode: top/bottom bars stick; JS sets their top/bottom insets. */
|
|
85
|
+
:host([data-scroll="root"]) .bar-split-view__bar--top,
|
|
86
|
+
:host([data-scroll="root"]) .bar-split-view__bar--bottom {
|
|
87
|
+
position: sticky;
|
|
88
|
+
z-index: 3;
|
|
89
|
+
}
|
|
90
|
+
|
|
58
91
|
.bar-split-view__divider {
|
|
59
92
|
flex-shrink: 0;
|
|
60
93
|
}
|
|
61
94
|
|
|
95
|
+
/* Root-scroll mode: the seam divider sticks too, riding with its bar instead
|
|
96
|
+
of scrolling away with the content. */
|
|
97
|
+
:host([data-scroll="root"]) .bar-split-view__divider {
|
|
98
|
+
position: sticky;
|
|
99
|
+
z-index: 3;
|
|
100
|
+
}
|
|
101
|
+
|
|
62
102
|
.bar-split-view__main {
|
|
63
103
|
display: flex;
|
|
64
104
|
min-width: 0;
|
|
@@ -70,6 +110,12 @@ export const barSplitViewStyles = css `
|
|
|
70
110
|
flex-basis: 0;
|
|
71
111
|
}
|
|
72
112
|
|
|
113
|
+
:host([data-scroll="root"]) .bar-split-view__main {
|
|
114
|
+
overflow: visible;
|
|
115
|
+
flex-basis: auto;
|
|
116
|
+
flex-shrink: 0;
|
|
117
|
+
}
|
|
118
|
+
|
|
73
119
|
/* Only the main pane grows to fill remaining space; bar panes size to
|
|
74
120
|
* their content. Without this scoping a bar's slotted content gets
|
|
75
121
|
* flex-basis: 0 and collapses (the old 'flex: 1' shorthand expanded
|
|
@@ -82,5 +128,14 @@ export const barSplitViewStyles = css `
|
|
|
82
128
|
flex-shrink: 1;
|
|
83
129
|
flex-basis: 0;
|
|
84
130
|
}
|
|
131
|
+
|
|
132
|
+
/* Root-scroll mode: the slotted main layer (a split-view or page) is a COLUMN
|
|
133
|
+
item of the main column: give it a real content height (flex-basis:auto)
|
|
134
|
+
that it keeps on tall pages (flex-shrink:0), otherwise its 0 basis collapses
|
|
135
|
+
the main box and the sticky bars' containing block never spans the document. */
|
|
136
|
+
:host([data-scroll="root"]) ::slotted([slot="main"]) {
|
|
137
|
+
flex-basis: auto;
|
|
138
|
+
flex-shrink: 0;
|
|
139
|
+
}
|
|
85
140
|
`;
|
|
86
141
|
//# sourceMappingURL=bar-split-view.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar-split-view.styles.js","sourceRoot":"","sources":["../../../../../src/components/layout/split-views/bar-split-view/bar-split-view.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"bar-split-view.styles.js","sourceRoot":"","sources":["../../../../../src/components/layout/split-views/bar-split-view/bar-split-view.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0IpC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar-split-view.template.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/split-views/bar-split-view/bar-split-view.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAW,MAAM,KAAK,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,6CAA6C,CAAC;AAErD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,gBAAgB,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"bar-split-view.template.d.ts","sourceRoot":"","sources":["../../../../../src/components/layout/split-views/bar-split-view/bar-split-view.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,cAAc,EAAW,MAAM,KAAK,CAAC;AAEpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,6CAA6C,CAAC;AAErD,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,gBAAgB,GAAG,cAAc,CAwChF"}
|