@swiftwc/ui 0.0.0-dev.4 → 0.0.0-dev.40
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/README.md +15 -0
- 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 +24 -0
- package/generated/client/index.js +272 -0
- package/generated/components/alert-dialog.d.ts +8 -0
- package/generated/components/alert-dialog.js +99 -0
- package/generated/components/body-view.d.ts +5 -0
- package/generated/components/body-view.js +14 -0
- package/generated/components/bordered-button.d.ts +13 -0
- package/generated/components/bordered-button.js +45 -0
- package/generated/components/bordered-prominent-button.d.ts +13 -0
- package/generated/components/bordered-prominent-button.js +45 -0
- package/generated/components/borderless-button.d.ts +13 -0
- package/generated/components/borderless-button.js +45 -0
- package/generated/components/confirmation-dialog.d.ts +9 -0
- package/generated/components/confirmation-dialog.js +113 -0
- 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 +36 -0
- package/generated/components/date-picker.js +468 -0
- package/generated/components/disclosure-group.d.ts +9 -0
- package/generated/components/disclosure-group.js +58 -0
- package/generated/components/fine-tooltip.d.ts +7 -0
- package/generated/components/fine-tooltip.js +107 -0
- package/generated/components/form-view.d.ts +6 -0
- package/generated/components/form-view.js +60 -0
- package/generated/components/glass-button.d.ts +12 -0
- package/generated/components/glass-button.js +42 -0
- package/generated/components/glass-prominent-button.d.ts +12 -0
- package/generated/components/glass-prominent-button.js +42 -0
- package/generated/components/index.d.ts +42 -0
- package/generated/components/index.js +42 -0
- package/generated/components/label-view.d.ts +9 -0
- package/generated/components/label-view.js +59 -0
- package/generated/components/list-view.d.ts +5 -0
- package/generated/components/list-view.js +29 -0
- package/generated/components/menu-view.d.ts +9 -0
- package/generated/components/menu-view.js +145 -0
- package/generated/components/navigation-large-title.d.ts +6 -0
- package/generated/components/navigation-large-title.js +181 -0
- package/generated/components/navigation-split-view.d.ts +10 -0
- package/generated/components/navigation-split-view.js +25 -0
- package/generated/components/navigation-stack.d.ts +10 -0
- package/generated/components/navigation-stack.js +31 -0
- package/generated/components/navigation-title.d.ts +8 -0
- package/generated/components/navigation-title.js +52 -0
- package/generated/components/picker-view.d.ts +28 -0
- package/generated/components/picker-view.js +681 -0
- package/generated/components/plain-button.d.ts +7 -0
- package/generated/components/plain-button.js +22 -0
- package/generated/components/progress-view.d.ts +13 -0
- package/generated/components/progress-view.js +125 -0
- package/generated/components/screen-view.d.ts +5 -0
- package/generated/components/screen-view.js +11 -0
- 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 +10 -0
- package/generated/components/scroll-view.js +202 -0
- package/generated/components/search-view.d.ts +8 -0
- package/generated/components/search-view.js +30 -0
- package/generated/components/section-view.d.ts +9 -0
- package/generated/components/section-view.js +83 -0
- package/generated/components/sheet-view.d.ts +8 -0
- package/generated/components/sheet-view.js +62 -0
- package/generated/components/sidebar-toggle.d.ts +7 -0
- package/generated/components/sidebar-toggle.js +85 -0
- package/generated/components/sidebar-view.d.ts +7 -0
- package/generated/components/sidebar-view.js +34 -0
- package/generated/components/sticky-container.d.ts +6 -0
- package/generated/components/sticky-container.js +26 -0
- package/generated/components/tab-bar.d.ts +10 -0
- package/generated/components/tab-bar.js +43 -0
- package/generated/components/tab-item.d.ts +7 -0
- package/generated/components/tab-item.js +132 -0
- package/generated/components/tab-view.d.ts +22 -0
- package/generated/components/tab-view.js +264 -0
- package/generated/components/table-view.d.ts +7 -0
- package/generated/components/table-view.js +174 -0
- package/generated/components/text-field.d.ts +29 -0
- package/generated/components/text-field.js +503 -0
- package/generated/components/tool-bar-item-group.d.ts +5 -0
- package/generated/components/tool-bar-item-group.js +28 -0
- package/generated/components/tool-bar-item.d.ts +8 -0
- package/generated/components/tool-bar-item.js +66 -0
- package/generated/components/tool-bar.d.ts +19 -0
- package/generated/components/tool-bar.js +93 -0
- package/generated/components/v-keyboard.d.ts +15 -0
- package/generated/components/v-keyboard.js +89 -0
- package/generated/components/v-stack.d.ts +10 -0
- package/generated/components/v-stack.js +19 -0
- package/generated/css/index.css +8089 -0
- package/generated/events/alert-dialog.d.ts +8 -0
- package/generated/events/alert-dialog.js +1 -0
- package/generated/events/confirmation-dialog.d.ts +9 -0
- package/generated/events/confirmation-dialog.js +1 -0
- package/generated/events/date-picker.d.ts +8 -0
- package/generated/events/date-picker.js +1 -0
- package/generated/events/index.d.ts +8 -0
- package/generated/events/index.js +8 -0
- package/generated/events/lifecycle-observer.d.ts +10 -0
- package/generated/events/lifecycle-observer.js +1 -0
- package/generated/events/picker-view.d.ts +15 -0
- package/generated/events/picker-view.js +1 -0
- package/generated/events/scroll-view.d.ts +10 -0
- package/generated/events/scroll-view.js +1 -0
- package/generated/events/tab-view.d.ts +28 -0
- package/generated/events/tab-view.js +1 -0
- package/generated/events/text-field.d.ts +8 -0
- package/generated/events/text-field.js +1 -0
- package/generated/i18n/index.d.ts +34 -0
- package/generated/i18n/index.js +167 -0
- 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/index.d.ts +2 -0
- package/generated/index.js +3 -0
- package/generated/internal/class/cleanup-registry.d.ts +5 -0
- package/generated/internal/class/cleanup-registry.js +38 -0
- package/generated/internal/class/css-style-observer.d.ts +8 -0
- package/generated/internal/class/css-style-observer.js +26 -0
- package/generated/internal/class/form-associated-base.d.ts +16 -0
- package/generated/internal/class/form-associated-base.js +78 -0
- 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.d.ts +10 -0
- package/generated/internal/class/mutation-observer-singleton.js +64 -0
- package/generated/internal/class/navigation-path.d.ts +15 -0
- package/generated/internal/class/navigation-path.js +84 -0
- package/generated/internal/class/navigation-view.d.ts +8 -0
- package/generated/internal/class/navigation-view.js +79 -0
- package/generated/internal/class/resize-observer-singleton.d.ts +7 -0
- package/generated/internal/class/resize-observer-singleton.js +22 -0
- 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 +5 -0
- package/generated/internal/decorators/custom-element.js +5 -0
- package/generated/internal/decorators/index.d.ts +4 -0
- package/generated/internal/decorators/index.js +4 -0
- package/generated/internal/privateNamespace.d.ts +14 -0
- package/generated/internal/privateNamespace.js +168 -0
- package/generated/internal/utils/add.d.ts +1 -0
- package/generated/internal/utils/add.js +7 -0
- package/generated/internal/utils/cash/ancestors.d.ts +1 -0
- package/generated/internal/utils/cash/ancestors.js +27 -0
- package/generated/internal/utils/cash/index.d.ts +23 -0
- package/generated/internal/utils/cash/index.js +25 -0
- package/generated/internal/utils/cash/next-all.d.ts +1 -0
- package/generated/internal/utils/cash/next-all.js +10 -0
- package/generated/internal/utils/cash/next.d.ts +1 -0
- package/generated/internal/utils/cash/next.js +9 -0
- package/generated/internal/utils/cash/prev-all.d.ts +1 -0
- package/generated/internal/utils/cash/prev-all.js +10 -0
- package/generated/internal/utils/cash/prev.d.ts +1 -0
- package/generated/internal/utils/cash/prev.js +9 -0
- package/generated/internal/utils/cash/prop.d.ts +18 -0
- package/generated/internal/utils/cash/prop.js +30 -0
- package/generated/internal/utils/cash/siblings.d.ts +1 -0
- package/generated/internal/utils/cash/siblings.js +10 -0
- package/generated/internal/utils/clamp.d.ts +1 -0
- package/generated/internal/utils/clamp.js +4 -0
- package/generated/internal/utils/compare-big-decimals.d.ts +1 -0
- package/generated/internal/utils/compare-big-decimals.js +90 -0
- package/generated/internal/utils/css-time.d.ts +1 -0
- package/generated/internal/utils/css-time.js +3 -0
- package/generated/internal/utils/debounce.d.ts +1 -0
- package/generated/internal/utils/debounce.js +13 -0
- 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/frame.d.ts +1 -0
- package/generated/internal/utils/frame.js +6 -0
- package/generated/internal/utils/index.d.ts +19 -0
- package/generated/internal/utils/index.js +22 -0
- package/generated/internal/utils/is-inside.d.ts +1 -0
- package/generated/internal/utils/is-inside.js +4 -0
- package/generated/internal/utils/kebab-case.d.ts +1 -0
- package/generated/internal/utils/kebab-case.js +11 -0
- package/generated/internal/utils/list-active.d.ts +7 -0
- package/generated/internal/utils/list-active.js +83 -0
- package/generated/internal/utils/microtask.d.ts +1 -0
- package/generated/internal/utils/microtask.js +3 -0
- package/generated/internal/utils/onoff.d.ts +45 -0
- package/generated/internal/utils/onoff.js +31 -0
- package/generated/internal/utils/set.d.ts +1 -0
- package/generated/internal/utils/set.js +7 -0
- package/generated/internal/utils/sleep.d.ts +1 -0
- package/generated/internal/utils/sleep.js +3 -0
- package/generated/internal/utils/slow-hide-show.d.ts +1 -0
- package/generated/internal/utils/slow-hide-show.js +16 -0
- package/generated/internal/utils/timeout.d.ts +5 -0
- package/generated/internal/utils/timeout.js +16 -0
- package/generated/internal/utils/touch-glass.d.ts +7 -0
- package/generated/internal/utils/touch-glass.js +19 -0
- package/generated/namespace-browser/base.d.ts +45 -0
- package/generated/namespace-browser/base.js +115 -0
- package/generated/namespace-browser/index.d.ts +7 -0
- package/generated/namespace-browser/index.js +1 -0
- package/generated/snapshot/index.d.ts +9 -0
- package/generated/snapshot/index.js +60 -0
- package/package.json +35 -11
- package/scss/_components.scss +59 -14
- package/scss/_final.scss +1 -0
- package/scss/_functions.scss +10 -0
- package/scss/_mixins.scss +4 -169
- package/scss/_placeholders.scss +3 -0
- package/scss/_transitions.scss +22 -1
- package/scss/_utils.scss +9 -0
- package/scss/_vars.scss +142 -23
- package/scss/base/_layout.scss +31 -16
- package/scss/base/_reboot.scss +151 -15
- package/scss/base/_root.scss +355 -25
- package/scss/colors/_index.scss +672 -70
- package/scss/components/_alert-dialog.scss +111 -0
- package/scss/components/_body-view.scss +12 -3
- package/scss/components/_bordered-button.scss +57 -0
- package/scss/components/_bordered-prominent-button.scss +63 -0
- package/scss/components/_borderless-button.scss +36 -6
- package/scss/components/_confirmation-dialog.scss +84 -0
- package/scss/components/_content-unavailable-view.scss +45 -0
- package/scss/components/_date-picker.scss +30 -0
- package/scss/components/_detail-placeholder.scss +153 -0
- package/scss/components/_disclosure-group.scss +146 -51
- package/scss/components/_fine-tooltip.scss +82 -0
- package/scss/components/_form-view.scss +195 -0
- package/scss/components/_full-screen.scss +7 -5
- package/scss/components/_glass-button.scss +59 -0
- package/scss/components/_glass-prominent-button.scss +68 -0
- package/scss/components/_h-divider.scss +13 -0
- package/scss/components/_h-flex-stack.scss +23 -0
- package/scss/components/_h-stack.scss +29 -0
- package/scss/components/_index.scss +234 -7
- package/scss/components/_label-view copy.scss.txt +420 -0
- package/scss/components/_label-view.scss +355 -0
- package/scss/components/_label-view.scss.txt +536 -0
- package/scss/components/_labeled-content.scss +9 -0
- package/scss/components/_list-view.scss +229 -0
- package/scss/components/_menu-view.scss +211 -0
- package/scss/components/_navigation-large-title.scss +27 -0
- package/scss/components/_navigation-split-view.scss +329 -269
- package/scss/components/_navigation-stack.scss +6 -6
- package/scss/components/_navigation-title.scss +10 -0
- package/scss/components/_picker-view.scss +131 -0
- package/scss/components/_plain-button.scss +18 -0
- package/scss/components/_progress-view.scss +98 -0
- package/scss/components/_scroll-view-proxy.scss +79 -0
- package/scss/components/_scroll-view-toolbars.scss +126 -0
- package/scss/components/_scroll-view.scss +114 -66
- package/scss/components/_search-view.scss +18 -0
- package/scss/components/_section-view.scss +119 -0
- package/scss/components/_sheet-view.scss +78 -35
- package/scss/components/_sidebar-toggle.scss +87 -27
- package/scss/components/_sidebar-view.scss +30 -40
- package/scss/components/_sticky-container.scss +42 -0
- package/scss/components/_tab-bar.scss +207 -84
- package/scss/components/_tab-item.scss +25 -0
- package/scss/components/_tab-view.scss +270 -126
- package/scss/components/_table-column.scss +52 -0
- package/scss/components/_table-row.scss +172 -0
- package/scss/components/_table-view.scss +223 -0
- package/scss/components/_text-field.scss +37 -0
- package/scss/components/_tool-bar-item-group.scss +30 -19
- package/scss/components/_tool-bar-item.scss +81 -71
- package/scss/components/_tool-bar.scss +126 -63
- package/scss/components/_v-divider.scss +13 -0
- package/scss/components/_v-flex-stack.scss +29 -0
- package/scss/components/_v-keyboard.scss +6 -4
- package/scss/components/_v-stack.scss +15 -9
- package/scss/final/_touch-glass.scss +91 -0
- package/scss/index.scss +6 -2
- package/scss/mixins/_button.scss +44 -0
- package/scss/mixins/_color.scss +16 -0
- package/scss/mixins/_dialog.scss +89 -0
- package/scss/mixins/_index.scss +422 -0
- package/scss/placeholders/_buttons.scss +117 -0
- package/scss/placeholders/_lists.scss +571 -0
- package/scss/transitions/_alert-dialog.scss +18 -0
- package/scss/transitions/_bwd.navbar.scss +3 -13
- package/scss/transitions/_bwd.scss +4 -20
- package/scss/transitions/_confirmation-dialog.scss +22 -0
- package/scss/transitions/_disclosure-group.scss +35 -0
- package/scss/transitions/_fine-tooltip.scss +21 -0
- package/scss/transitions/_fwd.navbar.scss +4 -9
- package/scss/transitions/_fwd.scss +4 -34
- package/scss/transitions/_glass-button.scss +12 -0
- package/scss/transitions/_glass-prominent-button.scss +12 -0
- package/scss/transitions/_index.scss +35 -143
- package/scss/transitions/_menu-view.scss +26 -0
- package/scss/transitions/_navigation-split-view.scss +23 -0
- package/scss/transitions/_progress-view.scss +23 -0
- package/scss/transitions/_sheet-view.scss +30 -0
- package/scss/transitions/_sidebar-view.scss +36 -0
- package/scss/transitions/_tab-bar.scss +20 -0
- package/scss/utils/_frame.scss +91 -0
- package/scss/utils/_index.scss +91 -0
- package/scss/utils/_scroll-view.scss +14 -0
- package/scss/utils/_spacing.scss +25 -0
- package/scss/utils/_stacks.scss +209 -0
- package/web-components.html-data/en.json +500 -0
- package/generated/styles.css +0 -1305
- package/scss/_dev.scss +0 -68
- package/scss/components/_tab-bar-stack.scss +0 -101
- package/scss/components/_toolbars.scss +0 -100
- package/scss/transitions/_dialog.scss +0 -32
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
var _a;
|
|
2
|
+
import { ResizeObserverSingleton } from '../internal/class/resize-observer-singleton';
|
|
3
|
+
import { $, devFlags } from '../internal/utils';
|
|
4
|
+
const observers = new ResizeObserverSingleton();
|
|
5
|
+
/**
|
|
6
|
+
* @slot cancellation-action - The item represents a cancellation action for a modal interface. Places the item in the leading edge of the top bar and on the trailing edge of the bottom bar when fine modal
|
|
7
|
+
* @slot primary-action - The item represents a primary action. Places the item in the trailing edge of the top bar and on the trailing edge of the bottom bar when fine modal
|
|
8
|
+
* @slot confirmation-action - The item represents a confirmation action for a modal interface. Places the item in the trailing edge of the top bar and on the trailing edge of the bottom bar when fine modal
|
|
9
|
+
* @slot destructive-action - The item represents a destructive action for a modal interface. Places the item in the leading edge of the top bar and on the leading edge of the bottom bar when fine modal
|
|
10
|
+
* @slot top-bar-leading - Places the item in the leading edge of the top bar
|
|
11
|
+
* @slot top-bar-principal - Places the item in the middle of the top bar
|
|
12
|
+
* @slot top-bar-trailing - Places the item in the trailing edge of the top bar
|
|
13
|
+
* @slot bottom-bar-leading - Places the item in the leading edge of the bottom bar
|
|
14
|
+
* @slot bottom-bar-principal - Places the item in the middle of the bottom bar
|
|
15
|
+
* @slot bottom-bar-trailing - Places the item in the trailing edge of the bottom bar
|
|
16
|
+
*/
|
|
17
|
+
export class ToolBar extends HTMLElement {
|
|
18
|
+
static #template;
|
|
19
|
+
static get template() {
|
|
20
|
+
// <!--exportparts="toolbar-leading-stack,toolbar-principal-stack,toolbar-trailing-stack"-->
|
|
21
|
+
return (this.#template ??= $(String.raw `
|
|
22
|
+
<div part="root top-bar">
|
|
23
|
+
<div part="root toolbar-leading-stack">
|
|
24
|
+
<slot name="cancellation-action"></slot>
|
|
25
|
+
<slot name="destructive-action"></slot>
|
|
26
|
+
<slot name="top-bar-leading"></slot>
|
|
27
|
+
</div>
|
|
28
|
+
<div part="root toolbar-principal-stack">
|
|
29
|
+
<slot name="top-bar-principal"></slot>
|
|
30
|
+
</div>
|
|
31
|
+
<div part="root toolbar-trailing-stack">
|
|
32
|
+
<slot name="top-bar-trailing"></slot>
|
|
33
|
+
<slot name="primary-action"></slot>
|
|
34
|
+
<slot name="confirmation-action"></slot>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
<div part="root bottom-bar">
|
|
38
|
+
<div part="root toolbar-leading-stack">
|
|
39
|
+
<slot name="bottom-bar-leading"></slot>
|
|
40
|
+
</div>
|
|
41
|
+
<div part="root toolbar-principal-stack">
|
|
42
|
+
<slot name="bottom-bar-principal"></slot>
|
|
43
|
+
</div>
|
|
44
|
+
<div part="root toolbar-trailing-stack">
|
|
45
|
+
<slot name="bottom-bar-trailing"></slot>
|
|
46
|
+
</div>
|
|
47
|
+
</div>`));
|
|
48
|
+
}
|
|
49
|
+
#shadowRoot;
|
|
50
|
+
get #scrollView() {
|
|
51
|
+
return this.parentElement?.querySelector(':scope>scroll-view') ?? undefined; //this.previousElementSibling ?? undefined
|
|
52
|
+
}
|
|
53
|
+
constructor() {
|
|
54
|
+
super();
|
|
55
|
+
this.#shadowRoot = this.attachShadow({ mode: 'closed' });
|
|
56
|
+
this.#shadowRoot.appendChild(document.importNode(this.constructor.template, true));
|
|
57
|
+
}
|
|
58
|
+
connectedCallback() {
|
|
59
|
+
if (devFlags.debug)
|
|
60
|
+
console.debug(`${_a.name} ⚡️ connect`);
|
|
61
|
+
// NOTE: wait for config
|
|
62
|
+
// Snapshot.waitReady.then(() => {
|
|
63
|
+
for (const el of this.#shadowRoot.querySelectorAll(`[part*="toolbar-leading-stack"],[part*="toolbar-trailing-stack"]`))
|
|
64
|
+
observers.observe(el, this.#measureStacks.bind(this));
|
|
65
|
+
// })
|
|
66
|
+
}
|
|
67
|
+
disconnectedCallback() {
|
|
68
|
+
if (devFlags.debug)
|
|
69
|
+
console.debug(`${_a.name} ⚡️ disconnect`);
|
|
70
|
+
observers.unobserve(this);
|
|
71
|
+
}
|
|
72
|
+
#measureStacks(entry) {
|
|
73
|
+
if (devFlags.debug)
|
|
74
|
+
console.debug(`${_a.name} ⚡️ measure`);
|
|
75
|
+
if (this.closest('[hidden]'))
|
|
76
|
+
return;
|
|
77
|
+
const leading = 'toolbar-leading-stack', trailing = 'toolbar-trailing-stack';
|
|
78
|
+
const parentMap = {
|
|
79
|
+
'top-bar': 'navbar',
|
|
80
|
+
'bottom-bar': 'toolbar', //'bottombar',
|
|
81
|
+
};
|
|
82
|
+
const { contentRect: { width }, target, } = entry;
|
|
83
|
+
const parentPart = target.parentElement?.part.contains('top-bar') ? 'top-bar' : target.parentElement?.part.contains('bottom-bar') ? 'bottom-bar' : null;
|
|
84
|
+
if (!parentPart)
|
|
85
|
+
return;
|
|
86
|
+
const side = target.part.contains(leading) ? 'inline-start' : target.part.contains(trailing) ? 'inline-end' : null;
|
|
87
|
+
if (!side)
|
|
88
|
+
return;
|
|
89
|
+
const prop = `--${parentMap[parentPart]}-padding-${side}`;
|
|
90
|
+
this.#scrollView?.style?.setProperty(prop, `${Math.round(width)}px`); // $.prop(prop, `${Math.round(width)}px`, this.#scrollView) //
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
_a = ToolBar;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BUG: Safari on IOS reports inaccurate innerHeight (which is what we really want) on orientationchange.
|
|
3
|
+
* So we live with a pescy body-scrollbar that shows up on resize on desktops.
|
|
4
|
+
*
|
|
5
|
+
* @summary Required component, used to handle the virtual keyboard on touch devices.
|
|
6
|
+
*
|
|
7
|
+
* @attr {Inter} system-font - Prefers the "Inter" font family, if loaded.
|
|
8
|
+
*/
|
|
9
|
+
export declare class VKeyboard extends HTMLElement {
|
|
10
|
+
#private;
|
|
11
|
+
constructor();
|
|
12
|
+
disconnectedCallback(): void;
|
|
13
|
+
connectedCallback(): void;
|
|
14
|
+
set shouldKeyboardBeOpen(fn: () => boolean);
|
|
15
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
var _a;
|
|
2
|
+
import { CleanupRegistry } from '../internal/class/cleanup-registry';
|
|
3
|
+
import { $, devFlags, frame, onoff, sleep } from '../internal/utils';
|
|
4
|
+
import { Snapshot } from '../snapshot';
|
|
5
|
+
/**
|
|
6
|
+
* BUG: Safari on IOS reports inaccurate innerHeight (which is what we really want) on orientationchange.
|
|
7
|
+
* So we live with a pescy body-scrollbar that shows up on resize on desktops.
|
|
8
|
+
*
|
|
9
|
+
* @summary Required component, used to handle the virtual keyboard on touch devices.
|
|
10
|
+
*
|
|
11
|
+
* @attr {Inter} system-font - Prefers the "Inter" font family, if loaded.
|
|
12
|
+
*/
|
|
13
|
+
export class VKeyboard extends HTMLElement {
|
|
14
|
+
/**
|
|
15
|
+
* Change like this:
|
|
16
|
+
* document.querySelector('v-keyboard').shouldKeyboardBeOpen = () => document.activeElement.tagName === 'INPUT'
|
|
17
|
+
*/
|
|
18
|
+
#shouldKeyboardBeOpenCallback = () => {
|
|
19
|
+
return 'INPUT' === document.activeElement?.tagName && 'text' === document.activeElement?.getAttribute('type');
|
|
20
|
+
};
|
|
21
|
+
constructor() {
|
|
22
|
+
super();
|
|
23
|
+
}
|
|
24
|
+
disconnectedCallback() {
|
|
25
|
+
if (devFlags.debug)
|
|
26
|
+
console.debug(`${_a.name} ⚡️ disconnect`);
|
|
27
|
+
CleanupRegistry.unregister(this);
|
|
28
|
+
}
|
|
29
|
+
connectedCallback() {
|
|
30
|
+
if (devFlags.debug)
|
|
31
|
+
console.debug(`${_a.name} ⚡️ connect`);
|
|
32
|
+
this.inert = true;
|
|
33
|
+
CleanupRegistry.register(this, onoff([
|
|
34
|
+
{ types: 'scroll', listener: this.#handleWindowScroll },
|
|
35
|
+
{ types: 'orientationchange', listener: this.#handleWindowOrientationchange },
|
|
36
|
+
], self).on());
|
|
37
|
+
CleanupRegistry.register(this, onoff('resize', this.#handleVisualViewportResize, self.visualViewport ?? undefined, { passive: true }).on());
|
|
38
|
+
this.#handleVisualViewportResize();
|
|
39
|
+
//
|
|
40
|
+
CleanupRegistry.register(this, onoff('focusin', this.#handleBodyFocusin, document.body).on());
|
|
41
|
+
Snapshot.waitReady.then(() => {
|
|
42
|
+
document.documentElement.style.setProperty('--root-font-size', parseFloat(self.getComputedStyle(document.documentElement).fontSize).toFixed(5));
|
|
43
|
+
CleanupRegistry.register(this, onoff('transitionrun', this.#handleDocumentTransitionrun, document.documentElement).on());
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
#handleDocumentTransitionrun = (evt) => {
|
|
47
|
+
if (evt.target !== document.documentElement || 'font-size' !== evt.propertyName)
|
|
48
|
+
return;
|
|
49
|
+
document.documentElement.style.setProperty('--root-font-size', parseFloat(self.getComputedStyle(document.documentElement).fontSize).toFixed(5));
|
|
50
|
+
};
|
|
51
|
+
#handleWindowScroll = () => {
|
|
52
|
+
self.scrollTo(0, 0);
|
|
53
|
+
};
|
|
54
|
+
#handleVisualViewportResize = () => {
|
|
55
|
+
const dvh = self.visualViewport?.height ?? 0, fullLvh = this.offsetHeight;
|
|
56
|
+
const diff = Math.abs(self.outerHeight - (this.#shouldKeyboardBeOpenCallback() ? dvh : fullLvh));
|
|
57
|
+
$.prop('--100lvh', 30 < diff ? `${dvh}px` : `${fullLvh}px`, document.documentElement); //document.documentElement.style.setProperty('--100lvh', 30 < diff ? `${dvh}px` : `${fullLvh}px`)
|
|
58
|
+
$.prop('--keyboard-inset-top', 30 < diff ? `${dvh}px` : `${fullLvh}px`, document.documentElement); //document.documentElement.style.setProperty('--keyboard-inset-top', 30 < diff ? `${dvh}px` : `${fullLvh}px`)
|
|
59
|
+
$.prop('--keyboard-inset-height', 30 < diff ? `${diff}px` : `0px`, document.documentElement); //document.documentElement.style.setProperty('--keyboard-inset-height', 30 < diff ? `${diff}px` : `0px`)
|
|
60
|
+
self.scrollTo(0, 0);
|
|
61
|
+
};
|
|
62
|
+
#handleWindowOrientationchange = async () => {
|
|
63
|
+
if (devFlags.debug)
|
|
64
|
+
console.debug(`${_a.name} ⚡️ orientationchange`);
|
|
65
|
+
if (!(await frame(this)))
|
|
66
|
+
return; //self.requestAnimationFrame(this.#ifKeyboardScrollIntoActiveElement)
|
|
67
|
+
this.#ifKeyboardScrollIntoActiveElement();
|
|
68
|
+
};
|
|
69
|
+
#handleBodyFocusin = async () => {
|
|
70
|
+
if (devFlags.debug)
|
|
71
|
+
console.debug(`${_a.name} ⚡️ focusin`);
|
|
72
|
+
await sleep(100); // self.setTimeout(this.#ifKeyboardScrollIntoActiveElement, 100)
|
|
73
|
+
if (!this.isConnected)
|
|
74
|
+
return;
|
|
75
|
+
this.#ifKeyboardScrollIntoActiveElement();
|
|
76
|
+
};
|
|
77
|
+
#ifKeyboardScrollIntoActiveElement = () => {
|
|
78
|
+
if (!this.#shouldKeyboardBeOpenCallback() || !document.activeElement)
|
|
79
|
+
return;
|
|
80
|
+
const parent = document.activeElement?.closest('scroll-view');
|
|
81
|
+
parent?.centerScrollToElement?.(document.activeElement);
|
|
82
|
+
};
|
|
83
|
+
set shouldKeyboardBeOpen(fn) {
|
|
84
|
+
if ('function' !== typeof fn)
|
|
85
|
+
throw new TypeError(`fn must be typeof function`);
|
|
86
|
+
this.#shouldKeyboardBeOpenCallback = fn;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
_a = VKeyboard;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @attr {leading|"leading fill"|center|trailing|fill|space-between} distribution - The distribution of cols
|
|
3
|
+
*
|
|
4
|
+
* @attr {"auto spacer"|"auto auto spacer"|"auto auto auto spacer"} template
|
|
5
|
+
*/
|
|
6
|
+
export declare class VStack extends HTMLElement {
|
|
7
|
+
constructor();
|
|
8
|
+
connectedCallback(): void;
|
|
9
|
+
disconnectedCallback(): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { devFlags } from '../internal/utils';
|
|
2
|
+
/**
|
|
3
|
+
* @attr {leading|"leading fill"|center|trailing|fill|space-between} distribution - The distribution of cols
|
|
4
|
+
*
|
|
5
|
+
* @attr {"auto spacer"|"auto auto spacer"|"auto auto auto spacer"} template
|
|
6
|
+
*/
|
|
7
|
+
export class VStack extends HTMLElement {
|
|
8
|
+
constructor() {
|
|
9
|
+
super();
|
|
10
|
+
}
|
|
11
|
+
connectedCallback() {
|
|
12
|
+
if (devFlags.debug)
|
|
13
|
+
console.debug(`${VStack.name} ⚡️ connect`);
|
|
14
|
+
}
|
|
15
|
+
disconnectedCallback() {
|
|
16
|
+
if (devFlags.debug)
|
|
17
|
+
console.debug(`${VStack.name} ⚡️ disconnect`);
|
|
18
|
+
}
|
|
19
|
+
}
|