@sekiui/elements 0.0.88 → 0.1.1
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/dist/cdn/p-C9-yH6MD.js +33 -0
- package/dist/cdn/p-CQQRfw1L.js +18 -0
- package/dist/cdn/seki-carousel-dots.js +7 -3
- package/dist/cdn/seki-carousel-next.js +8 -6
- package/dist/cdn/seki-carousel-previous.js +8 -6
- package/dist/cdn/seki-carousel.js +15 -1
- package/dist/cdn/seki-date-picker.js +71 -36
- package/dist/cdn/seki-drawer.js +76 -32
- package/dist/cdn/seki-hover-card-content.js +2 -2
- package/dist/cdn/seki-hover-card-trigger.js +3 -3
- package/dist/cdn/seki-hover-card.js +59 -4
- package/dist/cdn/seki-resizable-handle.js +11 -2
- package/dist/cdn/seki-resizable-panel-group.js +9 -3
- package/dist/cdn/seki-resizable-panel.js +42 -20
- package/dist/cdn/seki-select-content.js +21 -13
- package/dist/cdn/seki-select-group.js +3 -4
- package/dist/cdn/seki-select-option.js +33 -15
- package/dist/cdn/seki-select-trigger.js +6 -4
- package/dist/cdn/seki-select.js +2 -2
- package/dist/cdn/seki-sheet.js +71 -30
- package/dist/cdn/seki-sidebar-footer.js +3 -1
- package/dist/cdn/seki-sidebar-header.js +3 -1
- package/dist/cdn/seki-sidebar-menu-button.js +3 -1
- package/dist/cdn/seki-sidebar-rail.js +3 -1
- package/dist/cdn/seki-sidebar-trigger.js +6 -1
- package/dist/cdn/seki-sidebar.js +5 -2
- package/dist/cdn/seki-tooltip.js +47 -2
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/option-id-wIa73qWK.js +20 -0
- package/dist/cjs/seki-carousel-dots.cjs.entry.js +7 -3
- package/dist/cjs/seki-carousel-next.cjs.entry.js +8 -6
- package/dist/cjs/seki-carousel-previous.cjs.entry.js +8 -6
- package/dist/cjs/seki-carousel.cjs.entry.js +15 -1
- package/dist/cjs/seki-date-picker.cjs.entry.js +64 -32
- package/dist/cjs/seki-drawer.cjs.entry.js +67 -27
- package/dist/cjs/seki-hover-card-content.cjs.entry.js +2 -2
- package/dist/cjs/seki-hover-card-trigger.cjs.entry.js +3 -3
- package/dist/cjs/seki-hover-card.cjs.entry.js +53 -3
- package/dist/cjs/seki-resizable-handle.cjs.entry.js +11 -2
- package/dist/cjs/seki-resizable-panel-group.cjs.entry.js +9 -3
- package/dist/cjs/seki-resizable-panel.cjs.entry.js +42 -20
- package/dist/cjs/seki-select-content.cjs.entry.js +20 -11
- package/dist/cjs/seki-select-group.cjs.entry.js +2 -2
- package/dist/cjs/seki-select-option.cjs.entry.js +32 -13
- package/dist/cjs/seki-select-trigger.cjs.entry.js +5 -2
- package/dist/cjs/seki-select.cjs.entry.js +2 -2
- package/dist/cjs/seki-sheet.cjs.entry.js +62 -25
- package/dist/cjs/seki-sidebar-footer.cjs.entry.js +3 -1
- package/dist/cjs/seki-sidebar-header.cjs.entry.js +3 -1
- package/dist/cjs/seki-sidebar-menu-button.cjs.entry.js +3 -1
- package/dist/cjs/seki-sidebar-rail.cjs.entry.js +3 -1
- package/dist/cjs/seki-sidebar-trigger.cjs.entry.js +6 -1
- package/dist/cjs/seki-sidebar.cjs.entry.js +5 -2
- package/dist/cjs/seki-tooltip.cjs.entry.js +43 -2
- package/dist/cjs/sekiui.cjs.js +1 -1
- package/dist/cjs/when-defined-B2Lkz6uR.js +36 -0
- package/dist/collection/components/carousel/seki-carousel-dots.js +7 -3
- package/dist/collection/components/carousel/seki-carousel-next.js +8 -6
- package/dist/collection/components/carousel/seki-carousel-previous.js +8 -6
- package/dist/collection/components/carousel/seki-carousel.js +15 -1
- package/dist/collection/components/date-picker/seki-date-picker.js +124 -36
- package/dist/collection/components/drawer/seki-drawer.js +132 -31
- package/dist/collection/components/hover-card/seki-hover-card-content.js +2 -2
- package/dist/collection/components/hover-card/seki-hover-card-trigger.js +3 -3
- package/dist/collection/components/hover-card/seki-hover-card.js +142 -6
- package/dist/collection/components/resizable/seki-resizable-handle.js +11 -2
- package/dist/collection/components/resizable/seki-resizable-panel-group.js +23 -3
- package/dist/collection/components/resizable/seki-resizable-panel.js +42 -20
- package/dist/collection/components/select/seki-select.js +6 -12
- package/dist/collection/components/select-content/seki-select-content.css +8 -0
- package/dist/collection/components/select-content/seki-select-content.js +20 -11
- package/dist/collection/components/select-group/seki-select-group.js +2 -2
- package/dist/collection/components/select-option/seki-select-option.js +32 -13
- package/dist/collection/components/select-trigger/seki-select-trigger.js +5 -2
- package/dist/collection/components/sheet/seki-sheet.js +127 -29
- package/dist/collection/components/sidebar/seki-sidebar-footer.js +3 -1
- package/dist/collection/components/sidebar/seki-sidebar-header.js +3 -1
- package/dist/collection/components/sidebar/seki-sidebar-menu-button.js +3 -1
- package/dist/collection/components/sidebar/seki-sidebar-rail.js +3 -1
- package/dist/collection/components/sidebar/seki-sidebar-trigger.js +6 -1
- package/dist/collection/components/sidebar/seki-sidebar.js +5 -2
- package/dist/collection/components/tooltip/seki-tooltip.js +92 -2
- package/dist/collection/utils/select/index.js +1 -0
- package/dist/collection/utils/select/option-id.js +16 -0
- package/dist/collection/utils/when-defined.js +31 -0
- package/dist/components/p-C9-yH6MD.js +33 -0
- package/dist/components/p-CQQRfw1L.js +18 -0
- package/dist/components/seki-carousel-dots.js +7 -3
- package/dist/components/seki-carousel-next.js +8 -6
- package/dist/components/seki-carousel-previous.js +8 -6
- package/dist/components/seki-carousel.js +15 -1
- package/dist/components/seki-date-picker.js +71 -36
- package/dist/components/seki-drawer.js +76 -32
- package/dist/components/seki-hover-card-content.js +2 -2
- package/dist/components/seki-hover-card-trigger.js +3 -3
- package/dist/components/seki-hover-card.js +59 -4
- package/dist/components/seki-resizable-handle.js +11 -2
- package/dist/components/seki-resizable-panel-group.js +9 -3
- package/dist/components/seki-resizable-panel.js +42 -20
- package/dist/components/seki-select-content.js +21 -13
- package/dist/components/seki-select-group.js +3 -4
- package/dist/components/seki-select-option.js +33 -15
- package/dist/components/seki-select-trigger.js +6 -4
- package/dist/components/seki-select.js +2 -2
- package/dist/components/seki-sheet.js +71 -30
- package/dist/components/seki-sidebar-footer.js +3 -1
- package/dist/components/seki-sidebar-header.js +3 -1
- package/dist/components/seki-sidebar-menu-button.js +3 -1
- package/dist/components/seki-sidebar-rail.js +3 -1
- package/dist/components/seki-sidebar-trigger.js +6 -1
- package/dist/components/seki-sidebar.js +5 -2
- package/dist/components/seki-tooltip.js +47 -2
- package/dist/esm/loader.js +1 -1
- package/dist/esm/option-id-CQQRfw1L.js +18 -0
- package/dist/esm/seki-carousel-dots.entry.js +7 -3
- package/dist/esm/seki-carousel-next.entry.js +8 -6
- package/dist/esm/seki-carousel-previous.entry.js +8 -6
- package/dist/esm/seki-carousel.entry.js +15 -1
- package/dist/esm/seki-date-picker.entry.js +64 -32
- package/dist/esm/seki-drawer.entry.js +67 -27
- package/dist/esm/seki-hover-card-content.entry.js +2 -2
- package/dist/esm/seki-hover-card-trigger.entry.js +3 -3
- package/dist/esm/seki-hover-card.entry.js +53 -3
- package/dist/esm/seki-resizable-handle.entry.js +11 -2
- package/dist/esm/seki-resizable-panel-group.entry.js +9 -3
- package/dist/esm/seki-resizable-panel.entry.js +42 -20
- package/dist/esm/seki-select-content.entry.js +20 -11
- package/dist/esm/seki-select-group.entry.js +2 -2
- package/dist/esm/seki-select-option.entry.js +32 -13
- package/dist/esm/seki-select-trigger.entry.js +5 -2
- package/dist/esm/seki-select.entry.js +2 -2
- package/dist/esm/seki-sheet.entry.js +62 -25
- package/dist/esm/seki-sidebar-footer.entry.js +3 -1
- package/dist/esm/seki-sidebar-header.entry.js +3 -1
- package/dist/esm/seki-sidebar-menu-button.entry.js +3 -1
- package/dist/esm/seki-sidebar-rail.entry.js +3 -1
- package/dist/esm/seki-sidebar-trigger.entry.js +6 -1
- package/dist/esm/seki-sidebar.entry.js +5 -2
- package/dist/esm/seki-tooltip.entry.js +43 -2
- package/dist/esm/sekiui.js +1 -1
- package/dist/esm/when-defined-C9-yH6MD.js +33 -0
- package/dist/sekiui/p-02f1728e.entry.js +1 -0
- package/dist/sekiui/p-05b33a61.entry.js +1 -0
- package/dist/sekiui/p-12e36a4f.entry.js +1 -0
- package/dist/sekiui/p-1cd6b3e6.entry.js +1 -0
- package/dist/sekiui/p-1e24698b.entry.js +1 -0
- package/dist/sekiui/p-26bb17cb.entry.js +1 -0
- package/dist/sekiui/p-26d433ff.entry.js +1 -0
- package/dist/sekiui/p-26f96e2d.entry.js +1 -0
- package/dist/sekiui/p-29b22c0f.entry.js +1 -0
- package/dist/sekiui/p-30fafcc6.entry.js +1 -0
- package/dist/sekiui/p-3de5878b.entry.js +1 -0
- package/dist/sekiui/p-649dbdf0.entry.js +1 -0
- package/dist/sekiui/p-71656184.entry.js +1 -0
- package/dist/sekiui/p-7926c04a.entry.js +1 -0
- package/dist/sekiui/p-9f4149b9.entry.js +1 -0
- package/dist/sekiui/p-C9-yH6MD.js +1 -0
- package/dist/sekiui/p-CQQRfw1L.js +1 -0
- package/dist/sekiui/p-ae87ca35.entry.js +1 -0
- package/dist/sekiui/p-b82c2267.entry.js +1 -0
- package/dist/sekiui/p-bf151423.entry.js +1 -0
- package/dist/sekiui/{p-219c8350.entry.js → p-c0f21b6a.entry.js} +1 -1
- package/dist/sekiui/p-c3ef507f.entry.js +1 -0
- package/dist/sekiui/p-d10a186d.entry.js +1 -0
- package/dist/sekiui/p-d1c72c91.entry.js +1 -0
- package/dist/sekiui/p-d1d3ae40.entry.js +1 -0
- package/dist/sekiui/p-fba3fa73.entry.js +1 -0
- package/dist/sekiui/p-fe3e661d.entry.js +1 -0
- package/dist/sekiui/sekiui.esm.js +1 -1
- package/dist/types/components/carousel/seki-carousel.d.ts +1 -0
- package/dist/types/components/date-picker/seki-date-picker.d.ts +21 -5
- package/dist/types/components/drawer/seki-drawer.d.ts +22 -6
- package/dist/types/components/hover-card/seki-hover-card.d.ts +24 -4
- package/dist/types/components/resizable/seki-resizable-handle.d.ts +1 -0
- package/dist/types/components/resizable/seki-resizable-panel-group.d.ts +6 -0
- package/dist/types/components/resizable/seki-resizable-panel.d.ts +9 -0
- package/dist/types/components/select/seki-select.d.ts +3 -3
- package/dist/types/components/select-content/seki-select-content.d.ts +8 -5
- package/dist/types/components/select-option/seki-select-option.d.ts +6 -4
- package/dist/types/components/sheet/seki-sheet.d.ts +22 -6
- package/dist/types/components/tooltip/seki-tooltip.d.ts +13 -0
- package/dist/types/components.d.ts +145 -17
- package/dist/types/utils/select/index.d.ts +1 -0
- package/dist/types/utils/select/option-id.d.ts +14 -0
- package/dist/types/utils/select/types.d.ts +0 -7
- package/dist/types/utils/when-defined.d.ts +19 -0
- package/package.json +3 -1
- package/dist/sekiui/p-01f26bec.entry.js +0 -1
- package/dist/sekiui/p-117b6f5a.entry.js +0 -1
- package/dist/sekiui/p-1250cad1.entry.js +0 -1
- package/dist/sekiui/p-1866201e.entry.js +0 -1
- package/dist/sekiui/p-2e18933c.entry.js +0 -1
- package/dist/sekiui/p-2e2e7d0b.entry.js +0 -1
- package/dist/sekiui/p-346cc18f.entry.js +0 -1
- package/dist/sekiui/p-6311a4d8.entry.js +0 -1
- package/dist/sekiui/p-69843ed8.entry.js +0 -1
- package/dist/sekiui/p-779764c0.entry.js +0 -1
- package/dist/sekiui/p-786c153b.entry.js +0 -1
- package/dist/sekiui/p-87bcbb66.entry.js +0 -1
- package/dist/sekiui/p-88dd3e1f.entry.js +0 -1
- package/dist/sekiui/p-944c70a1.entry.js +0 -1
- package/dist/sekiui/p-9820cd16.entry.js +0 -1
- package/dist/sekiui/p-9abfa3a5.entry.js +0 -1
- package/dist/sekiui/p-ac7bd611.entry.js +0 -1
- package/dist/sekiui/p-b45e11d8.entry.js +0 -1
- package/dist/sekiui/p-c62c4ad7.entry.js +0 -1
- package/dist/sekiui/p-caa51bdf.entry.js +0 -1
- package/dist/sekiui/p-ce986fde.entry.js +0 -1
- package/dist/sekiui/p-e45e6992.entry.js +0 -1
- package/dist/sekiui/p-ede4bb0c.entry.js +0 -1
- package/dist/sekiui/p-f4abd9a2.entry.js +0 -1
|
@@ -34,27 +34,25 @@ export class SekiDatePicker {
|
|
|
34
34
|
*/
|
|
35
35
|
this.required = false;
|
|
36
36
|
/**
|
|
37
|
-
*
|
|
37
|
+
* Controlled open state of the popover. Also readable/writable as the `open`
|
|
38
|
+
* attribute, so `<seki-date-picker open>` renders open with no script involved.
|
|
38
39
|
*/
|
|
39
|
-
this.
|
|
40
|
+
this.open = false;
|
|
41
|
+
/**
|
|
42
|
+
* Initial open state for uncontrolled usage
|
|
43
|
+
*/
|
|
44
|
+
this.defaultOpen = false;
|
|
45
|
+
/**
|
|
46
|
+
* Internal state for whether the popover is open
|
|
47
|
+
*/
|
|
48
|
+
this._isOpen = false;
|
|
40
49
|
this.handleTriggerClick = () => {
|
|
41
|
-
|
|
42
|
-
return;
|
|
43
|
-
this.isOpen = !this.isOpen;
|
|
44
|
-
if (this.isOpen) {
|
|
45
|
-
this.sekiOpen.emit();
|
|
46
|
-
requestAnimationFrame(() => {
|
|
47
|
-
this.positionPopover();
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
this.sekiClose.emit();
|
|
52
|
-
}
|
|
50
|
+
this.toggleDatePicker();
|
|
53
51
|
};
|
|
54
52
|
this.handleDateSelect = (e) => {
|
|
55
53
|
this.value = e.detail;
|
|
56
54
|
this.sekiChange.emit(e.detail);
|
|
57
|
-
this.
|
|
55
|
+
this.closeDatePicker();
|
|
58
56
|
};
|
|
59
57
|
this.handleRangeSelect = (e) => {
|
|
60
58
|
var _a, _b;
|
|
@@ -62,16 +60,37 @@ export class SekiDatePicker {
|
|
|
62
60
|
this.rangeTo = (_b = e.detail.to) !== null && _b !== void 0 ? _b : undefined;
|
|
63
61
|
if (e.detail.from && e.detail.to) {
|
|
64
62
|
this.sekiChange.emit(e.detail);
|
|
65
|
-
this.
|
|
63
|
+
this.closeDatePicker();
|
|
66
64
|
}
|
|
67
65
|
};
|
|
68
66
|
}
|
|
69
67
|
componentWillLoad() {
|
|
68
|
+
this._isOpen = (this.open || this.defaultOpen) && !this.disabled;
|
|
69
|
+
this.open = this._isOpen;
|
|
70
70
|
if ('attachInternals' in HTMLElement.prototype) {
|
|
71
71
|
this.internals = this.el.attachInternals();
|
|
72
72
|
}
|
|
73
73
|
this.updateFormValue();
|
|
74
74
|
}
|
|
75
|
+
componentDidLoad() {
|
|
76
|
+
if (this._isOpen) {
|
|
77
|
+
requestAnimationFrame(() => {
|
|
78
|
+
this.positionPopover();
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
handleOpenPropChange(newValue) {
|
|
83
|
+
// An outside assignment (`picker.open = true`) has to win after first render;
|
|
84
|
+
// `open` is only read once in componentWillLoad otherwise.
|
|
85
|
+
if (newValue === this._isOpen)
|
|
86
|
+
return;
|
|
87
|
+
if (newValue) {
|
|
88
|
+
this.openDatePicker();
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
this.closeDatePicker();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
75
94
|
updateFormValue() {
|
|
76
95
|
if (this.internals && typeof this.internals.setFormValue === 'function') {
|
|
77
96
|
const value = this.parseDate(this.value);
|
|
@@ -136,28 +155,35 @@ export class SekiDatePicker {
|
|
|
136
155
|
}
|
|
137
156
|
handleKeyDown(event) {
|
|
138
157
|
var _a;
|
|
139
|
-
if (event.key === 'Escape' && this.
|
|
158
|
+
if (event.key === 'Escape' && this._isOpen) {
|
|
140
159
|
event.preventDefault();
|
|
141
|
-
this.
|
|
160
|
+
this.closeDatePicker();
|
|
142
161
|
(_a = this.triggerRef) === null || _a === void 0 ? void 0 : _a.focus();
|
|
143
162
|
}
|
|
144
163
|
}
|
|
145
164
|
handleDocumentClick(event) {
|
|
146
|
-
if (!this.
|
|
165
|
+
if (!this._isOpen)
|
|
147
166
|
return;
|
|
148
167
|
const target = event.target;
|
|
149
168
|
if (!this.el.contains(target)) {
|
|
150
|
-
this.
|
|
169
|
+
this.closeDatePicker();
|
|
151
170
|
}
|
|
152
171
|
}
|
|
153
172
|
/**
|
|
154
173
|
* Open the date picker popover
|
|
155
174
|
*/
|
|
156
|
-
async
|
|
157
|
-
if (this.disabled)
|
|
175
|
+
async openDatePicker() {
|
|
176
|
+
if (this.disabled) {
|
|
177
|
+
// Keep the reflected prop honest when an open request is refused.
|
|
178
|
+
this.open = false;
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (this._isOpen)
|
|
158
182
|
return;
|
|
159
|
-
this.
|
|
183
|
+
this._isOpen = true;
|
|
184
|
+
this.open = true;
|
|
160
185
|
this.sekiOpen.emit();
|
|
186
|
+
this.sekiOpenChange.emit(true);
|
|
161
187
|
requestAnimationFrame(() => {
|
|
162
188
|
this.positionPopover();
|
|
163
189
|
});
|
|
@@ -165,19 +191,23 @@ export class SekiDatePicker {
|
|
|
165
191
|
/**
|
|
166
192
|
* Close the date picker popover
|
|
167
193
|
*/
|
|
168
|
-
async
|
|
169
|
-
this.
|
|
194
|
+
async closeDatePicker() {
|
|
195
|
+
if (!this._isOpen)
|
|
196
|
+
return;
|
|
197
|
+
this._isOpen = false;
|
|
198
|
+
this.open = false;
|
|
170
199
|
this.sekiClose.emit();
|
|
200
|
+
this.sekiOpenChange.emit(false);
|
|
171
201
|
}
|
|
172
202
|
/**
|
|
173
203
|
* Toggle the date picker popover
|
|
174
204
|
*/
|
|
175
|
-
async
|
|
176
|
-
if (this.
|
|
177
|
-
await this.
|
|
205
|
+
async toggleDatePicker() {
|
|
206
|
+
if (this._isOpen) {
|
|
207
|
+
await this.closeDatePicker();
|
|
178
208
|
}
|
|
179
209
|
else {
|
|
180
|
-
await this.
|
|
210
|
+
await this.openDatePicker();
|
|
181
211
|
}
|
|
182
212
|
}
|
|
183
213
|
connectedCallback() {
|
|
@@ -189,12 +219,12 @@ export class SekiDatePicker {
|
|
|
189
219
|
const selectedDate = this.parseDate(this.value);
|
|
190
220
|
const rangeFrom = this.parseDate(this.rangeFrom);
|
|
191
221
|
const rangeTo = this.parseDate(this.rangeTo);
|
|
192
|
-
return (h("div", { key: '
|
|
222
|
+
return (h("div", { key: '79b9eec6c71d77d2af7f006ee03f6a836f5405df', class: "seki-date-picker" }, h("button", { key: '54460e6603c806d24eb0c36baa1b5dbdd7aeb90d', type: "button", ref: el => (this.triggerRef = el), class: {
|
|
193
223
|
'seki-date-picker__trigger': true,
|
|
194
|
-
'seki-date-picker__trigger--open': this.
|
|
224
|
+
'seki-date-picker__trigger--open': this._isOpen,
|
|
195
225
|
'seki-date-picker__trigger--disabled': this.disabled,
|
|
196
226
|
'seki-date-picker__trigger--has-value': hasValue,
|
|
197
|
-
}, disabled: this.disabled, "aria-haspopup": "dialog", "aria-expanded": this.
|
|
227
|
+
}, disabled: this.disabled, "aria-haspopup": "dialog", "aria-expanded": this._isOpen ? 'true' : 'false', "aria-label": this.ariaLabel || this.placeholder, onClick: this.handleTriggerClick }, h("svg", { key: 'b65b7e82e5ad5485f5f2dd5934fb00fe7a2df0e4', class: "seki-date-picker__icon", xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("rect", { key: 'be93574c133eb04d61d765fa0d4d893dfd18de5b', x: "3", y: "4", width: "18", height: "18", rx: "2", ry: "2" }), h("line", { key: 'f60deabd7d2c3061b08b8245650935a85068937a', x1: "16", y1: "2", x2: "16", y2: "6" }), h("line", { key: 'e6dba2b6b7501a6e2de21a29edcafe1927f1ad4d', x1: "8", y1: "2", x2: "8", y2: "6" }), h("line", { key: '4ca41a9af0155298fcaf2f1273f3833ba1df379a', x1: "3", y1: "10", x2: "21", y2: "10" })), h("span", { key: 'f9ef3166165413282928920a7a1b726b1edc4d54', class: "seki-date-picker__value" }, hasValue ? displayValue : this.placeholder)), this._isOpen && (h("div", { key: '561b160f14e86b0a7c043a30ed6e315465d6160b', ref: el => (this.popoverRef = el), class: "seki-date-picker__popover", role: "dialog", "aria-modal": "true", "aria-label": "Choose date" }, h("seki-calendar", { key: '96688e161b3a3814ed27135905de95df437c8bbc', mode: this.mode, selected: selectedDate === null || selectedDate === void 0 ? void 0 : selectedDate.toISOString(), "range-from": rangeFrom === null || rangeFrom === void 0 ? void 0 : rangeFrom.toISOString(), "range-to": rangeTo === null || rangeTo === void 0 ? void 0 : rangeTo.toISOString(), "min-date": this.minDate, "max-date": this.maxDate, onSekiSelect: this.handleDateSelect, onSekiRangeSelect: this.handleRangeSelect })))));
|
|
198
228
|
}
|
|
199
229
|
static get is() { return "seki-date-picker"; }
|
|
200
230
|
static get encapsulation() { return "shadow"; }
|
|
@@ -480,12 +510,52 @@ export class SekiDatePicker {
|
|
|
480
510
|
"setter": false,
|
|
481
511
|
"reflect": false,
|
|
482
512
|
"attribute": "aria-label"
|
|
513
|
+
},
|
|
514
|
+
"open": {
|
|
515
|
+
"type": "boolean",
|
|
516
|
+
"mutable": true,
|
|
517
|
+
"complexType": {
|
|
518
|
+
"original": "boolean",
|
|
519
|
+
"resolved": "boolean",
|
|
520
|
+
"references": {}
|
|
521
|
+
},
|
|
522
|
+
"required": false,
|
|
523
|
+
"optional": false,
|
|
524
|
+
"docs": {
|
|
525
|
+
"tags": [],
|
|
526
|
+
"text": "Controlled open state of the popover. Also readable/writable as the `open`\nattribute, so `<seki-date-picker open>` renders open with no script involved."
|
|
527
|
+
},
|
|
528
|
+
"getter": false,
|
|
529
|
+
"setter": false,
|
|
530
|
+
"reflect": true,
|
|
531
|
+
"attribute": "open",
|
|
532
|
+
"defaultValue": "false"
|
|
533
|
+
},
|
|
534
|
+
"defaultOpen": {
|
|
535
|
+
"type": "boolean",
|
|
536
|
+
"mutable": false,
|
|
537
|
+
"complexType": {
|
|
538
|
+
"original": "boolean",
|
|
539
|
+
"resolved": "boolean",
|
|
540
|
+
"references": {}
|
|
541
|
+
},
|
|
542
|
+
"required": false,
|
|
543
|
+
"optional": false,
|
|
544
|
+
"docs": {
|
|
545
|
+
"tags": [],
|
|
546
|
+
"text": "Initial open state for uncontrolled usage"
|
|
547
|
+
},
|
|
548
|
+
"getter": false,
|
|
549
|
+
"setter": false,
|
|
550
|
+
"reflect": false,
|
|
551
|
+
"attribute": "default-open",
|
|
552
|
+
"defaultValue": "false"
|
|
483
553
|
}
|
|
484
554
|
};
|
|
485
555
|
}
|
|
486
556
|
static get states() {
|
|
487
557
|
return {
|
|
488
|
-
"
|
|
558
|
+
"_isOpen": {}
|
|
489
559
|
};
|
|
490
560
|
}
|
|
491
561
|
static get events() {
|
|
@@ -544,11 +614,26 @@ export class SekiDatePicker {
|
|
|
544
614
|
"resolved": "void",
|
|
545
615
|
"references": {}
|
|
546
616
|
}
|
|
617
|
+
}, {
|
|
618
|
+
"method": "sekiOpenChange",
|
|
619
|
+
"name": "sekiOpenChange",
|
|
620
|
+
"bubbles": true,
|
|
621
|
+
"cancelable": true,
|
|
622
|
+
"composed": true,
|
|
623
|
+
"docs": {
|
|
624
|
+
"tags": [],
|
|
625
|
+
"text": "Emitted whenever the open state changes. Matches the dialog/popover/collapsible\nevent shape so a consumer can listen to one event name across every overlay."
|
|
626
|
+
},
|
|
627
|
+
"complexType": {
|
|
628
|
+
"original": "boolean",
|
|
629
|
+
"resolved": "boolean",
|
|
630
|
+
"references": {}
|
|
631
|
+
}
|
|
547
632
|
}];
|
|
548
633
|
}
|
|
549
634
|
static get methods() {
|
|
550
635
|
return {
|
|
551
|
-
"
|
|
636
|
+
"openDatePicker": {
|
|
552
637
|
"complexType": {
|
|
553
638
|
"signature": "() => Promise<void>",
|
|
554
639
|
"parameters": [],
|
|
@@ -565,7 +650,7 @@ export class SekiDatePicker {
|
|
|
565
650
|
"tags": []
|
|
566
651
|
}
|
|
567
652
|
},
|
|
568
|
-
"
|
|
653
|
+
"closeDatePicker": {
|
|
569
654
|
"complexType": {
|
|
570
655
|
"signature": "() => Promise<void>",
|
|
571
656
|
"parameters": [],
|
|
@@ -582,7 +667,7 @@ export class SekiDatePicker {
|
|
|
582
667
|
"tags": []
|
|
583
668
|
}
|
|
584
669
|
},
|
|
585
|
-
"
|
|
670
|
+
"toggleDatePicker": {
|
|
586
671
|
"complexType": {
|
|
587
672
|
"signature": "() => Promise<void>",
|
|
588
673
|
"parameters": [],
|
|
@@ -604,6 +689,9 @@ export class SekiDatePicker {
|
|
|
604
689
|
static get elementRef() { return "el"; }
|
|
605
690
|
static get watchers() {
|
|
606
691
|
return [{
|
|
692
|
+
"propName": "open",
|
|
693
|
+
"methodName": "handleOpenPropChange"
|
|
694
|
+
}, {
|
|
607
695
|
"propName": "value",
|
|
608
696
|
"methodName": "updateFormValue"
|
|
609
697
|
}, {
|
|
@@ -19,51 +19,75 @@ import { syncTheme } from "../../utils/theme-sync";
|
|
|
19
19
|
*/
|
|
20
20
|
export class SekiDrawer {
|
|
21
21
|
constructor() {
|
|
22
|
+
/**
|
|
23
|
+
* Controlled open state. Also readable/writable as the `open` attribute, so
|
|
24
|
+
* `<seki-drawer open>` renders open with no script involved.
|
|
25
|
+
*/
|
|
26
|
+
this.open = false;
|
|
27
|
+
/**
|
|
28
|
+
* Initial open state for uncontrolled usage
|
|
29
|
+
*/
|
|
30
|
+
this.defaultOpen = false;
|
|
22
31
|
/**
|
|
23
32
|
* Internal state for drawer open/closed
|
|
24
33
|
*/
|
|
25
|
-
this.
|
|
34
|
+
this._isOpen = false;
|
|
26
35
|
/**
|
|
27
36
|
* Current snap point (0-1)
|
|
28
37
|
*/
|
|
29
38
|
this.currentSnapPoint = 1;
|
|
30
39
|
}
|
|
40
|
+
componentWillLoad() {
|
|
41
|
+
this._isOpen = this.open || this.defaultOpen;
|
|
42
|
+
this.open = this._isOpen;
|
|
43
|
+
this.currentSnapPoint = this._isOpen ? 1 : 0;
|
|
44
|
+
}
|
|
45
|
+
componentDidLoad() {
|
|
46
|
+
this.updateContext();
|
|
47
|
+
}
|
|
48
|
+
handleOpenPropChange(newValue) {
|
|
49
|
+
// An outside assignment (`drawer.open = true`) has to win after first render;
|
|
50
|
+
// `open` is only read once in componentWillLoad otherwise.
|
|
51
|
+
if (newValue === this._isOpen)
|
|
52
|
+
return;
|
|
53
|
+
if (newValue) {
|
|
54
|
+
this.openDrawer();
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
this.closeDrawer();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
31
60
|
/**
|
|
32
61
|
* Opens the drawer
|
|
33
62
|
*/
|
|
34
|
-
async
|
|
35
|
-
this.
|
|
63
|
+
async openDrawer() {
|
|
64
|
+
this._isOpen = true;
|
|
65
|
+
this.open = true;
|
|
36
66
|
this.currentSnapPoint = 1;
|
|
37
67
|
this.updateContext();
|
|
38
68
|
this.drawerOpen.emit();
|
|
69
|
+
this.sekiOpenChange.emit(true);
|
|
39
70
|
}
|
|
40
71
|
/**
|
|
41
72
|
* Closes the drawer
|
|
42
73
|
*/
|
|
43
|
-
async
|
|
44
|
-
this.
|
|
74
|
+
async closeDrawer() {
|
|
75
|
+
this._isOpen = false;
|
|
76
|
+
this.open = false;
|
|
45
77
|
this.currentSnapPoint = 0;
|
|
46
78
|
this.updateContext();
|
|
47
79
|
this.drawerClose.emit();
|
|
48
|
-
|
|
49
|
-
updateContext() {
|
|
50
|
-
// seki-drawer-content has no other way to know this drawer's open state —
|
|
51
|
-
// it reads this off the host element via closest('seki-drawer').
|
|
52
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
53
|
-
this.el._drawerContext = { isOpen: this.isOpen };
|
|
54
|
-
}
|
|
55
|
-
componentDidLoad() {
|
|
56
|
-
this.updateContext();
|
|
80
|
+
this.sekiOpenChange.emit(false);
|
|
57
81
|
}
|
|
58
82
|
/**
|
|
59
83
|
* Toggles the drawer
|
|
60
84
|
*/
|
|
61
|
-
async
|
|
62
|
-
if (this.
|
|
63
|
-
await this.
|
|
85
|
+
async toggleDrawer() {
|
|
86
|
+
if (this._isOpen) {
|
|
87
|
+
await this.closeDrawer();
|
|
64
88
|
}
|
|
65
89
|
else {
|
|
66
|
-
await this.
|
|
90
|
+
await this.openDrawer();
|
|
67
91
|
}
|
|
68
92
|
}
|
|
69
93
|
/**
|
|
@@ -71,37 +95,49 @@ export class SekiDrawer {
|
|
|
71
95
|
*/
|
|
72
96
|
async snapTo(point) {
|
|
73
97
|
if (point <= 0) {
|
|
74
|
-
await this.
|
|
98
|
+
await this.closeDrawer();
|
|
75
99
|
}
|
|
76
100
|
else {
|
|
77
101
|
this.currentSnapPoint = point;
|
|
78
|
-
|
|
102
|
+
const wasOpen = this._isOpen;
|
|
103
|
+
this._isOpen = true;
|
|
104
|
+
this.open = true;
|
|
79
105
|
this.updateContext();
|
|
106
|
+
if (!wasOpen) {
|
|
107
|
+
this.drawerOpen.emit();
|
|
108
|
+
this.sekiOpenChange.emit(true);
|
|
109
|
+
}
|
|
80
110
|
this.drawerSnap.emit({ point });
|
|
81
111
|
}
|
|
82
112
|
}
|
|
113
|
+
updateContext() {
|
|
114
|
+
// seki-drawer-content has no other way to know this drawer's open state —
|
|
115
|
+
// it reads this off the host element via closest('seki-drawer').
|
|
116
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
117
|
+
this.el._drawerContext = { isOpen: this._isOpen };
|
|
118
|
+
}
|
|
83
119
|
handleTriggerClick() {
|
|
84
|
-
this.
|
|
120
|
+
this.toggleDrawer();
|
|
85
121
|
}
|
|
86
122
|
handleRequestClose() {
|
|
87
|
-
this.
|
|
123
|
+
this.closeDrawer();
|
|
88
124
|
}
|
|
89
125
|
handleRequestSnap(event) {
|
|
90
126
|
this.snapTo(event.detail.point);
|
|
91
127
|
}
|
|
92
128
|
handleKeydown(ev) {
|
|
93
|
-
if (this.
|
|
94
|
-
this.
|
|
129
|
+
if (this._isOpen && ev.key === 'Escape') {
|
|
130
|
+
this.closeDrawer();
|
|
95
131
|
}
|
|
96
132
|
}
|
|
97
133
|
connectedCallback() {
|
|
98
134
|
syncTheme(this.el);
|
|
99
135
|
}
|
|
100
136
|
render() {
|
|
101
|
-
return (h("div", { key: '
|
|
137
|
+
return (h("div", { key: '824d218c42cd41a0a79bef604e940f6c95a64470', class: {
|
|
102
138
|
'seki-drawer': true,
|
|
103
|
-
'seki-drawer--open': this.
|
|
104
|
-
}, "data-snap-point": this.currentSnapPoint, part: "drawer" }, h("slot", { key: '
|
|
139
|
+
'seki-drawer--open': this._isOpen,
|
|
140
|
+
}, "data-snap-point": this.currentSnapPoint, part: "drawer" }, h("slot", { key: '26982c14006c01915390898306d79fa665e30463' }), this._isOpen && (h("div", { key: 'a0f90520c0deaa5c320bbc027ca5b6a4edc4d9ff', class: "seki-drawer-overlay", part: "overlay", onClick: () => this.closeDrawer() }))));
|
|
105
141
|
}
|
|
106
142
|
static get is() { return "seki-drawer"; }
|
|
107
143
|
static get encapsulation() { return "shadow"; }
|
|
@@ -115,9 +151,53 @@ export class SekiDrawer {
|
|
|
115
151
|
"$": ["seki-drawer.css"]
|
|
116
152
|
};
|
|
117
153
|
}
|
|
154
|
+
static get properties() {
|
|
155
|
+
return {
|
|
156
|
+
"open": {
|
|
157
|
+
"type": "boolean",
|
|
158
|
+
"mutable": true,
|
|
159
|
+
"complexType": {
|
|
160
|
+
"original": "boolean",
|
|
161
|
+
"resolved": "boolean",
|
|
162
|
+
"references": {}
|
|
163
|
+
},
|
|
164
|
+
"required": false,
|
|
165
|
+
"optional": false,
|
|
166
|
+
"docs": {
|
|
167
|
+
"tags": [],
|
|
168
|
+
"text": "Controlled open state. Also readable/writable as the `open` attribute, so\n`<seki-drawer open>` renders open with no script involved."
|
|
169
|
+
},
|
|
170
|
+
"getter": false,
|
|
171
|
+
"setter": false,
|
|
172
|
+
"reflect": true,
|
|
173
|
+
"attribute": "open",
|
|
174
|
+
"defaultValue": "false"
|
|
175
|
+
},
|
|
176
|
+
"defaultOpen": {
|
|
177
|
+
"type": "boolean",
|
|
178
|
+
"mutable": false,
|
|
179
|
+
"complexType": {
|
|
180
|
+
"original": "boolean",
|
|
181
|
+
"resolved": "boolean",
|
|
182
|
+
"references": {}
|
|
183
|
+
},
|
|
184
|
+
"required": false,
|
|
185
|
+
"optional": false,
|
|
186
|
+
"docs": {
|
|
187
|
+
"tags": [],
|
|
188
|
+
"text": "Initial open state for uncontrolled usage"
|
|
189
|
+
},
|
|
190
|
+
"getter": false,
|
|
191
|
+
"setter": false,
|
|
192
|
+
"reflect": false,
|
|
193
|
+
"attribute": "default-open",
|
|
194
|
+
"defaultValue": "false"
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
}
|
|
118
198
|
static get states() {
|
|
119
199
|
return {
|
|
120
|
-
"
|
|
200
|
+
"_isOpen": {},
|
|
121
201
|
"currentSnapPoint": {}
|
|
122
202
|
};
|
|
123
203
|
}
|
|
@@ -167,11 +247,26 @@ export class SekiDrawer {
|
|
|
167
247
|
"resolved": "{ point: number; }",
|
|
168
248
|
"references": {}
|
|
169
249
|
}
|
|
250
|
+
}, {
|
|
251
|
+
"method": "sekiOpenChange",
|
|
252
|
+
"name": "sekiOpenChange",
|
|
253
|
+
"bubbles": true,
|
|
254
|
+
"cancelable": true,
|
|
255
|
+
"composed": true,
|
|
256
|
+
"docs": {
|
|
257
|
+
"tags": [],
|
|
258
|
+
"text": "Emitted whenever the open state changes. Matches the dialog/popover/collapsible\nevent shape so a consumer can listen to one event name across every overlay."
|
|
259
|
+
},
|
|
260
|
+
"complexType": {
|
|
261
|
+
"original": "boolean",
|
|
262
|
+
"resolved": "boolean",
|
|
263
|
+
"references": {}
|
|
264
|
+
}
|
|
170
265
|
}];
|
|
171
266
|
}
|
|
172
267
|
static get methods() {
|
|
173
268
|
return {
|
|
174
|
-
"
|
|
269
|
+
"openDrawer": {
|
|
175
270
|
"complexType": {
|
|
176
271
|
"signature": "() => Promise<void>",
|
|
177
272
|
"parameters": [],
|
|
@@ -188,7 +283,7 @@ export class SekiDrawer {
|
|
|
188
283
|
"tags": []
|
|
189
284
|
}
|
|
190
285
|
},
|
|
191
|
-
"
|
|
286
|
+
"closeDrawer": {
|
|
192
287
|
"complexType": {
|
|
193
288
|
"signature": "() => Promise<void>",
|
|
194
289
|
"parameters": [],
|
|
@@ -205,7 +300,7 @@ export class SekiDrawer {
|
|
|
205
300
|
"tags": []
|
|
206
301
|
}
|
|
207
302
|
},
|
|
208
|
-
"
|
|
303
|
+
"toggleDrawer": {
|
|
209
304
|
"complexType": {
|
|
210
305
|
"signature": "() => Promise<void>",
|
|
211
306
|
"parameters": [],
|
|
@@ -246,6 +341,12 @@ export class SekiDrawer {
|
|
|
246
341
|
};
|
|
247
342
|
}
|
|
248
343
|
static get elementRef() { return "el"; }
|
|
344
|
+
static get watchers() {
|
|
345
|
+
return [{
|
|
346
|
+
"propName": "open",
|
|
347
|
+
"methodName": "handleOpenPropChange"
|
|
348
|
+
}];
|
|
349
|
+
}
|
|
249
350
|
static get listeners() {
|
|
250
351
|
return [{
|
|
251
352
|
"name": "triggerClick",
|
|
@@ -104,8 +104,8 @@ export class SekiHoverCardContent {
|
|
|
104
104
|
const hoverCard = this.el.closest('seki-hover-card');
|
|
105
105
|
if (hoverCard) {
|
|
106
106
|
this.openChangeHandler = (e) => {
|
|
107
|
-
const
|
|
108
|
-
this._isOpen =
|
|
107
|
+
const open = e.detail;
|
|
108
|
+
this._isOpen = open;
|
|
109
109
|
if (this._isOpen) {
|
|
110
110
|
requestAnimationFrame(() => this.updatePosition());
|
|
111
111
|
// Setup click-outside listener for touch devices
|
|
@@ -108,8 +108,8 @@ export class SekiHoverCardTrigger {
|
|
|
108
108
|
const hoverCard = this.el.closest('seki-hover-card');
|
|
109
109
|
if (hoverCard) {
|
|
110
110
|
this.openChangeHandler = (e) => {
|
|
111
|
-
const
|
|
112
|
-
this.isOpen =
|
|
111
|
+
const open = e.detail;
|
|
112
|
+
this.isOpen = open;
|
|
113
113
|
};
|
|
114
114
|
hoverCard.addEventListener('sekiOpenChange', this.openChangeHandler);
|
|
115
115
|
}
|
|
@@ -128,7 +128,7 @@ export class SekiHoverCardTrigger {
|
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
render() {
|
|
131
|
-
return (h(Host, { key: '
|
|
131
|
+
return (h(Host, { key: '8a9157aafd7dfc90a83570479ee34079892cb14c' }, h("span", { key: '7fbf401f8f560ca4b8f88f477964d2464f85c001', part: "trigger", class: "hover-card-trigger", "aria-haspopup": "dialog", "aria-expanded": this.isOpen ? 'true' : 'false', onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave, onFocus: this.handleFocus, onBlur: this.handleBlur, onClick: this.handleClick }, h("slot", { key: 'ebedc058cb447bd2c5be2b8588b779d04d7f7778' }))));
|
|
132
132
|
}
|
|
133
133
|
static get is() { return "seki-hover-card-trigger"; }
|
|
134
134
|
static get encapsulation() { return "shadow"; }
|