@swiftwc/ui 0.0.0-dev.94 → 0.0.0-dev.96
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/client/index.js +7 -7
- package/generated/components/alert-dialog.d.ts +1 -1
- package/generated/components/alert-dialog.js +1 -1
- package/generated/components/body-view.d.ts +1 -1
- package/generated/components/body-view.js +1 -1
- package/generated/components/confirmation-dialog.d.ts +1 -2
- package/generated/components/confirmation-dialog.js +1 -2
- package/generated/components/content-unavailable.js +11 -11
- package/generated/components/date-picker.js +17 -17
- package/generated/components/disclosure-group.d.ts +4 -1
- package/generated/components/disclosure-group.js +5 -1
- package/generated/components/fine-tooltip.js +2 -1
- package/generated/components/form-view.d.ts +2 -0
- package/generated/components/form-view.js +2 -0
- package/generated/components/h-stack.d.ts +2 -2
- package/generated/components/h-stack.js +2 -2
- package/generated/components/image-view.d.ts +4 -0
- package/generated/components/image-view.js +7 -2
- package/generated/components/label-view.d.ts +7 -3
- package/generated/components/label-view.js +14 -10
- package/generated/components/labeled-content.d.ts +13 -0
- package/generated/components/labeled-content.js +26 -12
- package/generated/components/list-view.d.ts +2 -0
- package/generated/components/list-view.js +2 -0
- package/generated/components/menu-view.js +12 -12
- package/generated/components/navigation-large-title.d.ts +7 -0
- package/generated/components/navigation-large-title.js +7 -0
- package/generated/components/navigation-split-view.d.ts +1 -1
- package/generated/components/navigation-split-view.js +1 -1
- package/generated/components/navigation-stack.d.ts +1 -1
- package/generated/components/navigation-stack.js +1 -1
- package/generated/components/navigation-title.d.ts +5 -0
- package/generated/components/navigation-title.js +7 -1
- package/generated/components/picker-view.d.ts +1 -1
- package/generated/components/picker-view.js +51 -50
- package/generated/components/progress-view.d.ts +1 -1
- package/generated/components/progress-view.js +21 -20
- package/generated/components/scroll-view-proxy.d.ts +1 -1
- package/generated/components/scroll-view-proxy.js +1 -1
- package/generated/components/scroll-view.d.ts +2 -0
- package/generated/components/scroll-view.js +16 -14
- package/generated/components/section-view.js +11 -11
- package/generated/components/sheet-view.d.ts +3 -0
- package/generated/components/sheet-view.js +3 -0
- package/generated/components/sidebar-toggle.d.ts +3 -0
- package/generated/components/sidebar-toggle.js +3 -0
- package/generated/components/sidebar-view.d.ts +3 -0
- package/generated/components/sidebar-view.js +3 -0
- package/generated/components/tab-bar.d.ts +1 -1
- package/generated/components/tab-bar.js +1 -1
- package/generated/components/tab-item.d.ts +3 -0
- package/generated/components/tab-item.js +3 -0
- package/generated/components/tab-view.d.ts +1 -0
- package/generated/components/tab-view.js +1 -0
- package/generated/components/table-view.d.ts +1 -1
- package/generated/components/table-view.js +35 -35
- package/generated/components/text-field.d.ts +2 -0
- package/generated/components/text-field.js +16 -14
- package/generated/components/toggle-view.js +30 -13
- package/generated/components/tool-bar-item-group.d.ts +1 -1
- package/generated/components/tool-bar-item-group.js +1 -1
- package/generated/components/tool-bar-item.d.ts +1 -1
- package/generated/components/tool-bar-item.js +1 -1
- package/generated/components/tool-bar.d.ts +1 -1
- package/generated/components/tool-bar.js +28 -28
- package/generated/components/v-stack.d.ts +2 -2
- package/generated/components/v-stack.js +2 -2
- package/generated/internal/utils/cash/index.d.ts +4 -3
- package/generated/internal/utils/cash/index.js +4 -2
- package/generated/internal/utils/ensure-placeholder.js +2 -1
- package/generated/morphdom/index.d.ts +4 -2
- package/generated/morphdom/index.js +4 -2
- package/generated/morphdom/morph.d.ts +2 -2
- package/generated/morphdom/morph.js +3 -2
- package/generated/morphdom/query-morph.d.ts +2 -2
- package/generated/morphdom/query-morph.js +1 -1
- package/generated/morphdom/render-to-string.d.ts +12 -0
- package/generated/morphdom/render-to-string.js +48 -0
- package/generated/morphdom/unsafe-html.d.ts +2 -0
- package/generated/morphdom/unsafe-html.js +4 -0
- package/generated/tpl/html.js +4 -0
- package/generated/tpl/index.d.ts +2 -0
- package/generated/tpl/index.js +2 -0
- package/generated/tpl/is-template-result.d.ts +3 -0
- package/generated/tpl/is-template-result.js +1 -0
- package/package.json +6 -4
- package/web-components.css-data/en.json +28 -0
- package/web-components.html-data/en.json +179 -117
- package/generated/morphdom/html.d.ts +0 -8
- package/generated/morphdom/html.js +0 -37
|
@@ -7,7 +7,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
7
7
|
var NavigationTitle_1;
|
|
8
8
|
import { microtaskOnConnected } from '../internal/decorators';
|
|
9
9
|
import { devFlags } from '../internal/utils';
|
|
10
|
-
import {
|
|
10
|
+
import { queryMorph } from '../morphdom';
|
|
11
|
+
import { html } from '../tpl';
|
|
12
|
+
/**
|
|
13
|
+
* @summary A container view.
|
|
14
|
+
*
|
|
15
|
+
* @attr {boolean} padding
|
|
16
|
+
*/
|
|
11
17
|
let NavigationTitle = NavigationTitle_1 = class NavigationTitle extends HTMLElement {
|
|
12
18
|
static get observedAttributes() {
|
|
13
19
|
return ['value', 'subtitle', 'system-image', 'system-image-weight'];
|
|
@@ -14,7 +14,7 @@ export type Dictionary = DictEntry[];
|
|
|
14
14
|
*
|
|
15
15
|
* @attr {menu|inline|navigation-link|sheet|automatic} picker-style
|
|
16
16
|
*
|
|
17
|
-
* @attr
|
|
17
|
+
* @attr help — Adds a help tooltip to the trigger of the picker, if style supports one
|
|
18
18
|
*
|
|
19
19
|
* @attr {DictEntry[]} dictionary — Renders all options using this array
|
|
20
20
|
*
|
|
@@ -6,7 +6,7 @@ import { MutationObserverSet } from '../internal/class/mutation-observer-set';
|
|
|
6
6
|
import { NavigationPath } from '../internal/class/navigation-path';
|
|
7
7
|
import { queryInsertPosition, startViewTransition } from '../internal/privateNamespace';
|
|
8
8
|
import { $, devFlags, kebabCase, onoff } from '../internal/utils';
|
|
9
|
-
import {
|
|
9
|
+
import { queryMorph } from '../morphdom';
|
|
10
10
|
import { html, render } from '../tpl';
|
|
11
11
|
const pickerStyles = ['menu', 'inline', 'navigation-link', 'sheet', 'automatic'];
|
|
12
12
|
const update = (path, node, overwrite = true) => {
|
|
@@ -120,7 +120,7 @@ const collectLeafValues = (node) => (node.children.length ? node.children.flatMa
|
|
|
120
120
|
*
|
|
121
121
|
* @attr {menu|inline|navigation-link|sheet|automatic} picker-style
|
|
122
122
|
*
|
|
123
|
-
* @attr
|
|
123
|
+
* @attr help — Adds a help tooltip to the trigger of the picker, if style supports one
|
|
124
124
|
*
|
|
125
125
|
* @attr {DictEntry[]} dictionary — Renders all options using this array
|
|
126
126
|
*
|
|
@@ -173,7 +173,7 @@ export class PickerView extends FormAssociatedBase {
|
|
|
173
173
|
#spawnPage = (elements, tag, parentGroupId, searchable = false, title) => {
|
|
174
174
|
if (devFlags.debug)
|
|
175
175
|
console.debug(`${_a.name} #spawnPage`);
|
|
176
|
-
const body = $(`<${'sheet-view' === tag ? 'dialog is="sheet-view"' : 'body-view'}><scroll-view><v-stack placement="leading fill"><list-view preferred-expanded-style="inset"></list-view></v-stack></scroll-view><tool-bar><tool-bar-item slot="top-bar-leading"><button type="button" tabindex="0"><label-view system-image="${'sheet-view' === tag ? 'x' : 'caret-left'}"></label-view></button></tool-bar-item></tool-bar></${'sheet-view' === tag ? 'dialog' : 'body-view'}>`, '>1'), sv = body.querySelector('scroll-view'), list = body.querySelector('list-view'), backBtn = body.querySelector('button');
|
|
176
|
+
const body = $(html `<${'sheet-view' === tag ? 'dialog is="sheet-view"' : 'body-view'}><scroll-view><v-stack placement="leading fill"><list-view preferred-expanded-style="inset"></list-view></v-stack></scroll-view><tool-bar><tool-bar-item slot="top-bar-leading"><button type="button" tabindex="0"><label-view system-image="${'sheet-view' === tag ? 'x' : 'caret-left'}"></label-view></button></tool-bar-item></tool-bar></${'sheet-view' === tag ? 'dialog' : 'body-view'}>`, '>1'), sv = body.querySelector('scroll-view'), list = body.querySelector('list-view'), backBtn = body.querySelector('button');
|
|
177
177
|
if (title)
|
|
178
178
|
sv?.setAttribute('navigation-inline-title', title);
|
|
179
179
|
if (searchable) {
|
|
@@ -372,7 +372,7 @@ export class PickerView extends FormAssociatedBase {
|
|
|
372
372
|
case 'sheet':
|
|
373
373
|
case 'navigation-link': {
|
|
374
374
|
// current value label only
|
|
375
|
-
const currentValueLabel = this.querySelector(':scope>label-view:not([slot])') ?? this.appendChild($(`<label-view></label-view>`, '>1'));
|
|
375
|
+
const currentValueLabel = this.querySelector(':scope>label-view:not([slot])') ?? this.appendChild($(html `<label-view></label-view>`, '>1'));
|
|
376
376
|
// reset state
|
|
377
377
|
// if (currentValueLabel) {
|
|
378
378
|
// renderLabelIcon(currentValueLabel, 'dots-three') // overwritten
|
|
@@ -406,7 +406,7 @@ export class PickerView extends FormAssociatedBase {
|
|
|
406
406
|
break;
|
|
407
407
|
}
|
|
408
408
|
case 'menu': {
|
|
409
|
-
const menu = this.querySelector(':scope>menu-view:not([slot])') ?? this.appendChild($(`<menu-view></menu-view>`, '>1'));
|
|
409
|
+
const menu = this.querySelector(':scope>menu-view:not([slot])') ?? this.appendChild($(html `<menu-view></menu-view>`, '>1'));
|
|
410
410
|
// reset state
|
|
411
411
|
menu.innerHTML = '';
|
|
412
412
|
menu.tabIndex = 0;
|
|
@@ -414,7 +414,7 @@ export class PickerView extends FormAssociatedBase {
|
|
|
414
414
|
for (const el of this.querySelectorAll(':scope>:not([slot])'))
|
|
415
415
|
if (menu !== el)
|
|
416
416
|
el.remove();
|
|
417
|
-
const currentValueLabel = menu.querySelector(':scope>label-view[slot=label]') ?? menu.appendChild($(`<label-view slot="label"></label-view>`, '>1'));
|
|
417
|
+
const currentValueLabel = menu.querySelector(':scope>label-view[slot=label]') ?? menu.appendChild($(html `<label-view slot="label"></label-view>`, '>1'));
|
|
418
418
|
// if (currentValueLabel) {
|
|
419
419
|
// renderLabelIcon(currentValueLabel, 'dots-three') // overwritten
|
|
420
420
|
// renderLabelTitle(currentValueLabel, this.#currentValueLabel) // overwritten
|
|
@@ -426,8 +426,8 @@ export class PickerView extends FormAssociatedBase {
|
|
|
426
426
|
}
|
|
427
427
|
case 'inline':
|
|
428
428
|
default: {
|
|
429
|
-
const sectionTpl = `<section-view></section-view>`;
|
|
430
|
-
const inlineList = this.querySelector(':scope>list-view:not([slot])') ?? this.appendChild($(`<list-view>${sectionTpl}</list-view>`, '>1')), section = inlineList.querySelector(':scope>section-view') ?? inlineList.appendChild($(sectionTpl, '>1'));
|
|
429
|
+
const sectionTpl = html `<section-view></section-view>`;
|
|
430
|
+
const inlineList = this.querySelector(':scope>list-view:not([slot])') ?? this.appendChild($(html `<list-view>${sectionTpl}</list-view>`, '>1')), section = inlineList.querySelector(':scope>section-view') ?? inlineList.appendChild($(sectionTpl, '>1'));
|
|
431
431
|
// reset state
|
|
432
432
|
section.innerHTML = '';
|
|
433
433
|
// clear all siblings
|
|
@@ -437,8 +437,10 @@ export class PickerView extends FormAssociatedBase {
|
|
|
437
437
|
// add label as a plain element
|
|
438
438
|
const value = this.getAttribute(this.constructor.ATTR.LABEL);
|
|
439
439
|
if (value) {
|
|
440
|
-
const hStack = $(`<h-stack distribution="leading" template="auto spacer"
|
|
441
|
-
|
|
440
|
+
const hStack = $(html `<h-stack distribution="leading" template="auto spacer"
|
|
441
|
+
><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
|
|
442
|
+
></h-stack>`, '>1');
|
|
443
|
+
queryMorph('label-view:nth-child(2)', html `<label-view>${value ? html `<span>${value}</span>` : null}</label-view>`, hStack);
|
|
442
444
|
// if (label) renderLabelTitle(label, value) //label.setAttribute('title', value)
|
|
443
445
|
section.insertAdjacentElement('beforeend', hStack);
|
|
444
446
|
}
|
|
@@ -503,32 +505,32 @@ export class PickerView extends FormAssociatedBase {
|
|
|
503
505
|
switch (this.pickerStyle) {
|
|
504
506
|
case 'sheet':
|
|
505
507
|
case 'navigation-link':
|
|
506
|
-
_a.#templates.set(this.pickerStyle, $(
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
508
|
+
_a.#templates.set(this.pickerStyle, $(html `
|
|
509
|
+
<label part="root picker-stack">
|
|
510
|
+
<div part="root picker-label-stack">
|
|
511
|
+
<slot name="label"></slot>
|
|
512
|
+
</div>
|
|
513
|
+
<div part="root picker-input-stack">
|
|
514
|
+
<slot></slot>
|
|
515
|
+
</div>
|
|
516
|
+
<slot name="list" hidden></slot>
|
|
517
|
+
<slot name="validity-options" hidden></slot>
|
|
518
|
+
</label>
|
|
519
|
+
`));
|
|
518
520
|
break;
|
|
519
521
|
case 'menu':
|
|
520
|
-
_a.#templates.set(this.pickerStyle, $(
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
522
|
+
_a.#templates.set(this.pickerStyle, $(html `
|
|
523
|
+
<label part="root picker-stack">
|
|
524
|
+
<div part="root picker-label-stack">
|
|
525
|
+
<slot name="label"></slot>
|
|
526
|
+
</div>
|
|
527
|
+
<div part="root picker-input-stack">
|
|
528
|
+
<slot></slot>
|
|
529
|
+
</div>
|
|
530
|
+
<slot name="list" hidden></slot>
|
|
531
|
+
<slot name="validity-options" hidden></slot>
|
|
532
|
+
</label>
|
|
533
|
+
`));
|
|
532
534
|
// break
|
|
533
535
|
// case 'compact':
|
|
534
536
|
// PickerView.#templates.set(
|
|
@@ -577,17 +579,16 @@ export class PickerView extends FormAssociatedBase {
|
|
|
577
579
|
// break
|
|
578
580
|
case 'inline':
|
|
579
581
|
default:
|
|
580
|
-
_a.#templates.set(this.pickerStyle, $(
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
</label>`));
|
|
582
|
+
_a.#templates.set(this.pickerStyle, $(html ` <label part="root picker-stack">
|
|
583
|
+
<div part="root picker-label-stack">
|
|
584
|
+
<slot name="label"></slot>
|
|
585
|
+
</div>
|
|
586
|
+
<div part="root picker-input-stack">
|
|
587
|
+
<slot></slot>
|
|
588
|
+
</div>
|
|
589
|
+
<slot name="list" hidden></slot>
|
|
590
|
+
<slot name="validity-options" hidden></slot>
|
|
591
|
+
</label>`));
|
|
591
592
|
break;
|
|
592
593
|
}
|
|
593
594
|
return _a.#templates.get(this.pickerStyle);
|
|
@@ -985,7 +986,7 @@ export class PickerView extends FormAssociatedBase {
|
|
|
985
986
|
#reflectLabel(value) {
|
|
986
987
|
if (devFlags.debug)
|
|
987
988
|
console.debug(`${_a.name} #reflectLabel`);
|
|
988
|
-
queryMorph('[slot=label]',
|
|
989
|
+
queryMorph('[slot=label]', html `<label-view slot="label">${value ? html `<span>${value}</span>` : null}</label-view>`, this);
|
|
989
990
|
this.#renderSlotted([]);
|
|
990
991
|
}
|
|
991
992
|
#reflectSelectionOnButtons() {
|
|
@@ -1033,8 +1034,8 @@ export class PickerView extends FormAssociatedBase {
|
|
|
1033
1034
|
// if (!cvl) currentValueLabel.setAttribute('foreground', 'secondary')
|
|
1034
1035
|
// else currentValueLabel.removeAttribute('foreground')
|
|
1035
1036
|
const title = this.#currentValueLabel || this.#selection || this.getAttribute(this.constructor.ATTR.PLACEHOLDER), systemImage = this.#currentValueIcon || this.getAttribute(this.constructor.ATTR.PLACEHOLDER_ICON);
|
|
1036
|
-
queryMorph(':not([slot])',
|
|
1037
|
-
queryMorph('[slot=icon]',
|
|
1037
|
+
queryMorph(':not([slot])', html `<span>${title}</span>`, currentValueLabel, { removeIf: !title });
|
|
1038
|
+
queryMorph('[slot=icon]', html `<image-view slot="icon" system-name="${systemImage}"></image-view>`, currentValueLabel, { removeIf: !systemImage });
|
|
1038
1039
|
// morph(
|
|
1039
1040
|
// htmx`<label-view>${systemImage ? htmx`<image-view slot="icon" system-name="${systemImage}"></image-view>` : null}${title ? htmx`<span>${title}</span>` : null}</label-view>`,
|
|
1040
1041
|
// currentValueLabel
|
|
@@ -1048,8 +1049,8 @@ export class PickerView extends FormAssociatedBase {
|
|
|
1048
1049
|
// if (!cvl) currentValueLabel.setAttribute('foreground', 'secondary')
|
|
1049
1050
|
// else currentValueLabel.removeAttribute('foreground')
|
|
1050
1051
|
const title = this.#currentValueLabel || this.#selection || this.getAttribute(this.constructor.ATTR.PLACEHOLDER), systemImage = this.#currentValueIcon || this.getAttribute(this.constructor.ATTR.PLACEHOLDER_ICON);
|
|
1051
|
-
queryMorph(':not([slot])',
|
|
1052
|
-
queryMorph('[slot=icon]',
|
|
1052
|
+
queryMorph(':not([slot])', html `<span>${title}</span>`, currentValueLabel, { removeIf: !title });
|
|
1053
|
+
queryMorph('[slot=icon]', html `<image-view slot="icon" system-name="${systemImage}"></image-view>`, currentValueLabel, { removeIf: !systemImage });
|
|
1053
1054
|
// morph(
|
|
1054
1055
|
// 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>`,
|
|
1055
1056
|
// currentValueLabel
|
|
@@ -2,11 +2,12 @@ var _a;
|
|
|
2
2
|
import { CleanupRegistry } from '../internal/class/cleanup-registry';
|
|
3
3
|
import { CSSStyleObserver } from '../internal/class/css-style-observer';
|
|
4
4
|
import { $, devFlags } from '../internal/utils';
|
|
5
|
-
import {
|
|
5
|
+
import { queryMorph } from '../morphdom';
|
|
6
6
|
import { Snapshot } from '../snapshot';
|
|
7
|
+
import { html } from '../tpl';
|
|
7
8
|
const progressViewStyles = ['circular', 'linear'];
|
|
8
9
|
/**
|
|
9
|
-
* @summary A view that shows
|
|
10
|
+
* @summary A view that shows how far along a task is.
|
|
10
11
|
*
|
|
11
12
|
* @slot — The default slot.
|
|
12
13
|
* @slot current-value
|
|
@@ -28,27 +29,27 @@ export class ProgressView extends HTMLElement {
|
|
|
28
29
|
if (!_a.#templates.has(this.progressViewStyle))
|
|
29
30
|
switch (this.progressViewStyle) {
|
|
30
31
|
case 'linear':
|
|
31
|
-
_a.#templates.set(this.progressViewStyle, $(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
_a.#templates.set(this.progressViewStyle, $(html `
|
|
33
|
+
<slot></slot>
|
|
34
|
+
<div part="root progress-control progress-line-control"></div>
|
|
35
|
+
<slot name="current-value"></slot>
|
|
35
36
|
`));
|
|
36
37
|
break;
|
|
37
38
|
case 'circular':
|
|
38
39
|
default:
|
|
39
|
-
_a.#templates.set(this.progressViewStyle, $(
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
40
|
+
_a.#templates.set(this.progressViewStyle, $(html `
|
|
41
|
+
<div part="root progress-control progress-circular-control">
|
|
42
|
+
<div part="root progress-control progress-circular-blade progress-circular-blade-1"></div>
|
|
43
|
+
<div part="root progress-control progress-circular-blade progress-circular-blade-2"></div>
|
|
44
|
+
<div part="root progress-control progress-circular-blade progress-circular-blade-3"></div>
|
|
45
|
+
<div part="root progress-control progress-circular-blade progress-circular-blade-4"></div>
|
|
46
|
+
<div part="root progress-control progress-circular-blade progress-circular-blade-5"></div>
|
|
47
|
+
<div part="root progress-control progress-circular-blade progress-circular-blade-6"></div>
|
|
48
|
+
<div part="root progress-control progress-circular-blade progress-circular-blade-7"></div>
|
|
49
|
+
<div part="root progress-control progress-circular-blade progress-circular-blade-8"></div>
|
|
50
|
+
</div>
|
|
51
|
+
<slot></slot>
|
|
52
|
+
<slot name="current-value"></slot>
|
|
52
53
|
`));
|
|
53
54
|
break;
|
|
54
55
|
}
|
|
@@ -63,7 +64,7 @@ export class ProgressView extends HTMLElement {
|
|
|
63
64
|
console.debug(`${_a.name} ⚡️ attr-change [${name}] ("${oldValue}" → "${newValue}")`);
|
|
64
65
|
switch (name) {
|
|
65
66
|
case 'label': {
|
|
66
|
-
const label = this.querySelector(':scope>label-view:not([slot])') ?? this.appendChild($(`<label-view foreground="secondary"></label-view>`, '>1'));
|
|
67
|
+
const label = this.querySelector(':scope>label-view:not([slot])') ?? this.appendChild($(html `<label-view foreground="secondary"></label-view>`, '>1'));
|
|
67
68
|
if (newValue) {
|
|
68
69
|
label.setAttribute('title', newValue);
|
|
69
70
|
}
|
|
@@ -3,9 +3,12 @@ import { lifecycleObserver } from '../buses';
|
|
|
3
3
|
import { CleanupRegistry } from '../internal/class/cleanup-registry';
|
|
4
4
|
import { ResizeObserverSingleton } from '../internal/class/resize-observer-singleton';
|
|
5
5
|
import { $, devFlags, frame, onoff, slowHideShow } from '../internal/utils';
|
|
6
|
-
import {
|
|
6
|
+
import { queryMorph } from '../morphdom';
|
|
7
|
+
import { html } from '../tpl';
|
|
7
8
|
const observers = new ResizeObserverSingleton();
|
|
8
9
|
/**
|
|
10
|
+
* @summary A view that scrolls its content when it doesn’t fit the screen.
|
|
11
|
+
*
|
|
9
12
|
* @slot — The default slot.
|
|
10
13
|
* @slot top-bar-principal
|
|
11
14
|
* @slot bottom-bar-principal
|
|
@@ -25,18 +28,17 @@ export class ScrollView extends HTMLElement {
|
|
|
25
28
|
}
|
|
26
29
|
static #template;
|
|
27
30
|
static get template() {
|
|
28
|
-
return (this.#template ??= $(
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
</div>`));
|
|
31
|
+
return (this.#template ??= $(html `<slot></slot>
|
|
32
|
+
<div part="root scroll-view-navbar">
|
|
33
|
+
<div part="root scroll-view-navbar-stack">
|
|
34
|
+
<slot name="top-bar-principal"></slot>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
<div part="root scroll-view-toolbar">
|
|
38
|
+
<div part="root scroll-view-toolbar-stack">
|
|
39
|
+
<slot name="bottom-bar-principal"></slot>
|
|
40
|
+
</div>
|
|
41
|
+
</div>`));
|
|
40
42
|
}
|
|
41
43
|
#shadowRoot;
|
|
42
44
|
#slots = new Map();
|
|
@@ -228,7 +230,7 @@ export class ScrollView extends HTMLElement {
|
|
|
228
230
|
// const container = ((vs = this.querySelector<HTMLElement>(':scope>v-stack') ?? (this.appendChild($(`<v-stack></v-stack>`, '>1')) as HTMLElement)) =>
|
|
229
231
|
// vs.querySelector<HTMLElement>(':scope>navigation-title:not([slot])') ??
|
|
230
232
|
// vs.appendChild($(html`<navigation-title value="${title}" subtitle="${subtitle}" system-image="${icon}" padding></navigation-title>`.toString(), '>1')))()
|
|
231
|
-
const container = this.querySelector(':scope>v-stack') ?? this.appendChild($(`<v-stack></v-stack>`, '>1'));
|
|
233
|
+
const container = this.querySelector(':scope>v-stack') ?? this.appendChild($(html `<v-stack></v-stack>`, '>1'));
|
|
232
234
|
queryMorph('navigation-title:not([slot])', html `<navigation-title value="${title}" subtitle="${subtitle}" system-image="${icon}" padding></navigation-title>`, container);
|
|
233
235
|
};
|
|
234
236
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { $, devFlags } from '../internal/utils';
|
|
2
|
-
import {
|
|
2
|
+
import { queryMorph } from '../morphdom';
|
|
3
|
+
import { html } from '../tpl';
|
|
3
4
|
/**
|
|
4
5
|
* @summary A container view that groups related content together.
|
|
5
6
|
*
|
|
@@ -13,16 +14,15 @@ export class SectionView extends HTMLElement {
|
|
|
13
14
|
}
|
|
14
15
|
static #template;
|
|
15
16
|
static get template() {
|
|
16
|
-
return (this.#template ??= $(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
</div>`));
|
|
17
|
+
return (this.#template ??= $(html `<div part="root section-main-stack">
|
|
18
|
+
<slot></slot>
|
|
19
|
+
</div>
|
|
20
|
+
<div part="root section-header-stack">
|
|
21
|
+
<slot name="header"></slot>
|
|
22
|
+
</div>
|
|
23
|
+
<div part="root section-footer-stack">
|
|
24
|
+
<slot name="footer"></slot>
|
|
25
|
+
</div>`));
|
|
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;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { CleanupRegistry } from '../internal/class/cleanup-registry';
|
|
2
2
|
import { devFlags, onoff } from '../internal/utils';
|
|
3
3
|
import { DialogBase } from '../namespace-browser/base';
|
|
4
|
+
/**
|
|
5
|
+
* @summary A dialog that slides up over the current screen.
|
|
6
|
+
*/
|
|
4
7
|
export class SheetView extends DialogBase {
|
|
5
8
|
constructor() {
|
|
6
9
|
super();
|
|
@@ -3,6 +3,9 @@ import { CleanupRegistry } from '../internal/class/cleanup-registry';
|
|
|
3
3
|
import { ResizeObserverSingleton } from '../internal/class/resize-observer-singleton';
|
|
4
4
|
import { debounce, devFlags, onoff } from '../internal/utils';
|
|
5
5
|
const observers = new ResizeObserverSingleton();
|
|
6
|
+
/**
|
|
7
|
+
* @summary A control that shows or hides the sidebar view.
|
|
8
|
+
*/
|
|
6
9
|
export class SidebarToggle extends HTMLElement {
|
|
7
10
|
constructor() {
|
|
8
11
|
super();
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { CleanupRegistry } from '../internal/class/cleanup-registry';
|
|
2
2
|
import { devFlags, onoff, touchGlass } from '../internal/utils';
|
|
3
3
|
import { DialogBase } from '../namespace-browser/base';
|
|
4
|
+
/**
|
|
5
|
+
* @summary A container view that arranges navigation destinations in a single column.
|
|
6
|
+
*/
|
|
4
7
|
export class SidebarView extends DialogBase {
|
|
5
8
|
constructor() {
|
|
6
9
|
super();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DialogBase } from '../namespace-browser/base';
|
|
2
2
|
/**
|
|
3
|
-
* @summary A
|
|
3
|
+
* @summary A container view that groups tab-items together along the top or bottom of the screen.
|
|
4
4
|
*/
|
|
5
5
|
export declare class TabBar extends DialogBase {
|
|
6
6
|
#private;
|
|
@@ -2,7 +2,7 @@ import { CleanupRegistry } from '../internal/class/cleanup-registry';
|
|
|
2
2
|
import { devFlags, onoff, touchGlass } from '../internal/utils';
|
|
3
3
|
import { DialogBase } from '../namespace-browser/base';
|
|
4
4
|
/**
|
|
5
|
-
* @summary A
|
|
5
|
+
* @summary A container view that groups tab-items together along the top or bottom of the screen.
|
|
6
6
|
*/
|
|
7
7
|
export class TabBar extends DialogBase {
|
|
8
8
|
constructor() {
|
|
@@ -2,6 +2,9 @@ import { CleanupRegistry } from '../internal/class/cleanup-registry';
|
|
|
2
2
|
import { devFlags, onoff } from '../internal/utils';
|
|
3
3
|
import { ButtonBase } from '../namespace-browser/base';
|
|
4
4
|
import { TabView } from './tab-view';
|
|
5
|
+
/**
|
|
6
|
+
* @summary A control that switches the tab view to this tab.
|
|
7
|
+
*/
|
|
5
8
|
export class TabItem extends ButtonBase {
|
|
6
9
|
constructor() {
|
|
7
10
|
super();
|
|
@@ -3,6 +3,7 @@ import { type NavigationStack } from './navigation-stack';
|
|
|
3
3
|
declare const TAB_BAR_PLACEMENTS: readonly ["bottom-bar", "ornament", "sidebar", "top-bar"];
|
|
4
4
|
export type TabBarPlacement = (typeof TAB_BAR_PLACEMENTS)[number];
|
|
5
5
|
/**
|
|
6
|
+
* @summary A container view that switches between screens using tabs.
|
|
6
7
|
*
|
|
7
8
|
* @cssprop --adaptable-tab-bar-placement
|
|
8
9
|
*
|
|
@@ -6,6 +6,7 @@ import { $, cssTime, debounce, devFlags, frame, onoff, timeout } from '../intern
|
|
|
6
6
|
import { Snapshot } from '../snapshot';
|
|
7
7
|
const TAB_BAR_PLACEMENTS = ['bottom-bar', 'ornament', 'sidebar', 'top-bar'];
|
|
8
8
|
/**
|
|
9
|
+
* @summary A container view that switches between screens using tabs.
|
|
9
10
|
*
|
|
10
11
|
* @cssprop --adaptable-tab-bar-placement
|
|
11
12
|
*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @summary
|
|
2
|
+
* @summary A container view that arranges data in rows and columns, optionally letting the user select one or more of them.
|
|
3
3
|
*
|
|
4
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
5
|
*
|