@leavittsoftware/web 5.14.4 → 5.15.1

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.
Files changed (34) hide show
  1. package/leavitt/app/app-logo.d.ts +12 -0
  2. package/leavitt/app/app-logo.js +129 -0
  3. package/leavitt/app/app-logo.js.map +1 -0
  4. package/leavitt/app/app-main-content-container.d.ts +9 -0
  5. package/leavitt/app/app-main-content-container.js +59 -0
  6. package/leavitt/app/app-main-content-container.js.map +1 -0
  7. package/leavitt/app/app-navigation-footer.d.ts +18 -0
  8. package/leavitt/app/app-navigation-footer.js +142 -0
  9. package/leavitt/app/app-navigation-footer.js.map +1 -0
  10. package/leavitt/app/app-navigation-header.d.ts +20 -0
  11. package/leavitt/app/app-navigation-header.js +221 -0
  12. package/leavitt/app/app-navigation-header.js.map +1 -0
  13. package/leavitt/app/app-width-limiter.d.ts +7 -0
  14. package/leavitt/app/app-width-limiter.js +37 -0
  15. package/leavitt/app/app-width-limiter.js.map +1 -0
  16. package/leavitt/app/contexts/main-menu-position-context.d.ts +4 -0
  17. package/leavitt/app/contexts/main-menu-position-context.js +3 -0
  18. package/leavitt/app/contexts/main-menu-position-context.js.map +1 -0
  19. package/package.json +3 -2
  20. package/titanium/circle-loading-indicator/circle-loading-indicator.d.ts +19 -0
  21. package/titanium/circle-loading-indicator/circle-loading-indicator.js +119 -0
  22. package/titanium/circle-loading-indicator/circle-loading-indicator.js.map +1 -0
  23. package/titanium/data-table/data-table-action-bar.d.ts +11 -0
  24. package/titanium/data-table/data-table-action-bar.js +214 -0
  25. package/titanium/data-table/data-table-action-bar.js.map +1 -0
  26. package/titanium/data-table/data-table-core.d.ts +420 -0
  27. package/titanium/data-table/data-table-core.js +503 -0
  28. package/titanium/data-table/data-table-core.js.map +1 -0
  29. package/titanium/helpers/find-scrollable-parent.d.ts +2 -0
  30. package/titanium/helpers/find-scrollable-parent.js +28 -0
  31. package/titanium/helpers/find-scrollable-parent.js.map +1 -0
  32. package/titanium/search-input/filled-search-input.d.ts +15 -0
  33. package/titanium/search-input/filled-search-input.js +111 -0
  34. package/titanium/search-input/filled-search-input.js.map +1 -0
@@ -0,0 +1,12 @@
1
+ import { LitElement } from 'lit';
2
+ declare const LeavittAppLogo_base: import("@leavittsoftware/web/leavitt/theme/theme-preference").Constructor<import("@leavittsoftware/web/leavitt/theme/theme-preference").ThemePreferenceInterface> & typeof LitElement;
3
+ export declare class LeavittAppLogo extends LeavittAppLogo_base {
4
+ accessor href: string;
5
+ accessor title: string;
6
+ accessor appName: string | null;
7
+ static styles: import("lit").CSSResult[];
8
+ renderLGLogoText(): import("lit-html").TemplateResult<1>;
9
+ render(): import("lit-html").TemplateResult<1>;
10
+ }
11
+ export {};
12
+ //# sourceMappingURL=app-logo.d.ts.map
@@ -0,0 +1,129 @@
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, css, html } from 'lit';
3
+ import { customElement, property } from 'lit/decorators.js';
4
+ import { ThemePreference } from '@leavittsoftware/web/leavitt/theme/theme-preference';
5
+ let LeavittAppLogo = class LeavittAppLogo extends ThemePreference(LitElement) {
6
+ #href_accessor_storage = '/';
7
+ get href() { return this.#href_accessor_storage; }
8
+ set href(value) { this.#href_accessor_storage = value; }
9
+ #title_accessor_storage = 'Back to home';
10
+ get title() { return this.#title_accessor_storage; }
11
+ set title(value) { this.#title_accessor_storage = value; }
12
+ #appName_accessor_storage;
13
+ get appName() { return this.#appName_accessor_storage; }
14
+ set appName(value) { this.#appName_accessor_storage = value; }
15
+ static { this.styles = [
16
+ css `
17
+ :host {
18
+ display: grid;
19
+ }
20
+
21
+ :host(:hover) {
22
+ span[lg-logo] {
23
+ opacity: 1;
24
+ }
25
+
26
+ span[app-name] {
27
+ opacity: 0;
28
+ }
29
+ }
30
+
31
+ a {
32
+ display: grid;
33
+ grid: 'logo text' / auto 1fr;
34
+ align-items: center;
35
+
36
+ font-family: zurchlc, Metropolis;
37
+ font-size: 26px;
38
+ line-height: 26px;
39
+ word-spacing: -4px;
40
+ font-weight: 300;
41
+ color: var(--md-sys-color-on-surface);
42
+ text-decoration: none;
43
+
44
+ overflow: hidden;
45
+
46
+ img {
47
+ grid-area: logo;
48
+ height: 22px;
49
+ width: 22px;
50
+ margin-right: 4px;
51
+ }
52
+
53
+ span {
54
+ transition: opacity 0.4s ease-in-out 0.3s;
55
+
56
+ white-space: nowrap;
57
+ overflow: hidden;
58
+ text-overflow: ellipsis;
59
+ }
60
+
61
+ span[lg-logo],
62
+ span[app-name] {
63
+ grid-area: text;
64
+ }
65
+
66
+ span[lg-logo] {
67
+ opacity: 0;
68
+ }
69
+
70
+ span[app-name] {
71
+ opacity: 1;
72
+ }
73
+
74
+ span[app-name],
75
+ span[lg-leavitt] {
76
+ color: #15467b;
77
+ }
78
+
79
+ span[lg-group] {
80
+ color: #919294;
81
+ }
82
+ }
83
+
84
+ :host([theme-preference='dark']) {
85
+ span[app-name],
86
+ span[lg-leavitt],
87
+ span[lg-group] {
88
+ color: #fff;
89
+ }
90
+ }
91
+
92
+ @media (max-width: 920px) {
93
+ span[lg-logo],
94
+ span[app-name] {
95
+ font-size: 20px;
96
+ }
97
+ a {
98
+ img {
99
+ width: 18px;
100
+ height: 18px;
101
+ }
102
+ }
103
+ }
104
+ `,
105
+ ]; }
106
+ renderLGLogoText() {
107
+ return html `<span lg-logo><span lg-leavitt>Leavitt</span> <span lg-group>Group</span></span>`;
108
+ }
109
+ render() {
110
+ return html `<a mark href=${this.href} title=${this.title}>
111
+ <img src=${this.themePreference === 'dark' ? 'https://cdn.leavitt.com/company-mark-57-dark.svg' : 'https://cdn.leavitt.com/company-mark-57.svg'} />
112
+ <span app-name>${this.appName}</span>${this.renderLGLogoText()}
113
+ </a>`;
114
+ }
115
+ };
116
+ __decorate([
117
+ property({ type: String })
118
+ ], LeavittAppLogo.prototype, "href", null);
119
+ __decorate([
120
+ property({ type: String })
121
+ ], LeavittAppLogo.prototype, "title", null);
122
+ __decorate([
123
+ property({ type: String, attribute: 'app-name' })
124
+ ], LeavittAppLogo.prototype, "appName", null);
125
+ LeavittAppLogo = __decorate([
126
+ customElement('leavitt-app-logo')
127
+ ], LeavittAppLogo);
128
+ export { LeavittAppLogo };
129
+ //# sourceMappingURL=app-logo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-logo.js","sourceRoot":"","sources":["app-logo.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,eAAe,EAAE,MAAM,qDAAqD,CAAC;AAG/E,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,eAAe,CAAC,UAAU,CAAC;IACxB,yBAAe,GAAG,CAAC;IAAnB,IAAA,IAAI,0CAAe;IAAnB,IAAA,IAAI,gDAAe;IACnB,0BAAgB,cAAc,CAAC;IAA/B,IAAA,KAAK,2CAA0B;IAA/B,IAAA,KAAK,iDAA0B;IACR,0BAAuB;IAAvB,IAAA,OAAO,6CAAgB;IAAvB,IAAA,OAAO,mDAAgB;aAE5E,WAAM,GAAG;QACd,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwFF;KACF,AA1FY,CA0FX;IAEF,gBAAgB;QACd,OAAO,IAAI,CAAA,kFAAkF,CAAC;IAChG,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA,gBAAgB,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,KAAK;iBAC3C,IAAI,CAAC,eAAe,KAAK,MAAM,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,6CAA6C;uBAC9H,IAAI,CAAC,OAAO,UAAU,IAAI,CAAC,gBAAgB,EAAE;SAC3D,CAAC;IACR,CAAC;;AAzGoC;IAApC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAA6B;AACnB;IAApC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2CAAyC;AACR;IAA3D,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;6CAAiC;AAHxE,cAAc;IAD1B,aAAa,CAAC,kBAAkB,CAAC;GACrB,cAAc,CA2G1B"}
@@ -0,0 +1,9 @@
1
+ import '../../titanium/circle-loading-indicator/circle-loading-indicator';
2
+ import { LitElement } from 'lit';
3
+ export declare class LeavittAppContentContainer extends LitElement {
4
+ private accessor pendingStateElement;
5
+ mainMenuPosition: string;
6
+ static styles: import("lit").CSSResult[];
7
+ render(): import("lit-html").TemplateResult<1>;
8
+ }
9
+ //# sourceMappingURL=app-main-content-container.d.ts.map
@@ -0,0 +1,59 @@
1
+ import { __decorate } from "tslib";
2
+ import '../../titanium/circle-loading-indicator/circle-loading-indicator';
3
+ import { LitElement, css, html } from 'lit';
4
+ import { customElement, property } from 'lit/decorators.js';
5
+ import { mainMenuPositionContext } from './contexts/main-menu-position-context';
6
+ import { consume } from '@lit/context';
7
+ let LeavittAppContentContainer = class LeavittAppContentContainer extends LitElement {
8
+ #pendingStateElement_accessor_storage;
9
+ get pendingStateElement() { return this.#pendingStateElement_accessor_storage; }
10
+ set pendingStateElement(value) { this.#pendingStateElement_accessor_storage = value; }
11
+ static { this.styles = [
12
+ css `
13
+ :host {
14
+ display: grid;
15
+ border-radius: 28px;
16
+ background-color: var(--md-sys-color-surface-container-lowest);
17
+ height: calc(100dvh - (64px + 12px));
18
+ box-sizing: border-box;
19
+ overflow: hidden;
20
+
21
+ position: relative;
22
+
23
+ margin-right: 16px;
24
+ }
25
+
26
+ :host([main-menu-position='drawer']) {
27
+ border-radius: 0;
28
+ height: calc(100dvh - (54px + 12px));
29
+ margin-right: 0;
30
+ }
31
+
32
+ scroll-container {
33
+ display: grid;
34
+ overflow-y: auto;
35
+
36
+ scrollbar-color: var(--md-sys-color-surface-container-highest) transparent;
37
+ border-radius: 28px;
38
+ }
39
+ `,
40
+ ]; }
41
+ render() {
42
+ return html `
43
+ <titanium-circle-loading-indicator .pendingStateElement=${this.pendingStateElement}></titanium-circle-loading-indicator>
44
+ <scroll-container><slot></slot></scroll-container>
45
+ `;
46
+ }
47
+ };
48
+ __decorate([
49
+ property({ type: Object })
50
+ ], LeavittAppContentContainer.prototype, "pendingStateElement", null);
51
+ __decorate([
52
+ consume({ context: mainMenuPositionContext, subscribe: true }),
53
+ property({ type: String, reflect: true, attribute: 'main-menu-position' })
54
+ ], LeavittAppContentContainer.prototype, "mainMenuPosition", void 0);
55
+ LeavittAppContentContainer = __decorate([
56
+ customElement('leavitt-app-main-content-container')
57
+ ], LeavittAppContentContainer);
58
+ export { LeavittAppContentContainer };
59
+ //# sourceMappingURL=app-main-content-container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-main-content-container.js","sourceRoot":"","sources":["app-main-content-container.ts"],"names":[],"mappings":";AAAA,OAAO,kEAAkE,CAAC;AAE1E,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAGhC,IAAM,0BAA0B,GAAhC,MAAM,0BAA2B,SAAQ,UAAU;IACX,sCAAoC;IAApC,IAAA,mBAAmB,yDAAiB;IAApC,IAAA,mBAAmB,+DAAiB;aAM1E,WAAM,GAAG;QACd,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2BF;KACF,AA7BY,CA6BX;IAEF,MAAM;QACJ,OAAO,IAAI,CAAA;gEACiD,IAAI,CAAC,mBAAmB;;KAEnF,CAAC;IACJ,CAAC;;AA1C4C;IAA5C,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;qEAAsD;AAI1E;IAFN,OAAO,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC9D,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC;oEAC3C;AALrB,0BAA0B;IADtC,aAAa,CAAC,oCAAoC,CAAC;GACvC,0BAA0B,CA4CtC"}
@@ -0,0 +1,18 @@
1
+ import { LitElement, PropertyValues } from 'lit';
2
+ export declare class LeavittAppNavigationFooter extends LitElement {
3
+ #private;
4
+ private accessor isOverflowed;
5
+ accessor maxWidth: string | null;
6
+ accessor scrollableParent: Element | null;
7
+ private accessor hasLeading;
8
+ private accessor hasTrailing;
9
+ private accessor leadingElements;
10
+ private accessor trailingElements;
11
+ connectedCallback(): void;
12
+ disconnectedCallback(): void;
13
+ updated(changedProps: PropertyValues<this>): void;
14
+ isOverflown(element: Element): boolean;
15
+ static styles: import("lit").CSSResult[];
16
+ render(): import("lit-html").TemplateResult<1>;
17
+ }
18
+ //# sourceMappingURL=app-navigation-footer.d.ts.map
@@ -0,0 +1,142 @@
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, css, html, nothing } from 'lit';
3
+ import { customElement, property, queryAssignedElements } from 'lit/decorators.js';
4
+ import { findScrollableParent } from '../../titanium/helpers/find-scrollable-parent';
5
+ import { styleMap } from 'lit/directives/style-map.js';
6
+ let LeavittAppNavigationFooter = class LeavittAppNavigationFooter extends LitElement {
7
+ #isOverflowed_accessor_storage = false;
8
+ get isOverflowed() { return this.#isOverflowed_accessor_storage; }
9
+ set isOverflowed(value) { this.#isOverflowed_accessor_storage = value; }
10
+ #maxWidth_accessor_storage = '640px';
11
+ get maxWidth() { return this.#maxWidth_accessor_storage; }
12
+ set maxWidth(value) { this.#maxWidth_accessor_storage = value; }
13
+ #scrollableParent_accessor_storage = null;
14
+ get scrollableParent() { return this.#scrollableParent_accessor_storage; }
15
+ set scrollableParent(value) { this.#scrollableParent_accessor_storage = value; }
16
+ #hasLeading_accessor_storage = false;
17
+ get hasLeading() { return this.#hasLeading_accessor_storage; }
18
+ set hasLeading(value) { this.#hasLeading_accessor_storage = value; }
19
+ #hasTrailing_accessor_storage = false;
20
+ get hasTrailing() { return this.#hasTrailing_accessor_storage; }
21
+ set hasTrailing(value) { this.#hasTrailing_accessor_storage = value; }
22
+ #leadingElements_accessor_storage;
23
+ get leadingElements() { return this.#leadingElements_accessor_storage; }
24
+ set leadingElements(value) { this.#leadingElements_accessor_storage = value; }
25
+ #trailingElements_accessor_storage;
26
+ get trailingElements() { return this.#trailingElements_accessor_storage; }
27
+ set trailingElements(value) { this.#trailingElements_accessor_storage = value; }
28
+ #scrollableParent = null;
29
+ #resizeObserver = null;
30
+ connectedCallback() {
31
+ super.connectedCallback();
32
+ this.#scrollableParent = this.scrollableParent ?? findScrollableParent(this);
33
+ if (this.#scrollableParent) {
34
+ this.#resizeObserver = new ResizeObserver(() => {
35
+ this.#onResize();
36
+ });
37
+ this.#resizeObserver.observe(this.#scrollableParent);
38
+ }
39
+ }
40
+ disconnectedCallback() {
41
+ if (this.#scrollableParent) {
42
+ this.#resizeObserver?.disconnect();
43
+ }
44
+ super.disconnectedCallback();
45
+ }
46
+ updated(changedProps) {
47
+ if (changedProps.has('scrollableParent')) {
48
+ this.#resizeObserver?.disconnect();
49
+ this.#scrollableParent = this.scrollableParent ?? findScrollableParent(this);
50
+ if (this.#scrollableParent) {
51
+ this.#resizeObserver = new ResizeObserver(() => {
52
+ this.#onResize();
53
+ });
54
+ this.#resizeObserver.observe(this.#scrollableParent);
55
+ }
56
+ }
57
+ }
58
+ isOverflown(element) {
59
+ return element.scrollHeight > element.clientHeight;
60
+ }
61
+ #onResize() {
62
+ if (this.#scrollableParent) {
63
+ this.isOverflowed = this.isOverflown(this.#scrollableParent);
64
+ }
65
+ }
66
+ static { this.styles = [
67
+ css `
68
+ :host {
69
+ display: grid;
70
+
71
+ position: sticky;
72
+ bottom: 0;
73
+ min-height: 64px;
74
+
75
+ padding: 0 16px;
76
+ background-color: var(--md-sys-color-surface-container-lowest);
77
+ z-index: 2;
78
+ }
79
+
80
+ :host([is-overflowed]) {
81
+ border-top: 1px solid var(--md-sys-color-outline-variant);
82
+ }
83
+
84
+ main {
85
+ display: flex;
86
+ flex-direction: row;
87
+ justify-content: space-between;
88
+ align-items: center;
89
+ justify-self: center;
90
+ padding: 12px 0;
91
+
92
+ width: 100%;
93
+ box-sizing: border-box;
94
+ }
95
+
96
+ section {
97
+ display: flex;
98
+ flex-direction: row;
99
+ align-items: center;
100
+ gap: 12px;
101
+ }
102
+
103
+ :host([has-leading][has-trailing]) main {
104
+ gap: 16px;
105
+ }
106
+ `,
107
+ ]; }
108
+ render() {
109
+ return html `
110
+ <main part="main" style=${this.maxWidth ? styleMap({ maxWidth: this.maxWidth }) : nothing}>
111
+ <section part="leading"><slot @slotchange=${() => (this.hasLeading = this.leadingElements.length > 0)} name="leading"></slot></section>
112
+ <section part="trailing"><slot @slotchange=${() => (this.hasTrailing = this.trailingElements.length > 0)} name="trailing"></slot></section>
113
+ </main>
114
+ `;
115
+ }
116
+ };
117
+ __decorate([
118
+ property({ type: Boolean, reflect: true, attribute: 'is-overflowed' })
119
+ ], LeavittAppNavigationFooter.prototype, "isOverflowed", null);
120
+ __decorate([
121
+ property({ type: String, attribute: 'max-width' })
122
+ ], LeavittAppNavigationFooter.prototype, "maxWidth", null);
123
+ __decorate([
124
+ property({ type: Object, attribute: 'scrollable-parent' })
125
+ ], LeavittAppNavigationFooter.prototype, "scrollableParent", null);
126
+ __decorate([
127
+ property({ type: Boolean, reflect: true, attribute: 'has-leading' })
128
+ ], LeavittAppNavigationFooter.prototype, "hasLeading", null);
129
+ __decorate([
130
+ property({ type: Boolean, reflect: true, attribute: 'has-trailing' })
131
+ ], LeavittAppNavigationFooter.prototype, "hasTrailing", null);
132
+ __decorate([
133
+ queryAssignedElements({ slot: 'leading' })
134
+ ], LeavittAppNavigationFooter.prototype, "leadingElements", null);
135
+ __decorate([
136
+ queryAssignedElements({ slot: 'trailing' })
137
+ ], LeavittAppNavigationFooter.prototype, "trailingElements", null);
138
+ LeavittAppNavigationFooter = __decorate([
139
+ customElement('leavitt-app-navigation-footer')
140
+ ], LeavittAppNavigationFooter);
141
+ export { LeavittAppNavigationFooter };
142
+ //# sourceMappingURL=app-navigation-footer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-navigation-footer.js","sourceRoot":"","sources":["app-navigation-footer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import '@material/web/icon/icon';
2
+ import { LitElement } from 'lit';
3
+ export declare class LeavittAppNavigationHeader extends LitElement {
4
+ #private;
5
+ accessor stickyTop: boolean;
6
+ accessor level1Text: string | null;
7
+ accessor level1Href: string | null;
8
+ accessor level2Text: string | null;
9
+ accessor level2Href: string | null;
10
+ accessor level3Text: string | null;
11
+ accessor level3Href: string | null;
12
+ accessor level4Text: string | null;
13
+ accessor level4Href: string | null;
14
+ private accessor isScrolled;
15
+ static styles: import("lit").CSSResult[];
16
+ connectedCallback(): void;
17
+ disconnectedCallback(): void;
18
+ render(): import("lit-html").TemplateResult<1>;
19
+ }
20
+ //# sourceMappingURL=app-navigation-header.d.ts.map
@@ -0,0 +1,221 @@
1
+ import { __decorate } from "tslib";
2
+ import '@material/web/icon/icon';
3
+ import { LitElement, css, html, nothing } from 'lit';
4
+ import { customElement, property } from 'lit/decorators.js';
5
+ import { ellipsis, h1 } from '@leavittsoftware/web/titanium/styles/styles';
6
+ import { findScrollableParent } from '../../titanium/helpers/find-scrollable-parent';
7
+ let LeavittAppNavigationHeader = class LeavittAppNavigationHeader extends LitElement {
8
+ #stickyTop_accessor_storage = false;
9
+ get stickyTop() { return this.#stickyTop_accessor_storage; }
10
+ set stickyTop(value) { this.#stickyTop_accessor_storage = value; }
11
+ #level1Text_accessor_storage;
12
+ get level1Text() { return this.#level1Text_accessor_storage; }
13
+ set level1Text(value) { this.#level1Text_accessor_storage = value; }
14
+ #level1Href_accessor_storage;
15
+ get level1Href() { return this.#level1Href_accessor_storage; }
16
+ set level1Href(value) { this.#level1Href_accessor_storage = value; }
17
+ #level2Text_accessor_storage;
18
+ get level2Text() { return this.#level2Text_accessor_storage; }
19
+ set level2Text(value) { this.#level2Text_accessor_storage = value; }
20
+ #level2Href_accessor_storage;
21
+ get level2Href() { return this.#level2Href_accessor_storage; }
22
+ set level2Href(value) { this.#level2Href_accessor_storage = value; }
23
+ #level3Text_accessor_storage;
24
+ get level3Text() { return this.#level3Text_accessor_storage; }
25
+ set level3Text(value) { this.#level3Text_accessor_storage = value; }
26
+ #level3Href_accessor_storage;
27
+ get level3Href() { return this.#level3Href_accessor_storage; }
28
+ set level3Href(value) { this.#level3Href_accessor_storage = value; }
29
+ #level4Text_accessor_storage;
30
+ get level4Text() { return this.#level4Text_accessor_storage; }
31
+ set level4Text(value) { this.#level4Text_accessor_storage = value; }
32
+ #level4Href_accessor_storage;
33
+ get level4Href() { return this.#level4Href_accessor_storage; }
34
+ set level4Href(value) { this.#level4Href_accessor_storage = value; }
35
+ #isScrolled_accessor_storage = false;
36
+ get isScrolled() { return this.#isScrolled_accessor_storage; }
37
+ set isScrolled(value) { this.#isScrolled_accessor_storage = value; }
38
+ static { this.styles = [
39
+ h1,
40
+ ellipsis,
41
+ css `
42
+ :host {
43
+ display: grid;
44
+ grid:
45
+ 'main gap trailing'
46
+ 'footer footer footer'
47
+ / auto 1fr auto;
48
+ align-items: start;
49
+
50
+ min-height: 64px;
51
+ background-color: var(--md-sys-color-surface-container-lowest);
52
+ box-sizing: border-box;
53
+ z-index: 2;
54
+
55
+ position: relative;
56
+ }
57
+
58
+ :host([is-scrolled][sticky-top]) {
59
+ border-bottom: 1px solid var(--md-sys-color-outline-variant);
60
+ }
61
+
62
+ :host([sticky-top]) {
63
+ position: sticky;
64
+ top: 0;
65
+ }
66
+
67
+ :host(:not([sticky-top])) {
68
+ border-bottom: 1px solid var(--md-sys-color-outline-variant);
69
+ }
70
+
71
+ aside {
72
+ grid-area: trailing;
73
+ display: flex;
74
+ flex-direction: row;
75
+ gap: 4px;
76
+ align-items: center;
77
+ padding: 8px 16px 0 0;
78
+ }
79
+
80
+ footer {
81
+ grid-area: footer;
82
+ }
83
+
84
+ main {
85
+ grid-area: main;
86
+ display: flex;
87
+ flex-direction: row;
88
+
89
+ padding: 20px 8px 0 16px;
90
+
91
+ /* position: sticky;
92
+ left: 16px; */
93
+ align-items: center;
94
+
95
+ gap: 4px;
96
+ }
97
+ h1 {
98
+ opacity: 0.8;
99
+ }
100
+
101
+ h1 > a:visited,
102
+ h1 > a {
103
+ text-decoration: none;
104
+ color: var(--md-sys-color-on-surface);
105
+ }
106
+
107
+ h1 > a:hover {
108
+ text-decoration: underline;
109
+ }
110
+
111
+ h1:last-child {
112
+ opacity: 1;
113
+ }
114
+
115
+ md-icon {
116
+ opacity: 0.8;
117
+ }
118
+
119
+ @container (width < 920px) {
120
+ :host {
121
+ min-height: 54px;
122
+ }
123
+
124
+ main {
125
+ padding: 16px 8px 0 16px;
126
+ }
127
+
128
+ h1 {
129
+ font-size: 16px;
130
+ line-height: 18px;
131
+ }
132
+ }
133
+ `,
134
+ ]; }
135
+ #scrollableParent = null;
136
+ connectedCallback() {
137
+ super.connectedCallback();
138
+ this.#scrollableParent = findScrollableParent(this);
139
+ if (this.#scrollableParent) {
140
+ this.#scrollableParent.addEventListener('scroll', this.#onScroll.bind(this), false);
141
+ }
142
+ }
143
+ disconnectedCallback() {
144
+ if (this.#scrollableParent) {
145
+ this.#scrollableParent.removeEventListener('scroll', this.#onScroll, false);
146
+ }
147
+ super.disconnectedCallback();
148
+ }
149
+ #onScroll() {
150
+ this.isScrolled = (this.#scrollableParent?.scrollTop || 0) > 0;
151
+ }
152
+ render() {
153
+ return html `
154
+ <main ellipsis part="main">
155
+ ${this.level1Text
156
+ ? this.level1Href
157
+ ? html `<h1 ellipsis><a title=${this.level1Text} href=${this.level1Href}>${this.level1Text}</a></h1>`
158
+ : html `<h1 ellipsis>${this.level1Text}</h1>`
159
+ : nothing}
160
+ ${this.level2Text
161
+ ? this.level2Href
162
+ ? html ` <md-icon>chevron_right</md-icon>
163
+ <h1 ellipsis><a title=${this.level2Text} href=${this.level2Href}>${this.level2Text}</a></h1>`
164
+ : html ` <md-icon>chevron_right</md-icon>
165
+ <h1 ellipsis>${this.level2Text}</h1>`
166
+ : nothing}
167
+ ${this.level3Text
168
+ ? this.level3Href
169
+ ? html `<md-icon>chevron_right</md-icon>
170
+ <h1 ellipsis><a title=${this.level3Text} href=${this.level3Href}>${this.level3Text}</a></h1>`
171
+ : html `<md-icon>chevron_right</md-icon>
172
+ <h1 ellipsis>${this.level3Text}</h1>`
173
+ : nothing}
174
+ ${this.level4Text
175
+ ? this.level4Href
176
+ ? html `<md-icon>chevron_right</md-icon>
177
+ <h1 ellipsis><a title=${this.level4Text} href=${this.level4Href}>${this.level4Text}</a></h1>`
178
+ : html `<md-icon>chevron_right</md-icon>
179
+ <h1 ellipsis>${this.level4Text}</h1>`
180
+ : nothing}
181
+ </main>
182
+ <aside part="trailing"><slot name="trailing"></slot></aside>
183
+ <footer part="footer"><slot name="footer"></slot></footer>
184
+ `;
185
+ }
186
+ };
187
+ __decorate([
188
+ property({ type: Boolean, reflect: true, attribute: 'sticky-top' })
189
+ ], LeavittAppNavigationHeader.prototype, "stickyTop", null);
190
+ __decorate([
191
+ property({ type: String })
192
+ ], LeavittAppNavigationHeader.prototype, "level1Text", null);
193
+ __decorate([
194
+ property({ type: String })
195
+ ], LeavittAppNavigationHeader.prototype, "level1Href", null);
196
+ __decorate([
197
+ property({ type: String })
198
+ ], LeavittAppNavigationHeader.prototype, "level2Text", null);
199
+ __decorate([
200
+ property({ type: String })
201
+ ], LeavittAppNavigationHeader.prototype, "level2Href", null);
202
+ __decorate([
203
+ property({ type: String })
204
+ ], LeavittAppNavigationHeader.prototype, "level3Text", null);
205
+ __decorate([
206
+ property({ type: String })
207
+ ], LeavittAppNavigationHeader.prototype, "level3Href", null);
208
+ __decorate([
209
+ property({ type: String })
210
+ ], LeavittAppNavigationHeader.prototype, "level4Text", null);
211
+ __decorate([
212
+ property({ type: String })
213
+ ], LeavittAppNavigationHeader.prototype, "level4Href", null);
214
+ __decorate([
215
+ property({ type: Boolean, reflect: true, attribute: 'is-scrolled' })
216
+ ], LeavittAppNavigationHeader.prototype, "isScrolled", null);
217
+ LeavittAppNavigationHeader = __decorate([
218
+ customElement('leavitt-app-navigation-header')
219
+ ], LeavittAppNavigationHeader);
220
+ export { LeavittAppNavigationHeader };
221
+ //# sourceMappingURL=app-navigation-header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-navigation-header.js","sourceRoot":"","sources":["app-navigation-header.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class LeavittAppWidthLimiter extends LitElement {
3
+ accessor maxWidth: string;
4
+ static styles: import("lit").CSSResult[];
5
+ render(): import("lit-html").TemplateResult<1>;
6
+ }
7
+ //# sourceMappingURL=app-width-limiter.d.ts.map