@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.
Files changed (102) hide show
  1. package/{accordion-DqnKGmbS.js → accordion-47EpOD36.js} +2 -2
  2. package/{accordion-DRIm0xHf.cjs → accordion-nxveC0GZ.cjs} +2 -2
  3. package/{alert-B-jQDQcB.cjs → alert-AhaliJ17.cjs} +1 -1
  4. package/{alert-gGz2CDS9.js → alert-anMaigvi.js} +1 -1
  5. package/{collapse-BV4kD3j9.js → collapse-CrfvGo_T.js} +2 -2
  6. package/{collapse-gLiT080Y.cjs → collapse-Da_27YUU.cjs} +2 -2
  7. package/{common-D3QcdJ6S.cjs → common-B5jS-Ih_.cjs} +1 -1
  8. package/{common-DK0ADNTX.js → common-CCxNtFNM.js} +1 -1
  9. package/components/accordion/index.cjs +1 -1
  10. package/components/accordion/index.js +1 -1
  11. package/components/alert/index.cjs +1 -1
  12. package/components/alert/index.js +1 -1
  13. package/components/carousel/index.cjs +2 -2
  14. package/components/carousel/index.js +2 -2
  15. package/components/collapse/index.cjs +1 -1
  16. package/components/collapse/index.js +1 -1
  17. package/components/drawer/drawer.d.ts +32 -25
  18. package/components/drawer/index.cjs +1 -1
  19. package/components/drawer/index.js +1 -1
  20. package/components/modal/index.cjs +1 -1
  21. package/components/modal/index.js +1 -1
  22. package/components/pagination/index.cjs +1 -1
  23. package/components/pagination/index.js +1 -1
  24. package/components/progressbar/index.cjs +1 -1
  25. package/components/progressbar/index.js +1 -1
  26. package/components/rating/index.cjs +1 -1
  27. package/components/rating/index.js +1 -1
  28. package/components/select/index.cjs +1 -1
  29. package/components/select/index.js +1 -1
  30. package/components/slider/index.cjs +1 -1
  31. package/components/slider/index.js +1 -1
  32. package/components/toast/index.cjs +1 -1
  33. package/components/toast/index.js +1 -1
  34. package/components/tree/index.cjs +1 -1
  35. package/components/tree/index.js +1 -1
  36. package/{dom-C2gi9OCP.cjs → dom-Cm9_uROp.cjs} +76 -6
  37. package/{dom-Bcg9ORcA.js → dom-DD1hAVZy.js} +76 -6
  38. package/drawer-B5Yaqpiu.cjs +297 -0
  39. package/drawer-CGHyRTM9.js +298 -0
  40. package/index.cjs +16 -14
  41. package/index.js +21 -19
  42. package/{modal-DiXZXYjR.cjs → modal-B_3Uxplo.cjs} +5 -5
  43. package/{modal-CAvQW-vo.js → modal-cKd3qUn1.js} +5 -5
  44. package/package.json +1 -1
  45. package/{pagination-DvZ2rLsz.cjs → pagination-2Vor6JPZ.cjs} +2 -2
  46. package/{pagination-BKbMROV6.js → pagination-DlOyP_2C.js} +2 -2
  47. package/{progressbar-D8zIcm9n.js → progressbar-B5g76eMV.js} +2 -2
  48. package/{progressbar-i9xfAxb7.cjs → progressbar-DyBRINco.cjs} +2 -2
  49. package/{rating-DmG4oUkr.cjs → rating-C0y1j4SC.cjs} +2 -2
  50. package/{rating-DEXTGWCU.js → rating-C7C4-p4B.js} +2 -2
  51. package/{select-MFjAnIt7.cjs → select-Dhsb9msC.cjs} +1 -1
  52. package/{select-Bw68Xdu5.js → select-nnl00UWY.js} +1 -1
  53. package/services/floatingUI.cjs +1 -1
  54. package/services/floatingUI.js +1 -1
  55. package/services/focusElement.cjs +1 -1
  56. package/services/focusElement.js +1 -1
  57. package/services/focustrack.cjs +1 -1
  58. package/services/focustrack.js +1 -1
  59. package/services/matchMedia.cjs +1 -1
  60. package/services/matchMedia.js +1 -1
  61. package/services/navManager.cjs +1 -1
  62. package/services/navManager.js +1 -1
  63. package/services/pointerdownPosition.cjs +60 -0
  64. package/services/pointerdownPosition.d.ts +42 -0
  65. package/services/pointerdownPosition.js +60 -0
  66. package/services/portal.cjs +1 -1
  67. package/services/portal.js +1 -1
  68. package/services/resizeObserver.cjs +40 -20
  69. package/services/resizeObserver.d.ts +10 -2
  70. package/services/resizeObserver.js +41 -21
  71. package/services/siblingsInert.cjs +1 -1
  72. package/services/siblingsInert.js +1 -1
  73. package/services/transitions/baseTransitions.cjs +2 -2
  74. package/services/transitions/baseTransitions.js +2 -2
  75. package/services/transitions/collapse.cjs +11 -15
  76. package/services/transitions/collapse.js +11 -15
  77. package/services/transitions/cssTransitions.cjs +1 -1
  78. package/services/transitions/cssTransitions.js +1 -1
  79. package/services/transitions/simpleClassTransition.cjs +1 -1
  80. package/services/transitions/simpleClassTransition.js +1 -1
  81. package/{slider-Cx50Eghd.js → slider-B4WrdTeE.js} +121 -170
  82. package/{slider-Dl4Trh32.cjs → slider-DTO58syz.cjs} +120 -169
  83. package/{toaster-_p1GTtHI.js → toaster-CRPErgI2.js} +3 -3
  84. package/{toaster-UDglac7x.cjs → toaster-CT148JSJ.cjs} +3 -3
  85. package/{tree-rGHtmCnS.cjs → tree-C4l2Wqny.cjs} +2 -2
  86. package/{tree-DV0tfPlZ.js → tree-CHpFqJPx.js} +2 -2
  87. package/types.cjs +2 -2
  88. package/types.d.ts +22 -3
  89. package/types.js +2 -2
  90. package/utils/directive.cjs +1 -1
  91. package/utils/directive.d.ts +2 -2
  92. package/utils/directive.js +1 -1
  93. package/utils/internal/ssrHTMLElement.d.ts +7 -1
  94. package/utils/stores.cjs +1 -1
  95. package/utils/stores.js +1 -1
  96. package/utils/writables.cjs +2 -1
  97. package/utils/writables.d.ts +7 -0
  98. package/utils/writables.js +6 -5
  99. package/{writables-DcGT98a7.cjs → writables-Dt68gADJ.cjs} +4 -0
  100. package/{writables-e0tyaQpe.js → writables-Is1bF1Vt.js} +10 -6
  101. package/drawer-D5SO73ew.js +0 -251
  102. 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-DRIm0xHf.cjs");
5
- const alert = require("./alert-B-jQDQcB.cjs");
6
- const collapse = require("./collapse-gLiT080Y.cjs");
7
- const modal = require("./modal-DiXZXYjR.cjs");
8
- const pagination = require("./pagination-DvZ2rLsz.cjs");
9
- const progressbar = require("./progressbar-i9xfAxb7.cjs");
10
- const rating = require("./rating-DmG4oUkr.cjs");
11
- const select = require("./select-MFjAnIt7.cjs");
12
- const slider = require("./slider-Dl4Trh32.cjs");
13
- const toaster = require("./toaster-UDglac7x.cjs");
14
- const tree = require("./tree-rGHtmCnS.cjs");
15
- const drawer = require("./drawer-DP7UPojk.cjs");
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-C2gi9OCP.cjs");
30
+ const utils_directive = require("./dom-Cm9_uROp.cjs");
31
31
  const utils_stores = require("./utils/stores.cjs");
32
- const utils_writables = require("./writables-DcGT98a7.cjs");
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;