@swiftwc/ui 0.0.0-dev.92 → 0.0.0-dev.94
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/components/alert-dialog.d.ts +1 -2
- package/generated/components/alert-dialog.js +1 -2
- package/generated/components/body-view.d.ts +8 -0
- package/generated/components/body-view.js +3 -0
- package/generated/components/bordered-button.d.ts +2 -2
- package/generated/components/bordered-button.js +2 -2
- package/generated/components/bordered-prominent-button.d.ts +2 -2
- package/generated/components/bordered-prominent-button.js +2 -2
- package/generated/components/borderless-button.d.ts +2 -2
- package/generated/components/borderless-button.js +2 -2
- package/generated/components/color-scheme.d.ts +5 -0
- package/generated/components/content-unavailable.d.ts +30 -0
- package/generated/components/{content-unavailable-view.js → content-unavailable.js} +8 -8
- package/generated/components/date-picker.d.ts +10 -5
- package/generated/components/date-picker.js +19 -11
- package/generated/components/fine-tooltip.d.ts +5 -0
- package/generated/components/form-view.d.ts +5 -0
- package/generated/components/glass-button.d.ts +2 -2
- package/generated/components/glass-button.js +2 -2
- package/generated/components/glass-prominent-button.d.ts +2 -2
- package/generated/components/glass-prominent-button.js +2 -2
- package/generated/components/h-stack.d.ts +6 -1
- package/generated/components/h-stack.js +1 -1
- package/generated/components/image-view.d.ts +5 -0
- package/generated/components/index.d.ts +1 -1
- package/generated/components/index.js +1 -1
- package/generated/components/label-view.d.ts +8 -2
- package/generated/components/label-view.js +19 -5
- package/generated/components/labeled-content.d.ts +5 -0
- package/generated/components/labeled-content.js +14 -4
- package/generated/components/list-view.d.ts +5 -0
- package/generated/components/list-view.js +0 -12
- package/generated/components/menu-view.d.ts +6 -1
- package/generated/components/menu-view.js +2 -8
- package/generated/components/navigation-large-title.d.ts +5 -0
- package/generated/components/navigation-split-view.d.ts +5 -0
- package/generated/components/navigation-stack.d.ts +5 -0
- package/generated/components/navigation-stack.js +0 -2
- package/generated/components/navigation-title.d.ts +5 -0
- package/generated/components/navigation-title.js +0 -9
- package/generated/components/picker-view.d.ts +10 -4
- package/generated/components/picker-view.js +18 -15
- package/generated/components/progress-view.d.ts +5 -0
- package/generated/components/progress-view.js +1 -1
- package/generated/components/scroll-view-proxy.d.ts +5 -0
- package/generated/components/scroll-view.d.ts +5 -0
- package/generated/components/scroll-view.js +0 -1
- package/generated/components/search-view.d.ts +5 -0
- package/generated/components/search-view.js +0 -3
- package/generated/components/section-view.d.ts +6 -1
- package/generated/components/section-view.js +3 -48
- package/generated/components/sheet-view.js +0 -20
- package/generated/components/sidebar-toggle.d.ts +6 -1
- package/generated/components/sidebar-toggle.js +6 -6
- package/generated/components/sidebar-view.js +1 -1
- package/generated/components/sticky-container.d.ts +6 -1
- package/generated/components/sticky-container.js +5 -5
- package/generated/components/tab-bar.js +0 -3
- package/generated/components/tab-view.d.ts +7 -2
- package/generated/components/tab-view.js +0 -70
- package/generated/components/table-view.d.ts +5 -0
- package/generated/components/table-view.js +2 -2
- package/generated/components/text-field.d.ts +10 -5
- package/generated/components/text-field.js +39 -17
- package/generated/components/toggle-view.d.ts +13 -4
- package/generated/components/toggle-view.js +16 -12
- package/generated/components/tool-bar-item-group.d.ts +5 -0
- package/generated/components/tool-bar-item.d.ts +5 -0
- package/generated/components/tool-bar.d.ts +5 -0
- package/generated/components/v-keyboard.d.ts +5 -0
- package/generated/components/v-stack.d.ts +6 -1
- package/generated/components/v-stack.js +1 -1
- package/generated/css/index.css +24 -17
- package/generated/events/alert-dialog.d.ts +3 -1
- package/generated/events/confirmation-dialog.d.ts +3 -1
- package/generated/events/date-picker.d.ts +3 -1
- package/generated/events/lifecycle-observer.d.ts +6 -2
- package/generated/events/picker-view.d.ts +12 -4
- package/generated/events/scroll-view.d.ts +6 -2
- package/generated/events/scroll-view.js +0 -4
- package/generated/events/tab-view.d.ts +24 -8
- package/generated/events/text-field.d.ts +3 -1
- package/generated/events/text-field.js +0 -3
- package/generated/events/toggle-view.d.ts +3 -1
- package/generated/events/toggle-view.js +0 -3
- package/generated/internal/class/form-associated-base.js +1 -1
- package/generated/internal/utils/ensure-placeholder.js +0 -55
- package/generated/internal/utils/kebab-case.js +6 -9
- package/package.json +1 -1
- package/scss/_components.scss +1 -1
- package/scss/components/{_content-unavailable-view.scss → _content-unavailable.scss} +1 -1
- package/scss/components/_index.scss +5 -4
- package/scss/components/_labeled-content.scss +8 -0
- package/scss/components/_navigation-title.scss +1 -1
- package/scss/components/_toggle-view.scss +1 -1
- package/web-components.html-data/en.json +89 -31
- package/generated/components/content-unavailable-view.d.ts +0 -25
|
@@ -3,7 +3,7 @@ import { CleanupRegistry } from '../internal/class/cleanup-registry';
|
|
|
3
3
|
import { $, devFlags, onoff, touchGlass } from '../internal/utils';
|
|
4
4
|
import { html, queryMorph } from '../morphdom';
|
|
5
5
|
/**
|
|
6
|
-
* @summary A control
|
|
6
|
+
* @summary A control that opens a menu of actions.
|
|
7
7
|
*
|
|
8
8
|
* @slot — The default slot.
|
|
9
9
|
* @slot label
|
|
@@ -62,19 +62,13 @@ export class MenuView extends HTMLElement {
|
|
|
62
62
|
}
|
|
63
63
|
break;
|
|
64
64
|
case 'label':
|
|
65
|
-
queryMorph('[slot=label]', html `<label-view slot="label">${newValue ? html `<span>${newValue}</span>` : null}</label-view>`, this);
|
|
65
|
+
queryMorph('[slot=label]', html `<label-view slot="label">${newValue ? html `<span>${newValue}</span>` : null}</label-view>`, this);
|
|
66
66
|
break;
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
disconnectedCallback() {
|
|
70
70
|
if (devFlags.debug)
|
|
71
71
|
console.debug(`${_a.name} ⚡️ disconnect`);
|
|
72
|
-
// const dialog = this.#shadowRoot.querySelector('dialog'),
|
|
73
|
-
// trigger = this.#shadowRoot.querySelector('button')
|
|
74
|
-
// trigger?.removeEventListener('click', this.#handleTriggerClick)
|
|
75
|
-
// dialog?.removeEventListener('click', this.#handleDialogClick)
|
|
76
|
-
// dialog?.removeEventListener('close', this.#handleDialogClose)
|
|
77
|
-
// dialog?.removeEventListener('cancel', this.#handleDialogCancel)
|
|
78
72
|
const summaryPart = this.#shadowRoot.querySelector('[part*=menu-summary]'), dialogPart = this.#shadowRoot.querySelector('[part*=menu-dialog]');
|
|
79
73
|
summaryPart?.style.removeProperty('anchor-name'); //$.prop('anchor-name', null, summaryPart)
|
|
80
74
|
dialogPart?.style.removeProperty('position-anchor'); //$.prop('position-anchor', null, dialogPart)
|
|
@@ -11,12 +11,10 @@ export class NavigationStack extends NavigationView {
|
|
|
11
11
|
if (devFlags.debug)
|
|
12
12
|
console.debug(`${NavigationStack.name} ⚡️ attr-change [${name}] ("${oldValue}" → "${newValue}")`);
|
|
13
13
|
super.attributeChangedCallback(name, oldValue, newValue);
|
|
14
|
-
// Snapshot.waitReady.then(() => {
|
|
15
14
|
switch (name) {
|
|
16
15
|
case 'hidden':
|
|
17
16
|
break;
|
|
18
17
|
}
|
|
19
|
-
// })
|
|
20
18
|
}
|
|
21
19
|
disconnectedCallback() {
|
|
22
20
|
if (devFlags.debug)
|
|
@@ -29,8 +29,6 @@ let NavigationTitle = NavigationTitle_1 = class NavigationTitle extends HTMLElem
|
|
|
29
29
|
console.debug(`${NavigationTitle_1.name} ⚡️ connect`);
|
|
30
30
|
}
|
|
31
31
|
#render = (title, subtitle, systemImage, systemImageWeight) => {
|
|
32
|
-
// const container = this.querySelector(':scope>:not([slot])') ?? this.appendChild(document.createElement('navigation-large-title'))
|
|
33
|
-
// render(template, container)
|
|
34
32
|
queryMorph(':not([slot])', html `
|
|
35
33
|
<navigation-large-title>
|
|
36
34
|
<v-stack alignment="fill">
|
|
@@ -50,13 +48,6 @@ let NavigationTitle = NavigationTitle_1 = class NavigationTitle extends HTMLElem
|
|
|
50
48
|
</v-stack>
|
|
51
49
|
</navigation-large-title>
|
|
52
50
|
`, this);
|
|
53
|
-
// const titleTemplate = `<label-view line-limit="1" truncation-mode="tail" font="headline"><span></span></label-view>`,
|
|
54
|
-
// subtitleTemplate = `<label-view line-limit="1" truncation-mode="tail" foreground="secondary" font="callout"><span></span></label-view>`,
|
|
55
|
-
// vStactTemplate = `<v-stack spacing="0" alignment="fill">${titleTemplate}${subtitleTemplate}</v-stack>`
|
|
56
|
-
// const el = this.querySelector(':scope>:not([slot])') ?? this.appendChild($(`<navigation-large-title>${vStactTemplate}</navigation-large-title>`, '>1')),
|
|
57
|
-
// vStack = el.querySelector(':scope>v-stack') ?? el.appendChild($(vStactTemplate, '>1'))
|
|
58
|
-
// renderLabel(':scope>label-view:nth-child(1)', titleTemplate, vStack, title)
|
|
59
|
-
// renderLabel(':scope>label-view:nth-child(2)', subtitleTemplate, vStack, subtitle)
|
|
60
51
|
};
|
|
61
52
|
};
|
|
62
53
|
NavigationTitle = NavigationTitle_1 = __decorate([
|
|
@@ -10,6 +10,7 @@ export type DictEntry = {
|
|
|
10
10
|
};
|
|
11
11
|
export type Dictionary = DictEntry[];
|
|
12
12
|
/**
|
|
13
|
+
* @summary A control that selects one value from a set of options.
|
|
13
14
|
*
|
|
14
15
|
* @attr {menu|inline|navigation-link|sheet|automatic} picker-style
|
|
15
16
|
*
|
|
@@ -50,13 +51,18 @@ export declare class PickerView extends FormAssociatedBase {
|
|
|
50
51
|
get pickerStyle(): PickerStyle;
|
|
51
52
|
/**
|
|
52
53
|
* Form participation property
|
|
53
|
-
* @type {string}
|
|
54
54
|
*/
|
|
55
55
|
get name(): string;
|
|
56
56
|
setValidity: (flags?: ValidityStateFlags, message?: string, anchor?: HTMLElement) => void;
|
|
57
57
|
setCustomValidity: (message: string) => void;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
formStateRestoreCallback(state: string, reason: string): void;
|
|
59
|
+
formAssociatedCallback(form: HTMLFormElement): void;
|
|
60
|
+
formDisabledCallback(disabled: boolean): void;
|
|
61
|
+
formResetCallback(): void;
|
|
62
|
+
}
|
|
63
|
+
declare global {
|
|
64
|
+
interface HTMLElementTagNameMap {
|
|
65
|
+
'picker-view': PickerView;
|
|
66
|
+
}
|
|
61
67
|
}
|
|
62
68
|
export {};
|
|
@@ -116,6 +116,7 @@ const indexGroups = (nodes, parentPath = '') => {
|
|
|
116
116
|
};
|
|
117
117
|
const collectLeafValues = (node) => (node.children.length ? node.children.flatMap(collectLeafValues) : [node.value]);
|
|
118
118
|
/**
|
|
119
|
+
* @summary A control that selects one value from a set of options.
|
|
119
120
|
*
|
|
120
121
|
* @attr {menu|inline|navigation-link|sheet|automatic} picker-style
|
|
121
122
|
*
|
|
@@ -437,7 +438,7 @@ export class PickerView extends FormAssociatedBase {
|
|
|
437
438
|
const value = this.getAttribute(this.constructor.ATTR.LABEL);
|
|
438
439
|
if (value) {
|
|
439
440
|
const hStack = $(`<h-stack distribution="leading" template="auto spacer"><label-view data-role="check" style="visibility: hidden"><image-view slot="icon" system-name="check"></image-view></label-view><label-view><span></span></label-view></h-stack>`, '>1');
|
|
440
|
-
queryMorph('label-view:nth-child(2)', htmx `<label-view>${value ? htmx `<span>${value}</span>` : null}</label-view>`, hStack);
|
|
441
|
+
queryMorph('label-view:nth-child(2)', htmx `<label-view>${value ? htmx `<span>${value}</span>` : null}</label-view>`, hStack);
|
|
441
442
|
// if (label) renderLabelTitle(label, value) //label.setAttribute('title', value)
|
|
442
443
|
section.insertAdjacentElement('beforeend', hStack);
|
|
443
444
|
}
|
|
@@ -984,7 +985,7 @@ export class PickerView extends FormAssociatedBase {
|
|
|
984
985
|
#reflectLabel(value) {
|
|
985
986
|
if (devFlags.debug)
|
|
986
987
|
console.debug(`${_a.name} #reflectLabel`);
|
|
987
|
-
queryMorph('[slot=label]', htmx `<label-view slot="label">${value ? htmx `<span>${value}</span>` : null}</label-view>`, this);
|
|
988
|
+
queryMorph('[slot=label]', htmx `<label-view slot="label">${value ? htmx `<span>${value}</span>` : null}</label-view>`, this);
|
|
988
989
|
this.#renderSlotted([]);
|
|
989
990
|
}
|
|
990
991
|
#reflectSelectionOnButtons() {
|
|
@@ -1032,8 +1033,8 @@ export class PickerView extends FormAssociatedBase {
|
|
|
1032
1033
|
// if (!cvl) currentValueLabel.setAttribute('foreground', 'secondary')
|
|
1033
1034
|
// else currentValueLabel.removeAttribute('foreground')
|
|
1034
1035
|
const title = this.#currentValueLabel || this.#selection || this.getAttribute(this.constructor.ATTR.PLACEHOLDER), systemImage = this.#currentValueIcon || this.getAttribute(this.constructor.ATTR.PLACEHOLDER_ICON);
|
|
1035
|
-
queryMorph(':not([slot])', htmx `<span>${title}</span>`, currentValueLabel, { removeIf: !title });
|
|
1036
|
-
queryMorph('[slot=icon]', htmx `<image-view slot="icon" system-name="${systemImage}"></image-view>`, currentValueLabel, { removeIf: !systemImage });
|
|
1036
|
+
queryMorph(':not([slot])', htmx `<span>${title}</span>`, currentValueLabel, { removeIf: !title });
|
|
1037
|
+
queryMorph('[slot=icon]', htmx `<image-view slot="icon" system-name="${systemImage}"></image-view>`, currentValueLabel, { removeIf: !systemImage });
|
|
1037
1038
|
// morph(
|
|
1038
1039
|
// htmx`<label-view>${systemImage ? htmx`<image-view slot="icon" system-name="${systemImage}"></image-view>` : null}${title ? htmx`<span>${title}</span>` : null}</label-view>`,
|
|
1039
1040
|
// currentValueLabel
|
|
@@ -1047,8 +1048,8 @@ export class PickerView extends FormAssociatedBase {
|
|
|
1047
1048
|
// if (!cvl) currentValueLabel.setAttribute('foreground', 'secondary')
|
|
1048
1049
|
// else currentValueLabel.removeAttribute('foreground')
|
|
1049
1050
|
const title = this.#currentValueLabel || this.#selection || this.getAttribute(this.constructor.ATTR.PLACEHOLDER), systemImage = this.#currentValueIcon || this.getAttribute(this.constructor.ATTR.PLACEHOLDER_ICON);
|
|
1050
|
-
queryMorph(':not([slot])', htmx `<span>${title}</span>`, currentValueLabel, { removeIf: !title });
|
|
1051
|
-
queryMorph('[slot=icon]', htmx `<image-view slot="icon" system-name="${systemImage}"></image-view>`, currentValueLabel, { removeIf: !systemImage });
|
|
1051
|
+
queryMorph(':not([slot])', htmx `<span>${title}</span>`, currentValueLabel, { removeIf: !title });
|
|
1052
|
+
queryMorph('[slot=icon]', htmx `<image-view slot="icon" system-name="${systemImage}"></image-view>`, currentValueLabel, { removeIf: !systemImage });
|
|
1052
1053
|
// morph(
|
|
1053
1054
|
// htmx`<label-view slot="label">${systemImage ? htmx`<image-view slot="icon" system-name="${systemImage}"></image-view>` : null}${title ? htmx`<span>${title}</span>` : null}</label-view>`,
|
|
1054
1055
|
// currentValueLabel
|
|
@@ -1087,7 +1088,6 @@ export class PickerView extends FormAssociatedBase {
|
|
|
1087
1088
|
}
|
|
1088
1089
|
/**
|
|
1089
1090
|
* Form participation property
|
|
1090
|
-
* @type {string}
|
|
1091
1091
|
*/
|
|
1092
1092
|
get name() {
|
|
1093
1093
|
return this.getAttribute('name') ?? this.getAttribute('label') ?? this.querySelector(':scope>[slot=label]')?.textContent ?? '';
|
|
@@ -1132,18 +1132,21 @@ export class PickerView extends FormAssociatedBase {
|
|
|
1132
1132
|
else
|
|
1133
1133
|
this.#sendValueToForm(false);
|
|
1134
1134
|
};
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
}
|
|
1138
|
-
|
|
1135
|
+
formStateRestoreCallback(state, reason) {
|
|
1136
|
+
//
|
|
1137
|
+
}
|
|
1138
|
+
formAssociatedCallback(form) {
|
|
1139
|
+
this.#sendValueToForm(false);
|
|
1140
|
+
}
|
|
1141
|
+
formDisabledCallback(disabled) {
|
|
1139
1142
|
for (const btn of this.#shadowRoot.querySelectorAll('button'))
|
|
1140
1143
|
btn.toggleAttribute('disabled', !disabled);
|
|
1141
|
-
}
|
|
1142
|
-
formResetCallback
|
|
1144
|
+
}
|
|
1145
|
+
formResetCallback() {
|
|
1143
1146
|
this.#selection = '';
|
|
1144
1147
|
this.#reflectSelectionOnButtons();
|
|
1145
1148
|
this.#reflectSelectionOnCurrentValueLabel();
|
|
1146
|
-
this.#sendValueToForm();
|
|
1147
|
-
}
|
|
1149
|
+
this.#sendValueToForm(false);
|
|
1150
|
+
}
|
|
1148
1151
|
}
|
|
1149
1152
|
_a = PickerView;
|
|
@@ -72,7 +72,7 @@ export class ProgressView extends HTMLElement {
|
|
|
72
72
|
break;
|
|
73
73
|
}
|
|
74
74
|
case 'current-value-label': {
|
|
75
|
-
queryMorph('[slot=current-value]', html `<label-view slot="current-value" font="callout" foreground="secondary">${newValue ? html `<span>${newValue}</span>` : null}</label-view>`, this);
|
|
75
|
+
queryMorph('[slot=current-value]', html `<label-view slot="current-value" font="callout" foreground="secondary">${newValue ? html `<span>${newValue}</span>` : null}</label-view>`, this);
|
|
76
76
|
break;
|
|
77
77
|
}
|
|
78
78
|
}
|
|
@@ -5,3 +5,8 @@ export declare class SearchView extends InputBase {
|
|
|
5
5
|
static polyfillConnectedCallback(el: InputBase): void;
|
|
6
6
|
static polyfillAttributeChangedCallback([{ attributeName, target, oldValue }]: Pick<MutationRecord, 'attributeName' | 'oldValue' | 'target'>[]): void;
|
|
7
7
|
}
|
|
8
|
+
declare global {
|
|
9
|
+
interface HTMLElementTagNameMap {
|
|
10
|
+
'search-view': SearchView;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -2,9 +2,6 @@ import { CleanupRegistry } from '../internal/class/cleanup-registry';
|
|
|
2
2
|
import { devFlags, onoff, touchGlass } from '../internal/utils';
|
|
3
3
|
import { InputBase } from '../namespace-browser/base';
|
|
4
4
|
export class SearchView extends InputBase {
|
|
5
|
-
// static get observedAttributes() {
|
|
6
|
-
// return ['role', 'title-key']
|
|
7
|
-
// }
|
|
8
5
|
constructor() {
|
|
9
6
|
super();
|
|
10
7
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @summary A container view that
|
|
2
|
+
* @summary A container view that groups related content together.
|
|
3
3
|
*
|
|
4
4
|
* @slot — The default slot.
|
|
5
5
|
* @slot header
|
|
@@ -14,3 +14,8 @@ export declare class SectionView extends HTMLElement {
|
|
|
14
14
|
disconnectedCallback(): void;
|
|
15
15
|
connectedCallback(): void;
|
|
16
16
|
}
|
|
17
|
+
declare global {
|
|
18
|
+
interface HTMLElementTagNameMap {
|
|
19
|
+
'section-view': SectionView;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { $, devFlags } from '../internal/utils';
|
|
2
2
|
import { html, queryMorph } from '../morphdom';
|
|
3
3
|
/**
|
|
4
|
-
* @summary A container view that
|
|
4
|
+
* @summary A container view that groups related content together.
|
|
5
5
|
*
|
|
6
6
|
* @slot — The default slot.
|
|
7
7
|
* @slot header
|
|
@@ -26,84 +26,39 @@ export class SectionView extends HTMLElement {
|
|
|
26
26
|
// <div class="sticky-sentinel" style="grid-area:sentinel;inline-size:100%;block-size:0.1px;pointer-events:none;"></div>
|
|
27
27
|
}
|
|
28
28
|
#shadowRoot;
|
|
29
|
-
// #observer?: IntersectionObserver
|
|
30
|
-
// #sibling?: HTMLElement
|
|
31
|
-
// #sentinel?: HTMLElement
|
|
32
|
-
// #sentinelIsIntersecting: boolean = false
|
|
33
|
-
// #isIntersecting: boolean = false
|
|
34
29
|
constructor() {
|
|
35
30
|
super();
|
|
36
31
|
this.#shadowRoot = this.attachShadow({ mode: 'closed' });
|
|
37
|
-
// Snapshot.waitReady.then(() => {
|
|
38
32
|
this.#shadowRoot.appendChild(document.importNode(this.constructor.template, true));
|
|
39
|
-
// this.#sentinel = this.#shadowRoot.querySelector('.sticky-sentinel') ?? undefined
|
|
40
|
-
// })
|
|
41
33
|
}
|
|
42
34
|
attributeChangedCallback(name, oldValue, newValue) {
|
|
43
35
|
if (devFlags.debug)
|
|
44
36
|
console.debug(`${SectionView.name} ⚡️ attr-change [${name}] ("${oldValue}" → "${newValue}")`);
|
|
45
|
-
// Snapshot.waitReady.then(() => {
|
|
46
37
|
switch (name) {
|
|
47
38
|
case 'header':
|
|
48
|
-
// if (!newValue) {
|
|
49
|
-
// this.querySelector(':scope>[slot=header]')?.remove()
|
|
50
|
-
// break
|
|
51
|
-
// }
|
|
52
|
-
// const header = this.querySelector(':scope>[slot=header]') ?? this.appendChild(Object.assign(document.createElement('header'), { slot: 'header' }))
|
|
53
39
|
queryMorph('[slot=header]', html `<header slot="header">
|
|
54
40
|
<label-view line-limit="1" truncation-mode="tail" font="callout">
|
|
55
41
|
<span>${newValue}</span>
|
|
56
42
|
</label-view>
|
|
57
43
|
</header>`, this, { removeIf: !newValue });
|
|
58
|
-
// render(
|
|
59
|
-
// html`<label-view line-limit="1" truncation-mode="tail" font="callout">
|
|
60
|
-
// <span>${newValue}</span>
|
|
61
|
-
// </label-view>`,
|
|
62
|
-
// header
|
|
63
|
-
// )
|
|
64
44
|
break;
|
|
65
45
|
case 'footer':
|
|
66
|
-
// if (!newValue) {
|
|
67
|
-
// this.querySelector(':scope>[slot=footer]')?.remove()
|
|
68
|
-
// break
|
|
69
|
-
// }
|
|
70
|
-
// const footer = this.querySelector(':scope>[slot=footer]') ?? this.appendChild(Object.assign(document.createElement('footer'), { slot: 'footer' }))
|
|
71
46
|
queryMorph('[slot=footer]', html `<footer slot="footer">
|
|
72
47
|
<label-view line-limit="1" truncation-mode="tail" font="callout">
|
|
73
48
|
<span>${newValue}</span>
|
|
74
49
|
</label-view>
|
|
75
50
|
</footer>`, this, { removeIf: !newValue });
|
|
76
|
-
// render(
|
|
77
|
-
// html`<label-view line-limit="1" truncation-mode="tail" font="callout">
|
|
78
|
-
// <span>${newValue}</span>
|
|
79
|
-
// </label-view>`,
|
|
80
|
-
// footer
|
|
81
|
-
// )
|
|
82
51
|
break;
|
|
83
52
|
}
|
|
84
|
-
// })
|
|
85
53
|
}
|
|
86
54
|
disconnectedCallback() {
|
|
87
55
|
if (devFlags.debug)
|
|
88
56
|
console.debug(`${SectionView.name} ⚡️ disconnect`);
|
|
89
|
-
//
|
|
90
|
-
// this.#observer?.unobserve(this)
|
|
57
|
+
//
|
|
91
58
|
}
|
|
92
59
|
connectedCallback() {
|
|
93
60
|
if (devFlags.debug)
|
|
94
61
|
console.debug(`${SectionView.name} ⚡️ connect`);
|
|
95
|
-
//
|
|
96
|
-
// Snapshot.waitReady.then(() => {
|
|
97
|
-
// if (!(await frame(this))) return // NOTE: Required or BREAKS transitions // self.requestAnimationFrame(() => {
|
|
98
|
-
// const blockSizeProp = getComputedStyle(this).getPropertyValue('--navigation-bar-block-size') || '0', //`${document.documentElement.computedStyleMap().get(`--navigation-bar-block-size`) ?? '0'}`, //
|
|
99
|
-
// blockSize = parseFloat(blockSizeProp) * (blockSizeProp.endsWith('rem') ? parseFloat(getComputedStyle(document.documentElement).fontSize) : 1)
|
|
100
|
-
// this.#observer = new IntersectionObserver(this.#handleIntersect, {
|
|
101
|
-
// root: this.#sibling,
|
|
102
|
-
// rootMargin: `-${blockSize}px 0px 0px 0px`,
|
|
103
|
-
// threshold: [0, 1],
|
|
104
|
-
// })
|
|
105
|
-
// if (this.#sentinel) this.#observer.observe(this.#sentinel)
|
|
106
|
-
// this.#observer.observe(this)
|
|
107
|
-
// })
|
|
62
|
+
//
|
|
108
63
|
}
|
|
109
64
|
}
|
|
@@ -22,26 +22,6 @@ export class SheetView extends DialogBase {
|
|
|
22
22
|
static polyfillAttributeChangedCallback([{ attributeName, target, oldValue }]) {
|
|
23
23
|
if (devFlags.debug)
|
|
24
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
|
-
// })
|
|
45
25
|
}
|
|
46
26
|
static #handleKeydown = (evt) => {
|
|
47
27
|
if (devFlags.debug)
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
export declare class SidebarToggle extends HTMLElement {
|
|
2
2
|
#private;
|
|
3
3
|
constructor();
|
|
4
|
-
connectedCallback(): void;
|
|
5
4
|
disconnectedCallback(): void;
|
|
5
|
+
connectedCallback(): void;
|
|
6
6
|
private static query;
|
|
7
7
|
}
|
|
8
|
+
declare global {
|
|
9
|
+
interface HTMLElementTagNameMap {
|
|
10
|
+
'sidebar-toggle': SidebarToggle;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -7,6 +7,12 @@ export class SidebarToggle extends HTMLElement {
|
|
|
7
7
|
constructor() {
|
|
8
8
|
super();
|
|
9
9
|
}
|
|
10
|
+
disconnectedCallback() {
|
|
11
|
+
if (devFlags.debug)
|
|
12
|
+
console.debug(`${_a.name} ⚡️ disconnect`);
|
|
13
|
+
observers.unobserve(this);
|
|
14
|
+
CleanupRegistry.unregister(this);
|
|
15
|
+
}
|
|
10
16
|
connectedCallback() {
|
|
11
17
|
if (devFlags.debug)
|
|
12
18
|
console.debug(`${_a.name} ⚡️ connect`);
|
|
@@ -18,12 +24,6 @@ export class SidebarToggle extends HTMLElement {
|
|
|
18
24
|
// @ts-expect-error
|
|
19
25
|
_a.#handleMeasure([entry]);
|
|
20
26
|
}
|
|
21
|
-
disconnectedCallback() {
|
|
22
|
-
if (devFlags.debug)
|
|
23
|
-
console.debug(`${_a.name} ⚡️ disconnect`);
|
|
24
|
-
observers.unobserve(this);
|
|
25
|
-
CleanupRegistry.unregister(this);
|
|
26
|
-
}
|
|
27
27
|
static query(target) {
|
|
28
28
|
const container = target?.closest('navigation-split-view,tab-view'), sideBar = container?.querySelector(':scope>[is=sidebar-view]');
|
|
29
29
|
return { container, sideBar };
|
|
@@ -22,7 +22,7 @@ export class SidebarView extends DialogBase {
|
|
|
22
22
|
}), el).on());
|
|
23
23
|
el.autofocus = true;
|
|
24
24
|
}
|
|
25
|
-
|
|
25
|
+
// Autoclose on click outside.
|
|
26
26
|
static #handleClick = async ({ target, type }) => {
|
|
27
27
|
if (devFlags.debug)
|
|
28
28
|
console.debug(`${SidebarView.name} ⚡️ ${type}`);
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
export declare class StickyContainer extends HTMLElement {
|
|
2
2
|
#private;
|
|
3
3
|
constructor();
|
|
4
|
-
connectedCallback(): void;
|
|
5
4
|
disconnectedCallback(): void;
|
|
5
|
+
connectedCallback(): void;
|
|
6
|
+
}
|
|
7
|
+
declare global {
|
|
8
|
+
interface HTMLElementTagNameMap {
|
|
9
|
+
'sticky-container': StickyContainer;
|
|
10
|
+
}
|
|
6
11
|
}
|
|
@@ -4,17 +4,17 @@ export class StickyContainer extends HTMLElement {
|
|
|
4
4
|
constructor() {
|
|
5
5
|
super();
|
|
6
6
|
}
|
|
7
|
+
disconnectedCallback() {
|
|
8
|
+
if (devFlags.debug)
|
|
9
|
+
console.debug(`${StickyContainer.name} ⚡️ disconnect`);
|
|
10
|
+
CleanupRegistry.unregister(this);
|
|
11
|
+
}
|
|
7
12
|
connectedCallback() {
|
|
8
13
|
if (devFlags.debug)
|
|
9
14
|
console.debug(`${StickyContainer.name} ⚡️ connect`);
|
|
10
15
|
// CleanupRegistry.register(this, onoff('transitionend transitionstart transitioncancel', this.#handleTransitionrun as unknown as EventListener, this).on())
|
|
11
16
|
CleanupRegistry.register(this, onoff('transitionrun', this.#handleTransitionrun, this).on());
|
|
12
17
|
}
|
|
13
|
-
disconnectedCallback() {
|
|
14
|
-
if (devFlags.debug)
|
|
15
|
-
console.debug(`${StickyContainer.name} ⚡️ disconnect`);
|
|
16
|
-
CleanupRegistry.unregister(this);
|
|
17
|
-
}
|
|
18
18
|
#handleTransitionrun = ({ target, propertyName, pseudoElement }) => {
|
|
19
19
|
if (!(target instanceof HTMLElement))
|
|
20
20
|
return;
|
|
@@ -18,8 +18,6 @@ export class TabBar extends DialogBase {
|
|
|
18
18
|
if (devFlags.debug)
|
|
19
19
|
console.debug(`${TabBar.name} ⚡️ connect`);
|
|
20
20
|
el.autofocus = true;
|
|
21
|
-
// Snapshot.waitReadyFor(el).then((r) => {
|
|
22
|
-
// if (!r) return
|
|
23
21
|
CleanupRegistry.register(el, onoff('click', TabBar.#handleClick, el).on());
|
|
24
22
|
CleanupRegistry.register(el, onoff(touchGlass(el, (t) => t, ({ target }) => {
|
|
25
23
|
if (!(target instanceof HTMLElement))
|
|
@@ -30,7 +28,6 @@ export class TabBar extends DialogBase {
|
|
|
30
28
|
return false;
|
|
31
29
|
return true;
|
|
32
30
|
}), el).on());
|
|
33
|
-
// })
|
|
34
31
|
}
|
|
35
32
|
static #handleClick = async ({ target, type }) => {
|
|
36
33
|
if (devFlags.debug)
|
|
@@ -19,7 +19,12 @@ export declare class TabView extends HTMLElement {
|
|
|
19
19
|
get tabBarPlacement(): "bottom-bar" | "ornament" | "sidebar" | "top-bar" | undefined;
|
|
20
20
|
get moreTab(): NavigationStack | null;
|
|
21
21
|
connectedCallback(): void;
|
|
22
|
-
get selectedTab(): (
|
|
23
|
-
set selectedTab(tabs: (
|
|
22
|
+
get selectedTab(): (NavigationSplitView | NavigationStack)[];
|
|
23
|
+
set selectedTab(tabs: (NavigationSplitView | NavigationStack)[]);
|
|
24
|
+
}
|
|
25
|
+
declare global {
|
|
26
|
+
interface HTMLElementTagNameMap {
|
|
27
|
+
'tab-view': TabView;
|
|
28
|
+
}
|
|
24
29
|
}
|
|
25
30
|
export {};
|