@deepfuture/dui-components 0.0.21 → 1.0.0
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 +56 -65
- package/_install.js +11 -0
- package/accordion/accordion-item.d.ts +3 -20
- package/accordion/accordion-item.js +93 -292
- package/accordion/accordion.d.ts +3 -18
- package/accordion/accordion.js +9 -247
- package/accordion/index.d.ts +6 -6
- package/accordion/index.js +5 -5
- package/alert-dialog/alert-dialog-close.d.ts +3 -14
- package/alert-dialog/alert-dialog-close.js +4 -34
- package/alert-dialog/alert-dialog-popup.d.ts +3 -32
- package/alert-dialog/alert-dialog-popup.js +68 -317
- package/alert-dialog/alert-dialog-trigger.d.ts +3 -14
- package/alert-dialog/alert-dialog-trigger.js +4 -51
- package/alert-dialog/alert-dialog.d.ts +3 -30
- package/alert-dialog/alert-dialog.js +8 -158
- package/alert-dialog/index.d.ts +11 -11
- package/alert-dialog/index.js +9 -9
- package/all.d.ts +159 -123
- package/all.js +134 -231
- package/avatar/avatar.d.ts +3 -39
- package/avatar/avatar.js +18 -238
- package/avatar/index.d.ts +4 -4
- package/avatar/index.js +3 -3
- package/badge/badge.d.ts +3 -10
- package/badge/badge.js +88 -22
- package/badge/index.d.ts +2 -3
- package/badge/index.js +2 -3
- package/breadcrumb/breadcrumb-ellipsis.d.ts +3 -12
- package/breadcrumb/breadcrumb-ellipsis.js +8 -34
- package/breadcrumb/breadcrumb-item.d.ts +3 -11
- package/breadcrumb/breadcrumb-item.js +7 -26
- package/breadcrumb/breadcrumb-link.d.ts +3 -12
- package/breadcrumb/breadcrumb-link.js +16 -26
- package/breadcrumb/breadcrumb-page.d.ts +3 -11
- package/breadcrumb/breadcrumb-page.js +8 -31
- package/breadcrumb/breadcrumb-separator.d.ts +3 -12
- package/breadcrumb/breadcrumb-separator.js +8 -31
- package/breadcrumb/breadcrumb.d.ts +3 -12
- package/breadcrumb/breadcrumb.js +10 -33
- package/breadcrumb/index.d.ts +12 -13
- package/breadcrumb/index.js +12 -13
- package/button/button.d.ts +3 -32
- package/button/button.js +221 -165
- package/button/index.d.ts +3 -3
- package/button/index.js +3 -3
- package/calendar/calendar.d.ts +3 -31
- package/calendar/calendar.js +71 -481
- package/calendar/index.d.ts +3 -3
- package/calendar/index.js +3 -3
- package/card/card.d.ts +3 -27
- package/card/card.js +80 -163
- package/card/index.d.ts +2 -3
- package/card/index.js +2 -3
- package/card-grid/card-grid.d.ts +3 -15
- package/card-grid/card-grid.js +8 -106
- package/card-grid/index.d.ts +2 -3
- package/card-grid/index.js +2 -3
- package/checkbox/checkbox-group.d.ts +3 -34
- package/checkbox/checkbox-group.js +11 -188
- package/checkbox/checkbox.d.ts +3 -47
- package/checkbox/checkbox.js +43 -341
- package/checkbox/index.d.ts +6 -6
- package/checkbox/index.js +5 -5
- package/collapsible/collapsible.d.ts +3 -20
- package/collapsible/collapsible.js +83 -277
- package/collapsible/index.d.ts +3 -3
- package/collapsible/index.js +3 -3
- package/combobox/combobox.d.ts +3 -47
- package/combobox/combobox.js +136 -538
- package/combobox/index.d.ts +4 -4
- package/combobox/index.js +3 -3
- package/command/command-empty.d.ts +3 -8
- package/command/command-empty.js +10 -88
- package/command/command-group.d.ts +3 -13
- package/command/command-group.js +15 -114
- package/command/command-input.d.ts +3 -11
- package/command/command-input.js +20 -136
- package/command/command-item.d.ts +3 -18
- package/command/command-item.js +24 -212
- package/command/command-list.d.ts +3 -7
- package/command/command-list.js +11 -79
- package/command/command-separator.d.ts +3 -5
- package/command/command-separator.js +10 -11
- package/command/command-shortcut.d.ts +3 -5
- package/command/command-shortcut.js +9 -12
- package/command/command.d.ts +3 -23
- package/command/command.js +10 -339
- package/command/index.d.ts +17 -19
- package/command/index.js +16 -18
- package/data-table/data-table.d.ts +3 -57
- package/data-table/data-table.js +86 -449
- package/data-table/index.d.ts +3 -4
- package/data-table/index.js +2 -3
- package/dialog/dialog-close.d.ts +3 -14
- package/dialog/dialog-close.js +4 -34
- package/dialog/dialog-popup.d.ts +3 -34
- package/dialog/dialog-popup.js +70 -336
- package/dialog/dialog-trigger.d.ts +3 -14
- package/dialog/dialog-trigger.js +4 -51
- package/dialog/dialog.d.ts +3 -30
- package/dialog/dialog.js +8 -158
- package/dialog/index.d.ts +11 -11
- package/dialog/index.js +9 -9
- package/dropzone/dropzone.d.ts +3 -72
- package/dropzone/dropzone.js +29 -407
- package/dropzone/index.d.ts +4 -4
- package/dropzone/index.js +3 -3
- package/field/field.d.ts +3 -30
- package/field/field.js +34 -353
- package/field/index.d.ts +1 -0
- package/field/index.js +1 -0
- package/fieldset/fieldset.d.ts +3 -18
- package/fieldset/fieldset.js +21 -110
- package/fieldset/index.d.ts +1 -0
- package/fieldset/index.js +1 -0
- package/icon/icon.d.ts +3 -15
- package/icon/icon.js +4 -33
- package/icon/index.d.ts +2 -3
- package/icon/index.js +2 -3
- package/input/index.d.ts +3 -3
- package/input/index.js +3 -3
- package/input/input.d.ts +3 -49
- package/input/input.js +57 -238
- package/menu/index.d.ts +4 -5
- package/menu/index.js +4 -5
- package/menu/menu-item.d.ts +3 -13
- package/menu/menu-item.js +41 -91
- package/menu/menu.d.ts +3 -15
- package/menu/menu.js +27 -277
- package/menubar/index.d.ts +3 -4
- package/menubar/index.js +2 -3
- package/menubar/menubar.d.ts +3 -19
- package/menubar/menubar.js +12 -183
- package/number-field/index.d.ts +3 -3
- package/number-field/index.js +3 -3
- package/number-field/number-field.d.ts +3 -55
- package/number-field/number-field.js +205 -698
- package/package.json +126 -113
- package/popover/index.d.ts +11 -11
- package/popover/index.js +9 -9
- package/popover/popover-close.d.ts +3 -12
- package/popover/popover-close.js +4 -32
- package/popover/popover-popup.d.ts +3 -18
- package/popover/popover-popup.js +28 -205
- package/popover/popover-trigger.d.ts +3 -13
- package/popover/popover-trigger.js +4 -73
- package/popover/popover.d.ts +3 -29
- package/popover/popover.js +8 -207
- package/portal/index.d.ts +3 -4
- package/portal/index.js +2 -3
- package/portal/portal.d.ts +3 -27
- package/portal/portal.js +8 -157
- package/preview-card/index.d.ts +9 -9
- package/preview-card/index.js +7 -7
- package/preview-card/preview-card-popup.d.ts +3 -14
- package/preview-card/preview-card-popup.js +29 -194
- package/preview-card/preview-card-trigger.d.ts +3 -12
- package/preview-card/preview-card-trigger.js +4 -74
- package/preview-card/preview-card.d.ts +3 -33
- package/preview-card/preview-card.js +8 -239
- package/progress/index.d.ts +2 -3
- package/progress/index.js +2 -3
- package/progress/progress.d.ts +3 -17
- package/progress/progress.js +28 -130
- package/radio/index.d.ts +6 -6
- package/radio/index.js +5 -5
- package/radio/radio-group.d.ts +3 -37
- package/radio/radio-group.js +8 -200
- package/radio/radio.d.ts +3 -28
- package/radio/radio.js +38 -213
- package/scroll-area/index.d.ts +2 -3
- package/scroll-area/index.js +2 -3
- package/scroll-area/scroll-area.d.ts +3 -36
- package/scroll-area/scroll-area.js +25 -535
- package/select/index.d.ts +3 -4
- package/select/index.js +2 -3
- package/select/select.d.ts +3 -39
- package/select/select.js +115 -425
- package/separator/index.d.ts +2 -3
- package/separator/index.js +2 -3
- package/separator/separator.d.ts +3 -10
- package/separator/separator.js +23 -85
- package/sidebar/index.d.ts +29 -29
- package/sidebar/index.js +27 -32
- package/sidebar/sidebar-content.d.ts +3 -12
- package/sidebar/sidebar-content.js +7 -29
- package/sidebar/sidebar-footer.d.ts +3 -10
- package/sidebar/sidebar-footer.js +7 -20
- package/sidebar/sidebar-group-label.d.ts +3 -15
- package/sidebar/sidebar-group-label.js +17 -41
- package/sidebar/sidebar-group.d.ts +3 -13
- package/sidebar/sidebar-group.js +7 -24
- package/sidebar/sidebar-header.d.ts +3 -10
- package/sidebar/sidebar-header.js +7 -16
- package/sidebar/sidebar-inset.d.ts +3 -13
- package/sidebar/sidebar-inset.js +7 -28
- package/sidebar/sidebar-menu-button.d.ts +3 -26
- package/sidebar/sidebar-menu-button.js +60 -217
- package/sidebar/sidebar-menu-item.d.ts +3 -10
- package/sidebar/sidebar-menu-item.js +7 -19
- package/sidebar/sidebar-menu.d.ts +3 -12
- package/sidebar/sidebar-menu.js +7 -25
- package/sidebar/sidebar-provider.d.ts +3 -34
- package/sidebar/sidebar-provider.js +22 -232
- package/sidebar/sidebar-separator.d.ts +3 -10
- package/sidebar/sidebar-separator.js +9 -19
- package/sidebar/sidebar-trigger.d.ts +3 -14
- package/sidebar/sidebar-trigger.js +10 -46
- package/sidebar/sidebar.d.ts +3 -19
- package/sidebar/sidebar.js +65 -262
- package/slider/index.d.ts +3 -3
- package/slider/index.js +3 -3
- package/slider/slider.d.ts +3 -45
- package/slider/slider.js +97 -382
- package/spinner/index.d.ts +2 -3
- package/spinner/index.js +2 -3
- package/spinner/spinner.d.ts +3 -11
- package/spinner/spinner.js +20 -163
- package/split-button/index.d.ts +3 -1
- package/split-button/index.js +3 -1
- package/split-button/split-button.d.ts +3 -33
- package/split-button/split-button.js +307 -394
- package/stepper/index.d.ts +3 -3
- package/stepper/index.js +3 -3
- package/stepper/stepper.d.ts +3 -41
- package/stepper/stepper.js +57 -381
- package/switch/index.d.ts +3 -3
- package/switch/index.js +3 -3
- package/switch/switch.d.ts +3 -30
- package/switch/switch.js +63 -228
- package/tabs/index.d.ts +12 -12
- package/tabs/index.js +11 -11
- package/tabs/tab.d.ts +3 -14
- package/tabs/tab.js +33 -131
- package/tabs/tabs-indicator.d.ts +3 -9
- package/tabs/tabs-indicator.js +17 -22
- package/tabs/tabs-list.d.ts +3 -15
- package/tabs/tabs-list.js +14 -113
- package/tabs/tabs-panel.d.ts +3 -16
- package/tabs/tabs-panel.js +32 -114
- package/tabs/tabs.d.ts +3 -22
- package/tabs/tabs.js +8 -170
- package/textarea/index.d.ts +4 -4
- package/textarea/index.js +3 -3
- package/textarea/textarea.d.ts +3 -36
- package/textarea/textarea.js +63 -220
- package/toggle/index.d.ts +6 -6
- package/toggle/index.js +5 -5
- package/toggle/toggle-group.d.ts +3 -27
- package/toggle/toggle-group.js +9 -224
- package/toggle/toggle.d.ts +3 -26
- package/toggle/toggle.js +94 -178
- package/tokens/properties.css +361 -0
- package/tokens/prose.css +250 -0
- package/tokens/prose.d.ts +2 -0
- package/tokens/prose.js +4 -0
- package/tokens/tokens-raw.d.ts +2 -0
- package/tokens/tokens-raw.js +2 -0
- package/tokens/tokens.css +409 -0
- package/tokens/tokens.d.ts +2 -0
- package/tokens/tokens.js +5 -0
- package/toolbar/index.d.ts +2 -3
- package/toolbar/index.js +2 -3
- package/toolbar/toolbar.d.ts +3 -11
- package/toolbar/toolbar.js +25 -116
- package/tooltip/index.d.ts +9 -9
- package/tooltip/index.js +7 -7
- package/tooltip/tooltip-popup.d.ts +3 -14
- package/tooltip/tooltip-popup.js +32 -185
- package/tooltip/tooltip-trigger.d.ts +3 -14
- package/tooltip/tooltip-trigger.js +5 -148
- package/tooltip/tooltip.d.ts +3 -35
- package/tooltip/tooltip.js +8 -253
- package/trunc/index.d.ts +2 -3
- package/trunc/index.js +2 -3
- package/trunc/trunc.d.ts +3 -17
- package/trunc/trunc.js +10 -108
- package/_deprecated/center/center.d.ts +0 -14
- package/_deprecated/center/center.js +0 -37
- package/_deprecated/center/index.d.ts +0 -3
- package/_deprecated/center/index.js +0 -3
- package/_deprecated/center/register.js +0 -4
- package/_deprecated/hstack/hstack.d.ts +0 -25
- package/_deprecated/hstack/hstack.js +0 -187
- package/_deprecated/hstack/index.d.ts +0 -4
- package/_deprecated/hstack/index.js +0 -3
- package/_deprecated/hstack/register.d.ts +0 -1
- package/_deprecated/hstack/register.js +0 -4
- package/_deprecated/page-inset/index.d.ts +0 -3
- package/_deprecated/page-inset/index.js +0 -3
- package/_deprecated/page-inset/page-inset.d.ts +0 -28
- package/_deprecated/page-inset/page-inset.js +0 -151
- package/_deprecated/page-inset/register.d.ts +0 -1
- package/_deprecated/page-inset/register.js +0 -4
- package/_deprecated/vstack/index.d.ts +0 -3
- package/_deprecated/vstack/index.js +0 -3
- package/_deprecated/vstack/register.d.ts +0 -1
- package/_deprecated/vstack/register.js +0 -4
- package/_deprecated/vstack/vstack.d.ts +0 -17
- package/_deprecated/vstack/vstack.js +0 -125
- package/accordion/accordion-context.d.ts +0 -15
- package/accordion/accordion-context.js +0 -3
- package/alert-dialog/alert-dialog-context.d.ts +0 -13
- package/alert-dialog/alert-dialog-context.js +0 -3
- package/checkbox/checkbox-group-context.d.ts +0 -11
- package/checkbox/checkbox-group-context.js +0 -3
- package/command/command-context.d.ts +0 -30
- package/command/command-context.js +0 -3
- package/command/command-score.d.ts +0 -6
- package/command/command-score.js +0 -31
- package/dialog/dialog-context.d.ts +0 -13
- package/dialog/dialog-context.js +0 -3
- package/global.d.ts +0 -179
- package/menubar/menubar-context.d.ts +0 -9
- package/menubar/menubar-context.js +0 -2
- package/popover/popover-context.d.ts +0 -17
- package/popover/popover-context.js +0 -3
- package/preview-card/preview-card-context.d.ts +0 -16
- package/preview-card/preview-card-context.js +0 -3
- package/radio/radio-group-context.d.ts +0 -11
- package/radio/radio-group-context.js +0 -2
- package/sidebar/sidebar-context.d.ts +0 -15
- package/sidebar/sidebar-context.js +0 -3
- package/split-button/register.d.ts +0 -1
- package/split-button/register.js +0 -4
- package/tabs/tabs-context.d.ts +0 -8
- package/tabs/tabs-context.js +0 -2
- package/toggle/toggle-group-context.d.ts +0 -9
- package/toggle/toggle-group-context.js +0 -2
- package/tooltip/tooltip-context.d.ts +0 -17
- package/tooltip/tooltip-context.js +0 -3
- /package/{_deprecated/center/register.d.ts → _install.d.ts} +0 -0
package/popover/popover-popup.js
CHANGED
|
@@ -1,209 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if (_ = accept(result.get)) descriptor.get = _;
|
|
18
|
-
if (_ = accept(result.set)) descriptor.set = _;
|
|
19
|
-
if (_ = accept(result.init)) initializers.unshift(_);
|
|
20
|
-
}
|
|
21
|
-
else if (_ = accept(result)) {
|
|
22
|
-
if (kind === "field") initializers.unshift(_);
|
|
23
|
-
else descriptor[key] = _;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
27
|
-
done = true;
|
|
28
|
-
};
|
|
29
|
-
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
30
|
-
var useValue = arguments.length > 2;
|
|
31
|
-
for (var i = 0; i < initializers.length; i++) {
|
|
32
|
-
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
33
|
-
}
|
|
34
|
-
return useValue ? value : void 0;
|
|
35
|
-
};
|
|
36
|
-
var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
|
|
37
|
-
if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
|
|
38
|
-
return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
|
|
39
|
-
};
|
|
40
|
-
import { css, html, LitElement } from "lit";
|
|
41
|
-
import { property, state } from "lit/decorators.js";
|
|
42
|
-
import { ContextConsumer } from "@lit/context";
|
|
43
|
-
import { base } from "@deepfuture/dui-core/base";
|
|
44
|
-
import { popoverContext } from "./popover-context.js";
|
|
45
|
-
import { FloatingPortalController } from "@deepfuture/dui-core/floating-portal-controller";
|
|
46
|
-
import { renderArrow, } from "@deepfuture/dui-core/floating-popup-utils";
|
|
47
|
-
const hostStyles = css `
|
|
48
|
-
:host {
|
|
49
|
-
display: contents;
|
|
1
|
+
import { css } from "lit";
|
|
2
|
+
import { DuiPopoverPopupPrimitive } from "@deepfuture/dui-primitives/popover";
|
|
3
|
+
import "../_install.js";
|
|
4
|
+
const styles = css `
|
|
5
|
+
.Popup {
|
|
6
|
+
padding: var(--popover-popup-padding, var(--space-4));
|
|
7
|
+
border-radius: var(--radius-md);
|
|
8
|
+
background: var(--surface-3);
|
|
9
|
+
color: var(--text-1);
|
|
10
|
+
font-family: var(--font-sans);
|
|
11
|
+
font-size: var(--text-sm);
|
|
12
|
+
line-height: var(--text-sm--line-height);
|
|
13
|
+
box-shadow: var(--shadow-md);
|
|
14
|
+
border: var(--border-width-thin) solid var(--border);
|
|
15
|
+
transition-duration: var(--duration-faster);
|
|
16
|
+
transition-timing-function: var(--ease-out-3);
|
|
50
17
|
}
|
|
51
18
|
|
|
52
|
-
.
|
|
53
|
-
|
|
19
|
+
.Arrow .arrow-fill {
|
|
20
|
+
fill: var(--surface-3);
|
|
54
21
|
}
|
|
55
|
-
`;
|
|
56
|
-
/** Structural styles injected into the portal positioner. */
|
|
57
|
-
const portalPopupStyles = [
|
|
58
|
-
css `
|
|
59
|
-
.Popup {
|
|
60
|
-
box-sizing: border-box;
|
|
61
|
-
pointer-events: auto;
|
|
62
|
-
transform-origin: var(--transform-origin, center);
|
|
63
|
-
opacity: 1;
|
|
64
|
-
transform: scale(1);
|
|
65
|
-
transition-property: opacity, transform;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
.Popup[data-starting-style],
|
|
69
|
-
.Popup[data-ending-style] {
|
|
70
|
-
opacity: 0;
|
|
71
|
-
transform: scale(0.96);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
.Popup[data-side="top"] {
|
|
75
|
-
--transform-origin: bottom center;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
.Popup[data-side="bottom"] {
|
|
79
|
-
--transform-origin: top center;
|
|
80
|
-
}
|
|
81
22
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
.Arrow[data-side="bottom"] {
|
|
95
|
-
top: -5px;
|
|
96
|
-
left: 50%;
|
|
97
|
-
transform: translateX(-50%) rotate(180deg);
|
|
98
|
-
}
|
|
99
|
-
`,
|
|
100
|
-
];
|
|
101
|
-
/**
|
|
102
|
-
* `<dui-popover-popup>` — The popover popup content container.
|
|
103
|
-
*
|
|
104
|
-
* @slot - Popover content.
|
|
105
|
-
*/
|
|
106
|
-
let DuiPopoverPopup = (() => {
|
|
107
|
-
let _classSuper = LitElement;
|
|
108
|
-
let _showArrow_decorators;
|
|
109
|
-
let _showArrow_initializers = [];
|
|
110
|
-
let _showArrow_extraInitializers = [];
|
|
111
|
-
let _closeOnClick_decorators;
|
|
112
|
-
let _closeOnClick_initializers = [];
|
|
113
|
-
let _closeOnClick_extraInitializers = [];
|
|
114
|
-
let _private_side_decorators;
|
|
115
|
-
let _private_side_initializers = [];
|
|
116
|
-
let _private_side_extraInitializers = [];
|
|
117
|
-
let _private_side_descriptor;
|
|
118
|
-
return class DuiPopoverPopup extends _classSuper {
|
|
119
|
-
static {
|
|
120
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
121
|
-
_showArrow_decorators = [property({ type: Boolean, attribute: "show-arrow" })];
|
|
122
|
-
_closeOnClick_decorators = [property({ type: Boolean, attribute: "close-on-click" })];
|
|
123
|
-
_private_side_decorators = [state()];
|
|
124
|
-
__esDecorate(this, null, _showArrow_decorators, { kind: "accessor", name: "showArrow", static: false, private: false, access: { has: obj => "showArrow" in obj, get: obj => obj.showArrow, set: (obj, value) => { obj.showArrow = value; } }, metadata: _metadata }, _showArrow_initializers, _showArrow_extraInitializers);
|
|
125
|
-
__esDecorate(this, null, _closeOnClick_decorators, { kind: "accessor", name: "closeOnClick", static: false, private: false, access: { has: obj => "closeOnClick" in obj, get: obj => obj.closeOnClick, set: (obj, value) => { obj.closeOnClick = value; } }, metadata: _metadata }, _closeOnClick_initializers, _closeOnClick_extraInitializers);
|
|
126
|
-
__esDecorate(this, _private_side_descriptor = { get: __setFunctionName(function () { return this.#side_accessor_storage; }, "#side", "get"), set: __setFunctionName(function (value) { this.#side_accessor_storage = value; }, "#side", "set") }, _private_side_decorators, { kind: "accessor", name: "#side", static: false, private: true, access: { has: obj => #side in obj, get: obj => obj.#side, set: (obj, value) => { obj.#side = value; } }, metadata: _metadata }, _private_side_initializers, _private_side_extraInitializers);
|
|
127
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
128
|
-
}
|
|
129
|
-
static tagName = "dui-popover-popup";
|
|
130
|
-
static styles = [base, hostStyles];
|
|
131
|
-
#showArrow_accessor_storage = __runInitializers(this, _showArrow_initializers, true);
|
|
132
|
-
/** Whether to show an arrow pointing to the trigger. */
|
|
133
|
-
get showArrow() { return this.#showArrow_accessor_storage; }
|
|
134
|
-
set showArrow(value) { this.#showArrow_accessor_storage = value; }
|
|
135
|
-
#closeOnClick_accessor_storage = (__runInitializers(this, _showArrow_extraInitializers), __runInitializers(this, _closeOnClick_initializers, false));
|
|
136
|
-
/** Close the popover when content inside the popup is clicked. */
|
|
137
|
-
get closeOnClick() { return this.#closeOnClick_accessor_storage; }
|
|
138
|
-
set closeOnClick(value) { this.#closeOnClick_accessor_storage = value; }
|
|
139
|
-
#side_accessor_storage = (__runInitializers(this, _closeOnClick_extraInitializers), __runInitializers(this, _private_side_initializers, "bottom"));
|
|
140
|
-
get #side() { return _private_side_descriptor.get.call(this); }
|
|
141
|
-
set #side(value) { return _private_side_descriptor.set.call(this, value); }
|
|
142
|
-
#ctx = (__runInitializers(this, _private_side_extraInitializers), new ContextConsumer(this, {
|
|
143
|
-
context: popoverContext,
|
|
144
|
-
subscribe: true,
|
|
145
|
-
}));
|
|
146
|
-
#wasOpen = false;
|
|
147
|
-
#portal = new FloatingPortalController(this, {
|
|
148
|
-
getAnchor: () => this.#ctx.value?.triggerEl,
|
|
149
|
-
matchWidth: false,
|
|
150
|
-
placement: "bottom",
|
|
151
|
-
offset: 8,
|
|
152
|
-
styles: portalPopupStyles,
|
|
153
|
-
contentContainer: ".Content",
|
|
154
|
-
onPosition: ({ placement }) => {
|
|
155
|
-
const actualSide = placement.split("-")[0];
|
|
156
|
-
if (actualSide !== this.#side) {
|
|
157
|
-
this.#side = actualSide;
|
|
158
|
-
}
|
|
159
|
-
},
|
|
160
|
-
renderPopup: (portal) => {
|
|
161
|
-
const popupId = this.#ctx.value?.popupId ?? "";
|
|
162
|
-
return html `
|
|
163
|
-
<div
|
|
164
|
-
class="Popup"
|
|
165
|
-
id="${popupId}"
|
|
166
|
-
role="dialog"
|
|
167
|
-
?data-starting-style="${portal.isStarting}"
|
|
168
|
-
?data-ending-style="${portal.isEnding}"
|
|
169
|
-
data-side="${this.#side}"
|
|
170
|
-
@click="${this.#handleContentClick}"
|
|
171
|
-
>
|
|
172
|
-
<div class="Content"></div>
|
|
173
|
-
${this.showArrow ? renderArrow(this.#side) : ""}
|
|
174
|
-
</div>
|
|
175
|
-
`;
|
|
176
|
-
},
|
|
177
|
-
});
|
|
178
|
-
/** Check if an event path includes this popup's portal positioner. */
|
|
179
|
-
containsEventTarget(path) {
|
|
180
|
-
const positioner = this.#portal.positionerElement;
|
|
181
|
-
return positioner !== null && path.includes(positioner);
|
|
182
|
-
}
|
|
183
|
-
#handleContentClick = () => {
|
|
184
|
-
if (this.closeOnClick) {
|
|
185
|
-
this.#ctx.value?.closePopover();
|
|
186
|
-
}
|
|
187
|
-
};
|
|
188
|
-
updated() {
|
|
189
|
-
const isOpen = this.#ctx.value?.open ?? false;
|
|
190
|
-
if (isOpen && !this.#wasOpen) {
|
|
191
|
-
this.#updatePlacement();
|
|
192
|
-
this.#portal.open();
|
|
193
|
-
}
|
|
194
|
-
else if (!isOpen && this.#wasOpen) {
|
|
195
|
-
this.#portal.close();
|
|
196
|
-
}
|
|
197
|
-
this.#wasOpen = isOpen;
|
|
198
|
-
}
|
|
199
|
-
#updatePlacement() {
|
|
200
|
-
const side = this.#ctx.value?.side ?? "bottom";
|
|
201
|
-
this.#portal.placement = side;
|
|
202
|
-
this.#portal.offset = this.#ctx.value?.sideOffset ?? 8;
|
|
203
|
-
}
|
|
204
|
-
render() {
|
|
205
|
-
return html `<div class="slot-wrapper"><slot></slot></div>`;
|
|
206
|
-
}
|
|
207
|
-
};
|
|
208
|
-
})();
|
|
209
|
-
export { DuiPopoverPopup };
|
|
23
|
+
.Arrow .arrow-stroke {
|
|
24
|
+
fill: none;
|
|
25
|
+
stroke: var(--border);
|
|
26
|
+
stroke-width: 1px;
|
|
27
|
+
}
|
|
28
|
+
`;
|
|
29
|
+
export class DuiPopoverPopup extends DuiPopoverPopupPrimitive {
|
|
30
|
+
static styles = [...DuiPopoverPopupPrimitive.styles, styles];
|
|
31
|
+
}
|
|
32
|
+
customElements.define(DuiPopoverPopup.tagName, DuiPopoverPopup);
|
|
@@ -1,14 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
* `<dui-popover-trigger>` — Click-to-toggle trigger for the popover.
|
|
5
|
-
*
|
|
6
|
-
* @slot - Content that triggers the popover (usually a button).
|
|
7
|
-
*/
|
|
8
|
-
export declare class DuiPopoverTrigger extends LitElement {
|
|
9
|
-
#private;
|
|
10
|
-
static tagName: "dui-popover-trigger";
|
|
11
|
-
static styles: import("lit").CSSResult[];
|
|
12
|
-
protected updated(): void;
|
|
13
|
-
render(): TemplateResult;
|
|
1
|
+
import { DuiPopoverTriggerPrimitive } from "@deepfuture/dui-primitives/popover";
|
|
2
|
+
import "../_install.js";
|
|
3
|
+
export declare class DuiPopoverTrigger extends DuiPopoverTriggerPrimitive {
|
|
14
4
|
}
|
|
@@ -1,74 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
import { base } from "@deepfuture/dui-core/base";
|
|
5
|
-
import { popoverContext } from "./popover-context.js";
|
|
6
|
-
const hostStyles = css `
|
|
7
|
-
:host {
|
|
8
|
-
display: contents;
|
|
9
|
-
}
|
|
10
|
-
`;
|
|
11
|
-
const componentStyles = css `
|
|
12
|
-
.Trigger {
|
|
13
|
-
display: contents;
|
|
14
|
-
}
|
|
15
|
-
`;
|
|
16
|
-
/**
|
|
17
|
-
* `<dui-popover-trigger>` — Click-to-toggle trigger for the popover.
|
|
18
|
-
*
|
|
19
|
-
* @slot - Content that triggers the popover (usually a button).
|
|
20
|
-
*/
|
|
21
|
-
export class DuiPopoverTrigger extends LitElement {
|
|
22
|
-
static tagName = "dui-popover-trigger";
|
|
23
|
-
static styles = [base, hostStyles, componentStyles];
|
|
24
|
-
#ctx = new ContextConsumer(this, {
|
|
25
|
-
context: popoverContext,
|
|
26
|
-
subscribe: true,
|
|
27
|
-
});
|
|
28
|
-
#handleClick = (e) => {
|
|
29
|
-
e.stopPropagation();
|
|
30
|
-
this.#updateTriggerEl();
|
|
31
|
-
this.#ctx.value?.togglePopover();
|
|
32
|
-
};
|
|
33
|
-
#updateTriggerEl() {
|
|
34
|
-
const slot = this.shadowRoot?.querySelector("slot");
|
|
35
|
-
const el = slot?.assignedElements()?.[0] ?? this;
|
|
36
|
-
this.#ctx.value?.setTriggerEl(el);
|
|
37
|
-
}
|
|
38
|
-
/** Mirror open state onto the slotted element so its theme can style it. */
|
|
39
|
-
#syncOpenAttr() {
|
|
40
|
-
const slot = this.shadowRoot?.querySelector("slot");
|
|
41
|
-
const el = slot?.assignedElements()?.[0];
|
|
42
|
-
if (!el)
|
|
43
|
-
return;
|
|
44
|
-
const isOpen = this.#ctx.value?.open ?? false;
|
|
45
|
-
if (isOpen) {
|
|
46
|
-
el.setAttribute("data-open", "");
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
el.removeAttribute("data-open");
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
updated() {
|
|
53
|
-
this.#syncOpenAttr();
|
|
54
|
-
}
|
|
55
|
-
render() {
|
|
56
|
-
const isOpen = this.#ctx.value?.open ?? false;
|
|
57
|
-
const popupId = this.#ctx.value?.popupId ?? "";
|
|
58
|
-
const triggerId = this.#ctx.value?.triggerId ?? "";
|
|
59
|
-
return html `
|
|
60
|
-
<span
|
|
61
|
-
class="Trigger"
|
|
62
|
-
part="trigger"
|
|
63
|
-
id="${triggerId}"
|
|
64
|
-
aria-haspopup="dialog"
|
|
65
|
-
aria-expanded="${isOpen}"
|
|
66
|
-
aria-controls="${isOpen ? popupId : ""}"
|
|
67
|
-
?data-popup-open="${isOpen}"
|
|
68
|
-
@click="${this.#handleClick}"
|
|
69
|
-
>
|
|
70
|
-
<slot></slot>
|
|
71
|
-
</span>
|
|
72
|
-
`;
|
|
73
|
-
}
|
|
1
|
+
import { DuiPopoverTriggerPrimitive } from "@deepfuture/dui-primitives/popover";
|
|
2
|
+
import "../_install.js";
|
|
3
|
+
export class DuiPopoverTrigger extends DuiPopoverTriggerPrimitive {
|
|
74
4
|
}
|
|
5
|
+
customElements.define(DuiPopoverTrigger.tagName, DuiPopoverTrigger);
|
package/popover/popover.d.ts
CHANGED
|
@@ -1,31 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
export type PopoverOpenChangeDetail = {
|
|
5
|
-
open: boolean;
|
|
6
|
-
};
|
|
7
|
-
export declare const openChangeEvent: (detail: PopoverOpenChangeDetail) => CustomEvent<PopoverOpenChangeDetail>;
|
|
8
|
-
/**
|
|
9
|
-
* `<dui-popover>` — A popover root that provides context for trigger and popup.
|
|
10
|
-
*
|
|
11
|
-
* @slot - Default slot for dui-popover-trigger and dui-popover-popup.
|
|
12
|
-
* @fires open-change - Dispatched when the popover opens or closes.
|
|
13
|
-
*/
|
|
14
|
-
export declare class DuiPopover extends LitElement {
|
|
15
|
-
#private;
|
|
16
|
-
static tagName: "dui-popover";
|
|
1
|
+
import { DuiPopoverPrimitive } from "@deepfuture/dui-primitives/popover";
|
|
2
|
+
import "../_install.js";
|
|
3
|
+
export declare class DuiPopover extends DuiPopoverPrimitive {
|
|
17
4
|
static styles: import("lit").CSSResult[];
|
|
18
|
-
/** Controlled open state. */
|
|
19
|
-
accessor open: boolean;
|
|
20
|
-
/** Default open state for uncontrolled usage. */
|
|
21
|
-
accessor defaultOpen: boolean;
|
|
22
|
-
/** Which side of the trigger the popover appears on. */
|
|
23
|
-
accessor side: PopoverSide;
|
|
24
|
-
/** Offset from the trigger in pixels. */
|
|
25
|
-
accessor sideOffset: number;
|
|
26
|
-
accessor _ctx: PopoverContext;
|
|
27
|
-
connectedCallback(): void;
|
|
28
|
-
disconnectedCallback(): void;
|
|
29
|
-
protected willUpdate(changed: PropertyValues): void;
|
|
30
|
-
render(): TemplateResult;
|
|
31
5
|
}
|
package/popover/popover.js
CHANGED
|
@@ -1,207 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var context = {};
|
|
10
|
-
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
11
|
-
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
12
|
-
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
13
|
-
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
14
|
-
if (kind === "accessor") {
|
|
15
|
-
if (result === void 0) continue;
|
|
16
|
-
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
17
|
-
if (_ = accept(result.get)) descriptor.get = _;
|
|
18
|
-
if (_ = accept(result.set)) descriptor.set = _;
|
|
19
|
-
if (_ = accept(result.init)) initializers.unshift(_);
|
|
20
|
-
}
|
|
21
|
-
else if (_ = accept(result)) {
|
|
22
|
-
if (kind === "field") initializers.unshift(_);
|
|
23
|
-
else descriptor[key] = _;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
27
|
-
done = true;
|
|
28
|
-
};
|
|
29
|
-
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
30
|
-
var useValue = arguments.length > 2;
|
|
31
|
-
for (var i = 0; i < initializers.length; i++) {
|
|
32
|
-
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
33
|
-
}
|
|
34
|
-
return useValue ? value : void 0;
|
|
35
|
-
};
|
|
36
|
-
var __setFunctionName = (this && this.__setFunctionName) || function (f, name, prefix) {
|
|
37
|
-
if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : "";
|
|
38
|
-
return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name });
|
|
39
|
-
};
|
|
40
|
-
import { css, html, LitElement } from "lit";
|
|
41
|
-
import { property, state } from "lit/decorators.js";
|
|
42
|
-
import { provide } from "@lit/context";
|
|
43
|
-
import { base } from "@deepfuture/dui-core/base";
|
|
44
|
-
import { customEvent } from "@deepfuture/dui-core/event";
|
|
45
|
-
import { popoverContext, } from "./popover-context.js";
|
|
46
|
-
export const openChangeEvent = customEvent("open-change", { bubbles: true, composed: true });
|
|
47
|
-
const hostStyles = css `
|
|
48
|
-
:host {
|
|
49
|
-
display: contents;
|
|
50
|
-
}
|
|
51
|
-
`;
|
|
52
|
-
/**
|
|
53
|
-
* `<dui-popover>` — A popover root that provides context for trigger and popup.
|
|
54
|
-
*
|
|
55
|
-
* @slot - Default slot for dui-popover-trigger and dui-popover-popup.
|
|
56
|
-
* @fires open-change - Dispatched when the popover opens or closes.
|
|
57
|
-
*/
|
|
58
|
-
let DuiPopover = (() => {
|
|
59
|
-
let _classSuper = LitElement;
|
|
60
|
-
let _open_decorators;
|
|
61
|
-
let _open_initializers = [];
|
|
62
|
-
let _open_extraInitializers = [];
|
|
63
|
-
let _defaultOpen_decorators;
|
|
64
|
-
let _defaultOpen_initializers = [];
|
|
65
|
-
let _defaultOpen_extraInitializers = [];
|
|
66
|
-
let _side_decorators;
|
|
67
|
-
let _side_initializers = [];
|
|
68
|
-
let _side_extraInitializers = [];
|
|
69
|
-
let _sideOffset_decorators;
|
|
70
|
-
let _sideOffset_initializers = [];
|
|
71
|
-
let _sideOffset_extraInitializers = [];
|
|
72
|
-
let _private_internalOpen_decorators;
|
|
73
|
-
let _private_internalOpen_initializers = [];
|
|
74
|
-
let _private_internalOpen_extraInitializers = [];
|
|
75
|
-
let _private_internalOpen_descriptor;
|
|
76
|
-
let _private_triggerEl_decorators;
|
|
77
|
-
let _private_triggerEl_initializers = [];
|
|
78
|
-
let _private_triggerEl_extraInitializers = [];
|
|
79
|
-
let _private_triggerEl_descriptor;
|
|
80
|
-
let __ctx_decorators;
|
|
81
|
-
let __ctx_initializers = [];
|
|
82
|
-
let __ctx_extraInitializers = [];
|
|
83
|
-
return class DuiPopover extends _classSuper {
|
|
84
|
-
static {
|
|
85
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
86
|
-
_open_decorators = [property({ type: Boolean, reflect: true })];
|
|
87
|
-
_defaultOpen_decorators = [property({ type: Boolean, attribute: "default-open" })];
|
|
88
|
-
_side_decorators = [property({ reflect: true })];
|
|
89
|
-
_sideOffset_decorators = [property({ type: Number, attribute: "side-offset" })];
|
|
90
|
-
_private_internalOpen_decorators = [state()];
|
|
91
|
-
_private_triggerEl_decorators = [state()];
|
|
92
|
-
__ctx_decorators = [provide({ context: popoverContext }), state()];
|
|
93
|
-
__esDecorate(this, null, _open_decorators, { kind: "accessor", name: "open", static: false, private: false, access: { has: obj => "open" in obj, get: obj => obj.open, set: (obj, value) => { obj.open = value; } }, metadata: _metadata }, _open_initializers, _open_extraInitializers);
|
|
94
|
-
__esDecorate(this, null, _defaultOpen_decorators, { kind: "accessor", name: "defaultOpen", static: false, private: false, access: { has: obj => "defaultOpen" in obj, get: obj => obj.defaultOpen, set: (obj, value) => { obj.defaultOpen = value; } }, metadata: _metadata }, _defaultOpen_initializers, _defaultOpen_extraInitializers);
|
|
95
|
-
__esDecorate(this, null, _side_decorators, { kind: "accessor", name: "side", static: false, private: false, access: { has: obj => "side" in obj, get: obj => obj.side, set: (obj, value) => { obj.side = value; } }, metadata: _metadata }, _side_initializers, _side_extraInitializers);
|
|
96
|
-
__esDecorate(this, null, _sideOffset_decorators, { kind: "accessor", name: "sideOffset", static: false, private: false, access: { has: obj => "sideOffset" in obj, get: obj => obj.sideOffset, set: (obj, value) => { obj.sideOffset = value; } }, metadata: _metadata }, _sideOffset_initializers, _sideOffset_extraInitializers);
|
|
97
|
-
__esDecorate(this, _private_internalOpen_descriptor = { get: __setFunctionName(function () { return this.#internalOpen_accessor_storage; }, "#internalOpen", "get"), set: __setFunctionName(function (value) { this.#internalOpen_accessor_storage = value; }, "#internalOpen", "set") }, _private_internalOpen_decorators, { kind: "accessor", name: "#internalOpen", static: false, private: true, access: { has: obj => #internalOpen in obj, get: obj => obj.#internalOpen, set: (obj, value) => { obj.#internalOpen = value; } }, metadata: _metadata }, _private_internalOpen_initializers, _private_internalOpen_extraInitializers);
|
|
98
|
-
__esDecorate(this, _private_triggerEl_descriptor = { get: __setFunctionName(function () { return this.#triggerEl_accessor_storage; }, "#triggerEl", "get"), set: __setFunctionName(function (value) { this.#triggerEl_accessor_storage = value; }, "#triggerEl", "set") }, _private_triggerEl_decorators, { kind: "accessor", name: "#triggerEl", static: false, private: true, access: { has: obj => #triggerEl in obj, get: obj => obj.#triggerEl, set: (obj, value) => { obj.#triggerEl = value; } }, metadata: _metadata }, _private_triggerEl_initializers, _private_triggerEl_extraInitializers);
|
|
99
|
-
__esDecorate(this, null, __ctx_decorators, { kind: "accessor", name: "_ctx", static: false, private: false, access: { has: obj => "_ctx" in obj, get: obj => obj._ctx, set: (obj, value) => { obj._ctx = value; } }, metadata: _metadata }, __ctx_initializers, __ctx_extraInitializers);
|
|
100
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
101
|
-
}
|
|
102
|
-
static tagName = "dui-popover";
|
|
103
|
-
static styles = [base, hostStyles];
|
|
104
|
-
#open_accessor_storage = __runInitializers(this, _open_initializers, false);
|
|
105
|
-
/** Controlled open state. */
|
|
106
|
-
get open() { return this.#open_accessor_storage; }
|
|
107
|
-
set open(value) { this.#open_accessor_storage = value; }
|
|
108
|
-
#defaultOpen_accessor_storage = (__runInitializers(this, _open_extraInitializers), __runInitializers(this, _defaultOpen_initializers, false));
|
|
109
|
-
/** Default open state for uncontrolled usage. */
|
|
110
|
-
get defaultOpen() { return this.#defaultOpen_accessor_storage; }
|
|
111
|
-
set defaultOpen(value) { this.#defaultOpen_accessor_storage = value; }
|
|
112
|
-
#side_accessor_storage = (__runInitializers(this, _defaultOpen_extraInitializers), __runInitializers(this, _side_initializers, "bottom"));
|
|
113
|
-
/** Which side of the trigger the popover appears on. */
|
|
114
|
-
get side() { return this.#side_accessor_storage; }
|
|
115
|
-
set side(value) { this.#side_accessor_storage = value; }
|
|
116
|
-
#sideOffset_accessor_storage = (__runInitializers(this, _side_extraInitializers), __runInitializers(this, _sideOffset_initializers, 8));
|
|
117
|
-
/** Offset from the trigger in pixels. */
|
|
118
|
-
get sideOffset() { return this.#sideOffset_accessor_storage; }
|
|
119
|
-
set sideOffset(value) { this.#sideOffset_accessor_storage = value; }
|
|
120
|
-
#internalOpen_accessor_storage = (__runInitializers(this, _sideOffset_extraInitializers), __runInitializers(this, _private_internalOpen_initializers, false));
|
|
121
|
-
get #internalOpen() { return _private_internalOpen_descriptor.get.call(this); }
|
|
122
|
-
set #internalOpen(value) { return _private_internalOpen_descriptor.set.call(this, value); }
|
|
123
|
-
#triggerEl_accessor_storage = (__runInitializers(this, _private_internalOpen_extraInitializers), __runInitializers(this, _private_triggerEl_initializers, void 0));
|
|
124
|
-
get #triggerEl() { return _private_triggerEl_descriptor.get.call(this); }
|
|
125
|
-
set #triggerEl(value) { return _private_triggerEl_descriptor.set.call(this, value); }
|
|
126
|
-
get #isOpen() {
|
|
127
|
-
return this.open || this.#internalOpen;
|
|
128
|
-
}
|
|
129
|
-
#triggerId = (__runInitializers(this, _private_triggerEl_extraInitializers), `popover-trigger-${crypto.randomUUID().slice(0, 8)}`);
|
|
130
|
-
#popupId = `popover-popup-${crypto.randomUUID().slice(0, 8)}`;
|
|
131
|
-
#_ctx_accessor_storage = __runInitializers(this, __ctx_initializers, {
|
|
132
|
-
open: false,
|
|
133
|
-
triggerId: this.#triggerId,
|
|
134
|
-
popupId: this.#popupId,
|
|
135
|
-
side: "bottom",
|
|
136
|
-
sideOffset: 8,
|
|
137
|
-
triggerEl: undefined,
|
|
138
|
-
openPopover: () => this.#doOpen(),
|
|
139
|
-
closePopover: () => this.#doClose(),
|
|
140
|
-
togglePopover: () => this.#doToggle(),
|
|
141
|
-
setTriggerEl: (el) => this.#setTriggerEl(el),
|
|
142
|
-
});
|
|
143
|
-
get _ctx() { return this.#_ctx_accessor_storage; }
|
|
144
|
-
set _ctx(value) { this.#_ctx_accessor_storage = value; }
|
|
145
|
-
connectedCallback() {
|
|
146
|
-
super.connectedCallback();
|
|
147
|
-
if (this.defaultOpen) {
|
|
148
|
-
this.#internalOpen = true;
|
|
149
|
-
}
|
|
150
|
-
document.addEventListener("keydown", this.#onDocumentKeyDown);
|
|
151
|
-
}
|
|
152
|
-
disconnectedCallback() {
|
|
153
|
-
super.disconnectedCallback();
|
|
154
|
-
document.removeEventListener("keydown", this.#onDocumentKeyDown);
|
|
155
|
-
}
|
|
156
|
-
willUpdate(changed) {
|
|
157
|
-
if (changed.has("open") ||
|
|
158
|
-
changed.has("side") ||
|
|
159
|
-
changed.has("sideOffset") ||
|
|
160
|
-
this._ctx.open !== this.#isOpen ||
|
|
161
|
-
this._ctx.triggerEl !== this.#triggerEl) {
|
|
162
|
-
this._ctx = {
|
|
163
|
-
...this._ctx,
|
|
164
|
-
open: this.#isOpen,
|
|
165
|
-
side: this.side,
|
|
166
|
-
sideOffset: this.sideOffset,
|
|
167
|
-
triggerEl: this.#triggerEl,
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
#onDocumentKeyDown = (__runInitializers(this, __ctx_extraInitializers), (event) => {
|
|
172
|
-
if (!this.#isOpen)
|
|
173
|
-
return;
|
|
174
|
-
if (event.key === "Escape") {
|
|
175
|
-
event.preventDefault();
|
|
176
|
-
this.#doClose();
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
#doOpen() {
|
|
180
|
-
if (this.#internalOpen)
|
|
181
|
-
return;
|
|
182
|
-
this.#internalOpen = true;
|
|
183
|
-
this.dispatchEvent(openChangeEvent({ open: true }));
|
|
184
|
-
}
|
|
185
|
-
#doClose() {
|
|
186
|
-
if (!this.#internalOpen)
|
|
187
|
-
return;
|
|
188
|
-
this.#internalOpen = false;
|
|
189
|
-
this.dispatchEvent(openChangeEvent({ open: false }));
|
|
190
|
-
}
|
|
191
|
-
#doToggle() {
|
|
192
|
-
if (this.#isOpen) {
|
|
193
|
-
this.#doClose();
|
|
194
|
-
}
|
|
195
|
-
else {
|
|
196
|
-
this.#doOpen();
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
#setTriggerEl(el) {
|
|
200
|
-
this.#triggerEl = el;
|
|
201
|
-
}
|
|
202
|
-
render() {
|
|
203
|
-
return html `<slot></slot>`;
|
|
204
|
-
}
|
|
205
|
-
};
|
|
206
|
-
})();
|
|
207
|
-
export { DuiPopover };
|
|
1
|
+
import { css } from "lit";
|
|
2
|
+
import { DuiPopoverPrimitive } from "@deepfuture/dui-primitives/popover";
|
|
3
|
+
import "../_install.js";
|
|
4
|
+
const styles = css ``;
|
|
5
|
+
export class DuiPopover extends DuiPopoverPrimitive {
|
|
6
|
+
static styles = [...DuiPopoverPrimitive.styles, styles];
|
|
7
|
+
}
|
|
8
|
+
customElements.define(DuiPopover.tagName, DuiPopover);
|
package/portal/index.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
export { DuiPortal };
|
|
3
|
-
export type { QueryRoot } from "
|
|
4
|
-
export declare const portalFamily: (typeof DuiPortal)[];
|
|
1
|
+
import "./portal.js";
|
|
2
|
+
export { DuiPortal } from "./portal.js";
|
|
3
|
+
export type { QueryRoot } from "@deepfuture/dui-primitives/portal";
|
package/portal/index.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import
|
|
2
|
-
export { DuiPortal };
|
|
3
|
-
export const portalFamily = [DuiPortal];
|
|
1
|
+
import "./portal.js";
|
|
2
|
+
export { DuiPortal } from "./portal.js";
|
package/portal/portal.d.ts
CHANGED
|
@@ -1,29 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import
|
|
3
|
-
export
|
|
4
|
-
/**
|
|
5
|
-
* `<dui-portal>` — Teleports light DOM children to a target container.
|
|
6
|
-
*
|
|
7
|
-
* Children are moved back into the portal when the element disconnects,
|
|
8
|
-
* allowing the portal and its children to be moved or garbage-collected
|
|
9
|
-
* correctly.
|
|
10
|
-
*
|
|
11
|
-
* @slot - Content to teleport.
|
|
12
|
-
* @attr {string} target - CSS selector for the destination container (default: "body").
|
|
13
|
-
* @attr {"shadow" | "document"} target-root - Where to resolve the target selector.
|
|
14
|
-
*/
|
|
15
|
-
export declare class DuiPortal extends LitElement {
|
|
16
|
-
#private;
|
|
17
|
-
static tagName: "dui-portal";
|
|
1
|
+
import { DuiPortalPrimitive } from "@deepfuture/dui-primitives/portal";
|
|
2
|
+
import "../_install.js";
|
|
3
|
+
export declare class DuiPortal extends DuiPortalPrimitive {
|
|
18
4
|
static styles: import("lit").CSSResult[];
|
|
19
|
-
/** CSS selector for the destination container. */
|
|
20
|
-
accessor target: string;
|
|
21
|
-
/** Where to resolve the target selector: "document" (default) or "shadow". */
|
|
22
|
-
accessor targetRoot: QueryRoot;
|
|
23
|
-
/** Direct element reference for cross-shadow-root targets. Takes precedence over `target` selector. */
|
|
24
|
-
accessor targetElement: HTMLElement | undefined;
|
|
25
|
-
connectedCallback(): void;
|
|
26
|
-
disconnectedCallback(): void;
|
|
27
|
-
protected updated(changed: PropertyValues): void;
|
|
28
|
-
render(): TemplateResult;
|
|
29
5
|
}
|