@agnos-ui/core 0.10.0-next.2 → 0.10.0-next.4
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/{accordion-DqnKGmbS.js → accordion-47EpOD36.js} +2 -2
- package/{accordion-DRIm0xHf.cjs → accordion-nxveC0GZ.cjs} +2 -2
- package/{alert-B-jQDQcB.cjs → alert-AhaliJ17.cjs} +1 -1
- package/{alert-gGz2CDS9.js → alert-anMaigvi.js} +1 -1
- package/{collapse-BV4kD3j9.js → collapse-CrfvGo_T.js} +2 -2
- package/{collapse-gLiT080Y.cjs → collapse-Da_27YUU.cjs} +2 -2
- package/{common-D3QcdJ6S.cjs → common-B5jS-Ih_.cjs} +1 -1
- package/{common-DK0ADNTX.js → common-CCxNtFNM.js} +1 -1
- package/components/accordion/index.cjs +1 -1
- package/components/accordion/index.js +1 -1
- package/components/alert/index.cjs +1 -1
- package/components/alert/index.js +1 -1
- package/components/carousel/index.cjs +2 -2
- package/components/carousel/index.js +2 -2
- package/components/collapse/index.cjs +1 -1
- package/components/collapse/index.js +1 -1
- package/components/drawer/drawer.d.ts +32 -25
- package/components/drawer/index.cjs +1 -1
- package/components/drawer/index.js +1 -1
- package/components/modal/index.cjs +1 -1
- package/components/modal/index.js +1 -1
- package/components/pagination/index.cjs +1 -1
- package/components/pagination/index.js +1 -1
- package/components/progressbar/index.cjs +1 -1
- package/components/progressbar/index.js +1 -1
- package/components/rating/index.cjs +1 -1
- package/components/rating/index.js +1 -1
- package/components/select/index.cjs +1 -1
- package/components/select/index.js +1 -1
- package/components/slider/index.cjs +1 -1
- package/components/slider/index.js +1 -1
- package/components/toast/index.cjs +1 -1
- package/components/toast/index.js +1 -1
- package/components/tree/index.cjs +1 -1
- package/components/tree/index.js +1 -1
- package/{dom-C2gi9OCP.cjs → dom-Cm9_uROp.cjs} +76 -6
- package/{dom-Bcg9ORcA.js → dom-DD1hAVZy.js} +76 -6
- package/drawer-B5Yaqpiu.cjs +297 -0
- package/drawer-CGHyRTM9.js +298 -0
- package/index.cjs +16 -14
- package/index.js +21 -19
- package/{modal-DiXZXYjR.cjs → modal-B_3Uxplo.cjs} +5 -5
- package/{modal-CAvQW-vo.js → modal-cKd3qUn1.js} +5 -5
- package/package.json +1 -1
- package/{pagination-DvZ2rLsz.cjs → pagination-2Vor6JPZ.cjs} +2 -2
- package/{pagination-BKbMROV6.js → pagination-DlOyP_2C.js} +2 -2
- package/{progressbar-D8zIcm9n.js → progressbar-B5g76eMV.js} +2 -2
- package/{progressbar-i9xfAxb7.cjs → progressbar-DyBRINco.cjs} +2 -2
- package/{rating-DmG4oUkr.cjs → rating-C0y1j4SC.cjs} +2 -2
- package/{rating-DEXTGWCU.js → rating-C7C4-p4B.js} +2 -2
- package/{select-MFjAnIt7.cjs → select-Dhsb9msC.cjs} +1 -1
- package/{select-Bw68Xdu5.js → select-nnl00UWY.js} +1 -1
- package/services/floatingUI.cjs +1 -1
- package/services/floatingUI.js +1 -1
- package/services/focusElement.cjs +1 -1
- package/services/focusElement.js +1 -1
- package/services/focustrack.cjs +1 -1
- package/services/focustrack.js +1 -1
- package/services/matchMedia.cjs +1 -1
- package/services/matchMedia.js +1 -1
- package/services/navManager.cjs +1 -1
- package/services/navManager.js +1 -1
- package/services/pointerdownPosition.cjs +60 -0
- package/services/pointerdownPosition.d.ts +42 -0
- package/services/pointerdownPosition.js +60 -0
- package/services/portal.cjs +1 -1
- package/services/portal.js +1 -1
- package/services/resizeObserver.cjs +40 -20
- package/services/resizeObserver.d.ts +10 -2
- package/services/resizeObserver.js +41 -21
- package/services/siblingsInert.cjs +1 -1
- package/services/siblingsInert.js +1 -1
- package/services/transitions/baseTransitions.cjs +2 -2
- package/services/transitions/baseTransitions.js +2 -2
- package/services/transitions/collapse.cjs +11 -15
- package/services/transitions/collapse.js +11 -15
- package/services/transitions/cssTransitions.cjs +1 -1
- package/services/transitions/cssTransitions.js +1 -1
- package/services/transitions/simpleClassTransition.cjs +1 -1
- package/services/transitions/simpleClassTransition.js +1 -1
- package/{slider-Cx50Eghd.js → slider-B4WrdTeE.js} +121 -170
- package/{slider-Dl4Trh32.cjs → slider-DTO58syz.cjs} +120 -169
- package/{toaster-_p1GTtHI.js → toaster-CRPErgI2.js} +3 -3
- package/{toaster-UDglac7x.cjs → toaster-CT148JSJ.cjs} +3 -3
- package/{tree-rGHtmCnS.cjs → tree-C4l2Wqny.cjs} +2 -2
- package/{tree-DV0tfPlZ.js → tree-CHpFqJPx.js} +2 -2
- package/types.cjs +2 -2
- package/types.d.ts +22 -3
- package/types.js +2 -2
- package/utils/directive.cjs +1 -1
- package/utils/directive.d.ts +2 -2
- package/utils/directive.js +1 -1
- package/utils/internal/ssrHTMLElement.d.ts +7 -1
- package/utils/stores.cjs +1 -1
- package/utils/stores.js +1 -1
- package/utils/writables.cjs +2 -1
- package/utils/writables.d.ts +7 -0
- package/utils/writables.js +6 -5
- package/{writables-DcGT98a7.cjs → writables-Dt68gADJ.cjs} +4 -0
- package/{writables-e0tyaQpe.js → writables-Is1bF1Vt.js} +10 -6
- package/drawer-D5SO73ew.js +0 -251
- package/drawer-DP7UPojk.cjs +0 -250
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const tansu = require("@amadeus-it-group/tansu");
|
|
3
|
+
const services_focusElement = require("./services/focusElement.cjs");
|
|
4
|
+
const services_pointerdownPosition = require("./services/pointerdownPosition.cjs");
|
|
5
|
+
const services_portal = require("./services/portal.cjs");
|
|
6
|
+
const services_siblingsInert = require("./services/siblingsInert.cjs");
|
|
7
|
+
const services_transitions_baseTransitions = require("./services/transitions/baseTransitions.cjs");
|
|
8
|
+
const utils_directive = require("./dom-Cm9_uROp.cjs");
|
|
9
|
+
const utils_func = require("./utils/func.cjs");
|
|
10
|
+
const scrollbars = require("./scrollbars-CT87iv_6.cjs");
|
|
11
|
+
const utils_stores = require("./utils/stores.cjs");
|
|
12
|
+
const utils_widget = require("./utils/widget.cjs");
|
|
13
|
+
const utils_writables = require("./writables-Dt68gADJ.cjs");
|
|
14
|
+
function getDrawerDefaultConfig() {
|
|
15
|
+
return {
|
|
16
|
+
...defaultDrawerConfig
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
const defaultDrawerConfig = {
|
|
20
|
+
animated: true,
|
|
21
|
+
ariaDescribedBy: "",
|
|
22
|
+
ariaLabelledBy: "",
|
|
23
|
+
backdropClass: "",
|
|
24
|
+
backdropTransition: utils_func.noop,
|
|
25
|
+
className: "w-full",
|
|
26
|
+
visible: false,
|
|
27
|
+
container: typeof window !== "undefined" ? document.body : null,
|
|
28
|
+
transition: utils_func.noop,
|
|
29
|
+
verticalTransition: utils_func.noop,
|
|
30
|
+
onHidden: utils_func.noop,
|
|
31
|
+
onShown: utils_func.noop,
|
|
32
|
+
onSizeChange: utils_func.noop,
|
|
33
|
+
onVisibleChange: utils_func.noop,
|
|
34
|
+
onMinimizedChange: utils_func.noop,
|
|
35
|
+
onMaximizedChange: utils_func.noop,
|
|
36
|
+
onResizingChange: utils_func.noop,
|
|
37
|
+
resizable: false,
|
|
38
|
+
backdrop: true,
|
|
39
|
+
bodyScroll: false,
|
|
40
|
+
size: null
|
|
41
|
+
};
|
|
42
|
+
const configValidator = {
|
|
43
|
+
animated: utils_writables.typeBoolean,
|
|
44
|
+
ariaDescribedBy: utils_writables.typeString,
|
|
45
|
+
ariaLabelledBy: utils_writables.typeString,
|
|
46
|
+
backdropClass: utils_writables.typeString,
|
|
47
|
+
backdropTransition: utils_writables.typeFunction,
|
|
48
|
+
className: utils_writables.typeString,
|
|
49
|
+
visible: utils_writables.typeBoolean,
|
|
50
|
+
transition: utils_writables.typeFunction,
|
|
51
|
+
verticalTransition: utils_writables.typeFunction,
|
|
52
|
+
container: utils_writables.typeHTMLElementOrNull,
|
|
53
|
+
onHidden: utils_writables.typeFunction,
|
|
54
|
+
onShown: utils_writables.typeFunction,
|
|
55
|
+
onSizeChange: utils_writables.typeFunction,
|
|
56
|
+
onVisibleChange: utils_writables.typeFunction,
|
|
57
|
+
onMinimizedChange: utils_writables.typeFunction,
|
|
58
|
+
onMaximizedChange: utils_writables.typeFunction,
|
|
59
|
+
onResizingChange: utils_writables.typeFunction,
|
|
60
|
+
resizable: utils_writables.typeBoolean,
|
|
61
|
+
backdrop: utils_writables.typeBoolean,
|
|
62
|
+
bodyScroll: utils_writables.typeBoolean,
|
|
63
|
+
size: utils_writables.typeNumberOrNull
|
|
64
|
+
};
|
|
65
|
+
const createDrawer = utils_widget.createWidgetFactory("drawer", (config) => {
|
|
66
|
+
const [
|
|
67
|
+
{
|
|
68
|
+
backdrop$,
|
|
69
|
+
backdropTransition$,
|
|
70
|
+
backdropClass$,
|
|
71
|
+
bodyScroll$,
|
|
72
|
+
transition$,
|
|
73
|
+
verticalTransition$,
|
|
74
|
+
visible$: requestedVisible$,
|
|
75
|
+
container$,
|
|
76
|
+
className$,
|
|
77
|
+
size$: _dirtySize$,
|
|
78
|
+
animated$,
|
|
79
|
+
ariaDescribedBy$,
|
|
80
|
+
ariaLabelledBy$,
|
|
81
|
+
onHidden$,
|
|
82
|
+
onShown$,
|
|
83
|
+
onSizeChange$,
|
|
84
|
+
onVisibleChange$,
|
|
85
|
+
onMinimizedChange$,
|
|
86
|
+
onMaximizedChange$,
|
|
87
|
+
onResizingChange$,
|
|
88
|
+
...stateProps
|
|
89
|
+
},
|
|
90
|
+
patch
|
|
91
|
+
] = utils_stores.writablesForProps(defaultDrawerConfig, config, configValidator);
|
|
92
|
+
const size$ = utils_stores.bindableProp(_dirtySize$, onSizeChange$, (value) => value ? Math.round(value) : value);
|
|
93
|
+
const isVertical$ = tansu.computed(() => {
|
|
94
|
+
const isVertical = ["block-start", "block-end"].some((placement) => className$().includes(placement));
|
|
95
|
+
return isVertical;
|
|
96
|
+
});
|
|
97
|
+
const transition = services_transitions_baseTransitions.createTransition({
|
|
98
|
+
props: {
|
|
99
|
+
animated: animated$,
|
|
100
|
+
animatedOnInit: animated$,
|
|
101
|
+
transition: tansu.asWritable(tansu.computed(() => isVertical$() ? verticalTransition$() : transition$())),
|
|
102
|
+
visible: requestedVisible$,
|
|
103
|
+
onVisibleChange: onVisibleChange$,
|
|
104
|
+
onHidden: onHidden$,
|
|
105
|
+
onShown: onShown$
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
const drawerPortalDirective = utils_directive.bindDirective(
|
|
109
|
+
services_portal.portal,
|
|
110
|
+
tansu.computed(() => ({ container: container$() }))
|
|
111
|
+
);
|
|
112
|
+
const { directive: drawerElementDirective, element$: drawerElement$ } = utils_directive.createBrowserStoreDirective();
|
|
113
|
+
const drawerAttributeDirective = utils_directive.mergeDirectives(
|
|
114
|
+
drawerElementDirective,
|
|
115
|
+
utils_directive.createAttributesDirective(() => ({
|
|
116
|
+
attributes: {
|
|
117
|
+
class: className$,
|
|
118
|
+
role: tansu.readable("dialog"),
|
|
119
|
+
"aria-describedby": ariaDescribedBy$,
|
|
120
|
+
"aria-labelledby": ariaLabelledBy$,
|
|
121
|
+
"aria-modal": tansu.readable("true"),
|
|
122
|
+
tabIndex: tansu.readable("-1")
|
|
123
|
+
},
|
|
124
|
+
styles: {
|
|
125
|
+
position: tansu.computed(() => {
|
|
126
|
+
const container = container$();
|
|
127
|
+
return container && utils_directive.isBrowserHTMLElement(container) && container !== document.body ? "relative" : "fixed";
|
|
128
|
+
}),
|
|
129
|
+
outline: tansu.readable("none")
|
|
130
|
+
},
|
|
131
|
+
events: {
|
|
132
|
+
keydown: async (e) => {
|
|
133
|
+
if (e.key === "Escape") {
|
|
134
|
+
await transition.api.hide();
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}))
|
|
139
|
+
);
|
|
140
|
+
const backdropTransition = services_transitions_baseTransitions.createTransition({
|
|
141
|
+
props: {
|
|
142
|
+
animated: animated$,
|
|
143
|
+
transition: backdropTransition$
|
|
144
|
+
}
|
|
145
|
+
});
|
|
146
|
+
const backdropPortalDirective = utils_directive.bindDirective(
|
|
147
|
+
services_portal.portal,
|
|
148
|
+
tansu.computed(() => {
|
|
149
|
+
const container = container$();
|
|
150
|
+
const element = container ? transition.stores.element$() : void 0;
|
|
151
|
+
return {
|
|
152
|
+
container,
|
|
153
|
+
insertBefore: element?.parentElement === container ? element : void 0
|
|
154
|
+
};
|
|
155
|
+
})
|
|
156
|
+
);
|
|
157
|
+
const backdropHidden$ = tansu.computed(() => {
|
|
158
|
+
if (!bodyScroll$()) {
|
|
159
|
+
if (hidden$()) {
|
|
160
|
+
scrollbars.revertScrollbars();
|
|
161
|
+
} else {
|
|
162
|
+
scrollbars.removeScrollbars();
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return !backdrop$() || hidden$();
|
|
166
|
+
});
|
|
167
|
+
const backdropAttributeDirective = utils_directive.createAttributesDirective(() => ({
|
|
168
|
+
attributes: {
|
|
169
|
+
class: backdropClass$,
|
|
170
|
+
"data-agnos-ignore-inert": utils_stores.true$
|
|
171
|
+
},
|
|
172
|
+
events: {
|
|
173
|
+
click: async () => await transition.api.hide()
|
|
174
|
+
}
|
|
175
|
+
}));
|
|
176
|
+
const direction$ = tansu.computed(() => ["inline-start", "block-start"].some((placement) => className$().includes(placement)) ? 1 : -1);
|
|
177
|
+
const isMinimized$ = tansu.writable(void 0);
|
|
178
|
+
const isMaximized$ = tansu.writable(void 0);
|
|
179
|
+
function setSize(size) {
|
|
180
|
+
const drawerElement = drawerElement$();
|
|
181
|
+
const isVertical = isVertical$();
|
|
182
|
+
size = Math.round(Math.max(0, size));
|
|
183
|
+
drawerElement.style[isVertical ? "height" : "width"] = `${size}px`;
|
|
184
|
+
const elementSize = Math.round(drawerElement[isVertical ? "offsetHeight" : "offsetWidth"]);
|
|
185
|
+
size$.set(elementSize);
|
|
186
|
+
isMinimized$.set(size != null && (size < elementSize || size === 0));
|
|
187
|
+
isMaximized$.set(!!size && size > elementSize);
|
|
188
|
+
return elementSize;
|
|
189
|
+
}
|
|
190
|
+
const splitterDirective = utils_directive.mergeDirectives(
|
|
191
|
+
services_pointerdownPosition.createPointerdownPositionDirective((event) => {
|
|
192
|
+
const drawerElement = drawerElement$();
|
|
193
|
+
const isVertical = isVertical$();
|
|
194
|
+
const startSize = drawerElement[isVertical ? "offsetHeight" : "offsetWidth"];
|
|
195
|
+
const clientXorY = isVertical ? "clientY" : "clientX";
|
|
196
|
+
const startPos = event[clientXorY];
|
|
197
|
+
const direction = direction$();
|
|
198
|
+
let isResizing = false;
|
|
199
|
+
return {
|
|
200
|
+
onMove(event2) {
|
|
201
|
+
setSize(startSize + direction * (event2[clientXorY] - startPos));
|
|
202
|
+
if (!isResizing) {
|
|
203
|
+
isResizing = true;
|
|
204
|
+
onResizingChange$()(true);
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
onEnd() {
|
|
208
|
+
drawerElement.style[isVertical ? "height" : "width"] = "";
|
|
209
|
+
if (isResizing) {
|
|
210
|
+
onResizingChange$()(false);
|
|
211
|
+
isResizing = false;
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
}),
|
|
216
|
+
utils_directive.createAttributesDirective(() => ({
|
|
217
|
+
events: {
|
|
218
|
+
keydown: (e) => {
|
|
219
|
+
const { key } = e;
|
|
220
|
+
const size = size$() || drawerElement$()?.[isVertical$() ? "offsetHeight" : "offsetWidth"];
|
|
221
|
+
if (size != null) {
|
|
222
|
+
switch (key) {
|
|
223
|
+
case "ArrowLeft":
|
|
224
|
+
case "ArrowDown":
|
|
225
|
+
onResizingChange$()(true);
|
|
226
|
+
setSize(size - 10);
|
|
227
|
+
onResizingChange$()(false);
|
|
228
|
+
break;
|
|
229
|
+
case "ArrowRight":
|
|
230
|
+
case "ArrowUp":
|
|
231
|
+
onResizingChange$()(true);
|
|
232
|
+
setSize(size + 10);
|
|
233
|
+
onResizingChange$()(false);
|
|
234
|
+
break;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}))
|
|
240
|
+
);
|
|
241
|
+
const visible$ = transition.stores.visible$;
|
|
242
|
+
const transitioning$ = tansu.computed(() => transition.stores.transitioning$() || backdropTransition.stores.transitioning$());
|
|
243
|
+
const hidden$ = tansu.computed(() => !transitioning$() && !visible$());
|
|
244
|
+
const minSizeAction$ = tansu.computed(() => {
|
|
245
|
+
const isMinimized = isMinimized$();
|
|
246
|
+
if (isMinimized != null) {
|
|
247
|
+
tansu.untrack(() => onMinimizedChange$()(isMinimized));
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
const maxSizeAction$ = tansu.computed(() => {
|
|
251
|
+
const isMaximized = isMaximized$();
|
|
252
|
+
if (isMaximized != null) {
|
|
253
|
+
tansu.untrack(() => onMaximizedChange$()(isMaximized));
|
|
254
|
+
}
|
|
255
|
+
});
|
|
256
|
+
const action$ = tansu.computed(() => {
|
|
257
|
+
minSizeAction$();
|
|
258
|
+
maxSizeAction$();
|
|
259
|
+
});
|
|
260
|
+
const widget = {
|
|
261
|
+
...utils_stores.stateStores({
|
|
262
|
+
...stateProps,
|
|
263
|
+
backdropClass$,
|
|
264
|
+
className$,
|
|
265
|
+
container$,
|
|
266
|
+
size$,
|
|
267
|
+
visible$,
|
|
268
|
+
backdropHidden$,
|
|
269
|
+
hidden$
|
|
270
|
+
}),
|
|
271
|
+
patch,
|
|
272
|
+
api: {
|
|
273
|
+
open: transition.api.show,
|
|
274
|
+
close: transition.api.hide
|
|
275
|
+
},
|
|
276
|
+
directives: {
|
|
277
|
+
drawerPortalDirective,
|
|
278
|
+
drawerDirective: utils_directive.mergeDirectives(
|
|
279
|
+
utils_directive.directiveSubscribe(action$),
|
|
280
|
+
drawerAttributeDirective,
|
|
281
|
+
utils_directive.bindDirective(
|
|
282
|
+
services_siblingsInert.siblingsInert,
|
|
283
|
+
tansu.computed(() => !bodyScroll$())
|
|
284
|
+
),
|
|
285
|
+
// This directive must come after the attribute directive, to ensure that all the classes and attributes are applied for the transition
|
|
286
|
+
transition.directives.directive,
|
|
287
|
+
services_focusElement.focusElement
|
|
288
|
+
),
|
|
289
|
+
backdropPortalDirective,
|
|
290
|
+
backdropDirective: utils_directive.mergeDirectives(backdropTransition.directives.directive, backdropAttributeDirective),
|
|
291
|
+
splitterDirective
|
|
292
|
+
}
|
|
293
|
+
};
|
|
294
|
+
return widget;
|
|
295
|
+
});
|
|
296
|
+
exports.createDrawer = createDrawer;
|
|
297
|
+
exports.getDrawerDefaultConfig = getDrawerDefaultConfig;
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import { computed, asWritable, writable, untrack, readable } from "@amadeus-it-group/tansu";
|
|
2
|
+
import { focusElement } from "./services/focusElement.js";
|
|
3
|
+
import { createPointerdownPositionDirective } from "./services/pointerdownPosition.js";
|
|
4
|
+
import { portal } from "./services/portal.js";
|
|
5
|
+
import { siblingsInert } from "./services/siblingsInert.js";
|
|
6
|
+
import { createTransition } from "./services/transitions/baseTransitions.js";
|
|
7
|
+
import { a as bindDirective, l as createBrowserStoreDirective, n as mergeDirectives, p as createAttributesDirective, d as directiveSubscribe, i as isBrowserHTMLElement } from "./dom-DD1hAVZy.js";
|
|
8
|
+
import { noop } from "./utils/func.js";
|
|
9
|
+
import { r as removeScrollbars, a as revertScrollbars } from "./scrollbars-CcxSrnCx.js";
|
|
10
|
+
import { writablesForProps, bindableProp, stateStores, true$ } from "./utils/stores.js";
|
|
11
|
+
import { createWidgetFactory } from "./utils/widget.js";
|
|
12
|
+
import { g as typeNumberOrNull, c as typeBoolean, h as typeFunction, i as typeHTMLElementOrNull, e as typeString } from "./writables-Is1bF1Vt.js";
|
|
13
|
+
function getDrawerDefaultConfig() {
|
|
14
|
+
return {
|
|
15
|
+
...defaultDrawerConfig
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const defaultDrawerConfig = {
|
|
19
|
+
animated: true,
|
|
20
|
+
ariaDescribedBy: "",
|
|
21
|
+
ariaLabelledBy: "",
|
|
22
|
+
backdropClass: "",
|
|
23
|
+
backdropTransition: noop,
|
|
24
|
+
className: "w-full",
|
|
25
|
+
visible: false,
|
|
26
|
+
container: typeof window !== "undefined" ? document.body : null,
|
|
27
|
+
transition: noop,
|
|
28
|
+
verticalTransition: noop,
|
|
29
|
+
onHidden: noop,
|
|
30
|
+
onShown: noop,
|
|
31
|
+
onSizeChange: noop,
|
|
32
|
+
onVisibleChange: noop,
|
|
33
|
+
onMinimizedChange: noop,
|
|
34
|
+
onMaximizedChange: noop,
|
|
35
|
+
onResizingChange: noop,
|
|
36
|
+
resizable: false,
|
|
37
|
+
backdrop: true,
|
|
38
|
+
bodyScroll: false,
|
|
39
|
+
size: null
|
|
40
|
+
};
|
|
41
|
+
const configValidator = {
|
|
42
|
+
animated: typeBoolean,
|
|
43
|
+
ariaDescribedBy: typeString,
|
|
44
|
+
ariaLabelledBy: typeString,
|
|
45
|
+
backdropClass: typeString,
|
|
46
|
+
backdropTransition: typeFunction,
|
|
47
|
+
className: typeString,
|
|
48
|
+
visible: typeBoolean,
|
|
49
|
+
transition: typeFunction,
|
|
50
|
+
verticalTransition: typeFunction,
|
|
51
|
+
container: typeHTMLElementOrNull,
|
|
52
|
+
onHidden: typeFunction,
|
|
53
|
+
onShown: typeFunction,
|
|
54
|
+
onSizeChange: typeFunction,
|
|
55
|
+
onVisibleChange: typeFunction,
|
|
56
|
+
onMinimizedChange: typeFunction,
|
|
57
|
+
onMaximizedChange: typeFunction,
|
|
58
|
+
onResizingChange: typeFunction,
|
|
59
|
+
resizable: typeBoolean,
|
|
60
|
+
backdrop: typeBoolean,
|
|
61
|
+
bodyScroll: typeBoolean,
|
|
62
|
+
size: typeNumberOrNull
|
|
63
|
+
};
|
|
64
|
+
const createDrawer = createWidgetFactory("drawer", (config) => {
|
|
65
|
+
const [
|
|
66
|
+
{
|
|
67
|
+
backdrop$,
|
|
68
|
+
backdropTransition$,
|
|
69
|
+
backdropClass$,
|
|
70
|
+
bodyScroll$,
|
|
71
|
+
transition$,
|
|
72
|
+
verticalTransition$,
|
|
73
|
+
visible$: requestedVisible$,
|
|
74
|
+
container$,
|
|
75
|
+
className$,
|
|
76
|
+
size$: _dirtySize$,
|
|
77
|
+
animated$,
|
|
78
|
+
ariaDescribedBy$,
|
|
79
|
+
ariaLabelledBy$,
|
|
80
|
+
onHidden$,
|
|
81
|
+
onShown$,
|
|
82
|
+
onSizeChange$,
|
|
83
|
+
onVisibleChange$,
|
|
84
|
+
onMinimizedChange$,
|
|
85
|
+
onMaximizedChange$,
|
|
86
|
+
onResizingChange$,
|
|
87
|
+
...stateProps
|
|
88
|
+
},
|
|
89
|
+
patch
|
|
90
|
+
] = writablesForProps(defaultDrawerConfig, config, configValidator);
|
|
91
|
+
const size$ = bindableProp(_dirtySize$, onSizeChange$, (value) => value ? Math.round(value) : value);
|
|
92
|
+
const isVertical$ = computed(() => {
|
|
93
|
+
const isVertical = ["block-start", "block-end"].some((placement) => className$().includes(placement));
|
|
94
|
+
return isVertical;
|
|
95
|
+
});
|
|
96
|
+
const transition = createTransition({
|
|
97
|
+
props: {
|
|
98
|
+
animated: animated$,
|
|
99
|
+
animatedOnInit: animated$,
|
|
100
|
+
transition: asWritable(computed(() => isVertical$() ? verticalTransition$() : transition$())),
|
|
101
|
+
visible: requestedVisible$,
|
|
102
|
+
onVisibleChange: onVisibleChange$,
|
|
103
|
+
onHidden: onHidden$,
|
|
104
|
+
onShown: onShown$
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
const drawerPortalDirective = bindDirective(
|
|
108
|
+
portal,
|
|
109
|
+
computed(() => ({ container: container$() }))
|
|
110
|
+
);
|
|
111
|
+
const { directive: drawerElementDirective, element$: drawerElement$ } = createBrowserStoreDirective();
|
|
112
|
+
const drawerAttributeDirective = mergeDirectives(
|
|
113
|
+
drawerElementDirective,
|
|
114
|
+
createAttributesDirective(() => ({
|
|
115
|
+
attributes: {
|
|
116
|
+
class: className$,
|
|
117
|
+
role: readable("dialog"),
|
|
118
|
+
"aria-describedby": ariaDescribedBy$,
|
|
119
|
+
"aria-labelledby": ariaLabelledBy$,
|
|
120
|
+
"aria-modal": readable("true"),
|
|
121
|
+
tabIndex: readable("-1")
|
|
122
|
+
},
|
|
123
|
+
styles: {
|
|
124
|
+
position: computed(() => {
|
|
125
|
+
const container = container$();
|
|
126
|
+
return container && isBrowserHTMLElement(container) && container !== document.body ? "relative" : "fixed";
|
|
127
|
+
}),
|
|
128
|
+
outline: readable("none")
|
|
129
|
+
},
|
|
130
|
+
events: {
|
|
131
|
+
keydown: async (e) => {
|
|
132
|
+
if (e.key === "Escape") {
|
|
133
|
+
await transition.api.hide();
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}))
|
|
138
|
+
);
|
|
139
|
+
const backdropTransition = createTransition({
|
|
140
|
+
props: {
|
|
141
|
+
animated: animated$,
|
|
142
|
+
transition: backdropTransition$
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
const backdropPortalDirective = bindDirective(
|
|
146
|
+
portal,
|
|
147
|
+
computed(() => {
|
|
148
|
+
const container = container$();
|
|
149
|
+
const element = container ? transition.stores.element$() : void 0;
|
|
150
|
+
return {
|
|
151
|
+
container,
|
|
152
|
+
insertBefore: element?.parentElement === container ? element : void 0
|
|
153
|
+
};
|
|
154
|
+
})
|
|
155
|
+
);
|
|
156
|
+
const backdropHidden$ = computed(() => {
|
|
157
|
+
if (!bodyScroll$()) {
|
|
158
|
+
if (hidden$()) {
|
|
159
|
+
revertScrollbars();
|
|
160
|
+
} else {
|
|
161
|
+
removeScrollbars();
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return !backdrop$() || hidden$();
|
|
165
|
+
});
|
|
166
|
+
const backdropAttributeDirective = createAttributesDirective(() => ({
|
|
167
|
+
attributes: {
|
|
168
|
+
class: backdropClass$,
|
|
169
|
+
"data-agnos-ignore-inert": true$
|
|
170
|
+
},
|
|
171
|
+
events: {
|
|
172
|
+
click: async () => await transition.api.hide()
|
|
173
|
+
}
|
|
174
|
+
}));
|
|
175
|
+
const direction$ = computed(() => ["inline-start", "block-start"].some((placement) => className$().includes(placement)) ? 1 : -1);
|
|
176
|
+
const isMinimized$ = writable(void 0);
|
|
177
|
+
const isMaximized$ = writable(void 0);
|
|
178
|
+
function setSize(size) {
|
|
179
|
+
const drawerElement = drawerElement$();
|
|
180
|
+
const isVertical = isVertical$();
|
|
181
|
+
size = Math.round(Math.max(0, size));
|
|
182
|
+
drawerElement.style[isVertical ? "height" : "width"] = `${size}px`;
|
|
183
|
+
const elementSize = Math.round(drawerElement[isVertical ? "offsetHeight" : "offsetWidth"]);
|
|
184
|
+
size$.set(elementSize);
|
|
185
|
+
isMinimized$.set(size != null && (size < elementSize || size === 0));
|
|
186
|
+
isMaximized$.set(!!size && size > elementSize);
|
|
187
|
+
return elementSize;
|
|
188
|
+
}
|
|
189
|
+
const splitterDirective = mergeDirectives(
|
|
190
|
+
createPointerdownPositionDirective((event) => {
|
|
191
|
+
const drawerElement = drawerElement$();
|
|
192
|
+
const isVertical = isVertical$();
|
|
193
|
+
const startSize = drawerElement[isVertical ? "offsetHeight" : "offsetWidth"];
|
|
194
|
+
const clientXorY = isVertical ? "clientY" : "clientX";
|
|
195
|
+
const startPos = event[clientXorY];
|
|
196
|
+
const direction = direction$();
|
|
197
|
+
let isResizing = false;
|
|
198
|
+
return {
|
|
199
|
+
onMove(event2) {
|
|
200
|
+
setSize(startSize + direction * (event2[clientXorY] - startPos));
|
|
201
|
+
if (!isResizing) {
|
|
202
|
+
isResizing = true;
|
|
203
|
+
onResizingChange$()(true);
|
|
204
|
+
}
|
|
205
|
+
},
|
|
206
|
+
onEnd() {
|
|
207
|
+
drawerElement.style[isVertical ? "height" : "width"] = "";
|
|
208
|
+
if (isResizing) {
|
|
209
|
+
onResizingChange$()(false);
|
|
210
|
+
isResizing = false;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
}),
|
|
215
|
+
createAttributesDirective(() => ({
|
|
216
|
+
events: {
|
|
217
|
+
keydown: (e) => {
|
|
218
|
+
const { key } = e;
|
|
219
|
+
const size = size$() || drawerElement$()?.[isVertical$() ? "offsetHeight" : "offsetWidth"];
|
|
220
|
+
if (size != null) {
|
|
221
|
+
switch (key) {
|
|
222
|
+
case "ArrowLeft":
|
|
223
|
+
case "ArrowDown":
|
|
224
|
+
onResizingChange$()(true);
|
|
225
|
+
setSize(size - 10);
|
|
226
|
+
onResizingChange$()(false);
|
|
227
|
+
break;
|
|
228
|
+
case "ArrowRight":
|
|
229
|
+
case "ArrowUp":
|
|
230
|
+
onResizingChange$()(true);
|
|
231
|
+
setSize(size + 10);
|
|
232
|
+
onResizingChange$()(false);
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}))
|
|
239
|
+
);
|
|
240
|
+
const visible$ = transition.stores.visible$;
|
|
241
|
+
const transitioning$ = computed(() => transition.stores.transitioning$() || backdropTransition.stores.transitioning$());
|
|
242
|
+
const hidden$ = computed(() => !transitioning$() && !visible$());
|
|
243
|
+
const minSizeAction$ = computed(() => {
|
|
244
|
+
const isMinimized = isMinimized$();
|
|
245
|
+
if (isMinimized != null) {
|
|
246
|
+
untrack(() => onMinimizedChange$()(isMinimized));
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
const maxSizeAction$ = computed(() => {
|
|
250
|
+
const isMaximized = isMaximized$();
|
|
251
|
+
if (isMaximized != null) {
|
|
252
|
+
untrack(() => onMaximizedChange$()(isMaximized));
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
const action$ = computed(() => {
|
|
256
|
+
minSizeAction$();
|
|
257
|
+
maxSizeAction$();
|
|
258
|
+
});
|
|
259
|
+
const widget = {
|
|
260
|
+
...stateStores({
|
|
261
|
+
...stateProps,
|
|
262
|
+
backdropClass$,
|
|
263
|
+
className$,
|
|
264
|
+
container$,
|
|
265
|
+
size$,
|
|
266
|
+
visible$,
|
|
267
|
+
backdropHidden$,
|
|
268
|
+
hidden$
|
|
269
|
+
}),
|
|
270
|
+
patch,
|
|
271
|
+
api: {
|
|
272
|
+
open: transition.api.show,
|
|
273
|
+
close: transition.api.hide
|
|
274
|
+
},
|
|
275
|
+
directives: {
|
|
276
|
+
drawerPortalDirective,
|
|
277
|
+
drawerDirective: mergeDirectives(
|
|
278
|
+
directiveSubscribe(action$),
|
|
279
|
+
drawerAttributeDirective,
|
|
280
|
+
bindDirective(
|
|
281
|
+
siblingsInert,
|
|
282
|
+
computed(() => !bodyScroll$())
|
|
283
|
+
),
|
|
284
|
+
// This directive must come after the attribute directive, to ensure that all the classes and attributes are applied for the transition
|
|
285
|
+
transition.directives.directive,
|
|
286
|
+
focusElement
|
|
287
|
+
),
|
|
288
|
+
backdropPortalDirective,
|
|
289
|
+
backdropDirective: mergeDirectives(backdropTransition.directives.directive, backdropAttributeDirective),
|
|
290
|
+
splitterDirective
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
return widget;
|
|
294
|
+
});
|
|
295
|
+
export {
|
|
296
|
+
createDrawer as c,
|
|
297
|
+
getDrawerDefaultConfig as g
|
|
298
|
+
};
|
package/index.cjs
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const types = require("./types.cjs");
|
|
4
|
-
const accordion = require("./accordion-
|
|
5
|
-
const alert = require("./alert-
|
|
6
|
-
const collapse = require("./collapse-
|
|
7
|
-
const modal = require("./modal-
|
|
8
|
-
const pagination = require("./pagination-
|
|
9
|
-
const progressbar = require("./progressbar-
|
|
10
|
-
const rating = require("./rating-
|
|
11
|
-
const select = require("./select-
|
|
12
|
-
const slider = require("./slider-
|
|
13
|
-
const toaster = require("./toaster-
|
|
14
|
-
const tree = require("./tree-
|
|
15
|
-
const drawer = require("./drawer-
|
|
4
|
+
const accordion = require("./accordion-nxveC0GZ.cjs");
|
|
5
|
+
const alert = require("./alert-AhaliJ17.cjs");
|
|
6
|
+
const collapse = require("./collapse-Da_27YUU.cjs");
|
|
7
|
+
const modal = require("./modal-B_3Uxplo.cjs");
|
|
8
|
+
const pagination = require("./pagination-2Vor6JPZ.cjs");
|
|
9
|
+
const progressbar = require("./progressbar-DyBRINco.cjs");
|
|
10
|
+
const rating = require("./rating-C0y1j4SC.cjs");
|
|
11
|
+
const select = require("./select-Dhsb9msC.cjs");
|
|
12
|
+
const slider = require("./slider-DTO58syz.cjs");
|
|
13
|
+
const toaster = require("./toaster-CT148JSJ.cjs");
|
|
14
|
+
const tree = require("./tree-C4l2Wqny.cjs");
|
|
15
|
+
const drawer = require("./drawer-B5Yaqpiu.cjs");
|
|
16
16
|
const config = require("./config.cjs");
|
|
17
17
|
const services_extendWidget = require("./services/extendWidget.cjs");
|
|
18
18
|
const services_floatingUI = require("./services/floatingUI.cjs");
|
|
@@ -27,9 +27,9 @@ const services_hash = require("./services/hash.cjs");
|
|
|
27
27
|
const services_transitions_baseTransitions = require("./services/transitions/baseTransitions.cjs");
|
|
28
28
|
const services_transitions_cssTransitions = require("./services/transitions/cssTransitions.cjs");
|
|
29
29
|
const services_transitions_simpleClassTransition = require("./services/transitions/simpleClassTransition.cjs");
|
|
30
|
-
const utils_directive = require("./dom-
|
|
30
|
+
const utils_directive = require("./dom-Cm9_uROp.cjs");
|
|
31
31
|
const utils_stores = require("./utils/stores.cjs");
|
|
32
|
-
const utils_writables = require("./writables-
|
|
32
|
+
const utils_writables = require("./writables-Dt68gADJ.cjs");
|
|
33
33
|
exports.FACTORY_WIDGET_NAME = types.FACTORY_WIDGET_NAME;
|
|
34
34
|
exports.INVALID_VALUE = types.INVALID_VALUE;
|
|
35
35
|
exports.createAccordion = accordion.createAccordion;
|
|
@@ -76,6 +76,7 @@ exports.getKeyName = services_navManager.getKeyName;
|
|
|
76
76
|
exports.isInternalInputNavigation = services_navManager.isInternalInputNavigation;
|
|
77
77
|
exports.portal = services_portal.portal;
|
|
78
78
|
exports.createResizeObserver = services_resizeObserver.createResizeObserver;
|
|
79
|
+
exports.createResizeObserverMap = services_resizeObserver.createResizeObserverMap;
|
|
79
80
|
exports.siblingsInert = services_siblingsInert.siblingsInert;
|
|
80
81
|
exports.hash$ = services_hash.hash$;
|
|
81
82
|
exports.createTransition = services_transitions_baseTransitions.createTransition;
|
|
@@ -130,5 +131,6 @@ exports.typeFunction = utils_writables.typeFunction;
|
|
|
130
131
|
exports.typeHTMLElementOrNull = utils_writables.typeHTMLElementOrNull;
|
|
131
132
|
exports.typeNumber = utils_writables.typeNumber;
|
|
132
133
|
exports.typeNumberInRangeFactory = utils_writables.typeNumberInRangeFactory;
|
|
134
|
+
exports.typeNumberOrNull = utils_writables.typeNumberOrNull;
|
|
133
135
|
exports.typeString = utils_writables.typeString;
|
|
134
136
|
exports.typeStringOrNull = utils_writables.typeStringOrNull;
|