@agnos-ui/core 0.3.1 → 0.4.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/accordion-BnaSamoQ.js +322 -0
  2. package/accordion-DmPT0O0j.cjs +321 -0
  3. package/{alert-Dlf-BV98.js → alert-8ilqhLst.js} +1 -1
  4. package/{alert-C4jCg9Pl.cjs → alert-C-V64Qcs.cjs} +1 -1
  5. package/{common-DRdsw5m8.js → common-BCEqowKw.js} +1 -1
  6. package/{common-nJRMXbwj.cjs → common-Kb96q7i4.cjs} +1 -1
  7. package/components/accordion/accordion.d.ts +33 -86
  8. package/components/accordion/index.cjs +1 -1
  9. package/components/accordion/index.js +1 -1
  10. package/components/alert/common.d.ts +1 -1
  11. package/components/alert/index.cjs +2 -2
  12. package/components/alert/index.js +2 -2
  13. package/components/modal/index.cjs +1 -1
  14. package/components/modal/index.js +1 -1
  15. package/components/modal/modal.d.ts +11 -15
  16. package/components/pagination/index.cjs +1 -1
  17. package/components/pagination/index.js +1 -1
  18. package/components/progressbar/index.cjs +1 -1
  19. package/components/progressbar/index.js +1 -1
  20. package/components/rating/index.cjs +1 -1
  21. package/components/rating/index.js +1 -1
  22. package/components/select/index.cjs +1 -1
  23. package/components/select/index.js +1 -1
  24. package/components/select/select.d.ts +4 -5
  25. package/components/slider/index.cjs +1 -1
  26. package/components/slider/index.js +1 -1
  27. package/components/toast/index.cjs +1 -1
  28. package/components/toast/index.js +1 -1
  29. package/components/toast/toast.d.ts +3 -4
  30. package/config.cjs +2 -4
  31. package/config.d.ts +3 -3
  32. package/config.js +2 -4
  33. package/{directive-DCYlDznf.js → directive-3-8yr-ZK.js} +1 -2
  34. package/{directive-BTSEYLF3.cjs → directive-j-xRk-h3.cjs} +1 -2
  35. package/index.cjs +11 -11
  36. package/index.js +11 -11
  37. package/{modal-BI2qUu1M.js → modal-CeTI4jxI.js} +19 -4
  38. package/{modal-rzMpATf5.cjs → modal-D4d8sy85.cjs} +19 -4
  39. package/package.json +4 -4
  40. package/{pagination-EWSWQT1I.cjs → pagination-B9WFv70F.cjs} +1 -1
  41. package/{pagination--GkwduJn.js → pagination-BpPHKQsH.js} +1 -1
  42. package/{progressbar-DuRX7_my.js → progressbar-BybOg5FE.js} +1 -1
  43. package/{progressbar-DH7DHYMp.cjs → progressbar-DXCMeJvL.cjs} +1 -1
  44. package/{rating-CmuYUSxy.cjs → rating-C2Y95r50.cjs} +1 -1
  45. package/{rating-BR5wD7y2.js → rating-D6Tv_4Vx.js} +1 -1
  46. package/{select-BCs6HQWn.js → select-BS0mh7Qk.js} +1 -1
  47. package/{select-CCIKn8WR.cjs → select-CBlGWfZY.cjs} +1 -1
  48. package/services/extendWidget.d.ts +3 -3
  49. package/services/floatingUI.cjs +1 -1
  50. package/services/floatingUI.js +1 -1
  51. package/services/focustrack.cjs +1 -1
  52. package/services/focustrack.js +1 -1
  53. package/services/matchMedia.cjs +1 -1
  54. package/services/matchMedia.js +1 -1
  55. package/services/navManager.cjs +1 -1
  56. package/services/navManager.js +1 -1
  57. package/services/portal.cjs +1 -1
  58. package/services/portal.js +1 -1
  59. package/services/resizeObserver.cjs +1 -1
  60. package/services/resizeObserver.js +1 -1
  61. package/services/siblingsInert.cjs +1 -1
  62. package/services/siblingsInert.js +1 -1
  63. package/services/transitions/baseTransitions.cjs +1 -1
  64. package/services/transitions/baseTransitions.js +1 -1
  65. package/services/transitions/collapse.cjs +1 -1
  66. package/services/transitions/collapse.js +1 -1
  67. package/services/transitions/cssTransitions.cjs +1 -1
  68. package/services/transitions/cssTransitions.js +1 -1
  69. package/services/transitions/simpleClassTransition.cjs +1 -1
  70. package/services/transitions/simpleClassTransition.js +1 -1
  71. package/{slider-DsLvT87U.cjs → slider-BdsZpxJr.cjs} +1 -1
  72. package/{slider-CA_fszn7.js → slider-ByDkbyr1.js} +1 -1
  73. package/{toast-8tWp6x89.js → toast-DN0HwUbs.js} +2 -2
  74. package/{toast-Aw8o0Iwe.cjs → toast-DR8b0zpm.cjs} +2 -2
  75. package/types.d.ts +2 -0
  76. package/utils/directive.cjs +1 -1
  77. package/utils/directive.js +1 -1
  78. package/accordion-BaWN0_n-.js +0 -330
  79. package/accordion-BuIgxZ0S.cjs +0 -329
@@ -1,330 +0,0 @@
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
- };
@@ -1,329 +0,0 @@
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;