@agnos-ui/core 0.2.0 → 0.3.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.
Files changed (143) hide show
  1. package/README.md +3 -3
  2. package/accordion-BaWN0_n-.js +330 -0
  3. package/accordion-BuIgxZ0S.cjs +329 -0
  4. package/alert-C4jCg9Pl.cjs +8 -0
  5. package/alert-Dlf-BV98.js +9 -0
  6. package/common-DRdsw5m8.js +76 -0
  7. package/common-nJRMXbwj.cjs +75 -0
  8. package/components/accordion/accordion.d.ts +38 -49
  9. package/components/accordion/index.cjs +7 -0
  10. package/components/accordion/index.js +7 -1
  11. package/components/alert/alert.d.ts +3 -12
  12. package/components/alert/common.d.ts +4 -13
  13. package/components/alert/index.cjs +10 -0
  14. package/components/alert/index.js +10 -2
  15. package/components/modal/index.cjs +7 -0
  16. package/components/modal/index.js +7 -1
  17. package/components/modal/modal.d.ts +7 -49
  18. package/components/pagination/index.cjs +5 -0
  19. package/components/pagination/index.d.ts +0 -1
  20. package/components/pagination/index.js +5 -2
  21. package/components/pagination/pagination.d.ts +68 -139
  22. package/components/progressbar/index.cjs +5 -0
  23. package/components/progressbar/index.js +5 -1
  24. package/components/progressbar/progressbar.d.ts +6 -22
  25. package/components/rating/index.cjs +5 -0
  26. package/components/rating/index.js +5 -1
  27. package/components/rating/rating.d.ts +16 -11
  28. package/components/select/index.cjs +6 -0
  29. package/components/select/index.js +6 -1
  30. package/components/select/select.d.ts +15 -33
  31. package/components/slider/index.cjs +5 -0
  32. package/components/slider/index.js +5 -1
  33. package/components/slider/slider.d.ts +29 -35
  34. package/components/toast/index.cjs +5 -0
  35. package/components/toast/index.js +5 -1
  36. package/components/toast/toast.d.ts +11 -8
  37. package/config.cjs +38 -0
  38. package/config.d.ts +1 -1
  39. package/config.js +35 -50
  40. package/directive-BTSEYLF3.cjs +404 -0
  41. package/directive-DCYlDznf.js +405 -0
  42. package/func-DR0n-ShK.js +7 -0
  43. package/func-Qd3cD9a3.cjs +6 -0
  44. package/index.cjs +119 -0
  45. package/index.d.ts +1 -1
  46. package/index.js +119 -33
  47. package/modal-BI2qUu1M.js +251 -0
  48. package/modal-rzMpATf5.cjs +250 -0
  49. package/package.json +29 -19
  50. package/pagination--GkwduJn.js +263 -0
  51. package/pagination-EWSWQT1I.cjs +262 -0
  52. package/progressbar-DH7DHYMp.cjs +83 -0
  53. package/progressbar-DuRX7_my.js +84 -0
  54. package/promise-BMJ8qhA8.cjs +118 -0
  55. package/promise-CY2U8bTP.js +119 -0
  56. package/rating-BR5wD7y2.js +173 -0
  57. package/rating-CmuYUSxy.cjs +172 -0
  58. package/select-BCs6HQWn.js +358 -0
  59. package/select-CCIKn8WR.cjs +357 -0
  60. package/services/extendWidget.cjs +32 -0
  61. package/services/extendWidget.d.ts +2 -1
  62. package/services/extendWidget.js +31 -34
  63. package/services/floatingUI.cjs +131 -0
  64. package/services/floatingUI.d.ts +30 -14
  65. package/services/floatingUI.js +128 -102
  66. package/services/focustrack.cjs +47 -0
  67. package/services/focustrack.js +45 -44
  68. package/services/hash.cjs +15 -0
  69. package/services/hash.js +14 -12
  70. package/services/intersection.cjs +53 -0
  71. package/services/intersection.js +48 -50
  72. package/services/matchMedia.cjs +13 -0
  73. package/services/matchMedia.d.ts +7 -0
  74. package/services/matchMedia.js +13 -0
  75. package/services/navManager.cjs +196 -0
  76. package/services/navManager.d.ts +9 -9
  77. package/services/navManager.js +186 -168
  78. package/services/portal.cjs +43 -0
  79. package/services/portal.js +41 -42
  80. package/services/resizeObserver.cjs +32 -0
  81. package/services/resizeObserver.d.ts +1 -1
  82. package/services/resizeObserver.js +31 -28
  83. package/services/siblingsInert.cjs +40 -0
  84. package/services/siblingsInert.js +31 -31
  85. package/services/transitions/baseTransitions.cjs +171 -0
  86. package/services/transitions/baseTransitions.d.ts +16 -16
  87. package/services/transitions/baseTransitions.js +159 -170
  88. package/services/transitions/collapse.cjs +44 -0
  89. package/services/transitions/collapse.js +41 -49
  90. package/services/transitions/cssTransitions.cjs +32 -0
  91. package/services/transitions/cssTransitions.d.ts +2 -1
  92. package/services/transitions/cssTransitions.js +29 -39
  93. package/services/transitions/simpleClassTransition.cjs +31 -0
  94. package/services/transitions/simpleClassTransition.js +30 -41
  95. package/slider-CA_fszn7.js +536 -0
  96. package/slider-DsLvT87U.cjs +535 -0
  97. package/toast-8tWp6x89.js +63 -0
  98. package/toast-Aw8o0Iwe.cjs +62 -0
  99. package/types.cjs +12 -0
  100. package/types.d.ts +21 -1
  101. package/types.js +11 -13
  102. package/utils/directive.cjs +26 -0
  103. package/utils/directive.d.ts +148 -5
  104. package/utils/directive.js +25 -205
  105. package/utils/internal/dom.d.ts +43 -4
  106. package/utils/internal/promise.d.ts +2 -2
  107. package/utils/internal/ssrHTMLElement.d.ts +7 -0
  108. package/utils/stores.cjs +163 -0
  109. package/utils/stores.d.ts +9 -17
  110. package/utils/stores.js +149 -284
  111. package/utils/writables.cjs +13 -0
  112. package/utils/writables.js +12 -71
  113. package/writables-D46sFgGK.cjs +85 -0
  114. package/writables-DoU_XYTX.js +86 -0
  115. package/components/accordion/accordion.js +0 -264
  116. package/components/alert/alert.js +0 -22
  117. package/components/alert/common.js +0 -69
  118. package/components/commonProps.js +0 -1
  119. package/components/modal/modal.js +0 -186
  120. package/components/pagination/bootstrap.d.ts +0 -8
  121. package/components/pagination/bootstrap.js +0 -110
  122. package/components/pagination/pagination.js +0 -195
  123. package/components/progressbar/progressbar.js +0 -78
  124. package/components/rating/rating.js +0 -137
  125. package/components/select/select.js +0 -297
  126. package/components/slider/slider.js +0 -420
  127. package/components/toast/toast.js +0 -43
  128. package/services/transitions/bootstrap/collapse.d.ts +0 -2
  129. package/services/transitions/bootstrap/collapse.js +0 -15
  130. package/services/transitions/bootstrap/fade.d.ts +0 -1
  131. package/services/transitions/bootstrap/fade.js +0 -7
  132. package/services/transitions/bootstrap.d.ts +0 -2
  133. package/services/transitions/bootstrap.js +0 -2
  134. package/utils/internal/checks.js +0 -60
  135. package/utils/internal/dom.js +0 -82
  136. package/utils/internal/func.js +0 -11
  137. package/utils/internal/isFocusable.js +0 -37
  138. package/utils/internal/math.js +0 -13
  139. package/utils/internal/promise.js +0 -169
  140. package/utils/internal/scrollbars.js +0 -33
  141. package/utils/internal/sort.js +0 -28
  142. package/utils/internal/textDirection.js +0 -7
  143. package/utils/internal/traversal.js +0 -105
package/README.md CHANGED
@@ -4,9 +4,9 @@
4
4
 
5
5
  [AgnosUI](https://amadeusitgroup.github.io/AgnosUI/latest/) is a framework-agnostic widget library with adapters for multiple frameworks, either [Bootstrap](https://getbootstrap.com/)-based or headless:
6
6
 
7
- - [Angular](https://www.npmjs.com/package/@agnos-ui/angular), [Angular headless](https://www.npmjs.com/package/@agnos-ui/angular-headless)
8
- - [React](https://www.npmjs.com/package/@agnos-ui/react), [React headless](https://www.npmjs.com/package/@agnos-ui/react-headless)
9
- - [Svelte](https://www.npmjs.com/package/@agnos-ui/svelte), [Svelte headless](https://www.npmjs.com/package/@agnos-ui/svelte-headless)
7
+ - [Angular bootstrap](https://www.npmjs.com/package/@agnos-ui/angular-bootstrap), [Angular headless](https://www.npmjs.com/package/@agnos-ui/angular-headless)
8
+ - [React bootstrap](https://www.npmjs.com/package/@agnos-ui/react-bootstrap), [React headless](https://www.npmjs.com/package/@agnos-ui/react-headless)
9
+ - [Svelte bootstrap](https://www.npmjs.com/package/@agnos-ui/svelte-bootstrap), [Svelte headless](https://www.npmjs.com/package/@agnos-ui/svelte-headless)
10
10
 
11
11
  This `@agnos-ui/core` package contains the framework-agnostic common code used by the above framework adapters.
12
12
 
@@ -0,0 +1,330 @@
1
+ import { writablesForProps, stateStores, mergeConfigStores, normalizeConfigStores } from "./utils/stores.js";
2
+ import { createTransition } from "./services/transitions/baseTransitions.js";
3
+ import { writable, computed, asWritable, readable } from "@amadeus-it-group/tansu";
4
+ import { n as noop } from "./func-DR0n-ShK.js";
5
+ import { c as typeBoolean, f as typeFunction, e as typeString } from "./writables-DoU_XYTX.js";
6
+ import { t as generateId, k as mergeDirectives, n as createAttributesDirective, c as bindDirectiveNoArg, r as registrationArray, d as directiveSubscribe } from "./directive-DCYlDznf.js";
7
+ function adjustItemsCloseOthers(items, openItems, oldOpen) {
8
+ let keepOpen;
9
+ if (openItems.length == 2) {
10
+ oldOpen = oldOpen ?? openItems[0];
11
+ keepOpen = openItems.find((id) => id !== oldOpen);
12
+ } else if (openItems.length > 2) {
13
+ keepOpen = openItems[0];
14
+ }
15
+ if (keepOpen) {
16
+ items.forEach((item) => {
17
+ if (item.state$().itemId !== keepOpen && item.state$().itemVisible) {
18
+ item.patch({ itemVisible: false });
19
+ }
20
+ });
21
+ }
22
+ return items;
23
+ }
24
+ function getItem(items, itemId) {
25
+ return items.find((item) => item.state$().itemId === itemId);
26
+ }
27
+ const defaultAccordionConfig = {
28
+ closeOthers: false,
29
+ onShown: noop,
30
+ onHidden: noop,
31
+ className: "",
32
+ itemId: "",
33
+ itemDestroyOnHide: true,
34
+ itemDisabled: false,
35
+ itemVisible: false,
36
+ itemAnimated: true,
37
+ itemTransition: async () => {
38
+ },
39
+ itemHeadingTag: "",
40
+ onItemShown: noop,
41
+ onItemHidden: noop,
42
+ onItemVisibleChange: noop,
43
+ itemClass: "",
44
+ itemHeaderClass: "",
45
+ itemButtonClass: "",
46
+ itemBodyContainerClass: "",
47
+ itemBodyClass: ""
48
+ };
49
+ const defaultItemConfig = {
50
+ itemId: defaultAccordionConfig.itemId,
51
+ itemDestroyOnHide: defaultAccordionConfig.itemDestroyOnHide,
52
+ itemDisabled: defaultAccordionConfig.itemDisabled,
53
+ itemVisible: defaultAccordionConfig.itemVisible,
54
+ itemAnimated: defaultAccordionConfig.itemAnimated,
55
+ itemTransition: defaultAccordionConfig.itemTransition,
56
+ onItemShown: defaultAccordionConfig.onItemShown,
57
+ onItemHidden: defaultAccordionConfig.onItemHidden,
58
+ onItemVisibleChange: defaultAccordionConfig.onItemVisibleChange,
59
+ itemClass: defaultAccordionConfig.itemClass,
60
+ itemHeaderClass: defaultAccordionConfig.itemHeaderClass,
61
+ itemButtonClass: defaultAccordionConfig.itemButtonClass,
62
+ itemBodyContainerClass: defaultAccordionConfig.itemBodyContainerClass,
63
+ itemBodyClass: defaultAccordionConfig.itemBodyClass,
64
+ itemHeadingTag: defaultAccordionConfig.itemHeadingTag
65
+ };
66
+ const coreAccordionItemProps = Object.keys(defaultItemConfig);
67
+ function getAccordionDefaultConfig() {
68
+ return { ...defaultAccordionConfig };
69
+ }
70
+ const configAccordionValidator = {
71
+ closeOthers: typeBoolean,
72
+ onShown: typeFunction,
73
+ onHidden: typeFunction,
74
+ itemId: typeString,
75
+ itemDestroyOnHide: typeBoolean,
76
+ itemDisabled: typeBoolean,
77
+ itemVisible: typeBoolean,
78
+ itemAnimated: typeBoolean,
79
+ itemTransition: typeFunction,
80
+ onItemShown: typeFunction,
81
+ onItemHidden: typeFunction,
82
+ onItemVisibleChange: typeFunction,
83
+ itemClass: typeString,
84
+ itemHeaderClass: typeString,
85
+ itemButtonClass: typeString,
86
+ itemBodyContainerClass: typeString,
87
+ itemBodyClass: typeString,
88
+ itemHeadingTag: typeString
89
+ };
90
+ const configItemValidator = {
91
+ itemId: typeString,
92
+ itemDestroyOnHide: typeBoolean,
93
+ itemDisabled: typeBoolean,
94
+ itemVisible: typeBoolean,
95
+ itemAnimated: typeBoolean,
96
+ itemTransition: typeFunction,
97
+ onItemShown: typeFunction,
98
+ onItemHidden: typeFunction,
99
+ onItemVisibleChange: typeFunction,
100
+ itemClass: typeString,
101
+ itemHeaderClass: typeString,
102
+ itemButtonClass: typeString,
103
+ itemBodyContainerClass: typeString,
104
+ itemBodyClass: typeString,
105
+ itemHeadingTag: typeString
106
+ };
107
+ function createAccordionItem(config) {
108
+ const [
109
+ {
110
+ itemBodyClass$,
111
+ itemButtonClass$,
112
+ itemBodyContainerClass$,
113
+ itemHeaderClass$,
114
+ itemAnimated$,
115
+ itemTransition$,
116
+ itemDestroyOnHide$,
117
+ onItemShown$,
118
+ onItemHidden$,
119
+ onItemVisibleChange$,
120
+ itemVisible$,
121
+ itemId$: _dirtyItemId$,
122
+ itemDisabled$,
123
+ ...stateProps
124
+ },
125
+ patch
126
+ ] = writablesForProps(defaultItemConfig, config, configItemValidator);
127
+ const initDone$ = writable(false);
128
+ const _autoItemId$ = computed(() => generateId());
129
+ const itemId$ = computed(() => _dirtyItemId$() || _autoItemId$());
130
+ const shouldBeInDOM$ = computed(() => itemDestroyOnHide$() === false || !itemTransition.state$().hidden);
131
+ const itemTransition = createTransition({
132
+ props: {
133
+ transition: itemTransition$,
134
+ visible: itemVisible$,
135
+ onVisibleChange: onItemVisibleChange$,
136
+ animated: itemAnimated$,
137
+ animatedOnInit: false,
138
+ initDone: initDone$,
139
+ onHidden: () => {
140
+ onItemHidden$()();
141
+ },
142
+ onShown: () => {
143
+ onItemShown$()();
144
+ }
145
+ }
146
+ });
147
+ const clickAction = () => {
148
+ if (!itemDisabled$()) {
149
+ itemVisible$.update((c) => !c);
150
+ }
151
+ };
152
+ const toggleDirective = createAttributesDirective(() => ({
153
+ attributes: {
154
+ id: computed(() => `${itemId$()}-toggle`),
155
+ "aria-expanded": computed(() => `${itemVisible$()}`),
156
+ "aria-disabled": computed(() => `${itemDisabled$()}`),
157
+ "aria-controls": computed(() => `${itemId$()}-body-container`),
158
+ disabled: itemDisabled$
159
+ },
160
+ classNames: { collapsed: computed(() => !itemVisible$()) },
161
+ events: { click: clickAction }
162
+ }));
163
+ return {
164
+ ...stateStores({
165
+ itemVisible$,
166
+ itemId$,
167
+ shouldBeInDOM$,
168
+ itemDisabled$,
169
+ itemBodyClass$,
170
+ itemButtonClass$,
171
+ itemBodyContainerClass$,
172
+ itemHeaderClass$,
173
+ ...stateProps
174
+ }),
175
+ patch,
176
+ actions: {
177
+ click: clickAction
178
+ },
179
+ api: {
180
+ initDone: () => {
181
+ initDone$.set(true);
182
+ },
183
+ collapse: () => {
184
+ itemVisible$.set(false);
185
+ },
186
+ expand: () => {
187
+ itemVisible$.set(true);
188
+ },
189
+ toggle: () => {
190
+ itemVisible$.update((c) => !c);
191
+ }
192
+ },
193
+ directives: {
194
+ toggleDirective,
195
+ buttonDirective: mergeDirectives(
196
+ toggleDirective,
197
+ createAttributesDirective(() => ({
198
+ attributes: {
199
+ type: "button",
200
+ class: itemButtonClass$()
201
+ }
202
+ }))
203
+ ),
204
+ headerDirective: createAttributesDirective(() => ({ attributes: { class: itemHeaderClass$() } })),
205
+ bodyDirective: createAttributesDirective(() => ({ attributes: { class: itemBodyClass$() } })),
206
+ bodyContainerDirective: mergeDirectives(
207
+ bindDirectiveNoArg(itemTransition.directives.directive),
208
+ createAttributesDirective(() => ({
209
+ attributes: {
210
+ id: computed(() => `${itemId$()}-body-container`),
211
+ class: itemBodyContainerClass$(),
212
+ "aria-labelledby": computed(() => `${itemId$()}-toggle`)
213
+ }
214
+ }))
215
+ ),
216
+ accordionItemDirective: noop
217
+ }
218
+ };
219
+ }
220
+ function factoryCreateAccordion(itemFactory = createAccordionItem, accordionItemProps = coreAccordionItemProps, accordionConfig = defaultAccordionConfig, accordionValidator = configAccordionValidator) {
221
+ return (config) => {
222
+ const [writables, patch] = writablesForProps(accordionConfig, config, accordionValidator);
223
+ const { closeOthers$, onShown$, onHidden$, className$ } = writables;
224
+ const accordionItemConfig = Object.fromEntries(Object.entries(writables).map((entry) => [entry[0].slice(0, -1), entry[1]]));
225
+ const itemsWidget$ = registrationArray();
226
+ const openItems$ = computed(() => {
227
+ const openItems = [];
228
+ itemsWidget$().forEach((item) => {
229
+ if (item.state$().itemVisible) {
230
+ openItems.push(item.state$().itemId);
231
+ }
232
+ });
233
+ return openItems;
234
+ });
235
+ const oldOpenItem$ = writable(openItems$()[0]);
236
+ const checkCloseOthersAction$ = computed(() => {
237
+ if (closeOthers$()) {
238
+ adjustItemsCloseOthers(itemsWidget$(), openItems$(), oldOpenItem$());
239
+ oldOpenItem$.set(openItems$()[0]);
240
+ }
241
+ });
242
+ const action$ = computed(() => {
243
+ checkCloseOthersAction$();
244
+ });
245
+ return {
246
+ ...stateStores({ itemsWidget$, className$ }),
247
+ patch,
248
+ actions: {},
249
+ api: {
250
+ expand: (id) => {
251
+ var _a;
252
+ (_a = getItem(itemsWidget$(), id)) == null ? void 0 : _a.api.expand();
253
+ },
254
+ collapse: (id) => {
255
+ var _a;
256
+ (_a = getItem(itemsWidget$(), id)) == null ? void 0 : _a.api.collapse();
257
+ },
258
+ toggle: (id) => {
259
+ var _a;
260
+ (_a = getItem(itemsWidget$(), id)) == null ? void 0 : _a.api.toggle();
261
+ },
262
+ expandAll: () => {
263
+ itemsWidget$().forEach((i) => i.api.expand());
264
+ },
265
+ collapseAll: () => {
266
+ itemsWidget$().forEach((i) => i.api.collapse());
267
+ },
268
+ registerItem: (propsConfig) => {
269
+ const itemProps = accordionItemProps;
270
+ const config2 = mergeConfigStores(itemProps, normalizeConfigStores(itemProps, propsConfig == null ? void 0 : propsConfig.config), accordionItemConfig);
271
+ const [{ onItemHidden$, onItemShown$ }] = writablesForProps(
272
+ {
273
+ onItemHidden: defaultItemConfig.onItemHidden,
274
+ onItemShown: defaultItemConfig.onItemShown
275
+ },
276
+ { config: config2, props: propsConfig == null ? void 0 : propsConfig.props }
277
+ );
278
+ const item = itemFactory({
279
+ config: config2,
280
+ props: {
281
+ ...propsConfig == null ? void 0 : propsConfig.props,
282
+ onItemHidden: asWritable(
283
+ readable(() => {
284
+ var _a;
285
+ onHidden$()(item.stores.itemId$());
286
+ (_a = onItemHidden$()) == null ? void 0 : _a();
287
+ }),
288
+ (val) => {
289
+ onItemHidden$.set(val);
290
+ }
291
+ ),
292
+ onItemShown: asWritable(
293
+ readable(() => {
294
+ var _a;
295
+ onShown$()(item.stores.itemId$());
296
+ (_a = onItemShown$()) == null ? void 0 : _a();
297
+ }),
298
+ (val) => {
299
+ onItemShown$.set(val);
300
+ }
301
+ )
302
+ }
303
+ });
304
+ item.directives.accordionItemDirective = mergeDirectives(
305
+ () => ({
306
+ destroy: itemsWidget$.register(item)
307
+ }),
308
+ createAttributesDirective(() => ({
309
+ attributes: { class: item.stores.itemClass$, id: item.stores.itemId$ }
310
+ }))
311
+ );
312
+ return item;
313
+ }
314
+ },
315
+ directives: {
316
+ accordionDirective: mergeDirectives(
317
+ directiveSubscribe(action$),
318
+ createAttributesDirective(() => ({ attributes: { class: className$() }, classNames: { "au-accordion": true } }))
319
+ )
320
+ }
321
+ };
322
+ };
323
+ }
324
+ const createAccordion = factoryCreateAccordion();
325
+ export {
326
+ createAccordion as a,
327
+ createAccordionItem as c,
328
+ factoryCreateAccordion as f,
329
+ getAccordionDefaultConfig as g
330
+ };
@@ -0,0 +1,329 @@
1
+ "use strict";
2
+ const utils_stores = require("./utils/stores.cjs");
3
+ const services_transitions_baseTransitions = require("./services/transitions/baseTransitions.cjs");
4
+ const tansu = require("@amadeus-it-group/tansu");
5
+ const func = require("./func-Qd3cD9a3.cjs");
6
+ const utils_writables = require("./writables-D46sFgGK.cjs");
7
+ const utils_directive = require("./directive-BTSEYLF3.cjs");
8
+ function adjustItemsCloseOthers(items, openItems, oldOpen) {
9
+ let keepOpen;
10
+ if (openItems.length == 2) {
11
+ oldOpen = oldOpen ?? openItems[0];
12
+ keepOpen = openItems.find((id) => id !== oldOpen);
13
+ } else if (openItems.length > 2) {
14
+ keepOpen = openItems[0];
15
+ }
16
+ if (keepOpen) {
17
+ items.forEach((item) => {
18
+ if (item.state$().itemId !== keepOpen && item.state$().itemVisible) {
19
+ item.patch({ itemVisible: false });
20
+ }
21
+ });
22
+ }
23
+ return items;
24
+ }
25
+ function getItem(items, itemId) {
26
+ return items.find((item) => item.state$().itemId === itemId);
27
+ }
28
+ const defaultAccordionConfig = {
29
+ closeOthers: false,
30
+ onShown: func.noop,
31
+ onHidden: func.noop,
32
+ className: "",
33
+ itemId: "",
34
+ itemDestroyOnHide: true,
35
+ itemDisabled: false,
36
+ itemVisible: false,
37
+ itemAnimated: true,
38
+ itemTransition: async () => {
39
+ },
40
+ itemHeadingTag: "",
41
+ onItemShown: func.noop,
42
+ onItemHidden: func.noop,
43
+ onItemVisibleChange: func.noop,
44
+ itemClass: "",
45
+ itemHeaderClass: "",
46
+ itemButtonClass: "",
47
+ itemBodyContainerClass: "",
48
+ itemBodyClass: ""
49
+ };
50
+ const defaultItemConfig = {
51
+ itemId: defaultAccordionConfig.itemId,
52
+ itemDestroyOnHide: defaultAccordionConfig.itemDestroyOnHide,
53
+ itemDisabled: defaultAccordionConfig.itemDisabled,
54
+ itemVisible: defaultAccordionConfig.itemVisible,
55
+ itemAnimated: defaultAccordionConfig.itemAnimated,
56
+ itemTransition: defaultAccordionConfig.itemTransition,
57
+ onItemShown: defaultAccordionConfig.onItemShown,
58
+ onItemHidden: defaultAccordionConfig.onItemHidden,
59
+ onItemVisibleChange: defaultAccordionConfig.onItemVisibleChange,
60
+ itemClass: defaultAccordionConfig.itemClass,
61
+ itemHeaderClass: defaultAccordionConfig.itemHeaderClass,
62
+ itemButtonClass: defaultAccordionConfig.itemButtonClass,
63
+ itemBodyContainerClass: defaultAccordionConfig.itemBodyContainerClass,
64
+ itemBodyClass: defaultAccordionConfig.itemBodyClass,
65
+ itemHeadingTag: defaultAccordionConfig.itemHeadingTag
66
+ };
67
+ const coreAccordionItemProps = Object.keys(defaultItemConfig);
68
+ function getAccordionDefaultConfig() {
69
+ return { ...defaultAccordionConfig };
70
+ }
71
+ const configAccordionValidator = {
72
+ closeOthers: utils_writables.typeBoolean,
73
+ onShown: utils_writables.typeFunction,
74
+ onHidden: utils_writables.typeFunction,
75
+ itemId: utils_writables.typeString,
76
+ itemDestroyOnHide: utils_writables.typeBoolean,
77
+ itemDisabled: utils_writables.typeBoolean,
78
+ itemVisible: utils_writables.typeBoolean,
79
+ itemAnimated: utils_writables.typeBoolean,
80
+ itemTransition: utils_writables.typeFunction,
81
+ onItemShown: utils_writables.typeFunction,
82
+ onItemHidden: utils_writables.typeFunction,
83
+ onItemVisibleChange: utils_writables.typeFunction,
84
+ itemClass: utils_writables.typeString,
85
+ itemHeaderClass: utils_writables.typeString,
86
+ itemButtonClass: utils_writables.typeString,
87
+ itemBodyContainerClass: utils_writables.typeString,
88
+ itemBodyClass: utils_writables.typeString,
89
+ itemHeadingTag: utils_writables.typeString
90
+ };
91
+ const configItemValidator = {
92
+ itemId: utils_writables.typeString,
93
+ itemDestroyOnHide: utils_writables.typeBoolean,
94
+ itemDisabled: utils_writables.typeBoolean,
95
+ itemVisible: utils_writables.typeBoolean,
96
+ itemAnimated: utils_writables.typeBoolean,
97
+ itemTransition: utils_writables.typeFunction,
98
+ onItemShown: utils_writables.typeFunction,
99
+ onItemHidden: utils_writables.typeFunction,
100
+ onItemVisibleChange: utils_writables.typeFunction,
101
+ itemClass: utils_writables.typeString,
102
+ itemHeaderClass: utils_writables.typeString,
103
+ itemButtonClass: utils_writables.typeString,
104
+ itemBodyContainerClass: utils_writables.typeString,
105
+ itemBodyClass: utils_writables.typeString,
106
+ itemHeadingTag: utils_writables.typeString
107
+ };
108
+ function createAccordionItem(config) {
109
+ const [
110
+ {
111
+ itemBodyClass$,
112
+ itemButtonClass$,
113
+ itemBodyContainerClass$,
114
+ itemHeaderClass$,
115
+ itemAnimated$,
116
+ itemTransition$,
117
+ itemDestroyOnHide$,
118
+ onItemShown$,
119
+ onItemHidden$,
120
+ onItemVisibleChange$,
121
+ itemVisible$,
122
+ itemId$: _dirtyItemId$,
123
+ itemDisabled$,
124
+ ...stateProps
125
+ },
126
+ patch
127
+ ] = utils_stores.writablesForProps(defaultItemConfig, config, configItemValidator);
128
+ const initDone$ = tansu.writable(false);
129
+ const _autoItemId$ = tansu.computed(() => utils_directive.generateId());
130
+ const itemId$ = tansu.computed(() => _dirtyItemId$() || _autoItemId$());
131
+ const shouldBeInDOM$ = tansu.computed(() => itemDestroyOnHide$() === false || !itemTransition.state$().hidden);
132
+ const itemTransition = services_transitions_baseTransitions.createTransition({
133
+ props: {
134
+ transition: itemTransition$,
135
+ visible: itemVisible$,
136
+ onVisibleChange: onItemVisibleChange$,
137
+ animated: itemAnimated$,
138
+ animatedOnInit: false,
139
+ initDone: initDone$,
140
+ onHidden: () => {
141
+ onItemHidden$()();
142
+ },
143
+ onShown: () => {
144
+ onItemShown$()();
145
+ }
146
+ }
147
+ });
148
+ const clickAction = () => {
149
+ if (!itemDisabled$()) {
150
+ itemVisible$.update((c) => !c);
151
+ }
152
+ };
153
+ const toggleDirective = utils_directive.createAttributesDirective(() => ({
154
+ attributes: {
155
+ id: tansu.computed(() => `${itemId$()}-toggle`),
156
+ "aria-expanded": tansu.computed(() => `${itemVisible$()}`),
157
+ "aria-disabled": tansu.computed(() => `${itemDisabled$()}`),
158
+ "aria-controls": tansu.computed(() => `${itemId$()}-body-container`),
159
+ disabled: itemDisabled$
160
+ },
161
+ classNames: { collapsed: tansu.computed(() => !itemVisible$()) },
162
+ events: { click: clickAction }
163
+ }));
164
+ return {
165
+ ...utils_stores.stateStores({
166
+ itemVisible$,
167
+ itemId$,
168
+ shouldBeInDOM$,
169
+ itemDisabled$,
170
+ itemBodyClass$,
171
+ itemButtonClass$,
172
+ itemBodyContainerClass$,
173
+ itemHeaderClass$,
174
+ ...stateProps
175
+ }),
176
+ patch,
177
+ actions: {
178
+ click: clickAction
179
+ },
180
+ api: {
181
+ initDone: () => {
182
+ initDone$.set(true);
183
+ },
184
+ collapse: () => {
185
+ itemVisible$.set(false);
186
+ },
187
+ expand: () => {
188
+ itemVisible$.set(true);
189
+ },
190
+ toggle: () => {
191
+ itemVisible$.update((c) => !c);
192
+ }
193
+ },
194
+ directives: {
195
+ toggleDirective,
196
+ buttonDirective: utils_directive.mergeDirectives(
197
+ toggleDirective,
198
+ utils_directive.createAttributesDirective(() => ({
199
+ attributes: {
200
+ type: "button",
201
+ class: itemButtonClass$()
202
+ }
203
+ }))
204
+ ),
205
+ headerDirective: utils_directive.createAttributesDirective(() => ({ attributes: { class: itemHeaderClass$() } })),
206
+ bodyDirective: utils_directive.createAttributesDirective(() => ({ attributes: { class: itemBodyClass$() } })),
207
+ bodyContainerDirective: utils_directive.mergeDirectives(
208
+ utils_directive.bindDirectiveNoArg(itemTransition.directives.directive),
209
+ utils_directive.createAttributesDirective(() => ({
210
+ attributes: {
211
+ id: tansu.computed(() => `${itemId$()}-body-container`),
212
+ class: itemBodyContainerClass$(),
213
+ "aria-labelledby": tansu.computed(() => `${itemId$()}-toggle`)
214
+ }
215
+ }))
216
+ ),
217
+ accordionItemDirective: func.noop
218
+ }
219
+ };
220
+ }
221
+ function factoryCreateAccordion(itemFactory = createAccordionItem, accordionItemProps = coreAccordionItemProps, accordionConfig = defaultAccordionConfig, accordionValidator = configAccordionValidator) {
222
+ return (config) => {
223
+ const [writables, patch] = utils_stores.writablesForProps(accordionConfig, config, accordionValidator);
224
+ const { closeOthers$, onShown$, onHidden$, className$ } = writables;
225
+ const accordionItemConfig = Object.fromEntries(Object.entries(writables).map((entry) => [entry[0].slice(0, -1), entry[1]]));
226
+ const itemsWidget$ = utils_directive.registrationArray();
227
+ const openItems$ = tansu.computed(() => {
228
+ const openItems = [];
229
+ itemsWidget$().forEach((item) => {
230
+ if (item.state$().itemVisible) {
231
+ openItems.push(item.state$().itemId);
232
+ }
233
+ });
234
+ return openItems;
235
+ });
236
+ const oldOpenItem$ = tansu.writable(openItems$()[0]);
237
+ const checkCloseOthersAction$ = tansu.computed(() => {
238
+ if (closeOthers$()) {
239
+ adjustItemsCloseOthers(itemsWidget$(), openItems$(), oldOpenItem$());
240
+ oldOpenItem$.set(openItems$()[0]);
241
+ }
242
+ });
243
+ const action$ = tansu.computed(() => {
244
+ checkCloseOthersAction$();
245
+ });
246
+ return {
247
+ ...utils_stores.stateStores({ itemsWidget$, className$ }),
248
+ patch,
249
+ actions: {},
250
+ api: {
251
+ expand: (id) => {
252
+ var _a;
253
+ (_a = getItem(itemsWidget$(), id)) == null ? void 0 : _a.api.expand();
254
+ },
255
+ collapse: (id) => {
256
+ var _a;
257
+ (_a = getItem(itemsWidget$(), id)) == null ? void 0 : _a.api.collapse();
258
+ },
259
+ toggle: (id) => {
260
+ var _a;
261
+ (_a = getItem(itemsWidget$(), id)) == null ? void 0 : _a.api.toggle();
262
+ },
263
+ expandAll: () => {
264
+ itemsWidget$().forEach((i) => i.api.expand());
265
+ },
266
+ collapseAll: () => {
267
+ itemsWidget$().forEach((i) => i.api.collapse());
268
+ },
269
+ registerItem: (propsConfig) => {
270
+ const itemProps = accordionItemProps;
271
+ const config2 = utils_stores.mergeConfigStores(itemProps, utils_stores.normalizeConfigStores(itemProps, propsConfig == null ? void 0 : propsConfig.config), accordionItemConfig);
272
+ const [{ onItemHidden$, onItemShown$ }] = utils_stores.writablesForProps(
273
+ {
274
+ onItemHidden: defaultItemConfig.onItemHidden,
275
+ onItemShown: defaultItemConfig.onItemShown
276
+ },
277
+ { config: config2, props: propsConfig == null ? void 0 : propsConfig.props }
278
+ );
279
+ const item = itemFactory({
280
+ config: config2,
281
+ props: {
282
+ ...propsConfig == null ? void 0 : propsConfig.props,
283
+ onItemHidden: tansu.asWritable(
284
+ tansu.readable(() => {
285
+ var _a;
286
+ onHidden$()(item.stores.itemId$());
287
+ (_a = onItemHidden$()) == null ? void 0 : _a();
288
+ }),
289
+ (val) => {
290
+ onItemHidden$.set(val);
291
+ }
292
+ ),
293
+ onItemShown: tansu.asWritable(
294
+ tansu.readable(() => {
295
+ var _a;
296
+ onShown$()(item.stores.itemId$());
297
+ (_a = onItemShown$()) == null ? void 0 : _a();
298
+ }),
299
+ (val) => {
300
+ onItemShown$.set(val);
301
+ }
302
+ )
303
+ }
304
+ });
305
+ item.directives.accordionItemDirective = utils_directive.mergeDirectives(
306
+ () => ({
307
+ destroy: itemsWidget$.register(item)
308
+ }),
309
+ utils_directive.createAttributesDirective(() => ({
310
+ attributes: { class: item.stores.itemClass$, id: item.stores.itemId$ }
311
+ }))
312
+ );
313
+ return item;
314
+ }
315
+ },
316
+ directives: {
317
+ accordionDirective: utils_directive.mergeDirectives(
318
+ utils_directive.directiveSubscribe(action$),
319
+ utils_directive.createAttributesDirective(() => ({ attributes: { class: className$() }, classNames: { "au-accordion": true } }))
320
+ )
321
+ }
322
+ };
323
+ };
324
+ }
325
+ const createAccordion = factoryCreateAccordion();
326
+ exports.createAccordion = createAccordion;
327
+ exports.createAccordionItem = createAccordionItem;
328
+ exports.factoryCreateAccordion = factoryCreateAccordion;
329
+ exports.getAccordionDefaultConfig = getAccordionDefaultConfig;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ const common = require("./common-nJRMXbwj.cjs");
3
+ function getAlertDefaultConfig() {
4
+ return { ...common.getCommonAlertDefaultConfig() };
5
+ }
6
+ const createAlert = common.createCommonAlert;
7
+ exports.createAlert = createAlert;
8
+ exports.getAlertDefaultConfig = getAlertDefaultConfig;
@@ -0,0 +1,9 @@
1
+ import { g as getCommonAlertDefaultConfig, a as createCommonAlert } from "./common-DRdsw5m8.js";
2
+ function getAlertDefaultConfig() {
3
+ return { ...getCommonAlertDefaultConfig() };
4
+ }
5
+ const createAlert = createCommonAlert;
6
+ export {
7
+ createAlert as c,
8
+ getAlertDefaultConfig as g
9
+ };