@swiftwc/ui 0.0.0-dev.8 → 0.0.0-dev.81
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/generated/buses/alert-dialog.d.ts +2 -0
- package/generated/buses/alert-dialog.js +1 -0
- package/generated/buses/confirmation-dialog.d.ts +2 -0
- package/generated/buses/confirmation-dialog.js +1 -0
- package/generated/buses/index.d.ts +6 -0
- package/generated/buses/index.js +6 -0
- package/generated/buses/lifecycle-observer.d.ts +2 -0
- package/generated/buses/lifecycle-observer.js +1 -0
- package/generated/client/index.d.ts +21 -10
- package/generated/client/index.js +177 -194
- package/generated/components/alert-dialog.d.ts +8 -0
- package/generated/components/alert-dialog.js +99 -0
- package/generated/components/body-view.js +5 -2
- package/generated/components/bordered-button.d.ts +10 -0
- package/generated/components/bordered-button.js +39 -3
- package/generated/components/bordered-prominent-button.d.ts +10 -0
- package/generated/components/bordered-prominent-button.js +39 -3
- package/generated/components/borderless-button.d.ts +9 -1
- package/generated/components/borderless-button.js +32 -11
- package/generated/components/color-scheme.d.ts +7 -0
- package/generated/components/color-scheme.js +54 -0
- package/generated/components/confirmation-dialog.d.ts +1 -1
- package/generated/components/confirmation-dialog.js +43 -32
- package/generated/components/content-unavailable-view.d.ts +24 -0
- package/generated/components/content-unavailable-view.js +81 -0
- package/generated/components/date-picker.d.ts +2 -12
- package/generated/components/date-picker.js +96 -65
- package/generated/components/disclosure-group.d.ts +5 -0
- package/generated/components/disclosure-group.js +18 -7
- package/generated/components/fine-tooltip.d.ts +7 -0
- package/generated/components/fine-tooltip.js +107 -0
- package/generated/components/form-view.d.ts +3 -0
- package/generated/components/form-view.js +8 -3
- package/generated/components/glass-button.d.ts +10 -0
- package/generated/components/glass-button.js +39 -3
- package/generated/components/glass-prominent-button.d.ts +10 -0
- package/generated/components/glass-prominent-button.js +39 -3
- package/generated/components/h-stack.d.ts +14 -0
- package/generated/components/h-stack.js +23 -0
- package/generated/components/image-view.d.ts +9 -0
- package/generated/components/image-view.js +64 -0
- package/generated/components/index.d.ts +11 -3
- package/generated/components/index.js +11 -3
- package/generated/components/label-view.d.ts +6 -1
- package/generated/components/label-view.js +40 -60
- package/generated/components/labeled-content.d.ts +9 -0
- package/generated/components/labeled-content.js +116 -0
- package/generated/components/list-view.d.ts +3 -0
- package/generated/components/list-view.js +20 -17
- package/generated/components/menu-view.d.ts +4 -1
- package/generated/components/menu-view.js +60 -51
- package/generated/components/navigation-large-title.js +9 -5
- package/generated/components/navigation-split-view.d.ts +4 -1
- package/generated/components/navigation-split-view.js +13 -6
- package/generated/components/navigation-stack.d.ts +4 -1
- package/generated/components/navigation-stack.js +16 -9
- package/generated/components/navigation-title.d.ts +1 -1
- package/generated/components/navigation-title.js +58 -55
- package/generated/components/picker-view.d.ts +32 -4
- package/generated/components/picker-view.js +924 -234
- package/generated/components/plain-button.js +5 -3
- package/generated/components/progress-view.d.ts +13 -0
- package/generated/components/progress-view.js +120 -0
- package/generated/components/screen-view.js +3 -1
- package/generated/components/scroll-view-proxy.d.ts +8 -0
- package/generated/components/scroll-view-proxy.js +17 -0
- package/generated/components/scroll-view.d.ts +1 -1
- package/generated/components/scroll-view.js +101 -85
- package/generated/components/search-view.d.ts +7 -0
- package/generated/components/search-view.js +30 -0
- package/generated/components/section-view.d.ts +1 -1
- package/generated/components/section-view.js +35 -30
- package/generated/components/sheet-view.d.ts +1 -2
- package/generated/components/sheet-view.js +32 -39
- package/generated/components/sidebar-toggle.js +44 -66
- package/generated/components/sidebar-view.js +13 -8
- package/generated/components/sticky-container.js +8 -4
- package/generated/components/tab-bar.d.ts +3 -0
- package/generated/components/tab-bar.js +20 -10
- package/generated/components/tab-item.js +24 -13
- package/generated/components/tab-view.js +25 -17
- package/generated/components/table-view.d.ts +5 -0
- package/generated/components/table-view.js +55 -77
- package/generated/components/text-field.d.ts +2 -2
- package/generated/components/text-field.js +95 -88
- package/generated/components/toggle-view.d.ts +28 -0
- package/generated/components/toggle-view.js +224 -0
- package/generated/components/tool-bar-item-group.js +21 -4
- package/generated/components/tool-bar-item.d.ts +4 -1
- package/generated/components/tool-bar-item.js +57 -10
- package/generated/components/tool-bar.d.ts +12 -0
- package/generated/components/tool-bar.js +27 -11
- package/generated/components/v-keyboard.d.ts +3 -1
- package/generated/components/v-keyboard.js +12 -6
- package/generated/components/v-stack.d.ts +12 -0
- package/generated/components/v-stack.js +17 -2
- package/generated/css/index.css +2533 -941
- package/generated/events/alert-dialog.d.ts +8 -0
- package/generated/events/alert-dialog.js +1 -0
- package/generated/events/confirmation-dialog.d.ts +2 -2
- package/generated/events/index.d.ts +2 -0
- package/generated/events/index.js +2 -0
- package/generated/events/picker-view.d.ts +7 -0
- package/generated/events/scroll-view.js +4 -0
- package/generated/events/tab-view.d.ts +6 -2
- package/generated/events/text-field.js +3 -0
- package/generated/events/toggle-view.d.ts +9 -0
- package/generated/events/toggle-view.js +4 -0
- package/generated/i18n/index.d.ts +20 -10
- package/generated/i18n/index.js +82 -54
- package/generated/i18n/locales/el.d.ts +16 -0
- package/generated/i18n/locales/el.js +16 -0
- package/generated/i18n/locales/en.d.ts +16 -0
- package/generated/i18n/locales/en.js +16 -0
- package/generated/i18n/locales/index.d.ts +4 -0
- package/generated/i18n/locales/index.js +4 -0
- package/generated/internal/class/css-style-observer.js +3 -2
- package/generated/internal/class/form-associated-base.d.ts +0 -4
- package/generated/internal/class/form-associated-base.js +23 -38
- package/generated/internal/class/mutation-observer-set.d.ts +9 -0
- package/generated/internal/class/mutation-observer-set.js +42 -0
- package/generated/internal/class/mutation-observer-singleton.js +18 -0
- package/generated/internal/class/navigation-view.d.ts +1 -1
- package/generated/internal/class/navigation-view.js +38 -43
- package/generated/internal/decorators/adaptive-slot.d.ts +1 -0
- package/generated/internal/decorators/adaptive-slot.js +50 -0
- package/generated/internal/decorators/custom-element.d.ts +1 -1
- package/generated/internal/decorators/custom-element.js +2 -1
- package/generated/internal/decorators/index.d.ts +6 -0
- package/generated/internal/decorators/index.js +6 -0
- package/generated/internal/decorators/microtask-on-connected.d.ts +39 -0
- package/generated/internal/decorators/microtask-on-connected.js +67 -0
- package/generated/internal/privateNamespace.d.ts +10 -0
- package/generated/internal/privateNamespace.js +168 -1
- package/generated/internal/utils/cash/index.d.ts +4 -3
- package/generated/internal/utils/cash/index.js +6 -4
- package/generated/internal/utils/dev-flags.d.ts +3 -0
- package/generated/internal/utils/dev-flags.js +5 -0
- package/generated/internal/utils/ensure-placeholder.d.ts +1 -0
- package/generated/internal/utils/ensure-placeholder.js +55 -0
- package/generated/internal/utils/index.d.ts +7 -2
- package/generated/internal/utils/index.js +9 -2
- package/generated/internal/utils/is-inside.d.ts +1 -0
- package/generated/internal/utils/is-inside.js +4 -0
- package/generated/internal/utils/list-active.js +67 -12
- package/generated/internal/utils/render-label-icon.d.ts +2 -0
- package/generated/internal/utils/render-label-icon.js +19 -0
- package/generated/internal/utils/render-label-title.d.ts +2 -0
- package/generated/internal/utils/render-label-title.js +16 -0
- package/generated/internal/utils/render-label.d.ts +1 -0
- package/generated/internal/utils/render-label.js +19 -0
- package/generated/internal/utils/touch-glass.js +5 -5
- package/generated/namespace-browser/base.d.ts +12 -3
- package/generated/namespace-browser/base.js +41 -18
- package/generated/namespace-browser/event.d.ts +10 -0
- package/generated/namespace-browser/event.js +1 -0
- package/generated/snapshot/index.d.ts +3 -1
- package/generated/snapshot/index.js +25 -2
- package/generated/tpl/html.d.ts +5 -0
- package/generated/tpl/html.js +3 -0
- package/generated/tpl/index.d.ts +4 -0
- package/generated/tpl/index.js +4 -0
- package/generated/tpl/render.d.ts +2 -0
- package/generated/tpl/render.js +132 -0
- package/package.json +18 -4
- package/scss/_components.scss +14 -0
- package/scss/_functions.scss +10 -0
- package/scss/_mixins.scss +4 -0
- package/scss/_transitions.scss +6 -1
- package/scss/_vars.scss +9 -2
- package/scss/base/_layout.scss +17 -7
- package/scss/base/_reboot.scss +34 -1
- package/scss/base/_root.scss +117 -114
- package/scss/colors/_index.scss +304 -85
- package/scss/components/_alert-dialog.scss +111 -0
- package/scss/components/_bordered-button.scss +35 -0
- package/scss/components/_bordered-prominent-button.scss +45 -0
- package/scss/components/_borderless-button.scss +25 -0
- package/scss/components/_confirmation-dialog.scss +41 -49
- package/scss/components/_content-unavailable-view.scss +56 -0
- package/scss/components/_date-picker.scss +15 -15
- package/scss/components/_detail-placeholder.scss +1 -3
- package/scss/components/_disclosure-group.scss +84 -33
- package/scss/components/_fine-tooltip.scss +84 -0
- package/scss/components/_form-view.scss +58 -20
- package/scss/components/_glass-button.scss +35 -0
- package/scss/components/_glass-prominent-button.scss +46 -0
- package/scss/components/_group-box.scss +27 -0
- package/scss/components/_h-flex-stack.scss +23 -0
- package/scss/components/_h-stack.scss +21 -15
- package/scss/components/_image-view.scss +20 -0
- package/scss/components/_index.scss +40 -20
- package/scss/components/_label-view copy.scss.txt +420 -0
- package/scss/components/_label-view.scss +94 -110
- package/scss/components/_label-view.scss.txt +536 -0
- package/scss/components/_labeled-content.scss +59 -1
- package/scss/components/_list-view.scss +65 -25
- package/scss/components/_menu-view.scss +95 -60
- package/scss/components/_navigation-large-title.scss +17 -0
- package/scss/components/_navigation-split-view.scss +3 -3
- package/scss/components/_picker-view.scss +259 -59
- package/scss/components/_plain-button.scss +7 -0
- package/scss/components/_progress-view.scss +98 -0
- package/scss/components/_scroll-view-proxy.scss +22 -20
- package/scss/components/_scroll-view.scss +4 -0
- package/scss/components/_search-view.scss +22 -0
- package/scss/components/_section-view.scss +23 -22
- package/scss/components/_sheet-view.scss +16 -6
- package/scss/components/_sidebar-toggle.scss +1 -4
- package/scss/components/_sticky-container.scss +1 -1
- package/scss/components/_tab-bar.scss +17 -3
- package/scss/components/_tab-view.scss +4 -2
- package/scss/components/_table-column.scss +2 -0
- package/scss/components/_table-row.scss +69 -1
- package/scss/components/_table-view.scss +22 -14
- package/scss/components/_text-field.scss +37 -17
- package/scss/components/_toggle-view.scss +112 -0
- package/scss/components/_tool-bar-item.scss +34 -82
- package/scss/components/_tool-bar.scss +77 -57
- package/scss/components/_v-stack.scss +9 -2
- package/scss/final/_touch-glass.scss +24 -0
- package/scss/mixins/_button.scss +44 -0
- package/scss/mixins/_color.scss +16 -0
- package/scss/mixins/_dialog.scss +1 -0
- package/scss/mixins/_index.scss +64 -2
- package/scss/placeholders/_buttons.scss +44 -10
- package/scss/placeholders/_lists.scss +133 -126
- package/scss/transitions/_alert-dialog.scss +18 -0
- package/scss/transitions/_confirmation-dialog.scss +8 -0
- package/scss/transitions/_fine-tooltip.scss +21 -0
- package/scss/transitions/_menu-view.scss +17 -15
- package/scss/transitions/_progress-view.scss +23 -0
- package/scss/transitions/_sheet-view.scss +30 -0
- package/scss/transitions/_tab-bar.scss +6 -5
- package/scss/utils/_frame.scss +42 -0
- package/scss/utils/_index.scss +67 -52
- package/scss/utils/_stacks.scss +56 -73
- package/web-components.html-data/en.json +623 -24
- package/generated/confirmation-dialog/index.d.ts +0 -1
- package/generated/confirmation-dialog/index.js +0 -1
- package/generated/lifecycle-observer/index.d.ts +0 -1
- package/generated/lifecycle-observer/index.js +0 -1
- package/scss/transitions/_dialog.scss +0 -28
|
@@ -1,46 +1,51 @@
|
|
|
1
1
|
import { CleanupRegistry } from '../internal/class/cleanup-registry';
|
|
2
|
-
import { onoff } from '../internal/utils';
|
|
2
|
+
import { devFlags, onoff } from '../internal/utils';
|
|
3
3
|
import { DialogBase } from '../namespace-browser/base';
|
|
4
|
-
import { Snapshot } from '../snapshot';
|
|
5
4
|
export class SheetView extends DialogBase {
|
|
6
|
-
static get observedAttributes() {
|
|
7
|
-
return ['fine-presentation-large-adaptation'];
|
|
8
|
-
}
|
|
9
5
|
constructor() {
|
|
10
6
|
super();
|
|
11
7
|
}
|
|
12
8
|
static polyfillDisconnectedCallback(el) {
|
|
13
|
-
|
|
9
|
+
if (devFlags.debug)
|
|
10
|
+
console.debug(`${SheetView.name} ⚡️ disconnect`);
|
|
14
11
|
CleanupRegistry.unregister(el);
|
|
15
12
|
}
|
|
16
13
|
static polyfillConnectedCallback(el) {
|
|
17
|
-
|
|
14
|
+
if (devFlags.debug)
|
|
15
|
+
console.debug(`${SheetView.name} ⚡️ connect`);
|
|
18
16
|
CleanupRegistry.register(el, onoff([
|
|
19
17
|
{ types: 'cancel', listener: this.#handleCancel },
|
|
20
18
|
{ types: 'keydown', listener: SheetView.#handleKeydown },
|
|
21
19
|
], el).on());
|
|
22
20
|
el.autofocus = true;
|
|
23
21
|
}
|
|
24
|
-
static
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
22
|
+
static polyfillAttributeChangedCallback([{ attributeName, target, oldValue }]) {
|
|
23
|
+
if (devFlags.debug)
|
|
24
|
+
console.debug(`${SheetView.name} ⚡️ attr-change [${attributeName}] ("${oldValue}" → "${target.getAttribute(attributeName ?? '')}")`);
|
|
25
|
+
// // NOTE: wait for config
|
|
26
|
+
// Snapshot.waitReady.then(() => {
|
|
27
|
+
// switch (attributeName) {
|
|
28
|
+
// case 'fine-presentation-large-adaptation':
|
|
29
|
+
// const node = target instanceof HTMLDialogElement && target
|
|
30
|
+
// if (!node) break
|
|
31
|
+
// CleanupRegistry.unregister(node, 'mediaquery')
|
|
32
|
+
// if ('bottom-bar' !== target.getAttribute(attributeName ?? '')) break
|
|
33
|
+
// const mediaQueryList = self.matchMedia(`(pointer: fine) and (min-width: ${Snapshot.config!['ipad-sheet-view-inline-size']}) and (min-height: ${Snapshot.config!['ipad-sheet-view-height']})`)
|
|
34
|
+
// SheetView.#handleMediaChange(
|
|
35
|
+
// node,
|
|
36
|
+
// new MediaQueryListEvent(`media-change`, {
|
|
37
|
+
// matches: mediaQueryList.matches,
|
|
38
|
+
// })
|
|
39
|
+
// ) // Initial check
|
|
40
|
+
// const handler1 = SheetView.#handleMediaChange.bind(null, node)
|
|
41
|
+
// CleanupRegistry.register(node, onoff('change', handler1 as unknown as EventListener, mediaQueryList).on(), 'mediaquery')
|
|
42
|
+
// break
|
|
43
|
+
// }
|
|
44
|
+
// })
|
|
41
45
|
}
|
|
42
46
|
static #handleKeydown = (evt) => {
|
|
43
|
-
|
|
47
|
+
if (devFlags.debug)
|
|
48
|
+
console.debug(`${SheetView.name} ⚡️ ${evt?.type} (${evt.key})`);
|
|
44
49
|
if ('Escape' !== evt.key)
|
|
45
50
|
return;
|
|
46
51
|
evt.preventDefault();
|
|
@@ -48,22 +53,10 @@ export class SheetView extends DialogBase {
|
|
|
48
53
|
evt.stopPropagation();
|
|
49
54
|
};
|
|
50
55
|
static #handleCancel = (evt) => {
|
|
51
|
-
|
|
56
|
+
if (devFlags.debug)
|
|
57
|
+
console.debug(`${SheetView.name} ⚡️ ${evt?.type} (${evt.cancelable})`);
|
|
52
58
|
if (!evt.cancelable)
|
|
53
59
|
return;
|
|
54
60
|
evt.preventDefault();
|
|
55
61
|
};
|
|
56
|
-
static #handleMediaChange = (el, evt) => {
|
|
57
|
-
console.debug(`${SheetView.name} ⚡️ ${evt?.type}`);
|
|
58
|
-
if (evt.matches)
|
|
59
|
-
for (const item of el.querySelectorAll(':scope>tool-bar>[slot^="top-bar-"]')) {
|
|
60
|
-
item.dataset.previousSlot = item.getAttribute('slot') ?? '';
|
|
61
|
-
item.slot = 'bottom-bar-trailing';
|
|
62
|
-
}
|
|
63
|
-
else
|
|
64
|
-
for (const item of el.querySelectorAll(':scope>tool-bar>[data-previous-slot]')) {
|
|
65
|
-
item.slot = item.dataset.previousSlot ?? '';
|
|
66
|
-
delete item.dataset.previousSlot;
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
62
|
}
|
|
@@ -1,103 +1,81 @@
|
|
|
1
1
|
var _a;
|
|
2
2
|
import { CleanupRegistry } from '../internal/class/cleanup-registry';
|
|
3
3
|
import { ResizeObserverSingleton } from '../internal/class/resize-observer-singleton';
|
|
4
|
-
import {
|
|
4
|
+
import { debounce, devFlags, onoff } from '../internal/utils';
|
|
5
5
|
const observers = new ResizeObserverSingleton();
|
|
6
6
|
export class SidebarToggle extends HTMLElement {
|
|
7
|
-
// #ro
|
|
8
|
-
// #io
|
|
9
7
|
constructor() {
|
|
10
8
|
super();
|
|
11
|
-
// this.#ro = new ResizeObserver(
|
|
12
|
-
// debounce(this.#handleMeasure.bind(this), 100, true)
|
|
13
|
-
// )
|
|
14
|
-
// this.#io = new IntersectionObserver((entries) => {
|
|
15
|
-
// this._checkVisibility2(entries)
|
|
16
|
-
// })
|
|
17
9
|
}
|
|
18
10
|
connectedCallback() {
|
|
19
|
-
|
|
11
|
+
if (devFlags.debug)
|
|
12
|
+
console.debug(`${_a.name} ⚡️ connect`);
|
|
20
13
|
CleanupRegistry.register(this, onoff('click', this.#handleClick, this).on());
|
|
21
14
|
const entry = {
|
|
22
15
|
target: this,
|
|
23
16
|
};
|
|
24
|
-
// NOTE: wait for config
|
|
25
|
-
// Snapshot.waitReady.then(() => {
|
|
26
17
|
observers.observe(this, debounce(_a.#handleMeasure, 100, true)); //this.#ro?.observe(this)
|
|
27
|
-
// this.#io.observe(this)
|
|
28
18
|
// @ts-expect-error
|
|
29
19
|
_a.#handleMeasure([entry]);
|
|
30
|
-
// })
|
|
31
20
|
}
|
|
32
21
|
disconnectedCallback() {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
22
|
+
if (devFlags.debug)
|
|
23
|
+
console.debug(`${_a.name} ⚡️ disconnect`);
|
|
24
|
+
observers.unobserve(this);
|
|
36
25
|
CleanupRegistry.unregister(this);
|
|
37
26
|
}
|
|
38
27
|
static query(target) {
|
|
39
|
-
const container = target?.closest('navigation-split-view,tab-view'), sideBar = container?.querySelector(':scope
|
|
28
|
+
const container = target?.closest('navigation-split-view,tab-view'), sideBar = container?.querySelector(':scope>[is=sidebar-view]');
|
|
40
29
|
return { container, sideBar };
|
|
41
30
|
}
|
|
42
31
|
// This triggers on show/hide of any of sidebar-toggle elements
|
|
43
32
|
static #handleMeasure(entry) {
|
|
44
|
-
|
|
45
|
-
|
|
33
|
+
if (devFlags.debug)
|
|
34
|
+
console.debug(`${_a.name} ⚡️ measure`);
|
|
35
|
+
const { target } = entry ?? {};
|
|
36
|
+
if (!(target instanceof HTMLElement))
|
|
37
|
+
return;
|
|
46
38
|
// set/remove css var/prop to parent based on shown/hidden
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
//
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
39
|
+
const tv = target.parentElement;
|
|
40
|
+
// inlineSize = entry.borderBoxSize?.at(0)?.inlineSize ?? entry.contentRect?.width ?? 0,
|
|
41
|
+
// blockSize = entry.borderBoxSize?.at(0)?.blockSize ?? entry.contentRect?.height ?? 0
|
|
42
|
+
self.requestAnimationFrame(() => {
|
|
43
|
+
const inlineSize = target.offsetWidth ?? 0;
|
|
44
|
+
if (0 < inlineSize)
|
|
45
|
+
tv?.style?.setProperty?.('--sidebar-toggle-padding-inline-start', `${inlineSize}px`); //$.prop('--sidebar-toggle-padding-inline-start', `${inlineSize}px`, tv) //
|
|
46
|
+
else
|
|
47
|
+
tv?.style?.removeProperty?.('--sidebar-toggle-padding-inline-start'); //$.prop('--sidebar-toggle-padding-inline-start', null, tv) //
|
|
48
|
+
});
|
|
57
49
|
// auto close IF open
|
|
58
|
-
// for (const { target } of entries) {
|
|
59
50
|
const { container, sideBar } = _a.query(target); //target?.closest('navigation-split-view,tab-view')
|
|
60
|
-
// const sideBar = container?.querySelector<HTMLDialogElement>(':scope > dialog[is=sidebar-view]')
|
|
61
51
|
if (!sideBar?.open)
|
|
62
52
|
return;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
break;
|
|
81
|
-
}
|
|
82
|
-
sideBar?.close?.();
|
|
83
|
-
// }
|
|
53
|
+
self.requestAnimationFrame(() => {
|
|
54
|
+
switch (container?.tagName) {
|
|
55
|
+
case 'NAVIGATION-SPLIT-VIEW':
|
|
56
|
+
if (0 < target.offsetWidth && 0 < target.offsetHeight)
|
|
57
|
+
return;
|
|
58
|
+
break;
|
|
59
|
+
case 'TAB-VIEW':
|
|
60
|
+
// scan all toggles for anyone that is visible, sign that sidebar should stay open
|
|
61
|
+
if ([
|
|
62
|
+
...container.querySelectorAll(':scope > sidebar-toggle,:scope > [is=tab-bar] > sidebar-toggle' //,:scope > [is='sidebar-view'] > tool-bar > sidebar-toggle" ?? FIXME: removed this bc/ inside sidebar!
|
|
63
|
+
),
|
|
64
|
+
].some(({ offsetWidth, offsetHeight }) => 0 < offsetWidth && 0 < offsetHeight))
|
|
65
|
+
return;
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
sideBar?.close?.();
|
|
69
|
+
});
|
|
84
70
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
#handleClick(evt) {
|
|
91
|
-
console.debug(`${_a.name} ⚡️ ${evt?.type}`);
|
|
92
|
-
const target = evt.target;
|
|
71
|
+
#handleClick({ target, type }) {
|
|
72
|
+
if (devFlags.debug)
|
|
73
|
+
console.debug(`${_a.name} ⚡️ ${type}`);
|
|
74
|
+
if (!(target instanceof HTMLElement))
|
|
75
|
+
return;
|
|
93
76
|
if (!target?.closest('button'))
|
|
94
77
|
return;
|
|
95
78
|
const { sideBar } = _a.query(target);
|
|
96
|
-
// const container = target?.closest('tab-view,navigation-split-view')
|
|
97
|
-
// const dialog =
|
|
98
|
-
// 'TAB-VIEW' === container?.tagName
|
|
99
|
-
// ? container.querySelector<TabBar>('dialog[is="tab-bar"]')
|
|
100
|
-
// : container?.querySelector<SidebarView>('dialog[is="sidebar-view"]')
|
|
101
79
|
if (!sideBar?.open)
|
|
102
80
|
sideBar?.showModal();
|
|
103
81
|
else
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CleanupRegistry } from '../internal/class/cleanup-registry';
|
|
2
|
-
import { onoff, touchGlass } from '../internal/utils';
|
|
2
|
+
import { devFlags, onoff, touchGlass } from '../internal/utils';
|
|
3
3
|
import { DialogBase } from '../namespace-browser/base';
|
|
4
4
|
export class SidebarView extends DialogBase {
|
|
5
5
|
constructor() {
|
|
@@ -11,19 +11,24 @@ export class SidebarView extends DialogBase {
|
|
|
11
11
|
}
|
|
12
12
|
static polyfillConnectedCallback(el) {
|
|
13
13
|
CleanupRegistry.register(el, onoff('click', SidebarView.#handleClick, el).on());
|
|
14
|
-
CleanupRegistry.register(el, onoff(touchGlass(el, (t) => t, (
|
|
15
|
-
if (
|
|
14
|
+
CleanupRegistry.register(el, onoff(touchGlass(el, (t) => t, ({ target }) => {
|
|
15
|
+
if (!(target instanceof HTMLElement))
|
|
16
|
+
return true;
|
|
17
|
+
if (target.matches('[is=sidebar-view]'))
|
|
16
18
|
return false;
|
|
17
|
-
if (
|
|
19
|
+
if (target.closest('tool-bar-item'))
|
|
18
20
|
return false;
|
|
19
21
|
return true;
|
|
20
22
|
}), el).on());
|
|
21
23
|
el.autofocus = true;
|
|
22
24
|
}
|
|
23
25
|
/** Autoclose on click outside. */
|
|
24
|
-
static #handleClick = async (
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
static #handleClick = async ({ target, type }) => {
|
|
27
|
+
if (devFlags.debug)
|
|
28
|
+
console.debug(`${SidebarView.name} ⚡️ ${type}`);
|
|
29
|
+
if (!(target instanceof HTMLElement))
|
|
30
|
+
return;
|
|
31
|
+
if (target instanceof HTMLDialogElement && 'sidebar-view' === target.getAttribute('is'))
|
|
32
|
+
target.close?.();
|
|
28
33
|
};
|
|
29
34
|
}
|
|
@@ -1,20 +1,24 @@
|
|
|
1
1
|
import { CleanupRegistry } from '../internal/class/cleanup-registry';
|
|
2
|
-
import { onoff } from '../internal/utils';
|
|
2
|
+
import { devFlags, onoff } from '../internal/utils';
|
|
3
3
|
export class StickyContainer extends HTMLElement {
|
|
4
4
|
constructor() {
|
|
5
5
|
super();
|
|
6
6
|
}
|
|
7
7
|
connectedCallback() {
|
|
8
|
-
|
|
8
|
+
if (devFlags.debug)
|
|
9
|
+
console.debug(`${StickyContainer.name} ⚡️ connect`);
|
|
9
10
|
// CleanupRegistry.register(this, onoff('transitionend transitionstart transitioncancel', this.#handleTransitionrun as unknown as EventListener, this).on())
|
|
10
11
|
CleanupRegistry.register(this, onoff('transitionrun', this.#handleTransitionrun, this).on());
|
|
11
12
|
}
|
|
12
13
|
disconnectedCallback() {
|
|
13
|
-
|
|
14
|
+
if (devFlags.debug)
|
|
15
|
+
console.debug(`${StickyContainer.name} ⚡️ disconnect`);
|
|
14
16
|
CleanupRegistry.unregister(this);
|
|
15
17
|
}
|
|
16
18
|
#handleTransitionrun = ({ target, propertyName, pseudoElement }) => {
|
|
17
|
-
if (
|
|
19
|
+
if (!(target instanceof HTMLElement))
|
|
20
|
+
return;
|
|
21
|
+
if ('--stuck' !== propertyName || '::before' !== pseudoElement || !target.matches('sticky-container'))
|
|
18
22
|
return;
|
|
19
23
|
const stuck = self.getComputedStyle(this, 'before').getPropertyValue('--stuck');
|
|
20
24
|
this.toggleAttribute('stuck', '1' === stuck);
|
|
@@ -1,33 +1,43 @@
|
|
|
1
1
|
import { CleanupRegistry } from '../internal/class/cleanup-registry';
|
|
2
|
-
import { onoff, touchGlass } from '../internal/utils';
|
|
2
|
+
import { devFlags, onoff, touchGlass } from '../internal/utils';
|
|
3
3
|
import { DialogBase } from '../namespace-browser/base';
|
|
4
|
+
/**
|
|
5
|
+
* @summary A screen that lets users switch between different views using buttons, tabs, or other controls.
|
|
6
|
+
*/
|
|
4
7
|
export class TabBar extends DialogBase {
|
|
5
8
|
constructor() {
|
|
6
9
|
super();
|
|
7
10
|
}
|
|
8
11
|
static polyfillDisconnectedCallback(el) {
|
|
9
|
-
|
|
12
|
+
if (devFlags.debug)
|
|
13
|
+
console.debug(`${TabBar.name} ⚡️ disconnect`);
|
|
10
14
|
el.removeEventListener('click', TabBar.#handleClick);
|
|
11
15
|
CleanupRegistry.unregister(el);
|
|
12
16
|
}
|
|
13
17
|
static polyfillConnectedCallback(el) {
|
|
14
|
-
|
|
18
|
+
if (devFlags.debug)
|
|
19
|
+
console.debug(`${TabBar.name} ⚡️ connect`);
|
|
15
20
|
el.autofocus = true;
|
|
16
21
|
// Snapshot.waitReadyFor(el).then((r) => {
|
|
17
22
|
// if (!r) return
|
|
18
23
|
CleanupRegistry.register(el, onoff('click', TabBar.#handleClick, el).on());
|
|
19
|
-
CleanupRegistry.register(el, onoff(touchGlass(el, (t) => t, (
|
|
20
|
-
if (
|
|
24
|
+
CleanupRegistry.register(el, onoff(touchGlass(el, (t) => t, ({ target }) => {
|
|
25
|
+
if (!(target instanceof HTMLElement))
|
|
26
|
+
return true;
|
|
27
|
+
if (target.matches('[is=tab-bar]'))
|
|
21
28
|
return false;
|
|
22
|
-
if (
|
|
29
|
+
if (target.closest('tool-bar-item'))
|
|
23
30
|
return false;
|
|
24
31
|
return true;
|
|
25
32
|
}), el).on());
|
|
26
33
|
// })
|
|
27
34
|
}
|
|
28
|
-
static #handleClick = async (
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
35
|
+
static #handleClick = async ({ target, type }) => {
|
|
36
|
+
if (devFlags.debug)
|
|
37
|
+
console.debug(`${TabBar.name} ⚡️ ${type}`);
|
|
38
|
+
if (!(target instanceof HTMLElement))
|
|
39
|
+
return;
|
|
40
|
+
if (target instanceof HTMLDialogElement && 'tab-bar' === target.getAttribute('is'))
|
|
41
|
+
target.close?.();
|
|
32
42
|
};
|
|
33
43
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CleanupRegistry } from '../internal/class/cleanup-registry';
|
|
2
|
-
import { onoff } from '../internal/utils';
|
|
2
|
+
import { devFlags, onoff } from '../internal/utils';
|
|
3
3
|
import { ButtonBase } from '../namespace-browser/base';
|
|
4
4
|
import { TabView } from './tab-view';
|
|
5
5
|
export class TabItem extends ButtonBase {
|
|
@@ -7,11 +7,13 @@ export class TabItem extends ButtonBase {
|
|
|
7
7
|
super();
|
|
8
8
|
}
|
|
9
9
|
static polyfillDisconnectedCallback(btn) {
|
|
10
|
-
|
|
10
|
+
if (devFlags.debug)
|
|
11
|
+
console.debug(`${TabItem.name} ⚡️ disconnect`);
|
|
11
12
|
CleanupRegistry.unregister(btn);
|
|
12
13
|
}
|
|
13
14
|
static polyfillConnectedCallback(btn) {
|
|
14
|
-
|
|
15
|
+
if (devFlags.debug)
|
|
16
|
+
console.debug(`${TabItem.name} ⚡️ connect`);
|
|
15
17
|
Object.assign(btn, {
|
|
16
18
|
tabIndex: 0,
|
|
17
19
|
ariaSelected: 'false',
|
|
@@ -31,7 +33,8 @@ export class TabItem extends ButtonBase {
|
|
|
31
33
|
});
|
|
32
34
|
}
|
|
33
35
|
static #handleTabMoreStackAllowance = async (btn, evt) => {
|
|
34
|
-
|
|
36
|
+
if (devFlags.debug)
|
|
37
|
+
console.debug(`${TabItem.name} ⚡️ ${evt?.type}`);
|
|
35
38
|
const tv = btn.closest('tab-view');
|
|
36
39
|
if (!tv)
|
|
37
40
|
return;
|
|
@@ -40,12 +43,16 @@ export class TabItem extends ButtonBase {
|
|
|
40
43
|
btn.hidden = 'bottom-bar' !== tv.tabBarPlacement;
|
|
41
44
|
};
|
|
42
45
|
static #handleTabRevealOrSwap = async (btn, evt) => {
|
|
43
|
-
|
|
44
|
-
|
|
46
|
+
if (devFlags.debug)
|
|
47
|
+
console.debug(`${TabItem.name} ⚡️ ${evt?.type}`);
|
|
48
|
+
const tv = btn?.closest('tab-view');
|
|
49
|
+
if (!tv)
|
|
45
50
|
return;
|
|
51
|
+
// if (evt.detail?.tag !== btn.value) return
|
|
46
52
|
// await Snapshot.waitReady
|
|
47
|
-
const isSelected = 'tabreveal' === evt?.type
|
|
48
|
-
|
|
53
|
+
const isSelected = tv.selectedTab.map(({ id }) => id).includes(btn.value); //'tabreveal' === evt?.type
|
|
54
|
+
if (`${isSelected}` !== btn.ariaSelected)
|
|
55
|
+
btn.ariaSelected = `${isSelected}`;
|
|
49
56
|
if (!isSelected)
|
|
50
57
|
return;
|
|
51
58
|
setTimeout(() => {
|
|
@@ -58,9 +65,11 @@ export class TabItem extends ButtonBase {
|
|
|
58
65
|
});
|
|
59
66
|
}, 100);
|
|
60
67
|
};
|
|
61
|
-
static #handleClick = async (
|
|
62
|
-
|
|
63
|
-
|
|
68
|
+
static #handleClick = async ({ type, currentTarget: btn }) => {
|
|
69
|
+
if (devFlags.debug)
|
|
70
|
+
console.debug(`${TabItem.name} ⚡️ ${type}`);
|
|
71
|
+
if (!(btn instanceof HTMLElement))
|
|
72
|
+
return;
|
|
64
73
|
// const tag = btn.getAttribute('value')
|
|
65
74
|
// if (!tag) return // sidebartoggle > tab-item //throw new DOMException(`Attribute "tag" is set but invalid`, 'InvalidStateError')
|
|
66
75
|
const tv = btn.closest('tab-view');
|
|
@@ -104,14 +113,16 @@ export class TabItem extends ButtonBase {
|
|
|
104
113
|
for (const tab of tabs.reverse())
|
|
105
114
|
if (tv.selectedTab.includes(tab)) {
|
|
106
115
|
const eventType = 'tabroot';
|
|
107
|
-
|
|
116
|
+
if (devFlags.debug)
|
|
117
|
+
console.debug(`${TabItem.name} 💡 ${eventType}`);
|
|
108
118
|
tab?.dispatchEvent(new CustomEvent(eventType, { bubbles: true, composed: true }));
|
|
109
119
|
return; // skip rest no selection!
|
|
110
120
|
}
|
|
111
121
|
}
|
|
112
122
|
else if ('->' === dir) {
|
|
113
123
|
const eventType = 'tabroot';
|
|
114
|
-
|
|
124
|
+
if (devFlags.debug)
|
|
125
|
+
console.debug(`${TabItem.name} 💡 ${eventType}`);
|
|
115
126
|
tabs.at(0)?.dispatchEvent(new CustomEvent(eventType, { bubbles: true, composed: true }));
|
|
116
127
|
}
|
|
117
128
|
// SECTION: finally, submit new tabs
|
|
@@ -2,7 +2,7 @@ var _a;
|
|
|
2
2
|
import { CleanupRegistry } from '../internal/class/cleanup-registry';
|
|
3
3
|
import { CSSStyleObserver } from '../internal/class/css-style-observer';
|
|
4
4
|
import { NavigationPath } from '../internal/class/navigation-path';
|
|
5
|
-
import { $, cssTime, debounce, frame, onoff, timeout } from '../internal/utils';
|
|
5
|
+
import { $, cssTime, debounce, devFlags, frame, onoff, timeout } from '../internal/utils';
|
|
6
6
|
import { Snapshot } from '../snapshot';
|
|
7
7
|
const TAB_BAR_PLACEMENTS = ['bottom-bar', 'ornament', 'sidebar', 'top-bar'];
|
|
8
8
|
/**
|
|
@@ -25,7 +25,8 @@ export class TabView extends HTMLElement {
|
|
|
25
25
|
this.#debouncedHandler = debounce(this.#handleSelectionChange, 1);
|
|
26
26
|
}
|
|
27
27
|
disconnectedCallback() {
|
|
28
|
-
|
|
28
|
+
if (devFlags.debug)
|
|
29
|
+
console.debug(`${_a.name} ⚡️ disconnect`);
|
|
29
30
|
this.#afterTabRevealDelay.cancel();
|
|
30
31
|
this.#cssStyleObserver?.disconnect();
|
|
31
32
|
CleanupRegistry.unregister(this);
|
|
@@ -37,7 +38,8 @@ export class TabView extends HTMLElement {
|
|
|
37
38
|
return this.querySelector(':scope>navigation-stack:has(> navigation-stack,> navigation-split-view)');
|
|
38
39
|
}
|
|
39
40
|
connectedCallback() {
|
|
40
|
-
|
|
41
|
+
if (devFlags.debug)
|
|
42
|
+
console.debug(`${_a.name} ⚡️ connect`);
|
|
41
43
|
this.#cssStyleObserver = new CSSStyleObserver({
|
|
42
44
|
properties: ['--adaptable-tab-bar-placement-index'],
|
|
43
45
|
});
|
|
@@ -72,8 +74,10 @@ export class TabView extends HTMLElement {
|
|
|
72
74
|
], this).on());
|
|
73
75
|
// })
|
|
74
76
|
}
|
|
75
|
-
#handleSummaryClick = (
|
|
76
|
-
|
|
77
|
+
#handleSummaryClick = ({ target }) => {
|
|
78
|
+
if (!(target instanceof HTMLElement))
|
|
79
|
+
return;
|
|
80
|
+
const summary = target.closest('summary');
|
|
77
81
|
if (!summary)
|
|
78
82
|
return;
|
|
79
83
|
if (0 === $.siblings('[aria-selected=true]', summary).length)
|
|
@@ -86,14 +90,16 @@ export class TabView extends HTMLElement {
|
|
|
86
90
|
const style = self.getComputedStyle(form);
|
|
87
91
|
if ('sidebar' !== style.getPropertyValue('--list-style'))
|
|
88
92
|
return;
|
|
89
|
-
this.#addAnimations();
|
|
93
|
+
this.#addAnimations(new CustomEvent('beforetabreveal', { detail: { tag: '', ms: cssTime(`${this.computedStyleMap().get(`--tabbar-after-tabreveal-duration`)}`) }, bubbles: true, composed: true }));
|
|
90
94
|
};
|
|
91
95
|
#handleTabViewPagereveal = (evt) => {
|
|
92
|
-
|
|
96
|
+
if (devFlags.debug)
|
|
97
|
+
console.debug(`${_a.name} ⚡️ ${evt?.type}`);
|
|
93
98
|
void this.#syncBodyFace();
|
|
94
99
|
};
|
|
95
100
|
#handleStyleChange = () => {
|
|
96
|
-
|
|
101
|
+
if (devFlags.debug)
|
|
102
|
+
console.debug(`${_a.name} ⚡️ style`);
|
|
97
103
|
const style = self.getComputedStyle(this);
|
|
98
104
|
const placement = style.getPropertyValue('--adaptable-tab-bar-placement'), // or do it manually without any computedstyle
|
|
99
105
|
newValue = TAB_BAR_PLACEMENTS.includes(placement) ? placement : 'bottom-bar';
|
|
@@ -108,7 +114,7 @@ export class TabView extends HTMLElement {
|
|
|
108
114
|
}
|
|
109
115
|
};
|
|
110
116
|
// #handleMediaChange: (evt: MediaQueryListEvent) => void = (evt) => {
|
|
111
|
-
// console.debug(`${TabView.name} ⚡️ ${evt?.type}`)
|
|
117
|
+
// if (devFlags.debug) console.debug(`${TabView.name} ⚡️ ${evt?.type}`)
|
|
112
118
|
// if (!evt.matches) return
|
|
113
119
|
// this.#handleStyleChange()
|
|
114
120
|
// // if (evt.matches) {
|
|
@@ -159,7 +165,8 @@ export class TabView extends HTMLElement {
|
|
|
159
165
|
// // }
|
|
160
166
|
// }
|
|
161
167
|
#handleAdaptableTabBarPlacementChange = (evt) => {
|
|
162
|
-
|
|
168
|
+
if (devFlags.debug)
|
|
169
|
+
console.debug(`${_a.name} ⚡️ ${evt?.type}`);
|
|
163
170
|
if ('bottom-bar' !== evt.detail.oldValue)
|
|
164
171
|
return; // button triggers should happen, ONLY when going FROM bottom-bar TO anything else
|
|
165
172
|
const innerSelection = this.moreTab?.querySelector(':scope>navigation-stack:not([hidden]),:scope>navigation-split-view:not([hidden])')?.id;
|
|
@@ -199,28 +206,28 @@ export class TabView extends HTMLElement {
|
|
|
199
206
|
throw new Error('selectedTab[] must be in order of parent>child. You provided an element that contains the previous sibling.');
|
|
200
207
|
//
|
|
201
208
|
const selectors = [':not(:is(:scope>{{tag}}))', ':is(:scope>{{tag}})']; // first nested ones, then root ones
|
|
209
|
+
const ms = cssTime(`${this.computedStyleMap().get(`--tabbar-after-tabreveal-duration`)}`);
|
|
202
210
|
for (const selector of selectors)
|
|
203
211
|
for (const ns of this.querySelectorAll(`navigation-stack:not([hidden])${selector.replace('{{tag}}', 'navigation-stack')},navigation-split-view:not([hidden])${selector.replace('{{tag}}', 'navigation-split-view')}`)) {
|
|
204
212
|
if (!tabs.some((tab) => !ns.contains(tab)))
|
|
205
213
|
continue; // shouldRun
|
|
206
|
-
ns.dispatchEvent(new CustomEvent('beforetabswap', { detail: { tag: ns.id }, bubbles: true, composed: true }));
|
|
214
|
+
ns.dispatchEvent(new CustomEvent('beforetabswap', { detail: { tag: ns.id, ms }, bubbles: true, composed: true }));
|
|
207
215
|
ns.hidden = true; // triggers
|
|
208
216
|
}
|
|
209
217
|
for (const selector of selectors.reverse())
|
|
210
218
|
for (const ns of this.querySelectorAll(`navigation-stack[hidden]${selector.replace('{{tag}}', 'navigation-stack')},navigation-split-view[hidden]${selector.replace('{{tag}}', 'navigation-split-view')}`)) {
|
|
211
219
|
if (!tabs.some((tab) => ns.contains(tab)))
|
|
212
220
|
continue; // shouldRun
|
|
213
|
-
ns.dispatchEvent(new CustomEvent('beforetabreveal', { detail: { tag: ns.id }, bubbles: true, composed: true }));
|
|
221
|
+
ns.dispatchEvent(new CustomEvent('beforetabreveal', { detail: { tag: ns.id, ms }, bubbles: true, composed: true }));
|
|
214
222
|
ns.hidden = false; // triggers
|
|
215
223
|
}
|
|
216
224
|
}
|
|
217
|
-
#addAnimations = () => {
|
|
225
|
+
#addAnimations = (evt) => {
|
|
218
226
|
this.setAttribute('js-aftertabreveal', '');
|
|
227
|
+
// const ms = cssTime(`${this.computedStyleMap().get(`--tabbar-after-tabreveal-duration`)}`)
|
|
219
228
|
this.#afterTabRevealDelay.next(() => {
|
|
220
229
|
this.removeAttribute('js-aftertabreveal');
|
|
221
|
-
},
|
|
222
|
-
// this.removeAttribute('js-aftertabreveal')
|
|
223
|
-
// this.#afterTabRevealDelay = undefined
|
|
230
|
+
}, evt.detail.ms);
|
|
224
231
|
};
|
|
225
232
|
#handleSelectionChange = (evt) => {
|
|
226
233
|
this.#triggerToggleEvent(evt);
|
|
@@ -228,7 +235,8 @@ export class TabView extends HTMLElement {
|
|
|
228
235
|
#triggerToggleEvent = (evt) => {
|
|
229
236
|
const eventType = 'tab-view:toggle';
|
|
230
237
|
void this.#syncBodyFace();
|
|
231
|
-
|
|
238
|
+
if (devFlags.debug)
|
|
239
|
+
console.debug(`${_a.name} 💡 ${eventType}`);
|
|
232
240
|
this.dispatchEvent(new CustomEvent(eventType, { detail: { selection: this.selectedTab }, bubbles: true, composed: true }));
|
|
233
241
|
};
|
|
234
242
|
#syncBodyFace = async () => {
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @summary Display selectable, sortable data arranged in rows and columns.
|
|
3
|
+
*
|
|
4
|
+
* @attr {title:trailing:subtitle|trailing:title:subtitle|title:subtitle:trailing|*} preferred-compact-template - Sets the template areas when the table is in compact mode
|
|
5
|
+
*/
|
|
1
6
|
export declare class TableView extends HTMLElement {
|
|
2
7
|
#private;
|
|
3
8
|
static get template(): DocumentFragment;
|